diff options
Diffstat (limited to 'ld/scripttempl')
-rw-r--r-- | ld/scripttempl/elf.sc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index feb118d..318e054 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -10,6 +10,7 @@ # OTHER_READONLY_SECTIONS - other than .text .init .rodata ... # (e.g., .PARISC.milli) # OTHER_TEXT_SECTIONS - these get put in .text when relocating +# INITIAL_READWRITE_SECTIONS - at start of data segment (after relro) # OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ... # (e.g., .PARISC.global) # OTHER_RELRO_SECTIONS - other than .data.rel.ro ... @@ -33,6 +34,7 @@ # OTHER_SDATA_SECTIONS - sections just after .sdata. # OTHER_BSS_SYMBOLS - symbols that appear at the start of the # .bss section besides __bss_start. +# PLT_NEXT_DATA - .plt next to data segment when .plt is in text segment. # DATA_PLT - .plt should be in data segment, not text segment. # PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement. # BSS_PLT - .plt should be in bss segment @@ -132,7 +134,7 @@ if test -z "$PLT"; then PLT=".plt ${RELOCATING-0} : { *(.plt)${IREL_IN_PLT+ *(.iplt)} } ${IREL_IN_PLT-$IPLT}" fi -test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT=yes +test -n "${DATA_PLT-${BSS_PLT-text}}" && TEXT_PLT= if test -z "$GOT"; then if test -z "$SEPARATE_GOTPLT"; then GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) }" @@ -463,7 +465,7 @@ cat <<EOF ${RELOCATING+${INIT_END}} } ${FILL} - ${TEXT_PLT+${PLT}} + ${TEXT_PLT+${PLT_NEXT_DATA-${PLT}}} ${TINY_READONLY_SECTION} .text ${RELOCATING-0} : { @@ -527,6 +529,7 @@ cat <<EOF /* These sections are generated by the Sun/Oracle C++ compiler. */ .exception_ranges ${RELOCATING-0} : ONLY_IF_RO { *(.exception_ranges .exception_ranges*) } + ${TEXT_PLT+${PLT_NEXT_DATA+${PLT}}} /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ @@ -562,6 +565,7 @@ cat <<EOF ${DATA_GOT+${RELRO_NOW+${GOTPLT}}} ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}}}} ${RELOCATING+${DATA_SEGMENT_RELRO_END}} + ${INITIAL_READWRITE_SECTIONS} ${DATA_GOT+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}}}} ${DATA_GOT+${RELRO_NOW-${GOTPLT}}} |