Hi Max,
Max Filippov wrote,
Hi Waldemar,
On Thu, May 2, 2024 at 7:13 AM Waldemar Brodkorb <wbx(a)openadk.org> wrote:
I am trying your patch series in OpenADK, but it
fails with following
error:
[...]
ldso/ldso/dl-tls.c: Assembler messages:
ldso/ldso/dl-tls.c:197: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:203: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:694: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:811: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:160: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:1045: Error: invalid register 'threadptr' for 'wur'
instruction
ldso/ldso/dl-tls.c:852: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/dl-tls.c:859: Error: invalid register 'threadptr' for 'rur'
instruction
ldso/ldso/ldso.c:1360: Error: invalid register 'threadptr' for 'wur'
instruction
gmake[6]: *** [Makerules:374: ldso/ldso/ldso.oS] Error 1
gmake[5]: *** [Makefile:353:
/home/wbx/openadk/toolchain_build_qemu-xtensa_uclibc-ng_de212_fdpic_nommu/w-uClibc-ng-git-1/uClibc-ng-git/.compiled]
Error 2
gmake[4]: *** [Makefile:106: uclibc-ng-compile] Error 2
gmake[3]: *** [mk/build.mk:227: toolchain/final] Error 2
gmake[2]: *** [/home/wbx/openadk/mk/build.mk:176: world] Error 2
I am using an very old overlay for de212, which defaults to windowed ABI, but I added
-mabi=call0 to CFLAGS.
Are you testing with another CPU? I always use de212 for noMMU configurations.
de212 doesn't have the THREADPTR option so ATM there's no native
TLS implementation that would work for it. For testing I'm using dc233c
with call0 ABI and MMU option disabled in the uClibc config. The overlay
source for it is available here:
https://github.com/jcmvbkbc/xtensa-toolchain-build/blob/master/overlays/ori…
Okay, I switched to dc233c with call0 ABI. Now I get a linker issue:
rm -f lib/ld-uClibc.so lib/ld-uClibc.so.1 lib/ld-uClibc-1.0.48.so
/home/wbx/openadk/toolchain_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/usr/bin/xtensa-openadk-linux-uclibc-gcc
-Wl,-EL -shared -Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc
-Wl,-z,relro -Wl,-O2 -Wl,-z,defs
-L/home/wbx/openadk/target_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/lib
-L/home/wbx/openadk/target_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/usr/lib
-Wl,-O1 -Wl,-rpath -Wl,/usr/lib -Wl,-rpath-link
-Wl,/home/wbx/openadk/target_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/usr/lib
-Wl,-e,_start -Wl,-z,now -Wl,-Bsymbolic -Wl,--export-dynamic
-Wl,--sort-common -Wl,--no-undefined -Wl,--discard-locals -Wl,--dis
card-all -Wl,-soname=ld-uClibc.so.1 -nostdlib -nostartfiles -o
lib/ld-uClibc-1.0.48.so -Wl,--whole-archive
ldso/ldso/ld-uClibc_so.a -Wl,--no-whole-archive -shared
/home/wbx/openadk/toolchain_qemu-xtensa_uclibc
-ng_dc233c_call0_fdpic_nommu/usr/lib/gcc/xtensa-openadk-linux-uclibc/14.0.1/libgcc.a
/home/wbx/openadk/toolchain_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/usr/lib/gcc/xtensa-openadk-linux-uclibc/14.0.1/../../../../xtensa-openadk-linux-uclibc/bin/ld:
ldso/ldso/ld-uClibc_so.a(ldso.oS): unexpected FDPIC-specific relocation
/home/wbx/openadk/toolchain_qemu-xtensa_uclibc-ng_dc233c_call0_fdpic_nommu/usr/lib/gcc/xtensa-openadk-linux-uclibc/14.0.1/../../../../xtensa-openadk-linux-uclibc/bin/ld:
ldso/ldso/ld-uClibc_so.a(ldso.oS): unexpected FDPIC-specific relocation
What does unexpected FDPIC-specific relocation means?
I am still using the overlay method for binutils/gcc and Linux.
best regards
Waldemar