Correct version of Heikki Lindholms ppc64.ld script

Was butchered by c&p

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5035 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
malc 2008-08-20 22:39:24 +00:00
parent 735ee40d92
commit dc28c732ac
1 changed files with 22 additions and 26 deletions

View File

@ -1,16 +1,15 @@
/* Script for -z combreloc: combine and sort reloc sections */ /* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc",
"elf64-powerpc") "elf64-powerpc")
OUTPUT_ARCH(powerpc:common64) OUTPUT_ARCH(powerpc:common64)
ENTRY(_start) ENTRY(_start)
SEARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib64"); SEARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib64");
EARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.164"); SEARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.164");
EARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64");
EARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib"); SEARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib");
EARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.1"); SEARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.1");
EARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); /* Do we
/* Do we need any of these for elf? need any of these for elf? + __DYNAMIC = 0; */
__DYNAMIC = 0; */
SECTIONS SECTIONS
{ {
/* Read-only sections, merged into text segment: */ /* Read-only sections, merged into text segment: */
@ -63,7 +62,7 @@ SECTIONS
} }
.rel.plt : { *(.rel.plt) } .rel.plt : { *(.rel.plt) }
.rela.plt : { *(.rela.plt) } .rela.plt : { *(.rela.plt) }
.rela.tocbss : { *(.rela.tocbss) } .rela.tocbss : { *(.rela.tocbss) }
.init : .init :
{ {
KEEP (*(.init)) KEEP (*(.init))
@ -89,19 +88,16 @@ SECTIONS
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) } .sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
.eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame_hdr : { *(.eh_frame_hdr) }
.eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table))
(.gcc_except_table.*) } *(.gcc_except_table.*) } /* Adjust the address for the data segment. We want to
/* Adjust the address for the data segment. We want to adjust up to adjust up to + the same address within the page on the next page up. */
the same address within the page on the next page up. */ . = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = DATA_SEGMENT_ALIGN
. = ALIGN (0x10000) - ((0x10000 - .) & (0x10000 - 1)); . = (0x10000, 0x1000); /* Exception handling */
ATA_SEGMENT_ALIGN (0x10000, 0x1000);
/* Exception handling */
.eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table))
(.gcc_except_table.*) } *(.gcc_except_table.*) } /* Thread Local Storage sections */
/* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
/* Ensure the __preinit_array_start label is properly aligned. We /* Ensure the __preinit_array_start label is properly aligned. We
could instead move the label definition inside the section, but could instead move the label definition inside the section, but
the linker would then create the section even if it turns out to the linker would then create the section even if it turns out to
@ -154,9 +150,9 @@ ATA_SEGMENT_ALIGN (0x10000, 0x1000);
SORT(CONSTRUCTORS) SORT(CONSTRUCTORS)
} }
.data1 : { *(.data1) } .data1 : { *(.data1) }
.toc1 ALIGN(8) : { *(.toc1) } .toc1 ALIGN(8) : { *(.toc1) }
.opd ALIGN(8) : { KEEP (*(.opd)) } .opd ALIGN(8) : { KEEP (*(.opd)) }
.got ALIGN(8) : { *(.got .toc) } .got ALIGN(8) : { *(.got .toc) }
/* We want the small data sections together, so single-instruction offsets /* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */ we can shorten the on-disk segment size. */
@ -167,7 +163,7 @@ ATA_SEGMENT_ALIGN (0x10000, 0x1000);
_edata = .; _edata = .;
PROVIDE (edata = .); PROVIDE (edata = .);
__bss_start = .; __bss_start = .;
.tocbss ALIGN(8) : { *(.tocbss)} .tocbss ALIGN(8) : { *(.tocbss)}
.sbss : .sbss :
{ {
PROVIDE (__sbss_start = .); PROVIDE (__sbss_start = .);