Remove some custom sections from RISC-V's default linker scripts
authorPalmer Dabbelt <palmer@dabbelt.com>
Fri, 30 Dec 2016 01:29:53 +0000 (17:29 -0800)
committerPalmer Dabbelt <palmer@dabbelt.com>
Mon, 9 Jan 2017 17:12:20 +0000 (09:12 -0800)
This was added so compressed loads could have smaller offsets for
accessing the data section, but the result was that writable sections
ended up in INITIAL_READONLY_SECTIONS.  This is a bad idea.  The fix is
to just remove this micro-optimization.

Thanks to Alan Morda for finding the problem!

ld/ChangeLog

2017-01-09  Palmer Dabbelt <palmer@dabbelt.com>
            Kito Cheng <kito.cheng@gmail.com>

        * emulparams/elf32lriscv-defs.sh (INITIAL_READONLY_SECTIONS):
        Removed.
        (SDATA_START_SYMBOLS): Likewise.

gas/ChangeLog
ld/emulparams/elf32lriscv-defs.sh

index 2d72b786e6cfd2247263f31e48d8351a563e90fe..88f68a1e34d9075cf6756365e673e953ab84ddf6 100644 (file)
@@ -1,3 +1,10 @@
+2017-01-09  Palmer Dabbelt <palmer@dabbelt.com>
+           Kito Cheng <kito.cheng@gmail.com>
+
+       * emulparams/elf32lriscv-defs.sh (INITIAL_READONLY_SECTIONS):
+       Removed.
+       (SDATA_START_SYMBOLS): Likewise.
+
 2017-01-09  Nick Clifton  <nickc@redhat.com>
 
        * po/sv.po: New Swedish translation.
index 0e4b7237ff35c067abe5d3a0df83900db858e23d..0eba0d1a0cb39a082b4022b64b9a9145da6213b3 100644 (file)
@@ -26,17 +26,5 @@ COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
 SDATA_START_SYMBOLS="_gp = . + 0x800;
     *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)"
 
-# Place the data section before text section.  This enables more compact
-# global variable access for RVC code via linker relaxation.
-INITIAL_READONLY_SECTIONS="
-  .data           : { *(.data) *(.data.*) *(.gnu.linkonce.d.*) }
-  .rodata         : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) }
-  .srodata        : { ${SDATA_START_SYMBOLS} }
-  .sdata          : { *(.sdata .sdata.* .gnu.linkonce.s.*) }
-  .sbss           : { *(.dynsbss) *(.sbss .sbss.* .gnu.linkonce.sb.*) }
-  .bss            : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) }
-  . = ALIGN(${SEGMENT_SIZE}) + (. & (${MAXPAGESIZE} - 1));"
 INITIAL_READONLY_SECTIONS=".interp         : { *(.interp) } ${CREATE_PIE-${INITIAL_READONLY_SECTIONS}}"
 INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIONS}}}"
-
-SDATA_START_SYMBOLS="${CREATE_PIE+${SDATA_START_SYMBOLS}}"