[cmake,cling] Hide C and C++ symbols alike:#4689
[cmake,cling] Hide C and C++ symbols alike:#4689Axel-Naumann merged 1 commit intoroot-project:masterfrom
Conversation
|
Starting build on |
|
Build failed on ROOT-performance-centos7-multicore/default. |
|
Build failed on ROOT-fedora29/python3. Errors:
|
|
Build failed on ROOT-fedora30/cxx14. Errors:
|
|
Build failed on ROOT-fedora27/noimt. Errors:
|
|
Build failed on ROOT-ubuntu16/nortcxxmod. Errors:
|
We had symbols exposed, which in turn meant symbols were resolved by the dynamic loader, which in turn meant another libllvm.so could interfere with those of cling. By hiding these symbols, all symbols are self-contained and not external symbols leak into libCling. cling needs to resolve its own symbols, so unhide those.
f687d55 to
6898b9c
Compare
|
Starting build on |
|
@davidrohr let me know whether this fixes also your case. |
|
Thx, i have seen it, will test it later today.
|
|
@Axel-Naumann : I think this patch is correct in any case, since the symbols should be hidden.
|
Damn. I tried with I'll merge this nonetheless. |
@Axel-Naumann : The following simple test case compiled via |
Damn, that is weird. Should be the same as linking to libgandiva. I'll try that on my setup to double-check. |
|
@Axel-Naumann : I have rebuilt ROOT from scratch and attempted my above test case with which still gives me the same error: Perhaps preloading individual LLVM libraries works, but with gandiva it certainly doesn't. |
|
@Axel-Naumann : Did you have a chance to attempt the namespace hack we discussed, perhaps it has a better chance of solving the issue. |
|
@Axel-Naumann : I have to admit I have been stupid and my last posts have been wrong. But this is clear, since ROOT just checks for the presence of the LLVM symbols. |
|
@Axel-Naumann : This patch is fully working for us. Thx a lot and sorry for the false information before. |
|
ACK on the warning, will take care after Jan 6. |
|
Warning removal is in #4736 - I don't care too much about non-builtin llvm, people are on their own then. |
We had symbols exposed, which in turn meant symbols were resolved by the dynamic loader,
which in turn meant another libllvm.so could interfere with those of cling. By hiding these
symbols, all symbols are self-contained and not external symbols leak into libCling.