-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ROOT 6.28.00 fails on aarch64: cling JIT session error: Failed to materialize symbols #12294
Comments
@ellert thanks for the report, I'll need to see if I can get access to a AArch64 system to test. In the meantime, could you see if the symbols appear in the executables or one of the shared libraries? Then they would be in the process and Cling should automatically find them... |
This problem happens with
But not with:
It seems to be related to an issue that appeared also with the previous LLVM 9 based version of ROOT when gcc 10 was introduced in Fedora 33: From a comment in the above bugzilla report: The problem with the old ROOT version was fixed when the libgcc_s.so symlink in gcc was replaced by a linker script. This linker script is still there: $ cat /usr/lib/gcc/aarch64-redhat-linux/12/libgcc_s.so With this linker scripts ROOT worked fine on aarch64 with gcc >= 10. But with the LLVM 13 update it broke again despite the linker script still being there. It still works on RHEL+EPEL 8 with gcc 8 which seems to suggest that it is related to -moutline-atomics which became the default on aarch64 in gcc 10. I hope this will give some ideas about how to fix it. |
Thanks @ellert, this helped a lot to get me started into the right direction! As far as I can tell, the problem is slightly different from https://bugzilla.redhat.com/show_bug.cgi?id=1830472; that one failed during the build of ROOT while we now have a problem during JIT compilation, after ROOT has already been built successfully. But we are very likely on the right track here with |
The routines __aarch64_* are defined in the static library libgcc.a and not necessarily included in libCling or otherwise present in the process, so the interpreter has a hard time finding them. Fixes root-project#12294
The routines __aarch64_* are defined in the static library libgcc.a and not necessarily included in libCling or otherwise present in the process, so the interpreter has a hard time finding them. Fixes root-project#12294
The routines __aarch64_* are defined in the static library libgcc.a and not necessarily included in libCling or otherwise present in the process, so the interpreter has a hard time finding them. Fixes #12294
The routines __aarch64_* are defined in the static library libgcc.a and not necessarily included in libCling or otherwise present in the process, so the interpreter has a hard time finding them. Fixes root-project#12294 (cherry picked from commit ddf9a8c)
The routines __aarch64_* are defined in the static library libgcc.a and not necessarily included in libCling or otherwise present in the process, so the interpreter has a hard time finding them. Fixes root-project#12294
Describe the bug
About 1/3 of the tests fail on aarch64 with errors like:
Expected behavior
No failing tests.
To Reproduce
Build ROOT 6.28.00 for aarch64, run tests.
Additional context
epel9: 67% tests passed, 434 tests failed out of 1317
f36: 67% tests passed, 435 tests failed out of 1318
f37: 67% tests passed, 435 tests failed out of 1318
f38: 67% tests passed, 436 tests failed out of 1318
Some of the symbols that can't be found are in libgcc:
$ nm /usr/lib/gcc/aarch64-redhat-linux/12/libgcc.a | grep __aarch64_ldadd4_acq_rel
0000000000000000 T __aarch64_ldadd4_acq_rel
The text was updated successfully, but these errors were encountered: