foss-for-synopsys-dwc-arc-processors/toolchain

Linker fails with R_ARC_SDA32_ME for hs6x

BrunoASMauricio opened this issue · 2 comments

When linking against metaware libraries (-lmw), the GNU linker throws out the following error against sbrk.o and tlsctorg.o:

arc64-elf-ld: error: linker symbol __SDATA_BEGIN__ not found
arc64-elf-ld: final link failed: bad value

The relocations causing the fault are

000000000004  001a0000001e R_ARC_SDA32_ME    0000000000000000 __mwheap_cur + 0
...
000000000092  001a0000001e R_ARC_SDA32_ME    0000000000000000 __mwheap_cur + 0

Most probably we need update our default linker scripts with SDA related sections and symbols.

Adding the following in ld/emulparams/arc64elf64.sh seems to solve this issue but now I get a similar one to issue #570

SDATA_START_SYMBOLS='__SDATA_BEGIN__ = . + 0x100;'

Only after that other issue is fixed can I run tests and make sure this is indeed a fix (all other .sdata seems to be already present)