author | Stefan Teleman <stefan.teleman@oracle.com> |
Wed, 16 Dec 2015 20:20:50 -0800 | |
changeset 5205 | eaff9ab86216 |
permissions | -rw-r--r-- |
5205
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
1 |
$mapfile_version 2 |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
2 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
3 |
# Emulate the rules used by the GNU ld and gold linkers for merging input |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
4 |
# sections into output sections in executables and shared objects. From |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
5 |
# Ian Lance Taylor and Cary Coutant. |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
6 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
7 |
# gcc 4.3 generates the following sorts of section names when it |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
8 |
# needs a section name specific to a function: |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
9 |
# .text.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
10 |
# .rodata.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
11 |
# .sdata2.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
12 |
# .data.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
13 |
# .data.rel.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
14 |
# .data.rel.local.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
15 |
# .data.rel.ro.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
16 |
# .data.rel.ro.local.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
17 |
# .sdata.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
18 |
# .bss.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
19 |
# .sbss.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
20 |
# .tdata.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
21 |
# .tbss.FN |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
22 |
# |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
23 |
# The GNU linker maps all of those to the part before the .FN, |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
24 |
# except that .data.rel.local.FN is mapped to .data, and |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
25 |
# .data.rel.ro.local.FN is mapped to .data.rel.ro. The sections |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
26 |
# beginning with .data.rel.ro.local are grouped together. |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
27 |
# |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
28 |
# For an anonymous namespace, the string FN can contain a '.'. |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
29 |
# |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
30 |
# Also of interest: .rodata.strN.N, .rodata.cstN, both of which the |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
31 |
# GNU linker maps to .rodata. |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
32 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
33 |
$if _ET_DYN || _ET_EXEC |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
34 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
35 |
LOAD_SEGMENT text { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
36 |
ASSIGN_SECTION { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
37 |
IS_NAME = MATCH(g/.data.rel.local.*/); |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
38 |
FLAGS = ALLOC !WRITE; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
39 |
OUTPUT_SECTION { NAME = .data }; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
40 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
41 |
ASSIGN_SECTION { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
42 |
IS_NAME = MATCH(r/^\.(text|rodata|sdata2|data\.rel\.ro|data\.rel|data|sdata|bss|sbss|tdata|tbss)\./); |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
43 |
FLAGS = ALLOC !WRITE; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
44 |
OUTPUT_SECTION { NAME = MATCHREF(/.${n1}/) }; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
45 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
46 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
47 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
48 |
LOAD_SEGMENT data { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
49 |
ASSIGN_SECTION { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
50 |
IS_NAME = MATCH(g/.data.rel.local.*/); |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
51 |
FLAGS = ALLOC WRITE; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
52 |
OUTPUT_SECTION { NAME = .data }; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
53 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
54 |
ASSIGN_SECTION { |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
55 |
IS_NAME = MATCH(r/^\.(text|rodata|sdata2|data\.rel\.ro|data\.rel|data|sdata|bss|sbss|tdata|tbss)\./); |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
56 |
FLAGS = ALLOC WRITE; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
57 |
OUTPUT_SECTION { NAME = MATCHREF(/.${n1}/) }; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
58 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
59 |
}; |
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
60 |
|
eaff9ab86216
21637184 integrate GCC 4.9.3 in Solaris
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff
changeset
|
61 |
$endif |