diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.x new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.x *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.x Sat Jan 17 17:58:17 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.x Tue Jun 20 17:13:05 2000 *************** *** 1,9 **** - /* Default linker script, for normal executables */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS --- 1,8 ---- OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR(/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS *************** *** 17,130 **** .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.init : { *(.rel.init) } ! .rela.init : { *(.rela.init) } ! .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } ! .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } ! .rel.fini : { *(.rel.fini) } ! .rela.fini : { *(.rela.fini) } ! .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } ! .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } ! .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } ! .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } ! .rel.got : { *(.rel.got) } ! .rela.got : { *(.rela.got) } ! .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } ! .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } ! .init : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt : { *(.plt) } .text : { ! *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini : ! { ! KEEP (*(.fini)) ! } =0x90909090 ! PROVIDE (__etext = .); ! PROVIDE (_etext = .); PROVIDE (etext = .); ! .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - PROVIDE (__preinit_array_start = .); - .preinit_array : { *(.preinit_array) } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { *(.init_array) } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { *(.fini_array) } - PROVIDE (__fini_array_end = .); .data : { ! *(.data .data.* .gnu.linkonce.d.*) ! SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } .ctors : { ! /* gcc uses crtbegin.o to find the start of ! the constructors, so we make sure it is ! first. Because this is a wildcard, it ! doesn't matter if the user does not ! actually link against crtbegin.o; the ! linker won't look for a file to match a ! wildcard. The wildcard also means that it ! doesn't matter which directory crtbegin.o ! is in. */ ! KEEP (*crtbegin.o(.ctors)) ! /* We don't want to include the .ctor section from ! from the crtend.o file until after the sorted ctors. ! The .ctor section from the crtend file contains the ! end of ctors marker and it must be last */ ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) ! KEEP (*(SORT(.ctors.*))) ! KEEP (*(.ctors)) } .dtors : { ! KEEP (*crtbegin.o(.dtors)) ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) ! KEEP (*(SORT(.dtors.*))) ! KEEP (*(.dtors)) } - .jcr : { KEEP (*(.jcr)) } .got : { *(.got.plt) *(.got) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) ! *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); } . = ALIGN(32 / 8); _end = .; --- 16,95 ---- .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.text : ! { *(.rel.text) *(.rel.gnu.linkonce.t*) } ! .rela.text : ! { *(.rela.text) *(.rela.gnu.linkonce.t*) } ! .rel.data : ! { *(.rel.data) *(.rel.gnu.linkonce.d*) } ! .rela.data : ! { *(.rela.data) *(.rela.gnu.linkonce.d*) } ! .rel.rodata : ! { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } ! .rela.rodata : ! { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } ! .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) } =0x9090 .plt : { *(.plt) } .text : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! *(.gnu.linkonce.t*) ! } =0x9090 ! _etext = .; PROVIDE (etext = .); ! .fini : { *(.fini) } =0x9090 ! .rodata : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); .data : { ! *(.data) ! *(.gnu.linkonce.d*) ! CONSTRUCTORS } .data1 : { *(.data1) } .ctors : { ! *(.ctors) } .dtors : { ! *(.dtors) } .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* 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) } _edata = .; PROVIDE (edata = .); __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } .bss : { *(.dynbss) ! *(.bss) *(COMMON) } . = ALIGN(32 / 8); _end = . ; *************** *** 150,156 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 115,121 ---- .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) } *************** *** 162,165 **** --- 127,131 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ } diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xbn new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xbn *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xbn Sat Jan 17 17:58:17 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xbn Tue Jun 20 17:13:06 2000 *************** *** 1,9 **** - /* Script for -N: mix text and data on same page; don't align data */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS --- 1,8 ---- OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR(/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS *************** *** 17,130 **** .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.init : { *(.rel.init) } ! .rela.init : { *(.rela.init) } ! .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } ! .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } ! .rel.fini : { *(.rel.fini) } ! .rela.fini : { *(.rela.fini) } ! .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } ! .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } ! .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } ! .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } ! .rel.got : { *(.rel.got) } ! .rela.got : { *(.rela.got) } ! .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } ! .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } ! .init : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt : { *(.plt) } .text : { ! *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini : ! { ! KEEP (*(.fini)) ! } =0x90909090 ! PROVIDE (__etext = .); ! PROVIDE (_etext = .); PROVIDE (etext = .); ! .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - PROVIDE (__preinit_array_start = .); - .preinit_array : { *(.preinit_array) } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { *(.init_array) } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { *(.fini_array) } - PROVIDE (__fini_array_end = .); .data : { ! *(.data .data.* .gnu.linkonce.d.*) ! SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } .ctors : { ! /* gcc uses crtbegin.o to find the start of ! the constructors, so we make sure it is ! first. Because this is a wildcard, it ! doesn't matter if the user does not ! actually link against crtbegin.o; the ! linker won't look for a file to match a ! wildcard. The wildcard also means that it ! doesn't matter which directory crtbegin.o ! is in. */ ! KEEP (*crtbegin.o(.ctors)) ! /* We don't want to include the .ctor section from ! from the crtend.o file until after the sorted ctors. ! The .ctor section from the crtend file contains the ! end of ctors marker and it must be last */ ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) ! KEEP (*(SORT(.ctors.*))) ! KEEP (*(.ctors)) } .dtors : { ! KEEP (*crtbegin.o(.dtors)) ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) ! KEEP (*(SORT(.dtors.*))) ! KEEP (*(.dtors)) } - .jcr : { KEEP (*(.jcr)) } .got : { *(.got.plt) *(.got) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) ! *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); } . = ALIGN(32 / 8); _end = .; --- 16,95 ---- .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.text : ! { *(.rel.text) *(.rel.gnu.linkonce.t*) } ! .rela.text : ! { *(.rela.text) *(.rela.gnu.linkonce.t*) } ! .rel.data : ! { *(.rel.data) *(.rel.gnu.linkonce.d*) } ! .rela.data : ! { *(.rela.data) *(.rela.gnu.linkonce.d*) } ! .rel.rodata : ! { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } ! .rela.rodata : ! { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } ! .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) } =0x9090 .plt : { *(.plt) } .text : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! *(.gnu.linkonce.t*) ! } =0x9090 ! _etext = .; PROVIDE (etext = .); ! .fini : { *(.fini) } =0x9090 ! .rodata : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; .data : { ! *(.data) ! *(.gnu.linkonce.d*) ! CONSTRUCTORS } .data1 : { *(.data1) } .ctors : { ! *(.ctors) } .dtors : { ! *(.dtors) } .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* 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) } _edata = .; PROVIDE (edata = .); __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } .bss : { *(.dynbss) ! *(.bss) *(COMMON) } . = ALIGN(32 / 8); _end = . ; *************** *** 150,156 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 115,121 ---- .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) } *************** *** 162,165 **** --- 127,131 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ } diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xc new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xc *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xc Sat Jan 17 17:58:17 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xc Thu Jan 1 09:00:00 1970 *************** *** 1,171 **** - /* Script for -z combreloc: combine and sort reloc sections */ - OUTPUT_FORMAT("elf32-i386", "elf32-i386", - "elf32-i386") - OUTPUT_ARCH(i386) - ENTRY(_start) - SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); - /* Do we need any of these for elf? - __DYNAMIC = 0; */ - SECTIONS - { - /* Read-only sections, merged into text segment: */ - . = 0x08048000 + SIZEOF_HEADERS; - .interp : { *(.interp) } - .hash : { *(.hash) } - .dynsym : { *(.dynsym) } - .dynstr : { *(.dynstr) } - .gnu.version : { *(.gnu.version) } - .gnu.version_d : { *(.gnu.version_d) } - .gnu.version_r : { *(.gnu.version_r) } - .rel.dyn : - { - *(.rel.init) - *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) - *(.rel.fini) - *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) - *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) - *(.rel.ctors) - *(.rel.dtors) - *(.rel.got) - *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) - } - .rela.dyn : - { - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - } - .rel.plt : { *(.rel.plt) } - .rela.plt : { *(.rela.plt) } - .init : - { - KEEP (*(.init)) - } =0x90909090 - .plt : { *(.plt) } - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } =0x90909090 - .fini : - { - KEEP (*(.fini)) - } =0x90909090 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ - . = ALIGN(0x1000) + (. & (0x1000 - 1)); - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - PROVIDE (__preinit_array_start = .); - .preinit_array : { *(.preinit_array) } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { *(.init_array) } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { *(.fini_array) } - PROVIDE (__fini_array_end = .); - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - SORT(CONSTRUCTORS) - } - .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - .dtors : - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - .jcr : { KEEP (*(.jcr)) } - .got : { *(.got.plt) *(.got) } - _edata = .; - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); - } - . = ALIGN(32 / 8); - _end = .; - 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 .gnu.linkonce.wi.*) } - .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) } - } --- 0 ---- diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xn new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xn *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xn Sat Jan 17 17:58:17 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xn Tue Jun 20 17:13:06 2000 *************** *** 1,9 **** - /* Script for -n: mix text and data on same page */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS --- 1,8 ---- OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR(/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS *************** *** 17,130 **** .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.init : { *(.rel.init) } ! .rela.init : { *(.rela.init) } ! .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } ! .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } ! .rel.fini : { *(.rel.fini) } ! .rela.fini : { *(.rela.fini) } ! .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } ! .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } ! .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } ! .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } ! .rel.got : { *(.rel.got) } ! .rela.got : { *(.rela.got) } ! .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } ! .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } ! .init : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt : { *(.plt) } .text : { ! *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini : ! { ! KEEP (*(.fini)) ! } =0x90909090 ! PROVIDE (__etext = .); ! PROVIDE (_etext = .); PROVIDE (etext = .); ! .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - PROVIDE (__preinit_array_start = .); - .preinit_array : { *(.preinit_array) } - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { *(.init_array) } - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { *(.fini_array) } - PROVIDE (__fini_array_end = .); .data : { ! *(.data .data.* .gnu.linkonce.d.*) ! SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } .ctors : { ! /* gcc uses crtbegin.o to find the start of ! the constructors, so we make sure it is ! first. Because this is a wildcard, it ! doesn't matter if the user does not ! actually link against crtbegin.o; the ! linker won't look for a file to match a ! wildcard. The wildcard also means that it ! doesn't matter which directory crtbegin.o ! is in. */ ! KEEP (*crtbegin.o(.ctors)) ! /* We don't want to include the .ctor section from ! from the crtend.o file until after the sorted ctors. ! The .ctor section from the crtend file contains the ! end of ctors marker and it must be last */ ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) ! KEEP (*(SORT(.ctors.*))) ! KEEP (*(.ctors)) } .dtors : { ! KEEP (*crtbegin.o(.dtors)) ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) ! KEEP (*(SORT(.dtors.*))) ! KEEP (*(.dtors)) } - .jcr : { KEEP (*(.jcr)) } .got : { *(.got.plt) *(.got) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) ! *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); } . = ALIGN(32 / 8); _end = .; --- 16,95 ---- .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.text : ! { *(.rel.text) *(.rel.gnu.linkonce.t*) } ! .rela.text : ! { *(.rela.text) *(.rela.gnu.linkonce.t*) } ! .rel.data : ! { *(.rel.data) *(.rel.gnu.linkonce.d*) } ! .rela.data : ! { *(.rela.data) *(.rela.gnu.linkonce.d*) } ! .rel.rodata : ! { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } ! .rela.rodata : ! { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } ! .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) } =0x9090 .plt : { *(.plt) } .text : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! *(.gnu.linkonce.t*) ! } =0x9090 ! _etext = .; PROVIDE (etext = .); ! .fini : { *(.fini) } =0x9090 ! .rodata : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); .data : { ! *(.data) ! *(.gnu.linkonce.d*) ! CONSTRUCTORS } .data1 : { *(.data1) } .ctors : { ! *(.ctors) } .dtors : { ! *(.dtors) } .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* 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) } _edata = .; PROVIDE (edata = .); __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } .bss : { *(.dynbss) ! *(.bss) *(COMMON) } . = ALIGN(32 / 8); _end = . ; *************** *** 150,156 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 115,121 ---- .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) } *************** *** 162,165 **** --- 127,131 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ } diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xr new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xr *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xr Sat Jan 17 17:58:17 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xr Tue Jun 20 17:13:06 2000 *************** *** 1,4 **** - /* Script for ld -r: link without relocation */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) --- 1,3 ---- *************** *** 17,87 **** .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } ! .rel.init 0 : { *(.rel.init) } ! .rela.init 0 : { *(.rela.init) } ! .rel.text 0 : { *(.rel.text) } ! .rela.text 0 : { *(.rela.text) } ! .rel.fini 0 : { *(.rel.fini) } ! .rela.fini 0 : { *(.rela.fini) } ! .rel.rodata 0 : { *(.rel.rodata) } ! .rela.rodata 0 : { *(.rela.rodata) } ! .rel.data 0 : { *(.rel.data) } ! .rela.data 0 : { *(.rela.data) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } ! .rel.got 0 : { *(.rel.got) } ! .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } ! .init 0 : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { ! *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini 0 : ! { ! KEEP (*(.fini)) ! } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - .preinit_array 0 : { *(.preinit_array) } - .init_array 0 : { *(.init_array) } - .fini_array 0 : { *(.fini_array) } .data 0 : { *(.data) } .data1 0 : { *(.data1) } ! .eh_frame 0 : { KEEP (*(.eh_frame)) } ! .gcc_except_table 0 : { *(.gcc_except_table) } ! .dynamic 0 : { *(.dynamic) } ! .jcr 0 : { KEEP (*(.jcr)) } .got 0 : { *(.got.plt) *(.got) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } --- 16,86 ---- .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0 : { *(.gnu.version_d) } .gnu.version_r 0 : { *(.gnu.version_r) } ! .rel.text 0 : ! { *(.rel.text) } ! .rela.text 0 : ! { *(.rela.text) } ! .rel.data 0 : ! { *(.rel.data) } ! .rela.data 0 : ! { *(.rela.data) } ! .rel.rodata 0 : ! { *(.rel.rodata) } ! .rela.rodata 0 : ! { *(.rela.rodata) } ! .rel.got 0 : { *(.rel.got) } ! .rela.got 0 : { *(.rela.got) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } ! .rel.init 0 : { *(.rel.init) } ! .rela.init 0 : { *(.rela.init) } ! .rel.fini 0 : { *(.rel.fini) } ! .rela.fini 0 : { *(.rela.fini) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } ! .init 0 : { *(.init) } =0x9090 .plt 0 : { *(.plt) } .text 0 : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x9090 ! .fini 0 : { *(.fini) } =0x9090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ .data 0 : { *(.data) } .data1 0 : { *(.data1) } ! .ctors 0 : ! { ! *(.ctors) ! } ! .dtors 0 : ! { ! *(.dtors) ! } .got 0 : { *(.got.plt) *(.got) } + .dynamic 0 : { *(.dynamic) } + /* 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 0 : { *(.sdata) } + .sbss 0 : { *(.sbss) *(.scommon) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } *************** *** 104,110 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 103,109 ---- .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) } *************** *** 116,119 **** --- 115,119 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ } diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xs new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xs *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xs Sat Jan 17 17:58:18 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xs Tue Jun 20 17:13:06 2000 *************** *** 1,9 **** - /* Script for ld --shared: link shared library */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS --- 1,8 ---- OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) ENTRY(_start) ! SEARCH_DIR(/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS *************** *** 16,123 **** .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.init : { *(.rel.init) } ! .rela.init : { *(.rela.init) } ! .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } ! .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } ! .rel.fini : { *(.rel.fini) } ! .rela.fini : { *(.rela.fini) } ! .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } ! .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } ! .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } ! .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } .rel.ctors : { *(.rel.ctors) } .rela.ctors : { *(.rela.ctors) } .rel.dtors : { *(.rel.dtors) } .rela.dtors : { *(.rela.dtors) } ! .rel.got : { *(.rel.got) } ! .rela.got : { *(.rela.got) } ! .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } ! .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } ! .init : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt : { *(.plt) } .text : { ! *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini : ! { ! KEEP (*(.fini)) ! } =0x90909090 ! PROVIDE (__etext = .); ! PROVIDE (_etext = .); PROVIDE (etext = .); ! .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - .preinit_array : { *(.preinit_array) } - .init_array : { *(.init_array) } - .fini_array : { *(.fini_array) } .data : { ! *(.data .data.* .gnu.linkonce.d.*) ! SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } .ctors : { ! /* gcc uses crtbegin.o to find the start of ! the constructors, so we make sure it is ! first. Because this is a wildcard, it ! doesn't matter if the user does not ! actually link against crtbegin.o; the ! linker won't look for a file to match a ! wildcard. The wildcard also means that it ! doesn't matter which directory crtbegin.o ! is in. */ ! KEEP (*crtbegin.o(.ctors)) ! /* We don't want to include the .ctor section from ! from the crtend.o file until after the sorted ctors. ! The .ctor section from the crtend file contains the ! end of ctors marker and it must be last */ ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) ! KEEP (*(SORT(.ctors.*))) ! KEEP (*(.ctors)) } .dtors : { ! KEEP (*crtbegin.o(.dtors)) ! KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) ! KEEP (*(SORT(.dtors.*))) ! KEEP (*(.dtors)) } - .jcr : { KEEP (*(.jcr)) } .got : { *(.got.plt) *(.got) } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) ! *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); } . = ALIGN(32 / 8); _end = .; --- 15,94 ---- .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } ! .rel.text : ! { *(.rel.text) *(.rel.gnu.linkonce.t*) } ! .rela.text : ! { *(.rela.text) *(.rela.gnu.linkonce.t*) } ! .rel.data : ! { *(.rel.data) *(.rel.gnu.linkonce.d*) } ! .rela.data : ! { *(.rela.data) *(.rela.gnu.linkonce.d*) } ! .rel.rodata : ! { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } ! .rela.rodata : ! { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } ! .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) } =0x9090 .plt : { *(.plt) } .text : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! *(.gnu.linkonce.t*) ! } =0x9090 ! _etext = .; PROVIDE (etext = .); ! .fini : { *(.fini) } =0x9090 ! .rodata : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(0x1000) + (. & (0x1000 - 1)); .data : { ! *(.data) ! *(.gnu.linkonce.d*) ! CONSTRUCTORS } .data1 : { *(.data1) } .ctors : { ! *(.ctors) } .dtors : { ! *(.dtors) } .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* 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) } _edata = .; PROVIDE (edata = .); __bss_start = .; + .sbss : { *(.sbss) *(.scommon) } .bss : { *(.dynbss) ! *(.bss) *(COMMON) } . = ALIGN(32 / 8); _end = . ; *************** *** 143,149 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 114,120 ---- .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) } *************** *** 155,158 **** --- 126,130 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ } diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xsc new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xsc *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xsc Sat Jan 17 17:58:18 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xsc Thu Jan 1 09:00:00 1970 *************** *** 1,164 **** - /* Script for --shared -z combreloc: shared library, combine & sort relocs */ - OUTPUT_FORMAT("elf32-i386", "elf32-i386", - "elf32-i386") - OUTPUT_ARCH(i386) - ENTRY(_start) - SEARCH_DIR("/usr/local/brightv/tool/gnu/i386-unknown-gnu/lib"); - /* Do we need any of these for elf? - __DYNAMIC = 0; */ - SECTIONS - { - /* Read-only sections, merged into text segment: */ - . = 0 + SIZEOF_HEADERS; - .hash : { *(.hash) } - .dynsym : { *(.dynsym) } - .dynstr : { *(.dynstr) } - .gnu.version : { *(.gnu.version) } - .gnu.version_d : { *(.gnu.version_d) } - .gnu.version_r : { *(.gnu.version_r) } - .rel.dyn : - { - *(.rel.init) - *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) - *(.rel.fini) - *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) - *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) - *(.rel.ctors) - *(.rel.dtors) - *(.rel.got) - *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) - } - .rela.dyn : - { - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - } - .rel.plt : { *(.rel.plt) } - .rela.plt : { *(.rela.plt) } - .init : - { - KEEP (*(.init)) - } =0x90909090 - .plt : { *(.plt) } - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } =0x90909090 - .fini : - { - KEEP (*(.fini)) - } =0x90909090 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ - . = ALIGN(0x1000) + (. & (0x1000 - 1)); - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - . = ALIGN(32 / 8); - .preinit_array : { *(.preinit_array) } - .init_array : { *(.init_array) } - .fini_array : { *(.fini_array) } - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - SORT(CONSTRUCTORS) - } - .data1 : { *(.data1) } - .eh_frame : { KEEP (*(.eh_frame)) } - .gcc_except_table : { *(.gcc_except_table) } - .dynamic : { *(.dynamic) } - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - .dtors : - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - .jcr : { KEEP (*(.jcr)) } - .got : { *(.got.plt) *(.got) } - _edata = .; - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(32 / 8); - } - . = ALIGN(32 / 8); - _end = .; - 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 .gnu.linkonce.wi.*) } - .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) } - } --- 0 ---- diff -Ncwr orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xu new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xu *** orig/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xu Sat Jan 17 17:58:18 2009 --- new/tool/gnu/i386-unknown-gnu/lib/ldscripts/elf_i386.xu Tue Jun 20 17:13:07 2000 *************** *** 1,4 **** - /* Script for ld -Ur: link w/out relocation, do create constructors */ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") OUTPUT_ARCH(i386) --- 1,3 ---- *************** *** 17,88 **** .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0: { *(.gnu.version_d) } .gnu.version_r 0: { *(.gnu.version_r) } ! .rel.init 0 : { *(.rel.init) } ! .rela.init 0 : { *(.rela.init) } ! .rel.text 0 : { *(.rel.text) } ! .rela.text 0 : { *(.rela.text) } ! .rel.fini 0 : { *(.rel.fini) } ! .rela.fini 0 : { *(.rela.fini) } ! .rel.rodata 0 : { *(.rel.rodata) } ! .rela.rodata 0 : { *(.rela.rodata) } ! .rel.data 0 : { *(.rel.data) } ! .rela.data 0 : { *(.rela.data) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } ! .rel.got 0 : { *(.rel.got) } ! .rela.got 0 : { *(.rela.got) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } ! .init 0 : ! { ! KEEP (*(.init)) ! } =0x90909090 .plt 0 : { *(.plt) } .text 0 : { ! *(.text .stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x90909090 ! .fini 0 : ! { ! KEEP (*(.fini)) ! } =0x90909090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - .preinit_array 0 : { *(.preinit_array) } - .init_array 0 : { *(.init_array) } - .fini_array 0 : { *(.fini_array) } .data 0 : { *(.data) ! SORT(CONSTRUCTORS) } .data1 0 : { *(.data1) } ! .eh_frame 0 : { KEEP (*(.eh_frame)) } ! .gcc_except_table 0 : { *(.gcc_except_table) } ! .dynamic 0 : { *(.dynamic) } ! .jcr 0 : { KEEP (*(.jcr)) } .got 0 : { *(.got.plt) *(.got) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } --- 16,87 ---- .gnu.version 0 : { *(.gnu.version) } .gnu.version_d 0 : { *(.gnu.version_d) } .gnu.version_r 0 : { *(.gnu.version_r) } ! .rel.text 0 : ! { *(.rel.text) } ! .rela.text 0 : ! { *(.rela.text) } ! .rel.data 0 : ! { *(.rel.data) } ! .rela.data 0 : ! { *(.rela.data) } ! .rel.rodata 0 : ! { *(.rel.rodata) } ! .rela.rodata 0 : ! { *(.rela.rodata) } ! .rel.got 0 : { *(.rel.got) } ! .rela.got 0 : { *(.rela.got) } .rel.ctors 0 : { *(.rel.ctors) } .rela.ctors 0 : { *(.rela.ctors) } .rel.dtors 0 : { *(.rel.dtors) } .rela.dtors 0 : { *(.rela.dtors) } ! .rel.init 0 : { *(.rel.init) } ! .rela.init 0 : { *(.rela.init) } ! .rel.fini 0 : { *(.rel.fini) } ! .rela.fini 0 : { *(.rela.fini) } .rel.bss 0 : { *(.rel.bss) } .rela.bss 0 : { *(.rela.bss) } .rel.plt 0 : { *(.rel.plt) } .rela.plt 0 : { *(.rela.plt) } ! .init 0 : { *(.init) } =0x9090 .plt 0 : { *(.plt) } .text 0 : { ! *(.text) ! *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) ! } =0x9090 ! .fini 0 : { *(.fini) } =0x9090 .rodata 0 : { *(.rodata) } .rodata1 0 : { *(.rodata1) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ .data 0 : { *(.data) ! CONSTRUCTORS } .data1 0 : { *(.data1) } ! .ctors 0 : ! { ! *(.ctors) ! } ! .dtors 0 : ! { ! *(.dtors) ! } .got 0 : { *(.got.plt) *(.got) } + .dynamic 0 : { *(.dynamic) } + /* 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 0 : { *(.sdata) } + .sbss 0 : { *(.sbss) *(.scommon) } .bss 0 : { *(.dynbss) *(.bss) *(COMMON) } /* Stabs debugging sections. */ .stab 0 : { *(.stab) } *************** *** 105,111 **** .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ ! .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } --- 104,110 ---- .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) } *************** *** 117,120 **** --- 116,120 ---- .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } + /* These must appear regardless of . */ }