diff options
author | David E. O'Brien <obrien@FreeBSD.org> | 2004-06-16 05:45:41 +0000 |
---|---|---|
committer | David E. O'Brien <obrien@FreeBSD.org> | 2004-06-16 05:45:41 +0000 |
commit | da03bc7002a961c3863f89c3b3300cc0e3c122ed (patch) | |
tree | 04848ae93445e503c4190ca1748abe15eabc9e11 /contrib/binutils/ld/scripttempl | |
parent | 3d37d1c75e3d84684f4251afe6e06047d7ce2177 (diff) | |
download | src-da03bc7002a961c3863f89c3b3300cc0e3c122ed.tar.gz src-da03bc7002a961c3863f89c3b3300cc0e3c122ed.zip |
Import of Binutils from the FSF 2.15 branch (just post-.0 release).
These bits are taken from the FSF anoncvs repo on 23-May-2004 04:41:00 UTC.
Notes
Notes:
svn path=/vendor/binutils/dist/; revision=130561
Diffstat (limited to 'contrib/binutils/ld/scripttempl')
-rw-r--r-- | contrib/binutils/ld/scripttempl/armcoff.sc | 4 | ||||
-rw-r--r-- | contrib/binutils/ld/scripttempl/elf.sc | 27 | ||||
-rw-r--r-- | contrib/binutils/ld/scripttempl/pe.sc | 15 |
3 files changed, 30 insertions, 16 deletions
diff --git a/contrib/binutils/ld/scripttempl/armcoff.sc b/contrib/binutils/ld/scripttempl/armcoff.sc index c61f73472466..781301c807da 100644 --- a/contrib/binutils/ld/scripttempl/armcoff.sc +++ b/contrib/binutils/ld/scripttempl/armcoff.sc @@ -44,7 +44,7 @@ SECTIONS ${RELOCATING+ etext = .;} ${RELOCATING+ _etext = .;} } - .data ${RELOCATING+${DATA_ADDR-0x40000 + (. & 0xfffc0fff)}} : { + .data ${RELOCATING+${DATA_ADDR-0x40000 + (ALIGN(0x8) & 0xfffc0fff)}} : { ${RELOCATING+ __data_start__ = . ;} *(.data*) @@ -60,7 +60,7 @@ SECTIONS } ${CONSTRUCTING+${RELOCATING-$CTOR}} ${CONSTRUCTING+${RELOCATING-$DTOR}} - .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + .bss ${RELOCATING+ ALIGN(0x8)} : { ${RELOCATING+ __bss_start__ = . ;} *(.bss) diff --git a/contrib/binutils/ld/scripttempl/elf.sc b/contrib/binutils/ld/scripttempl/elf.sc index 6bbe1b802bb0..187a289d1f57 100644 --- a/contrib/binutils/ld/scripttempl/elf.sc +++ b/contrib/binutils/ld/scripttempl/elf.sc @@ -72,18 +72,20 @@ if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHI test -z "${ELFSIZE}" && ELFSIZE=32 test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8" test "$LD_FLAG" = "N" && DATA_ADDR=. -test -n "$CREATE_SHLIB" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE="" -test -z "$CREATE_SHLIB" && test -n "$DATA_ADDR" && COMMONPAGESIZE="" -DATA_SEGMENT_ALIGN="ALIGN(${MAXPAGESIZE}) + (. & (${MAXPAGESIZE} - 1))" +test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE="" +test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE="" +DATA_SEGMENT_ALIGN="ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1))" DATA_SEGMENT_END="" if test -n "${COMMONPAGESIZE}"; then - DATA_SEGMENT_ALIGN="DATA_SEGMENT_ALIGN(${MAXPAGESIZE}, ${COMMONPAGESIZE})" + DATA_SEGMENT_ALIGN="ALIGN (${SEGMENT_SIZE}) - ((${MAXPAGESIZE} - .) & (${MAXPAGESIZE} - 1)); . = DATA_SEGMENT_ALIGN (${MAXPAGESIZE}, ${COMMONPAGESIZE})" DATA_SEGMENT_END=". = DATA_SEGMENT_END (.);" fi INTERP=".interp ${RELOCATING-0} : { *(.interp) }" PLT=".plt ${RELOCATING-0} : { *(.plt) }" +test -z "$GOT" && GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }" DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }" RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }" +STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }" if test -z "${NO_SMALL_DATA}"; then SBSS=".sbss ${RELOCATING-0} : { @@ -127,14 +129,14 @@ CTOR=".ctors ${CONSTRUCTING-0} : doesn't matter which directory crtbegin.o is in. */ - KEEP (*crtbegin.o(.ctors)) + 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 $OTHER_EXCLUDE_FILES) .ctors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) ${CONSTRUCTING+${CTOR_END}} @@ -142,8 +144,8 @@ CTOR=".ctors ${CONSTRUCTING-0} : DTOR=".dtors ${CONSTRUCTING-0} : { ${CONSTRUCTING+${DTOR_START}} - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o $OTHER_EXCLUDE_FILES) .dtors)) + KEEP (*crtbegin*.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) ${CONSTRUCTING+${DTOR_END}} @@ -180,8 +182,9 @@ ${RELOCATING- /* For some reason, the Solaris linker makes bad executables SECTIONS { /* Read-only sections, merged into text segment: */ - ${CREATE_SHLIB-${RELOCATING+. = ${TEXT_BASE_ADDRESS};}} + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}} ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${CREATE_SHLIB-${INTERP}} ${INITIAL_READONLY_SECTIONS} ${TEXT_DYNAMIC+${DYNAMIC}} @@ -283,8 +286,9 @@ cat <<EOF /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ - ${CREATE_SHLIB-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}} + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}} ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}} + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}} /* Ensure the __preinit_array_start label is properly aligned. We could instead move the label definition inside the section, but @@ -322,7 +326,7 @@ cat <<EOF .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) } ${DATA_PLT+${PLT}} ${RELOCATING+${OTHER_GOT_SYMBOLS}} - .got ${RELOCATING-0} : { *(.got.plt) *(.got) } + ${GOT} ${OTHER_GOT_SECTIONS} ${CREATE_SHLIB+${SDATA2}} ${CREATE_SHLIB+${SBSS2}} @@ -395,5 +399,6 @@ cat <<EOF ${STACK_ADDR+${STACK}} ${OTHER_SECTIONS} ${RELOCATING+${OTHER_END_SYMBOLS}} + ${RELOCATING+${STACKNOTE}} } EOF diff --git a/contrib/binutils/ld/scripttempl/pe.sc b/contrib/binutils/ld/scripttempl/pe.sc index a22611c105ac..da09eb430481 100644 --- a/contrib/binutils/ld/scripttempl/pe.sc +++ b/contrib/binutils/ld/scripttempl/pe.sc @@ -25,6 +25,10 @@ if test "${RELOCATING}"; then SORT(*)(.idata$6) SORT(*)(.idata$7)' R_CRT='*(SORT(.CRT$*))' + R_TLS=' + *(.tls) + *(.tls$) + *(SORT(.tls$*))' R_RSRC='*(SORT(.rsrc$*))' else R_TEXT= @@ -60,7 +64,7 @@ SECTIONS ${RELOCATING+ *(.fini)} /* ??? Why is .gcc_exc here? */ ${RELOCATING+ *(.gcc_exc)} - ${RELOCATING+ etext = .;} + ${RELOCATING+PROVIDE (etext = .);} *(.gcc_except_table) } @@ -129,11 +133,16 @@ SECTIONS ${R_CRT} } + .tls ${RELOCATING+BLOCK(__section_alignment__)} : + { + ${R_TLS} + } + .endjunk ${RELOCATING+BLOCK(__section_alignment__)} : { /* end is deprecated, don't use it */ - ${RELOCATING+ end = .;} - ${RELOCATING+ _end = .;} + ${RELOCATING+PROVIDE (end = .);} + ${RELOCATING+PROVIDE ( _end = .);} ${RELOCATING+ __end__ = .;} } |