mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +08:00
RISC-V: Adjust __global_pointer$ value to reduce code size.
ld/ * emulparams/elf32lriscv-defs.sh (DATA_START_SYMBOLS): New. (SDATA_START_SYMBOLS): Define __SDATA_BEGIN__. Don't define __global_pointer$. (OTHER_END_SYMBOLS): New. Define __global_pointer$. * testsuite/ld-riscv-elf/pcrel-lo-addend-2.d (#ld): Add --no-relax.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2018-10-15 Jim Wilson <jimw@sifive.com>
|
||||||
|
|
||||||
|
* emulparams/elf32lriscv-defs.sh (DATA_START_SYMBOLS): New.
|
||||||
|
(SDATA_START_SYMBOLS): Define __SDATA_BEGIN__. Don't define
|
||||||
|
__global_pointer$.
|
||||||
|
(OTHER_END_SYMBOLS): New. Define __global_pointer$.
|
||||||
|
* testsuite/ld-riscv-elf/pcrel-lo-addend-2.d (#ld): Add --no-relax.
|
||||||
|
|
||||||
2018-10-15 Alan Modra <amodra@gmail.com>
|
2018-10-15 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 23534
|
PR 23534
|
||||||
|
@ -30,8 +30,19 @@ TEXT_START_ADDR=0x10000
|
|||||||
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
|
||||||
COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
|
COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
|
||||||
|
|
||||||
SDATA_START_SYMBOLS="${CREATE_SHLIB-__global_pointer$ = . + 0x800;}
|
DATA_START_SYMBOLS="${CREATE_SHLIB-__DATA_BEGIN__ = .;}"
|
||||||
|
|
||||||
|
SDATA_START_SYMBOLS="${CREATE_SHLIB-__SDATA_BEGIN__ = .;}
|
||||||
*(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)"
|
*(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2) *(.srodata .srodata.*)"
|
||||||
|
|
||||||
INITIAL_READONLY_SECTIONS=".interp : { *(.interp) } ${CREATE_PIE-${INITIAL_READONLY_SECTIONS}}"
|
INITIAL_READONLY_SECTIONS=".interp : { *(.interp) } ${CREATE_PIE-${INITIAL_READONLY_SECTIONS}}"
|
||||||
INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIONS}}}"
|
INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIONS}}}"
|
||||||
|
|
||||||
|
# We must cover as much of sdata as possible if it exists. If sdata+bss is
|
||||||
|
# smaller than 0x1000 then we should start from bss end to cover as much of
|
||||||
|
# the program as possible. But we can't allow gp to cover any of rodata, as
|
||||||
|
# the address of variables in rodata may change during relaxation, so we start
|
||||||
|
# from data in that case.
|
||||||
|
OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .;
|
||||||
|
__global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800,
|
||||||
|
MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#name: %pcrel_lo overflow with an addend
|
#name: %pcrel_lo overflow with an addend
|
||||||
#source: pcrel-lo-addend-2.s
|
#source: pcrel-lo-addend-2.s
|
||||||
#as: -march=rv32ic
|
#as: -march=rv32ic
|
||||||
#ld: -melf32lriscv
|
#ld: -melf32lriscv --no-relax
|
||||||
#error: .*dangerous relocation: %pcrel_lo overflow with an addend
|
#error: .*dangerous relocation: %pcrel_lo overflow with an addend
|
||||||
|
Reference in New Issue
Block a user