ro created this revision. ro added reviewers: clang, tstellar, MaskRay. ro added a project: clang. Herald added subscribers: fedor.sergeev, mgorny, jyknight. ro requested review of this revision. Herald added a subscriber: cfe-commits.
Linking `libclang.so` is currently broken on Solaris: ld: fatal: option --version-script requires option -z gnu-version-script-compat to be specified While Solaris `ld` supports a considerable subset of `--version-script`, there are some elements of the syntax that aren't. The fix is equivalent to D78510 <https://reviews.llvm.org/D78510>. Additionally, use C-style comments is a GNU extension that can easily be avoided by using `#` as comment character. Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D107559 Files: clang/tools/libclang/CMakeLists.txt clang/tools/libclang/libclang.map Index: clang/tools/libclang/libclang.map =================================================================== --- clang/tools/libclang/libclang.map +++ clang/tools/libclang/libclang.map @@ -1,10 +1,8 @@ -/* If you add a symbol to this file, make sure to add it with the correct - * version. For example, if the LLVM main branch is LLVM 14.0.0, add new - * symbols with the version LLVM_14. - * On platforms where versions scripts are not used, this file will be used to - * generate a list of exports for libclang.so - */ - +# If you add a symbol to this file, make sure to add it with the correct +# version. For example, if the LLVM main branch is LLVM 14.0.0, add new +# symbols with the version LLVM_14. +# On platforms where versions scripts are not used, this file will be used to +# generate a list of exports for libclang.so LLVM_13 { global: @@ -407,10 +405,9 @@ local: *; }; -/* Example of how to add a new symbol version entry. If you do add a new symbol - * version, please update the example to depend on the version you added. - * LLVM_X { - * global: - * clang_newsymbol; - * }; - */ +# Example of how to add a new symbol version entry. If you do add a new symbol +# version, please update the example to depend on the version you added. +# LLVM_X { +# global: +# clang_newsymbol; +# }; Index: clang/tools/libclang/CMakeLists.txt =================================================================== --- clang/tools/libclang/CMakeLists.txt +++ clang/tools/libclang/CMakeLists.txt @@ -162,6 +162,11 @@ endif() if (USE_VERSION_SCRIPT) target_link_options(libclang PRIVATE "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libclang.map") + # The Solaris 11.4 linker supports a subset of GNU ld version scripts, + # but requires a special option to enable it. + if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") + target_link_options(libclang PRIVATE "-Wl,-z,gnu-version-script-compat") + endif() # Ensure that libclang.so gets rebuilt when the linker script changes. set_property(SOURCE ARCMigrate.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libclang.map)
Index: clang/tools/libclang/libclang.map =================================================================== --- clang/tools/libclang/libclang.map +++ clang/tools/libclang/libclang.map @@ -1,10 +1,8 @@ -/* If you add a symbol to this file, make sure to add it with the correct - * version. For example, if the LLVM main branch is LLVM 14.0.0, add new - * symbols with the version LLVM_14. - * On platforms where versions scripts are not used, this file will be used to - * generate a list of exports for libclang.so - */ - +# If you add a symbol to this file, make sure to add it with the correct +# version. For example, if the LLVM main branch is LLVM 14.0.0, add new +# symbols with the version LLVM_14. +# On platforms where versions scripts are not used, this file will be used to +# generate a list of exports for libclang.so LLVM_13 { global: @@ -407,10 +405,9 @@ local: *; }; -/* Example of how to add a new symbol version entry. If you do add a new symbol - * version, please update the example to depend on the version you added. - * LLVM_X { - * global: - * clang_newsymbol; - * }; - */ +# Example of how to add a new symbol version entry. If you do add a new symbol +# version, please update the example to depend on the version you added. +# LLVM_X { +# global: +# clang_newsymbol; +# }; Index: clang/tools/libclang/CMakeLists.txt =================================================================== --- clang/tools/libclang/CMakeLists.txt +++ clang/tools/libclang/CMakeLists.txt @@ -162,6 +162,11 @@ endif() if (USE_VERSION_SCRIPT) target_link_options(libclang PRIVATE "-Wl,--version-script,${CMAKE_CURRENT_SOURCE_DIR}/libclang.map") + # The Solaris 11.4 linker supports a subset of GNU ld version scripts, + # but requires a special option to enable it. + if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS") + target_link_options(libclang PRIVATE "-Wl,-z,gnu-version-script-compat") + endif() # Ensure that libclang.so gets rebuilt when the linker script changes. set_property(SOURCE ARCMigrate.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libclang.map)
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits