diff options
author | andreast <andreast@FreeBSD.org> | 2012-01-20 18:52:31 +0000 |
---|---|---|
committer | andreast <andreast@FreeBSD.org> | 2012-01-20 18:52:31 +0000 |
commit | b1f7eef0fbd73e973decd4e9576090ee97dcaa61 (patch) | |
tree | 28ff43b9702f750528b3995700f13a2d127ff4e8 /sys/conf | |
parent | e3808d576a4274eadbc5b93d45c291b57be63ad4 (diff) | |
download | FreeBSD-src-b1f7eef0fbd73e973decd4e9576090ee97dcaa61.zip FreeBSD-src-b1f7eef0fbd73e973decd4e9576090ee97dcaa61.tar.gz |
Add the .opd section, this is helps booting a profiled kernel.
Adjust the OUTPUT_ARCH and use the builtin ALIGN() to adjust the data segment.
Diffstat (limited to 'sys/conf')
-rw-r--r-- | sys/conf/ldscript.powerpc64 | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/conf/ldscript.powerpc64 b/sys/conf/ldscript.powerpc64 index a3bd1ff..fafce7b 100644 --- a/sys/conf/ldscript.powerpc64 +++ b/sys/conf/ldscript.powerpc64 @@ -1,7 +1,7 @@ /* $FreeBSD$ */ OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc") -OUTPUT_ARCH(powerpc) +OUTPUT_ARCH(powerpc:common64) ENTRY(__start) SEARCH_DIR(/usr/lib); PROVIDE (__stack = 0); @@ -56,15 +56,19 @@ SECTIONS .sdata2 : { *(.sdata2) } .sbss2 : { *(.sbss2) } /* Adjust the address for the data segment to the next page up. */ - . = ((. + 0x1000) & ~(0x1000 - 1)); + . = ALIGN(4096); .data : { *(.data) *(.gnu.linkonce.d*) CONSTRUCTORS } - .data1 : { *(.data1) } - .got1 : { *(.got1) } + .data1 : { *(.data1) } + .toc1 : ALIGN(8) { *(.toc1) } + .opd : ALIGN(8) { KEEP (*(.opd)) } + .branch_lt : ALIGN(8) { *(.branch_lt) } + .got : ALIGN(8) { *(.got .toc) } + .dynamic : { *(.dynamic) } /* Put .ctors and .dtors next to the .got2 section, so that the pointers get relocated with -mrelocatable. Also put in the .fixup pointers. @@ -81,10 +85,6 @@ SECTIONS .fixup : { *(.fixup) } PROVIDE (_FIXUP_END_ = .); PROVIDE (_GOT2_END_ = .); - PROVIDE (_GOT_START_ = .); - .got : { *(.got) } - .got.plt : { *(.got.plt) } - PROVIDE (_GOT_END_ = .); /* 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. */ |