You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ objdump -t /tmp/libLLVM_assert.v11.0.1.x86_64-linux-gnu-cxx11/lib/libLLVM-11.0.1jl.so | grep ABIBreakingChecks
0000000004eeeeb0 g O .bss 0000000000000004 _ZN4llvm23EnableABIBreakingChecksE
$ objdump -t /tmp/libLLVM.v11.0.1.x86_64-linux-gnu-cxx11/lib/libLLVM-11.0.1jl.so | grep ABIBreakingChecks
0000000003e9ec30 g O .bss 0000000000000004 _ZN4llvm24DisableABIBreakingChecksE
This breaks libLLVM-based artifacts when using LLVM+asserts:
ERROR: LoadError: InitError: could not load library "/home/tim/Julia/depot/artifacts/769012422c18bf09c53376e964a7fb286d1799c8/lib/libLLVMSPIRVLib.so"
/home/tim/Julia/depot/artifacts/769012422c18bf09c53376e964a7fb286d1799c8/lib/libLLVMSPIRVLib.so: undefined symbol: _ZN4llvm24DisableABIBreakingChecksE, version JL_LLVM_11.0
I guess we should set LLVM_ABI_BREAKING_CHECKS to either FORCE_ON or FORCE_OFF:
LLVM_ABI_BREAKING_CHECKS:STRING
Used to decide if LLVM should be built with ABI breaking checks or not. Allowed values are WITH_ASSERTS (default), FORCE_ON and FORCE_OFF. WITH_ASSERTS turns on ABI breaking checks in an assertion enabled build. FORCE_ON (FORCE_OFF) turns them on (off) irrespective of whether normal (NDEBUG-based) assertions are enabled or not. A version of LLVM built with ABI breaking checks is not ABI compatible with a version built without it.
The text was updated successfully, but these errors were encountered:
It wasn't clear to me whether the ABI is actually incompatible between release/asserts builds, or whether the link-time check for this is just enabled when doing asserts builds. But yeah, it turns out to be the former, which implies we'll need asserts-versions of all of these artifacts... 🙁
@staticfloat Is this something #35193 would include, i.e., would the assertion-ness be discoverable from the libLLVM_jll stdlib (for use by, e.g., a Pkg hook to select the LLVM asserts-based build of any dependency)?
I haven't thought that far ahead yet. What are the ramifications? Will we have to rebuild everything that links against libLLVM? That seems.... untenable to me.
This breaks libLLVM-based artifacts when using LLVM+asserts:
I guess we should set
LLVM_ABI_BREAKING_CHECKS
to either FORCE_ON or FORCE_OFF:The text was updated successfully, but these errors were encountered: