Hello Pirmin,
On 2/2/23 09:58, Duss Pirmin wrote:
Good morning Sebastian
On 01.02.23 17:23, Sebastian Sumpf wrote:
! genode-aarch64-objdump -ph libc++.lib.so
I have done this for the following combinations:
library x86_64 arm_v8a ------------------+-------------+----------- libunwind.lib.so | X | X libc++abi.lib.so | X | X libc++.lib.so | X |
I'm not yet able to build libc++ for arm_v8a. Still analyzing what libraries contain the missing symbols. Some seem to be from libunwind. Currently trying to find out why these symbols are missing on arm_v8a but not on x86_64.
I have attached the output for all available combinations in the list above. One big difference between the platforms stands out. On x86_64 the Dynamic section is present, on arm_v8a it is missing.
When I replace `-lgcc` with `-l:ld.lib.so` I observe the following: - on x86_64 I'm still able to build the libraries. The output of objdump is as expected a bit differnet (see libunwind-x86_64_2.txt). - on x86_64 building the WasmEdge binary fails with missing symbols (__umodti3 and __udivti3). - on arm_v8a the output of objdump is exactly the same as without the change.
Okay, I confused libgcc with the unwind things (I think libgcc_eh). I built the libc package for ARMv8 and libgcc is clearly linked there:
/usr/local/genode/tool/21.05/bin/../lib/gcc/aarch64-none-elf/10.3.0/libgcc.a
So please keep it.
The unwind code for C++ exceptions is in ld.lib.so. But for shared libraries we do not link ld.lib.so, because the missing unwind symbols should end up as undefined symbols in the library. Only when the dynamic binary is linked ld.lib.so should be required to resolve these undefined symbols. The questions is why the linking of libc++.lib.so complains about these undefined symbols in the first place?
Should I also apply your fixes from #4750 to the linker scripts of Goa?
You can.
Sebastian