[PATCH] D69003: [dsymutil] Add ${system_libs} to target link libraries
Gokturk Yuksek via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 5 14:20:05 PST 2019
gokturk added a comment.
In D69003#1721908 <https://reviews.llvm.org/D69003#1721908>, @beanz wrote:
> You don't need to add the library to `dsymutil`. It is not code in `dsymutil` that depends on `libatomic`, it is code in `LLVMSupport` that `dsymutil` is using. By fixing this in `LLVMSupport`, any library linked against `LLVMSupport` will have a linkage to `libatomic` added.
>
> Please don't spend 20 hours testing this patch. I'm very pretty sure this isn't the correct fix.
I've debugged why the '-latomic' flag is not propagating from `Support` to `dsymutil`. When `LLVM_DYLIB_COMPONENTS` is set to `all`, `dsymutil` is set to link against `libLLVM` as opposed to `Support` (https://github.com/llvm/llvm-project/blob/5be949e3d007ea0bf1979a483ce558d33eca5d6a/llvm/cmake/modules/LLVM-Config.cmake#L84):
-- target_link_libraries name: LLVMSupport libtype: INTERFACE ARG_LINK_LIBS: z;rt;dl;tinfo;atomic;-lpthread;m lib_deps: LLVMDemangle llvm_libs:
-- Targeting RISCV
-- add_llvm_executable() name: dsymutil USE_SHARED LLVM_LINK_COMPONENTS: AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target
-- llvm_config() executable: dsymutil ARG_USE_SHARED: TRUE link_components: AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target ARGN: USE_SHARED;AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target
-- llvm_config() LLVM_DYLIB_COMPONENTS: all
-- explicit_llvm_config() executable: dsymutil type: EXECUTABLE LIBRARIES: link_components:
LINK_LIBRARIES = -Wl,-rpath,"\$$ORIGIN/../lib64/lp64d" lib64/lp64d/libLLVM-10svn.so -lpthread
and the resulting `LINK_LIBRARIES` doesn't contain the '-latomic' that should have been propagated through `Support`. If I forcefully inject `Support` back into `link_components` in (https://github.com/llvm/llvm-project/blob/5be949e3d007ea0bf1979a483ce558d33eca5d6a/llvm/cmake/modules/LLVM-Config.cmake#L84), it does propagate correctly:
-- target_link_libraries name: LLVMSupport libtype: INTERFACE ARG_LINK_LIBS: z;rt;dl;tinfo;atomic;-lpthread;m lib_deps: LLVMDemangle llvm_libs:
-- Targeting RISCV
-- add_llvm_executable() name: dsymutil USE_SHARED LLVM_LINK_COMPONENTS: AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target
-- llvm_config() executable: dsymutil ARG_USE_SHARED: TRUE link_components: AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target ARGN: USE_SHARED;AllTargetsAsmPrinters;AllTargetsCodeGens;AllTargetsDescs;AllTargetsInfos;AsmPrinter;DebugInfoDWARF;MC;Object;Option;Support;Target
-- llvm_config() LLVM_DYLIB_COMPONENTS: all
-- explicit_llvm_config() executable: dsymutil type: EXECUTABLE LIBRARIES: LLVMSupport link_components: Support
LINK_LIBRARIES = -Wl,-rpath,"\$$ORIGIN/../lib64/lp64d" lib64/lp64d/libLLVM-10svn.so lib64/lp64d/libLLVMSupport.a -lpthread -lz -lrt -ldl -ltinfo -latomic -lpthread -lm lib64/lp64d/libLLVMDemangle.a
I don't understand why the flag doesn't propagate from `Support` to `libLLVM` to `dsymutil`.
@beanz which fix is being requested? I think the current patch is incorrect because `-latomic` propagates if not dynamically linking against `libLLVM`.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D69003/new/
https://reviews.llvm.org/D69003
More information about the llvm-commits
mailing list