diff options
author | Alan Modra <amodra@gmail.com> | 2018-10-26 10:01:54 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2018-10-29 17:50:40 +1030 |
commit | c2e863866d9b206c387d8fdc0f1bfa9f246e4355 (patch) | |
tree | 3cfe45d7951f388c4e79029abd7b767206f567b7 /ld | |
parent | 98a17ece013cb94cd602496b9efb92b8816b3953 (diff) | |
download | gdb-c2e863866d9b206c387d8fdc0f1bfa9f246e4355.zip gdb-c2e863866d9b206c387d8fdc0f1bfa9f246e4355.tar.gz gdb-c2e863866d9b206c387d8fdc0f1bfa9f246e4355.tar.bz2 |
ld -r script fixes
For ld -r, we generally set the VMA of sections to zero. This is done
to make the output of ld -r most similar to that output by the
assembler, which generally has sections starting at VMA zero. In some
cases that covers for backend bugs which would mis-handle relocatable
object files with non-zero section VMAs.
This patch fixes a few sections that didn't have zero VMAs for ld -r.
A missing zero on .note.gnu.build-id and .eh_frame_hdr doesn't matter
much since these are linker generated symbols only output on final
link, but it's good to be consistent.
* Makefile.am (ei386beos.c, ei386go32.c): Correct dependencies.
* Makefile.in: Regenerate.
* scripttempl/elf.sc (.note.gnu.build-id, .eh_frame_hdr): Set
address with ${RELOCATING-0}.
* scripttempl/arclinux.sc: Likewise.
* scripttempl/armbpabi.sc: Likewise.
* scripttempl/avr.sc: Likewise.
* scripttempl/elf64hppa.sc: Likewise.
* scripttempl/elf_chaos.sc: Likewise.
* scripttempl/elfarc.sc: Likewise.
* scripttempl/elfxtensa.sc: Likewise.
* scripttempl/mep.sc: Likewise.
* scripttempl/nds32elf.sc: Likewise.
* scripttempl/pru.sc: Likewise.
* scripttempl/elf32msp430.sc: Likewise, and for other sections.
* scripttempl/epiphany_4x4.sc: Similarly.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 19 | ||||
-rw-r--r-- | ld/Makefile.am | 6 | ||||
-rw-r--r-- | ld/Makefile.in | 6 | ||||
-rw-r--r-- | ld/scripttempl/arclinux.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/armbpabi.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/avr.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/elf.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/elf32msp430.sc | 12 | ||||
-rw-r--r-- | ld/scripttempl/elf64hppa.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/elf_chaos.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/elfarc.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/elfxtensa.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/epiphany_4x4.sc | 16 | ||||
-rw-r--r-- | ld/scripttempl/mep.sc | 2 | ||||
-rw-r--r-- | ld/scripttempl/nds32elf.sc | 4 | ||||
-rw-r--r-- | ld/scripttempl/pru.sc | 4 |
16 files changed, 58 insertions, 35 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index b772dcd..4dfd2e8 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,22 @@ +2018-10-29 Alan Modra <amodra@gmail.com> + + * Makefile.am (ei386beos.c, ei386go32.c): Correct dependencies. + * Makefile.in: Regenerate. + * scripttempl/elf.sc (.note.gnu.build-id, .eh_frame_hdr): Set + address with ${RELOCATING-0}. + * scripttempl/arclinux.sc: Likewise. + * scripttempl/armbpabi.sc: Likewise. + * scripttempl/avr.sc: Likewise. + * scripttempl/elf64hppa.sc: Likewise. + * scripttempl/elf_chaos.sc: Likewise. + * scripttempl/elfarc.sc: Likewise. + * scripttempl/elfxtensa.sc: Likewise. + * scripttempl/mep.sc: Likewise. + * scripttempl/nds32elf.sc: Likewise. + * scripttempl/pru.sc: Likewise. + * scripttempl/elf32msp430.sc: Likewise, and for other sections. + * scripttempl/epiphany_4x4.sc: Similarly. + 2018-10-26 Christoph Conrads <christoph.conrads@fluent.ai> * ld.texi (--gc-sections): Update. diff --git a/ld/Makefile.am b/ld/Makefile.am index 98ba096..7b4b49e 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -1382,13 +1382,15 @@ ehppaobsd.c: $(srcdir)/emulparams/hppaobsd.sh \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ei386beos.c: $(srcdir)/emulparams/i386beos.sh \ - $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc \ + $(srcdir)/scripttempl/DWARF.sc ${GEN_DEPENDS} ei386bsd.c: $(srcdir)/emulparams/i386bsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ei386go32.c: $(srcdir)/emulparams/i386go32.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc \ + $(srcdir)/scripttempl/DWARF.sc ${GEN_DEPENDS} ei386lynx.c: $(srcdir)/emulparams/i386lynx.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index e2fc674..9137cf3 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -2986,13 +2986,15 @@ ehppaobsd.c: $(srcdir)/emulparams/hppaobsd.sh \ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ei386beos.c: $(srcdir)/emulparams/i386beos.sh \ - $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/beos.em $(srcdir)/scripttempl/i386beos.sc \ + $(srcdir)/scripttempl/DWARF.sc ${GEN_DEPENDS} ei386bsd.c: $(srcdir)/emulparams/i386bsd.sh \ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS} ei386go32.c: $(srcdir)/emulparams/i386go32.sh \ - $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc ${GEN_DEPENDS} + $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i386go32.sc \ + $(srcdir)/scripttempl/DWARF.sc ${GEN_DEPENDS} ei386lynx.c: $(srcdir)/emulparams/i386lynx.sh \ $(ELF_DEPS) $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff --git a/ld/scripttempl/arclinux.sc b/ld/scripttempl/arclinux.sc index 931d7a5..2975864 100644 --- a/ld/scripttempl/arclinux.sc +++ b/ld/scripttempl/arclinux.sc @@ -358,7 +358,7 @@ emit_early_ro() { cat <<EOF ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF } @@ -539,7 +539,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) ${RELOCATING+*(.eh_frame_entry .eh_frame_entry.*)} } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) ${RELOCATING+*(.eh_frame_entry .eh_frame_entry.*)} } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) ${RELOCATING+*(.eh_frame.*)} } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } .gnu_extab ${RELOCATING-0} : ONLY_IF_RO { *(.gnu_extab*) } diff --git a/ld/scripttempl/armbpabi.sc b/ld/scripttempl/armbpabi.sc index 8eed447..25e3503 100644 --- a/ld/scripttempl/armbpabi.sc +++ b/ld/scripttempl/armbpabi.sc @@ -254,7 +254,7 @@ cat <<EOF ${RELOCATING+${FINI_ARRAY}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) } diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc index 931ef40..5dde52b 100644 --- a/ld/scripttempl/avr.sc +++ b/ld/scripttempl/avr.sc @@ -336,7 +336,7 @@ cat <<EOF .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0} : { *(.note.gnu.build-id) } EOF . $srcdir/scripttempl/DWARF.sc diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index d3e1828..4e48b4f 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -378,7 +378,7 @@ emit_early_ro() { cat <<EOF ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF } @@ -564,7 +564,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr)${RELOCATING+ *(.eh_frame_entry .eh_frame_entry.*)} } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr)${RELOCATING+ *(.eh_frame_entry .eh_frame_entry.*)} } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame))${RELOCATING+ *(.eh_frame.*)} } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } .gnu_extab ${RELOCATING-0} : ONLY_IF_RO { *(.gnu_extab*) } diff --git a/ld/scripttempl/elf32msp430.sc b/ld/scripttempl/elf32msp430.sc index b35f0ef..21dd1f8 100644 --- a/ld/scripttempl/elf32msp430.sc +++ b/ld/scripttempl/elf32msp430.sc @@ -137,7 +137,7 @@ SECTIONS .rela.plt ${RELOCATING-0} : { *(.rela.plt) } /* Internal text space. */ - .text : + .text ${RELOCATING-0} : { ${RELOCATING+. = ALIGN(2); *(SORT_NONE(.init)) @@ -187,7 +187,7 @@ SECTIONS _etext = .;} } ${RELOCATING+ > text} - .rodata : + .rodata ${RELOCATING-0} : { ${RELOCATING+. = ALIGN(2); *(.lower.rodata.* .lower.rodata) @@ -239,7 +239,7 @@ SECTIONS KEEP (*(.dtors))} } ${RELOCATING+ > text} - .vectors ${RELOCATING-0}: + .vectors ${RELOCATING-0} : { ${RELOCATING+ PROVIDE (__vectors_start = .) ; } *(.vectors${RELOCATING+*}) @@ -277,7 +277,7 @@ SECTIONS ${RELOCATING+__romdatastart = LOADADDR(.data); __romdatacopysize = SIZEOF(.data);} - .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + .bss ${RELOCATING-0}${RELOCATING+SIZEOF(.data) + ADDR(.data)} : { ${RELOCATING+. = ALIGN(2);} ${RELOCATING+ PROVIDE (__bss_start = .); } @@ -291,14 +291,14 @@ SECTIONS } ${RELOCATING+ > data} ${RELOCATING+ PROVIDE (__bsssize = SIZEOF(.bss)); } - .noinit ${RELOCATING+ SIZEOF(.bss) + ADDR(.bss)} : + .noinit ${RELOCATING-0}${RELOCATING+SIZEOF(.bss) + ADDR(.bss)} : { ${RELOCATING+ PROVIDE (__noinit_start = .) ; } *(.noinit) ${RELOCATING+ PROVIDE (__noinit_end = .) ; } } ${RELOCATING+ > data} - .persistent ${RELOCATING+ SIZEOF(.noinit) + ADDR(.noinit)} : + .persistent ${RELOCATING-0}${RELOCATING+SIZEOF(.noinit) + ADDR(.noinit)} : { ${RELOCATING+ PROVIDE (__persistent_start = .) ; } *(.persistent) diff --git a/ld/scripttempl/elf64hppa.sc b/ld/scripttempl/elf64hppa.sc index 1bed674..5496f3b 100644 --- a/ld/scripttempl/elf64hppa.sc +++ b/ld/scripttempl/elf64hppa.sc @@ -299,7 +299,7 @@ SECTIONS ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS;}} ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR} + SIZEOF_HEADERS;}} ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN @@ -431,7 +431,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } diff --git a/ld/scripttempl/elf_chaos.sc b/ld/scripttempl/elf_chaos.sc index 9db5b73..0a84a3a 100644 --- a/ld/scripttempl/elf_chaos.sc +++ b/ld/scripttempl/elf_chaos.sc @@ -264,7 +264,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } ${RELOCATING+. = ALIGN(0x1000);} .data ${RELOCATING-0} : diff --git a/ld/scripttempl/elfarc.sc b/ld/scripttempl/elfarc.sc index c1a0b3c..5738de3 100644 --- a/ld/scripttempl/elfarc.sc +++ b/ld/scripttempl/elfarc.sc @@ -294,7 +294,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } /* Adjust the address for the data segment. We want to adjust up to diff --git a/ld/scripttempl/elfxtensa.sc b/ld/scripttempl/elfxtensa.sc index 63448e1..d8955e3 100644 --- a/ld/scripttempl/elfxtensa.sc +++ b/ld/scripttempl/elfxtensa.sc @@ -310,7 +310,7 @@ SECTIONS ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN @@ -440,7 +440,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } diff --git a/ld/scripttempl/epiphany_4x4.sc b/ld/scripttempl/epiphany_4x4.sc index 41b2b50..18253bb 100644 --- a/ld/scripttempl/epiphany_4x4.sc +++ b/ld/scripttempl/epiphany_4x4.sc @@ -375,7 +375,7 @@ cat <<EOF ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN @@ -469,7 +469,7 @@ fi cat <<EOF - .init ${RELOCATING+__init_start} : + .init ${RELOCATING-0}${RELOCATING+__init_start} : { ${RELOCATING+${INIT_START}} KEEP (*(.init)) @@ -479,14 +479,14 @@ cat <<EOF ${TEXT_PLT+${PLT}} ${TINY_READONLY_SECTION} - .fini ${RELOCATING+ADDR(.init)+SIZEOF(.init)} ${RELOCATING-0} : + .fini ${RELOCATING-0}${RELOCATING+ADDR(.init)+SIZEOF(.init)} : { ${RELOCATING+${FINI_START}} KEEP (*(.fini)) ${RELOCATING+${FINI_END}} } /* ${RELOCATING+ > INTERNAL_RAM} */ =${NOP-0} - .text ${RELOCATING+ADDR(.fini)+SIZEOF(.fini)} ${RELOCATING-0} : + .text ${RELOCATING-0}${RELOCATING+ADDR(.fini)+SIZEOF(.fini)} : { ${RELOCATING+${TEXT_START_SYMBOLS}} *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*}) @@ -503,7 +503,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } @@ -557,7 +557,7 @@ cat <<EOF ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}} - .data ${RELOCATING+ADDR(.dtors)+SIZEOF(.dtors)} ${RELOCATING-0} : + .data ${RELOCATING-0}${RELOCATING+ADDR(.dtors)+SIZEOF(.dtors)} : { ${RELOCATING+${DATA_START_SYMBOLS}} *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*}) @@ -583,7 +583,7 @@ cat <<EOF ${RELOCATING+${OTHER_BSS_SYMBOLS}} ${SBSS} ${BSS_PLT+${PLT}} - .bss ${RELOCATING+ADDR(.rodata)+SIZEOF(.rodata)} ${RELOCATING-0} : + .bss ${RELOCATING-0}${RELOCATING+ADDR(.rodata)+SIZEOF(.rodata)} : { ${RELOCATING+*(.dynbss)} *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*}) @@ -606,7 +606,7 @@ cat <<EOF ${RELOCATING+${DATA_SEGMENT_END}} ${RELOCATING+PROVIDE ( __stack_start_ = ORIGIN(EXTERNAL_DRAM_0) + __PROG_SIZE_FOR_CORE__ * __CORE_NUM_ + __PROG_SIZE_FOR_CORE__ - 0x10) ;} - .stack ${RELOCATING+__stack_start_} : { ${RELOCATING+___stack = .;} *(.stack) } + .stack ${RELOCATING-0}${RELOCATING+__stack_start_} : { ${RELOCATING+___stack = .;} *(.stack) } ${RELOCATING+PROVIDE ( ___heap_start = ORIGIN(EXTERNAL_DRAM_1) + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_ );} ${RELOCATING+PROVIDE ( ___heap_end = ORIGIN(EXTERNAL_DRAM_1) + __HEAP_SIZE_FOR_CORE__ * __CORE_NUM_ + __HEAP_SIZE_FOR_CORE__ - 4 );} diff --git a/ld/scripttempl/mep.sc b/ld/scripttempl/mep.sc index a71570b..b67ca75 100644 --- a/ld/scripttempl/mep.sc +++ b/ld/scripttempl/mep.sc @@ -329,7 +329,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})) } diff --git a/ld/scripttempl/nds32elf.sc b/ld/scripttempl/nds32elf.sc index a96cf2e..d4f16ba 100644 --- a/ld/scripttempl/nds32elf.sc +++ b/ld/scripttempl/nds32elf.sc @@ -305,7 +305,7 @@ emit_early_ro() { cat <<EOF ${INITIAL_READONLY_SECTIONS} - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0}: { *(.note.gnu.build-id) } EOF } @@ -486,7 +486,7 @@ cat <<EOF ${CREATE_SHLIB-${SDATA2}} ${CREATE_SHLIB-${SBSS2}} ${OTHER_READONLY_SECTIONS} - .eh_frame_hdr : { *(.eh_frame_hdr) } + .eh_frame_hdr ${RELOCATING-0} : { *(.eh_frame_hdr) } .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) } /* These sections are generated by the Sun/Oracle C++ compiler. */ diff --git a/ld/scripttempl/pru.sc b/ld/scripttempl/pru.sc index bba9b6f..933a1f9 100644 --- a/ld/scripttempl/pru.sc +++ b/ld/scripttempl/pru.sc @@ -164,7 +164,7 @@ SECTIONS } ${RELOCATING+ > dmem} /* Global data not cleared after reset. */ - .noinit ${RELOCATING-0}: + .noinit ${RELOCATING-0} : { ${RELOCATING+ PROVIDE (_noinit_start = .) ; } *(.noinit) @@ -185,7 +185,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id ${RELOCATING-0} : { *(.note.gnu.build-id) } EOF . $srcdir/scripttempl/DWARF.sc |