ARC: Accommodate TLS fix in Binutils
commit447f72b8efa34b20e24d609d94ff2adc922a7ae9
authorEvgeniy Didin <evgeniy.didin@synopsys.com>
Wed, 24 Oct 2018 14:10:10 +0000 (24 17:10 +0300)
committerWaldemar Brodkorb <wbx@openadk.org>
Sat, 27 Oct 2018 08:54:43 +0000 (27 10:54 +0200)
tree183fe49c4ac625eb3fdb4765b1d0d7195e3d3af6
parentf2aac995e790d240b8ab8bf915e8283e8ba531f0
ARC: Accommodate TLS fix in Binutils

[1] fixes clash of TLS variables on ARC and since LD now calculates relocations
a bit different now we need to update dynamic loader as well otherwise relocs
will be calculated improperly.

Note this is an ABI change and should go in-line with corresponding ARC tools.
That said either arc-2018.09 (to be released in few weeks) or the next version of upstream
Binutils (2.32) are required for normal TLS work on ARC.

Testcase:
----------------------------------8<-------------------------------
#include <stdio.h>
int foo3(void);
int foo1(void);

#ifdef _SHARED
int foo1(){
static __thread int val3=1;
val3 += 2;
return val3;
}

#elif _SHARED2
int foo3(){
static __thread int val2=0;
val2 += 2;
return val2;
}
#else
int main(){
printf("foo1 = %d \n", foo1());
printf("foo3 = %d \n", foo3());
return 0;
}
#endif
--------------------------------->8---------------------------------------

The result shoud be:
----8<----
foo1 = 3
foo3 = 2
---->8----

Commands to build artefacts:
----------------------------------------8<-------------------------------
arc-linux-gcc -fPIE -ffunction-sections  -fdata-sections  -pthread  -Os \
 -fPIC -o testtls.o -D_SHARED -c tst.c
arc-linux-gcc -fPIE -ffunction-sections  -fdata-sections  -pthread  -Os \
 -fPIC -o testtls2.o -D_SHARED2 -c tst.c
arc-linux-gcc  -shared -o libtesttls.so  testtls.o testtls2.o -lm -Os
arc-linux-gcc tst.c  -o tst.out -L./ -ltesttls -Os -fPIE
--------------------------------->8---------------------------------------

Add path to libtesttls.so file to LD_LIBRARY_PATH before runnig
tst.out application.

[1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=714e9a954a2e4123dcb26bb8da850e1344de4f5f

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Evgeniy Didin <didin@synopsys.com>
CC: Cupertino Miranda <cmiranda@synopsys.com>
CC: Vineet Gupta <vgupta@synopsys.com>
CC: Waldemar Brodkorb <wbx@uclibc-ng.org>
ldso/ldso/arc/elfinterp.c