WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED WONTFIX
152641
[GTK][OSX] webkit-gtk 2.11.2 fails to link libllvmForJSC.dylib on OS X due to duplicate (local) abort and raise symbols
https://bugs.webkit.org/show_bug.cgi?id=152641
Summary
[GTK][OSX] webkit-gtk 2.11.2 fails to link libllvmForJSC.dylib on OS X due to...
Jeremy Huddleston Sequoia
Reported
2016-01-01 14:53:02 PST
After working around
bug #152640
, linking libllvmForJSC.dylib fails with: [ 1%] Linking CXX shared library ../../lib/libllvmForJSC.dylib cd /opt/local/var/macports/build/_Volumes_Home_jeremy_src_macports_trunk_dports_www_webkit-gtk-devel/webkit-gtk-devel/work/webkitgtk-2.11.2/Source/JavaScriptCore && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/llvmForJSC.dir/link.txt --verbose=1 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -pipe -O0 -g3 -ftemplate-depth=256 -Wno-c++11-extensions -stdlib=libc++ -std=c++11 -Qunused-arguments -std=c++11 -Qunused-arguments -DNDEBUG -fno-exceptions -fno-strict-aliasing -fno-rtti -fno-exceptions -fno-strict-aliasing -fno-rtti -arch x86_64 -mmacosx-version-min=10.11 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names -o ../../lib/libllvmForJSC.dylib -install_name /opt/local/lib/libllvmForJSC.dylib CMakeFiles/llvmForJSC.dir/llvm/library/LLVMAnchor.cpp.o CMakeFiles/llvmForJSC.dir/llvm/library/LLVMExports.cpp.o CMakeFiles/llvmForJSC.dir/llvm/library/LLVMOverrides.cpp.o /opt/local/libexec/llvm-3.7/lib/libLLVMLTO.a /opt/local/libexec/llvm-3.7/lib/libLLVMObjCARCOpts.a /opt/local/libexec/llvm-3.7/lib/libLLVMLinker.a /opt/local/libexec/llvm-3.7/lib/libLLVMBitWriter.a /opt/local/libexec/llvm-3.7/lib/libLLVMIRReader.a /opt/local/libexec/llvm-3.7/lib/libLLVMBPFCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMBPFDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMBPFInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMBPFAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUUtils.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMAMDGPUAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMSystemZAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMHexagonDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMHexagonCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMHexagonDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMHexagonInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMNVPTXCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMNVPTXDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMNVPTXInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMNVPTXAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMCppBackendCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMCppBackendInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMMSP430CodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMMSP430Desc.a /opt/local/libexec/llvm-3.7/lib/libLLVMMSP430Info.a /opt/local/libexec/llvm-3.7/lib/libLLVMMSP430AsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMXCoreDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMXCoreCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMXCoreDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMXCoreInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMXCoreAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMMipsAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64Disassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64CodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64AsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64Desc.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64Info.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64AsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMAArch64Utils.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMARMAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMPowerPCAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcDesc.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcInfo.a /opt/local/libexec/llvm-3.7/lib/libLLVMSparcAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMMIRParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMAsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMLibDriver.a /opt/local/libexec/llvm-3.7/lib/libLLVMOption.a /opt/local/libexec/llvm-3.7/lib/libLLVMDebugInfoPDB.a /opt/local/libexec/llvm-3.7/lib/libLLVMTableGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMOrcJIT.a /opt/local/libexec/llvm-3.7/lib/libLLVMLineEditor.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86Disassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86AsmParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86CodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMSelectionDAG.a /opt/local/libexec/llvm-3.7/lib/libLLVMAsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86Desc.a /opt/local/libexec/llvm-3.7/lib/libLLVMMCDisassembler.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86Info.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86AsmPrinter.a /opt/local/libexec/llvm-3.7/lib/libLLVMX86Utils.a /opt/local/libexec/llvm-3.7/lib/libLLVMMCJIT.a /opt/local/libexec/llvm-3.7/lib/libLLVMDebugInfoDWARF.a /opt/local/libexec/llvm-3.7/lib/libLLVMPasses.a /opt/local/libexec/llvm-3.7/lib/libLLVMipo.a /opt/local/libexec/llvm-3.7/lib/libLLVMVectorize.a /opt/local/libexec/llvm-3.7/lib/libLLVMInterpreter.a /opt/local/libexec/llvm-3.7/lib/libLLVMExecutionEngine.a /opt/local/libexec/llvm-3.7/lib/libLLVMRuntimeDyld.a /opt/local/libexec/llvm-3.7/lib/libLLVMCodeGen.a /opt/local/libexec/llvm-3.7/lib/libLLVMTarget.a /opt/local/libexec/llvm-3.7/lib/libLLVMScalarOpts.a /opt/local/libexec/llvm-3.7/lib/libLLVMProfileData.a /opt/local/libexec/llvm-3.7/lib/libLLVMObject.a /opt/local/libexec/llvm-3.7/lib/libLLVMMCParser.a /opt/local/libexec/llvm-3.7/lib/libLLVMBitReader.a /opt/local/libexec/llvm-3.7/lib/libLLVMInstCombine.a /opt/local/libexec/llvm-3.7/lib/libLLVMInstrumentation.a /opt/local/libexec/llvm-3.7/lib/libLLVMTransformUtils.a /opt/local/libexec/llvm-3.7/lib/libLLVMipa.a /opt/local/libexec/llvm-3.7/lib/libLLVMMC.a /opt/local/libexec/llvm-3.7/lib/libLLVMAnalysis.a /opt/local/libexec/llvm-3.7/lib/libLLVMCore.a /opt/local/libexec/llvm-3.7/lib/libLLVMSupport.a -lz -lpthread -lffi -ledit -lcurses -lm -Wl,-rpath,/opt/local/lib duplicate symbol _abort in: CMakeFiles/llvmForJSC.dir/llvm/library/LLVMOverrides.cpp.o /opt/local/libexec/llvm-3.7/lib/libLLVMSupport.a(Signals.o) duplicate symbol _raise in: CMakeFiles/llvmForJSC.dir/llvm/library/LLVMOverrides.cpp.o /opt/local/libexec/llvm-3.7/lib/libLLVMSupport.a(Signals.o) ld: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Attachments
Add attachment
proposed patch, testcase, etc.
Jeremy Huddleston Sequoia
Comment 1
2016-01-16 10:13:47 PST
Some history here... the llvm-provided definitions are conditional on: #if defined(__APPLE__) && defined(ENABLE_CRASH_OVERRIDES) The llvm ones are there to redefine raise() as: return pthread_kill(pthread_self(), sig); compared to the system definition as: return(kill(getpid(), s)); --- The wording of the comment around this is: // On Darwin, raise sends a signal to the main thread instead of the current // thread. This has the unfortunate effect that assert() and abort() will end up // bypassing our crash recovery attempts. We work around this for anything in // the same linkage unit by just defining our own versions of the assert handler // and abort. While raise() does behave as described, I changed the behavior of abort() in Lion (10.7) to use pthread_kill() instead of raise(). I think it best to handle removal of the llvm overrides, and I'll file a bug at llvm.org for that. Additionally, libllvmForJSC.dylib is linking in the static archive directly instead of libLLVM-3.7.dylib. Again, this isn't a bug in webkit as it is just doing what llvm-config --libs instructs it to. I'll file a bug at llvm.org for that as well. Given the above, do we want to add a workaround in webkit or detect the problem during configure?
Michael Catanzaro
Comment 2
2016-01-16 15:22:03 PST
(In reply to
comment #1
)
> Additionally, libllvmForJSC.dylib is linking in the static archive directly > instead of libLLVM-3.7.dylib. Again, this isn't a bug in webkit as it is > just doing what llvm-config --libs instructs it to. I'll file a bug at > llvm.org for that as well.
We added a workaround so that we could dynamic link to LLVM right after the 2.11.3 release:
http://trac.webkit.org/changeset/195009
Try it out!
Jeremy Huddleston Sequoia
Comment 3
2016-01-16 21:26:18 PST
Ok, given that, I think we can close this out.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug