source: branches/libc-0.6/src/binutils/ld/scripttempl/nw.sc

Last change on this file was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 5.0 KB
Line 
1#
2# Unusual variables checked by this code:
3# NOP - four byte opcode for no-op (defaults to 0)
4# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
5# OTHER_READONLY_SECTIONS - other than .text .init .ctors .rodata ...
6# (e.g., .PARISC.milli)
7# OTHER_READWRITE_SECTIONS - other than .data .bss .sdata ...
8# (e.g., .PARISC.global)
9# OTHER_SECTIONS - at the end
10# EXECUTABLE_SYMBOLS - symbols that must be defined for an
11# executable (e.g., _DYNAMIC_LINK)
12# TEXT_START_SYMBOLS - symbols that appear at the start of the
13# .text section.
14# DATA_START_SYMBOLS - symbols that appear at the start of the
15# .data section.
16# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
17# .bss section besides __bss_start.
18# DATA_PLT - .plt should be in data segment, not text segment.
19#
20# When adding sections, do note that the names of some sections are used
21# when specifying the start address of the next.
22#
23test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
24test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
25test "$LD_FLAG" = "N" && DATA_ADDR=.
26INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
27PLT=".plt ${RELOCATING-0} : { *(.plt) }"
28cat <<EOF
29OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
30 "${LITTLE_OUTPUT_FORMAT}")
31OUTPUT_ARCH(${ARCH})
32
33${RELOCATING+${LIB_SEARCH_DIRS}}
34${RELOCATING+/* Do we need any of these for elf?
35 __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
36${RELOCATING+${EXECUTABLE_SYMBOLS}}
37${RELOCATING- /* For some reason, the Solaris linker makes bad executables
38 if gld -r is used and the intermediate file has sections starting
39 at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
40 bug. But for now assigning the zero vmas works. */}
41SECTIONS
42{
43 /* Read-only sections, merged into text segment: */
44 ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_START_ADDR} + SIZEOF_HEADERS;}}
45 ${CREATE_SHLIB+${RELOCATING+. = SIZEOF_HEADERS;}}
46 ${CREATE_SHLIB-${INTERP}}
47 .hash ${RELOCATING-0} : { *(.hash) }
48 .dynsym ${RELOCATING-0} : { *(.dynsym) }
49 .dynstr ${RELOCATING-0} : { *(.dynstr) }
50 .rel.text ${RELOCATING-0} : { *(.rel.text) }
51 .rela.text ${RELOCATING-0} : { *(.rela.text) }
52 .rel.data ${RELOCATING-0} : { *(.rel.data) }
53 .rela.data ${RELOCATING-0} : { *(.rela.data) }
54 .rel.rodata ${RELOCATING-0} : { *(.rel.rodata) }
55 .rela.rodata ${RELOCATING-0} : { *(.rela.rodata) }
56 .rel.got ${RELOCATING-0} : { *(.rel.got) }
57 .rela.got ${RELOCATING-0} : { *(.rela.got) }
58 .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }
59 .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }
60 .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }
61 .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }
62 .rel.bss ${RELOCATING-0} : { *(.rel.bss) }
63 .rela.bss ${RELOCATING-0} : { *(.rela.bss) }
64 .rel.plt ${RELOCATING-0} : { *(.rel.plt) }
65 .rela.plt ${RELOCATING-0} : { *(.rela.plt) }
66 .init ${RELOCATING-0} : { *(.init) } =${NOP-0}
67 ${DATA_PLT-${PLT}}
68 .text ${RELOCATING-0} :
69 {
70 ${RELOCATING+${TEXT_START_SYMBOLS}}
71 *(.text)
72 ${CONSTRUCTING+ __CTOR_LIST__ = .;}
73 ${CONSTRUCTING+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)}
74 ${CONSTRUCTING+ *(.ctors)}
75 ${CONSTRUCTING+ LONG(0)}
76 ${CONSTRUCTING+ __CTOR_END__ = .;}
77 ${CONSTRUCTING+ __DTOR_LIST__ = .;}
78 ${CONSTRUCTING+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)}
79 ${CONSTRUCTING+ *(.dtors)}
80 ${CONSTRUCTING+ LONG(0)}
81 ${CONSTRUCTING+ __DTOR_END__ = .;}
82 }
83 ${RELOCATING+_etext = .;}
84 ${RELOCATING+PROVIDE (etext = .);}
85 .fini ${RELOCATING-0} : { *(.fini) } =${NOP-0}
86 .ctors ${RELOCATING-0} : { *(.ctors) }
87 .dtors ${RELOCATING-0} : { *(.dtors) }
88 .rodata ${RELOCATING-0} : { *(.rodata) }
89 .rodata1 ${RELOCATING-0} : { *(.rodata1) }
90 ${OTHER_READONLY_SECTIONS}
91
92 /* Read-write section, merged into data segment: */
93 ${RELOCATING+. = ${DATA_ADDR- ALIGN(8) + ${MAXPAGESIZE}};}
94 .data ${RELOCATING-0} :
95 {
96 ${RELOCATING+${DATA_START_SYMBOLS}}
97 *(.data)
98 ${CONSTRUCTING+CONSTRUCTORS}
99 }
100 .data1 ${RELOCATING-0} : { *(.data1) }
101 ${OTHER_READWRITE_SECTIONS}
102 .got ${RELOCATING-0} : { *(.got.plt) *(.got) }
103 .dynamic ${RELOCATING-0} : { *(.dynamic) }
104 ${DATA_PLT+${PLT}}
105 /* We want the small data sections together, so single-instruction offsets
106 can access them all, and initialized data all before uninitialized, so
107 we can shorten the on-disk segment size. */
108 .sdata ${RELOCATING-0} : { *(.sdata) }
109 ${RELOCATING+_edata = .;}
110 ${RELOCATING+PROVIDE (edata = .);}
111 ${RELOCATING+__bss_start = .;}
112 ${RELOCATING+${OTHER_BSS_SYMBOLS}}
113 .sbss ${RELOCATING-0} : { *(.sbss) *(.scommon) }
114 .bss ${RELOCATING-0} :
115 {
116 *(.dynbss)
117 *(.bss)
118 *(COMMON)
119 }
120 ${RELOCATING+_end = . ;}
121 ${RELOCATING+PROVIDE (end = .);}
122
123 /* These are needed for ELF backends which have not yet been
124 converted to the new style linker. */
125 .stab 0 : { *(.stab) }
126 .stabstr 0 : { *(.stabstr) }
127
128 ${OTHER_SECTIONS}
129}
130EOF
Note: See TracBrowser for help on using the repository browser.