Hello, First, Rebecca, many thanks for the patch :)
Le 18/01/2017 à 19:54, Lisandro Damián Nicanor Pérez Meyer a écrit : > On martes, 17 de enero de 2017 22:21:51 ART Rebecca N. Palmer wrote: > [snip] >> This suggests the fix (warning: untested and not my area of expertise - >> and if it is using that line, why is there no -Wl,--no-whole-archive in >> the build log?): > This part I don't know. > >> --- a/tools/llvm-shlib/CMakeLists.txt >> +++ b/tools/llvm-shlib/CMakeLists.txt >> @@ -42,7 +42,7 @@ >> list(REMOVE_DUPLICATES LIB_NAMES) >> if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" OR "${CMAKE_SYSTEM_NAME}" >> STREQUAL "GNU" OR "${CMAKE_SYSTEM_NAME}" STREQUAL "kFreeBSD") # FIXME: >> It should be "GNU ld for elf" >> # GNU ld doesn't resolve symbols in the version script. >> - set(LIB_NAMES -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive) >> + set(LIB_NAMES >> -Wl,--version-script,../../../tools/llvm-shlib/simple_version_script.map >> -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive) >> elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") >> set(LIB_NAMES -Wl,-all_load ${LIB_NAMES}) >> endif() >> --- a/dev/null >> +++ b/simple_version_script.map >> @@ -0,0 +1,1 @@ >> +LLVM_3.9 { global: *; }; > Probably the "../../../tools" path should be replaced by $ > {CMAKE_CURRENT_SOURCE_DIR}/tools I think that we will have to replicate the change in tools/llvm-shlib/CMakeLists.txt for most (every?) library that llvm-toolchain ships as a matter of consistency. I feel a bit uncomfortable to implement the ELF symbol versions that late in the cycle. Especially for two reasons: I don't know enough that stuff to evaluate and fix side effects it has always been like that without causing too much issue. Can we lower the priority and I will fix that for the next stable release? Cheers, S
signature.asc
Description: OpenPGP digital signature