diff options
| author | tv <tv@NetBSD.org> | 1999-02-02 19:51:16 +0000 |
|---|---|---|
| committer | tv <tv@NetBSD.org> | 1999-02-02 19:51:16 +0000 |
| commit | 2e8b57510c512922b01977bf9c07cb986ddbaa67 (patch) | |
| tree | 99f0ff2ba55134ad127492d887b5b6567773ef25 /gnu/dist/ld/scripttempl | |
| parent | 269cb58003ce63bbb1763517287a25b909583ae4 (diff) | |
By popular demand, import binutils 2.9.1.
Diffstat (limited to 'gnu/dist/ld/scripttempl')
| -rw-r--r-- | gnu/dist/ld/scripttempl/aix.sc | 1 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/armcoff.sc | 10 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/elfd10v.sc | 2 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/elfppc.sc | 12 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/h8300h.sc | 2 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/h8300s.sc | 2 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/i386go32.sc | 53 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/i960.sc | 4 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/pe.sc | 123 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/tic30aout.sc | 34 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/tic30coff.sc | 58 | ||||
| -rw-r--r-- | gnu/dist/ld/scripttempl/v850.sc | 183 |
12 files changed, 398 insertions, 86 deletions
diff --git a/gnu/dist/ld/scripttempl/aix.sc b/gnu/dist/ld/scripttempl/aix.sc index 29fc3547260..3f4b6175906 100644 --- a/gnu/dist/ld/scripttempl/aix.sc +++ b/gnu/dist/ld/scripttempl/aix.sc @@ -37,6 +37,7 @@ SECTIONS ${RELOCATING+PROVIDE (_edata = .);} } .bss : { + *(.tocbss) *(.bss) *(.bs) *(.uc) diff --git a/gnu/dist/ld/scripttempl/armcoff.sc b/gnu/dist/ld/scripttempl/armcoff.sc index 6ca26859b67..8e07169d560 100644 --- a/gnu/dist/ld/scripttempl/armcoff.sc +++ b/gnu/dist/ld/scripttempl/armcoff.sc @@ -21,18 +21,22 @@ SECTIONS .text ${RELOCATING+ 0x8000} : { *(.init) *(.text) + *(.glue_7t) + *(.glue_7) + *(.rdata) ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; LONG (-1); *(.ctors); *(.ctor); LONG (0); } ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; LONG (-1); *(.dtors); *(.dtor); LONG (0); } *(.fini) - ${RELOCATING+ etext = .}; + ${RELOCATING+ etext = .;} } .data ${RELOCATING+${DATA_ADDR-0x40000 + (. & 0xfffc0fff)}} : { ${RELOCATING+ __data_start__ = . ;} *(.data) ${RELOCATING+ __data_end__ = . ;} - ${RELOCATING+ edata = .}; + ${RELOCATING+ edata = .;} + ${RELOCATING+ _edata = .;} } .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : { @@ -42,6 +46,8 @@ SECTIONS ${RELOCATING+ __bss_end__ = . ;} } + ${RELOCATING+ end = .;} + ${RELOCATING+ _end = .;} ${RELOCATING+ __end__ = .;} .stab 0 ${RELOCATING+(NOLOAD)} : diff --git a/gnu/dist/ld/scripttempl/elfd10v.sc b/gnu/dist/ld/scripttempl/elfd10v.sc index 37b6ce0ceb7..7728f689445 100644 --- a/gnu/dist/ld/scripttempl/elfd10v.sc +++ b/gnu/dist/ld/scripttempl/elfd10v.sc @@ -178,7 +178,7 @@ SECTIONS /* Hmmm, there's got to be a better way. This sets the stack to the top of the simulator memory (i.e. top of 64K data space). */ - .stack 0x2007FFE : { _stack = .; *(.stack) } + .stack 0x00007FFE : { _stack = .; *(.stack) } .text ${RELOCATING+${TEXT_START_ADDR}} : { diff --git a/gnu/dist/ld/scripttempl/elfppc.sc b/gnu/dist/ld/scripttempl/elfppc.sc index b6c542a4a9e..33763bf0ea0 100644 --- a/gnu/dist/ld/scripttempl/elfppc.sc +++ b/gnu/dist/ld/scripttempl/elfppc.sc @@ -15,7 +15,6 @@ # .data section. # OTHER_BSS_SYMBOLS - symbols that appear at the start of the # .bss section besides __bss_start. -# DATA_PLT - .plt should be in data segment, not text segment. # # When adding sections, do note that the names of some sections are used # when specifying the start address of the next. @@ -53,6 +52,9 @@ SECTIONS .hash ${RELOCATING-0} : { *(.hash) } .dynsym ${RELOCATING-0} : { *(.dynsym) } .dynstr ${RELOCATING-0} : { *(.dynstr) } + .gnu.version ${RELOCATING-0} : { *(.gnu.version) } + .gnu.version_d ${RELOCATING-0} : { *(.gnu.version_d) } + .gnu.version_r ${RELOCATING-0} : { *(.gnu.version_r) } .rela.text ${RELOCATING-0} : { *(.rela.text) *(.rela.gnu.linkonce.t*) } .rela.data ${RELOCATING-0} : @@ -68,11 +70,10 @@ SECTIONS .rela.fini ${RELOCATING-0} : { *(.rela.fini) } .rela.bss ${RELOCATING-0} : { *(.rela.bss) } .rela.plt ${RELOCATING-0} : { *(.rela.plt) } - .rela.sdata ${RELOCATING-0} : { *(.rela.sdata2) } - .rela.sbss ${RELOCATING-0} : { *(.rela.sbss2) } + .rela.sdata ${RELOCATING-0} : { *(.rela.sdata) } + .rela.sbss ${RELOCATING-0} : { *(.rela.sbss) } .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2) } .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2) } - ${DATA_PLT-${PLT}} .text ${RELOCATING-0} : { ${RELOCATING+${TEXT_START_SYMBOLS}} @@ -147,7 +148,6 @@ SECTIONS ${CREATE_SHLIB+${SBSS2}} ${RELOCATING+PROVIDE (_GOT_END_ = .);} - ${DATA_PLT+${PLT}} /* We want the small data sections together, so single-instruction offsets can access them all, and initialized data all before uninitialized, so we can shorten the on-disk segment size. */ @@ -159,8 +159,10 @@ SECTIONS ${RELOCATING+PROVIDE (__sbss_start = .);} *(.sbss) *(.scommon) + *(.dynsbss) ${RELOCATING+PROVIDE (__sbss_end = .);} } + ${PLT} .bss ${RELOCATING-0} : { ${RELOCATING+${OTHER_BSS_SYMBOLS}} diff --git a/gnu/dist/ld/scripttempl/h8300h.sc b/gnu/dist/ld/scripttempl/h8300h.sc index d433d682761..d1cfd860b65 100644 --- a/gnu/dist/ld/scripttempl/h8300h.sc +++ b/gnu/dist/ld/scripttempl/h8300h.sc @@ -17,7 +17,7 @@ MEMORY /* The stack starts at the top of main ram. */ topram : o = 0x3fffc, l = 0x4 /* This holds variables in the "tiny" sections. */ - tiny : o = 0xff8000, l = 7f00 + tiny : o = 0xff8000, l = 0x7f00 /* At the very top of the address space is the 8-bit area. */ eight : o = 0xffff00, l = 0x100 } diff --git a/gnu/dist/ld/scripttempl/h8300s.sc b/gnu/dist/ld/scripttempl/h8300s.sc index b43abdf55d9..45474fc51ce 100644 --- a/gnu/dist/ld/scripttempl/h8300s.sc +++ b/gnu/dist/ld/scripttempl/h8300s.sc @@ -17,7 +17,7 @@ MEMORY /* The stack starts at the top of main ram. */ topram : o = 0x3fffc, l = 0x4 /* This holds variables in the "tiny" sections. */ - tiny : o = 0xff8000, l = 7f00 + tiny : o = 0xff8000, l = 0x7f00 /* At the very top of the address space is the 8-bit area. */ eight : o = 0xffff00, l = 0x100 } diff --git a/gnu/dist/ld/scripttempl/i386go32.sc b/gnu/dist/ld/scripttempl/i386go32.sc index 827198bc931..8102205bb9f 100644 --- a/gnu/dist/ld/scripttempl/i386go32.sc +++ b/gnu/dist/ld/scripttempl/i386go32.sc @@ -1,45 +1,40 @@ -# Linker script for i386 go32 COFF. -# stolen from ian -test -z "$ENTRY" && ENTRY=_start -# These are substituted in as variables in order to get '}' in a shell -# conditional expansion. -INIT='.init : { *(.init) }' -FINI='.fini : { *(.fini) }' +# Linker script for i386 go32 (DJGPP) + +test -z "$ENTRY" && ENTRY=start +EXE=${CONSTRUCTING+${RELOCATING+-exe}} cat <<EOF -OUTPUT_FORMAT("${OUTPUT_FORMAT}") -${LIB_SEARCH_DIRS} +OUTPUT_FORMAT("${OUTPUT_FORMAT}${EXE}") ENTRY(${ENTRY}) SECTIONS { - .text ${RELOCATING+ 0x10a8} : { - ${RELOCATING+ *(.init)} + .text ${RELOCATING+ ${TARGET_PAGE_SIZE}+SIZEOF_HEADERS} : { *(.text) - ${RELOCATING+ *(.fini)} - ${RELOCATING+ etext = .}; + *(.const*) + *(.ro*) + ${RELOCATING+etext = . ; _etext = .}; + ${RELOCATING+. = ALIGN(${SEGMENT_SIZE});} } - .data ALIGN (0x1000) : { - *(.data .data2) - *(.ctor) - *(.dtor) - ${RELOCATING+ _edata = .}; + .data ${RELOCATING+ ${DATA_ALIGNMENT}} : { + ${RELOCATING+djgpp_first_ctor = . ; + *(.ctor) + djgpp_last_ctor = . ;} + ${RELOCATING+djgpp_first_dtor = . ; + *(.dtor) + djgpp_last_dtor = . ;} + *(.data) + ${RELOCATING+ edata = . ; _edata = .}; + ${RELOCATING+ . = ALIGN(${SEGMENT_SIZE});} } + ${CONSTRUCTING+${RELOCATING-.ctor : { *(.ctor) }}} + ${CONSTRUCTING+${RELOCATING-.dtor : { *(.dtor) }}} .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : { *(.bss) *(COMMON) - ${RELOCATING+ end = .}; - } - ${RELOCATING- ${INIT}} - ${RELOCATING- ${FINI}} - .stab 0 ${RELOCATING+(NOLOAD)} : - { - [ .stab ] - } - .stabstr 0 ${RELOCATING+(NOLOAD)} : - { - [ .stabstr ] + ${RELOCATING+ end = . ; _end = .}; + ${RELOCATING+ . = ALIGN(${SEGMENT_SIZE});} } } EOF diff --git a/gnu/dist/ld/scripttempl/i960.sc b/gnu/dist/ld/scripttempl/i960.sc index 039e1af947f..dc335555d7d 100644 --- a/gnu/dist/ld/scripttempl/i960.sc +++ b/gnu/dist/ld/scripttempl/i960.sc @@ -8,13 +8,13 @@ SECTIONS ${RELOCATING+ _etext = .}; ${CONSTRUCTING+${COFF_CTORS}} } - .data SIZEOF(.text) + ADDR(.text): + .data : { *(.data) ${CONSTRUCTING+CONSTRUCTORS} ${RELOCATING+ _edata = .}; } - .bss SIZEOF(.data) + ADDR(.data): + .bss : { ${RELOCATING+ _bss_start = .}; *(.bss) diff --git a/gnu/dist/ld/scripttempl/pe.sc b/gnu/dist/ld/scripttempl/pe.sc index 2adc3db9e53..f5cfc70492b 100644 --- a/gnu/dist/ld/scripttempl/pe.sc +++ b/gnu/dist/ld/scripttempl/pe.sc @@ -1,7 +1,39 @@ # Linker script for PE. +if test -z "${RELOCATEABLE_OUTPUT_FORMAT}"; then + RELOCATEABLE_OUTPUT_FORMAT=${OUTPUT_FORMAT} +fi + +# We can't easily and portably get an unquoted $ in a shell +# substitution, so we do this instead. +if test "${RELOCATING}"; then + R_TEXT='*(.text$*)' + R_DATA='*(.data$*)' + R_RDATA='*(.rdata$*)' + R_IDATA=' + *(.idata$2) + *(.idata$3) + /* These zeroes mark the end of the import list. */ + LONG (0); LONG (0); LONG (0); LONG (0); LONG (0); + *(.idata$4) + *(.idata$5) + *(.idata$6) + *(.idata$7)' + R_CRT='*(.CRT$*)' + R_RSRC='*(.rsrc$*)' +else + R_TEXT= + R_DATA= + R_RDATA= + R_IDATA= + R_CRT= + R_RSRC= +fi + cat <<EOF -OUTPUT_FORMAT(${OUTPUT_FORMAT}) +${RELOCATING+OUTPUT_FORMAT(${OUTPUT_FORMAT})} +${RELOCATING-OUTPUT_FORMAT(${RELOCATEABLE_OUTPUT_FORMAT})} + ${LIB_SEARCH_DIRS} ENTRY(_mainCRTStartup) @@ -12,6 +44,9 @@ SECTIONS { ${RELOCATING+ *(.init)} *(.text) + ${R_TEXT} + *(.glue_7t) + *(.glue_7) ${CONSTRUCTING+ ___CTOR_LIST__ = .; __CTOR_LIST__ = . ; LONG (-1); *(.ctors); *(.ctor); LONG (0); } ${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ; @@ -20,44 +55,46 @@ SECTIONS /* ??? Why is .gcc_exc here? */ ${RELOCATING+ *(.gcc_exc)} ${RELOCATING+ etext = .;} - /* Grouped section support currently must be explicitly provided for - in the linker script. */ - *(.text\$) *(.gcc_except_table) } - .bss BLOCK(__section_alignment__) : - { - __bss_start__ = . ; - *(.bss) - *(COMMON) - __bss_end__ = . ; - } - .data BLOCK(__section_alignment__) : + /* The Cygwin32 library uses a section to avoid copying certain data + on fork. This used to be named ".data$nocopy". The linker used + to include this between __data_start__ and __data_end__, but that + breaks building the cygwin32 dll. Instead, we name the section + ".data_cygwin_nocopy" and explictly include it after __data_end__. */ + + .data ${RELOCATING+BLOCK(__section_alignment__)} : { - __data_start__ = . ; + ${RELOCATING+__data_start__ = . ;} *(.data) *(.data2) - __data_end__ = . ; - /* Grouped section support currently must be explicitly provided for - in the linker script. */ - *(.data\$) + ${R_DATA} + ${RELOCATING+__data_end__ = . ;} + ${RELOCATING+*(.data_cygwin_nocopy)} + } + + .bss ${RELOCATING+BLOCK(__section_alignment__)} : + { + ${RELOCATING+__bss_start__ = . ;} + *(.bss) + *(COMMON) + ${RELOCATING+__bss_end__ = . ;} } - .rdata BLOCK(__section_alignment__) : + .rdata ${RELOCATING+BLOCK(__section_alignment__)} : { *(.rdata) - /* Grouped section support currently must be explicitly provided for - in the linker script. */ - *(.rdata\$) + ${R_RDATA} + *(.eh_frame) } - .edata BLOCK(__section_alignment__) : + .edata ${RELOCATING+BLOCK(__section_alignment__)} : { *(.edata) } - /DISCARD/ BLOCK(__section_alignment__) : + /DISCARD/ : { *(.debug\$S) *(.debug\$T) @@ -65,48 +102,44 @@ SECTIONS *(.drectve) } - .idata BLOCK(__section_alignment__) : + .idata ${RELOCATING+BLOCK(__section_alignment__)} : { /* This cannot currently be handled with grouped sections. See pe.em:sort_sections. */ - *(.idata\$2) - *(.idata\$3) - *(.idata\$4) - *(.idata\$5) - *(.idata\$6) - *(.idata\$7) + ${R_IDATA} } - .CRT BLOCK(__section_alignment__) : + .CRT ${RELOCATING+BLOCK(__section_alignment__)} : { - /* Grouped sections are used to handle .CRT\$foo. */ - *(.CRT\$) - } - .rsrc BLOCK(__section_alignment__) : - { - /* Grouped sections are used to handle .rsrc\$0[12]. */ - *(.rsrc\$) + ${R_CRT} } - .endjunk BLOCK(__section_alignment__) : + .endjunk ${RELOCATING+BLOCK(__section_alignment__)} : { /* end is deprecated, don't use it */ ${RELOCATING+ end = .;} ${RELOCATING+ __end__ = .;} } - .stab BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} : + .reloc ${RELOCATING+BLOCK(__section_alignment__)} : + { + *(.reloc) + } + + .rsrc ${RELOCATING+BLOCK(__section_alignment__)} : + { + *(.rsrc) + ${R_RSRC} + } + + .stab ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} : { [ .stab ] } - .stabstr BLOCK(__section_alignment__) ${RELOCATING+(NOLOAD)} : + .stabstr ${RELOCATING+BLOCK(__section_alignment__)} ${RELOCATING+(NOLOAD)} : { [ .stabstr ] } - .reloc BLOCK(__section_alignment__) : - { - *(.reloc) - } } EOF diff --git a/gnu/dist/ld/scripttempl/tic30aout.sc b/gnu/dist/ld/scripttempl/tic30aout.sc new file mode 100644 index 00000000000..28baed37e61 --- /dev/null +++ b/gnu/dist/ld/scripttempl/tic30aout.sc @@ -0,0 +1,34 @@ +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}") +OUTPUT_ARCH(${ARCH}) + +${STACKZERO+${RELOCATING+${STACKZERO}}} +${RELOCATING+PROVIDE (__stack = 0);} +SECTIONS +{ + ${RELOCATING+. = ${TEXT_START_ADDR};} + .text : + { + CREATE_OBJECT_SYMBOLS + *(.text) + ${RELOCATING+_etext = .;} + ${RELOCATING+__etext = .;} + ${PAD_TEXT+${RELOCATING+. = ${DATA_ALIGNMENT};}} + } + ${RELOCATING+. = ${DATA_ALIGNMENT};} + .data : + { + *(.data) + ${RELOCATING+_edata = .;} + ${RELOCATING+__edata = .;} + } + .bss : + { + ${RELOCATING+ __bss_start = .}; + *(.bss) + *(COMMON) + ${RELOCATING+_end = ALIGN(4) }; + ${RELOCATING+__end = ALIGN(4) }; + } +} +EOF diff --git a/gnu/dist/ld/scripttempl/tic30coff.sc b/gnu/dist/ld/scripttempl/tic30coff.sc new file mode 100644 index 00000000000..df2d4f737cd --- /dev/null +++ b/gnu/dist/ld/scripttempl/tic30coff.sc @@ -0,0 +1,58 @@ +cat <<EOF +OUTPUT_FORMAT("${OUTPUT_FORMAT}") +OUTPUT_ARCH("${OUTPUT_ARCH}") + +MEMORY +{ + rom : ORIGIN = 0x00000300, LENGTH = 16k + ram : ORIGIN = 0x00000300 + 16k, LENGTH = 16k + ramblk0 : ORIGIN = 0x02026000, LENGTH = 0x1000 + ramblk1 : ORIGIN = 0x02027000, LENGTH = 0x1000 +} + +SECTIONS +{ +.vectors 0x00000000 : +{ + *(vectors) +} + +.text : +{ + *(.text) +} > rom + +.const : +{ + *(.const) + __etext = . ; +} > rom + +.mdata : AT( ADDR(.const) + SIZEOF(.const) ) +{ + __data = . ; + *(.data); + __edata = . ; +} > ram + +.bss : +{ + __bss = . ; + *(.bss); + *(COMMON); + __ebss = . ; +} > ram + +.ram0 : +{ + *(ram0) +} > ramblk0 + +.ram1 : +{ + *(ram1) +} > ramblk1 + +} + +EOF diff --git a/gnu/dist/ld/scripttempl/v850.sc b/gnu/dist/ld/scripttempl/v850.sc new file mode 100644 index 00000000000..6f3844ee43e --- /dev/null +++ b/gnu/dist/ld/scripttempl/v850.sc @@ -0,0 +1,183 @@ +cat << EOF +OUTPUT_FORMAT("elf32-v850", "elf32-v850", + "elf32-v850") +OUTPUT_ARCH(v850) +ENTRY(_start) +SEARCH_DIR(.); +/*/critters/slug/grossman/install/sun4/v850-elf/lib*/ +SECTIONS +{ + /* This saves a little space in the ELF file, since the zda starts + at a higher location that the ELF headers take up. */ + + .zdata ${ZDATA_START_ADDR} : { + *(.zdata) + *(.zbss) + *(reszdata) + *(.zcommon) + } + + /* This is the read only part of the zero data area. + Having it as a seperate section prevents its + attributes from being inherited by the zdata + section. Specifically it prevents the zdata + section from being marked READONLY. */ + + .rozdata ${ROZDATA_START_ADDR} : { + *(.rozdata) + *(romzdata) + *(romzbss) + } + + /* Read-only sections, merged into text segment: */ + . = ${TEXT_START_ADDR}; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } =0 + .plt : { *(.plt) } + + .text : { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0 + + ${RELOCATING+_etext = .;} + ${RELOCATING+PROVIDE (etext = .);} + + + .fini : { *(.fini) } =0 + .rodata : { *(.rodata) *(.gnu.linkonce.r*) } + .rodata1 : { *(.rodata1) } + + .data : { + *(.data) + *(.gnu.linkonce.d*) + CONSTRUCTORS + } + .data1 : { *(.data1) } + .ctors : { + ${RELOCATING+___ctors = .;} + *(.ctors) + ${RELOCATING+___ctors_end = .;} + } + + .dtors : { + ${RELOCATING+___dtors = .;} + *(.dtors) + ${RELOCATING+___dtors_end = .;} + } + + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + + .tdata ${TDATA_START_ADDR} : { + ${RELOCATING+PROVIDE (__ep = .);} + *(.tbyte) + *(.tcommon_byte) + *(.tdata) + *(.tbss) + *(.tcommon) + } + + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata ${SDATA_START_ADDR} : { + ${RELOCATING+PROVIDE (__gp = . + 0x8000);} + *(.sdata) + ${RELOCATING+__sbss_start = .;} + *(.sbss) + *(.scommon) + } + + /* See comment about .rozdata */ + .rosdata ${ROSDATA_START_ADDR} : { + *(.rosdata) + } + + ${RELOCATING+_edata = DEFINED (__sbss_start) ? __sbss_start : . ;} + ${RELOCATING+PROVIDE (edata = _edata);} + + .bss : + { + ${RELOCATING+__bss_start = DEFINED (__sbss_start) ? __sbss_start : . ;} + *(.dynbss) + *(.bss) + *(COMMON) + } + + ${RELOCATING+_end = . ;} + ${RELOCATING+PROVIDE (end = .);} + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + /* User stack */ + .stack 0x200000 : { + ${RELOCATING+__stack = .;} + *(.stack) + } + /* These must appear regardless of . */ +} +EOF |
