diff --git a/clang-shlib-symbol-versioning.patch b/clang-shlib-symbol-versioning.patch new file mode 100644 index 0000000..9d5fa5e --- /dev/null +++ b/clang-shlib-symbol-versioning.patch @@ -0,0 +1,26 @@ +diff --git a/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt +index aa7fcd1efed4..054c7d59ec34 100644 +--- a/clang/tools/clang-shlib/CMakeLists.txt ++++ b/clang/tools/clang-shlib/CMakeLists.txt +@@ -48,6 +48,14 @@ add_clang_library(clang-cpp + ${_OBJECTS} + LINK_LIBS + ${_DEPS}) ++ ++configure_file(simple_version_script.map.in simple_version_script.map) ++ ++if (NOT LLVM_LINKER_IS_SOLARISLD AND NOT MINGW) ++ # Solaris ld does not accept global: *; so there is no way to version *all* global symbols ++ target_link_options(clang-cpp PRIVATE LINKER:--version-script,${CMAKE_CURRENT_BINARY_DIR}/simple_version_script.map) ++endif() ++ + # Optimize function calls for default visibility definitions to avoid PLT and + # reduce dynamic relocations. + if (NOT APPLE AND NOT MINGW) +diff --git a/clang/tools/clang-shlib/simple_version_script.map.in b/clang/tools/clang-shlib/simple_version_script.map.in +new file mode 100644 +index 000000000000..cb2306d1f596 +--- /dev/null ++++ b/clang/tools/clang-shlib/simple_version_script.map.in +@@ -0,0 +1 @@ ++@LLVM_SHLIB_SYMBOL_VERSION@ { global: *; }; diff --git a/llvm15.changes b/llvm15.changes index 794a573..3c98d8f 100644 --- a/llvm15.changes +++ b/llvm15.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Nov 16 22:38:02 UTC 2024 - Aaron Puchert + +- Apply clang-shlib-symbol-versioning.patch to add symbol versions + to libclang-cpp.so similar to libLLVM.so. This is required when + multiple versions of the library are loaded into the same + process. (boo#1219405, boo#1221183, boo#1233220) + ------------------------------------------------------------------- Tue Aug 20 21:20:37 UTC 2024 - Aaron Puchert diff --git a/llvm15.spec b/llvm15.spec index 53d2974..833201f 100644 --- a/llvm15.spec +++ b/llvm15.spec @@ -394,6 +394,8 @@ Patch35: libcxxabi-fix-armv7-test.patch Patch36: clang-test-xfail-gnuless-triple.patch # Fix lowering of "icmp uge <4 x i32> zeroinitializer, ..." on armv7. (https://reviews.llvm.org/D136447?id=469567, boo#1204267, gh#llvm/llvm-project#58514) Patch37: llvm-armv7-fix-vector-compare-with-zero-lowering.patch +# PATCH-FIX-UPSTREAM: Use symbol versioning also for libclang-cpp.so. +Patch38: clang-shlib-symbol-versioning.patch BuildRequires: binutils-devel >= 2.21.90 BuildRequires: cmake >= 3.13.4 BuildRequires: fdupes @@ -840,6 +842,7 @@ pushd clang-%{_version}.src %patch -P 9 -p2 %patch -P 18 -p2 %patch -P 36 -p2 +%patch -P 38 -p2 # We hardcode openSUSE rm unittests/Driver/DistroTest.cpp