Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package llvm19 for openSUSE:Factory checked in at 2024-11-22 23:50:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm19 (Old) and /work/SRC/openSUSE:Factory/.llvm19.new.28523 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm19" Fri Nov 22 23:50:14 2024 rev:4 rq:1225427 version:19.1.4 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm19/llvm19.changes 2024-11-18 19:57:29.263805836 +0100 +++ /work/SRC/openSUSE:Factory/.llvm19.new.28523/llvm19.changes 2024-11-22 23:50:21.626487460 +0100 @@ -1,0 +2,8 @@ +Tue Nov 19 21:17:27 UTC 2024 - Aaron Puchert <[email protected]> + +- Update to version 19.1.4. + * This release contains bug-fixes for the LLVM 19.1.0 release. + This release is API and ABI compatible with 19.1.0. +- Rebase llvm-do-not-install-static-libraries.patch. + +------------------------------------------------------------------- Old: ---- clang-19.1.3.src.tar.xz clang-19.1.3.src.tar.xz.sig clang-docs-19.1.3.src.tar.xz clang-tools-extra-19.1.3.src.tar.xz clang-tools-extra-19.1.3.src.tar.xz.sig cmake-19.1.3.src.tar.xz cmake-19.1.3.src.tar.xz.sig compiler-rt-19.1.3.src.tar.xz compiler-rt-19.1.3.src.tar.xz.sig libcxx-19.1.3.src.tar.xz libcxx-19.1.3.src.tar.xz.sig libcxxabi-19.1.3.src.tar.xz libcxxabi-19.1.3.src.tar.xz.sig lld-19.1.3.src.tar.xz lld-19.1.3.src.tar.xz.sig lldb-19.1.3.src.tar.xz lldb-19.1.3.src.tar.xz.sig llvm-19.1.3.src.tar.xz llvm-19.1.3.src.tar.xz.sig llvm-docs-19.1.3.src.tar.xz openmp-19.1.3.src.tar.xz openmp-19.1.3.src.tar.xz.sig polly-19.1.3.src.tar.xz polly-19.1.3.src.tar.xz.sig runtimes-19.1.3.src.tar.xz runtimes-19.1.3.src.tar.xz.sig third-party-19.1.3.src.tar.xz third-party-19.1.3.src.tar.xz.sig New: ---- clang-19.1.4.src.tar.xz clang-19.1.4.src.tar.xz.sig clang-docs-19.1.4.src.tar.xz clang-tools-extra-19.1.4.src.tar.xz clang-tools-extra-19.1.4.src.tar.xz.sig cmake-19.1.4.src.tar.xz cmake-19.1.4.src.tar.xz.sig compiler-rt-19.1.4.src.tar.xz compiler-rt-19.1.4.src.tar.xz.sig libcxx-19.1.4.src.tar.xz libcxx-19.1.4.src.tar.xz.sig libcxxabi-19.1.4.src.tar.xz libcxxabi-19.1.4.src.tar.xz.sig lld-19.1.4.src.tar.xz lld-19.1.4.src.tar.xz.sig lldb-19.1.4.src.tar.xz lldb-19.1.4.src.tar.xz.sig llvm-19.1.4.src.tar.xz llvm-19.1.4.src.tar.xz.sig llvm-docs-19.1.4.src.tar.xz openmp-19.1.4.src.tar.xz openmp-19.1.4.src.tar.xz.sig polly-19.1.4.src.tar.xz polly-19.1.4.src.tar.xz.sig runtimes-19.1.4.src.tar.xz runtimes-19.1.4.src.tar.xz.sig third-party-19.1.4.src.tar.xz third-party-19.1.4.src.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm19.spec ++++++ --- /var/tmp/diff_new_pack.rQcDIV/_old 2024-11-22 23:50:27.822745598 +0100 +++ /var/tmp/diff_new_pack.rQcDIV/_new 2024-11-22 23:50:27.826745765 +0100 @@ -19,7 +19,7 @@ %global _sonum 19 %global _minor %{_sonum}.1 %global _soname %{_minor}%{?_rc:-rc%_rc} -%global _patch_level 3 +%global _patch_level 4 %global _relver %{_minor}.%{_patch_level} %global _version %_relver%{?_rc:-rc%_rc} %global _itsme19 1 ++++++ clang-19.1.3.src.tar.xz -> clang-19.1.4.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm19/clang-19.1.3.src.tar.xz /work/SRC/openSUSE:Factory/.llvm19.new.28523/clang-19.1.4.src.tar.xz differ: char 15, line 1 ++++++ clang-docs-19.1.3.src.tar.xz -> clang-docs-19.1.4.src.tar.xz ++++++ ++++ 3005 lines of diff (skipped) ++++++ clang-tools-extra-19.1.3.src.tar.xz -> clang-tools-extra-19.1.4.src.tar.xz ++++++ ++++++ cmake-19.1.3.src.tar.xz -> cmake-19.1.4.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cmake-19.1.3.src/Modules/LLVMVersion.cmake new/cmake-19.1.4.src/Modules/LLVMVersion.cmake --- old/cmake-19.1.3.src/Modules/LLVMVersion.cmake 2024-10-29 11:09:39.000000000 +0100 +++ new/cmake-19.1.4.src/Modules/LLVMVersion.cmake 2024-11-19 09:08:07.000000000 +0100 @@ -7,7 +7,7 @@ set(LLVM_VERSION_MINOR 1) endif() if(NOT DEFINED LLVM_VERSION_PATCH) - set(LLVM_VERSION_PATCH 3) + set(LLVM_VERSION_PATCH 4) endif() if(NOT DEFINED LLVM_VERSION_SUFFIX) set(LLVM_VERSION_SUFFIX) ++++++ compiler-rt-19.1.3.src.tar.xz -> compiler-rt-19.1.4.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/CMakeLists.txt new/compiler-rt-19.1.4.src/CMakeLists.txt --- old/compiler-rt-19.1.3.src/CMakeLists.txt 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/CMakeLists.txt 2024-11-19 09:08:07.000000000 +0100 @@ -39,6 +39,22 @@ include(CMakeDependentOption) include(GetDarwinLinkerVersion) +include(CheckCXXCompilerFlag) + +# Check if we can compile with --no-default-config, or if that omits a config +# file that is essential for the toolchain to work properly. +# +# Using CMAKE_REQUIRED_FLAGS to make sure the flag is used both for compilation +# and for linking. +# +# Doing this test early on, to see if the flag works on the toolchain +# out of the box. Later on, we end up adding -nostdlib and similar flags +# to all test compiles, which easily can give false positives on this test. +set(OLD_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") +set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} --no-default-config") +check_cxx_compiler_flag("" COMPILER_RT_HAS_NO_DEFAULT_CONFIG_FLAG) +set(CMAKE_REQUIRED_FLAGS "${OLD_CMAKE_REQUIRED_FLAGS}") + option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON) mark_as_advanced(COMPILER_RT_BUILD_BUILTINS) option(COMPILER_RT_DISABLE_AARCH64_FMV "Disable AArch64 Function Multi Versioning support" OFF) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/lib/builtins/int_math.h new/compiler-rt-19.1.4.src/lib/builtins/int_math.h --- old/compiler-rt-19.1.3.src/lib/builtins/int_math.h 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/lib/builtins/int_math.h 2024-11-19 09:08:07.000000000 +0100 @@ -65,9 +65,12 @@ #define crt_copysign(x, y) __builtin_copysign((x), (y)) #define crt_copysignf(x, y) __builtin_copysignf((x), (y)) #define crt_copysignl(x, y) __builtin_copysignl((x), (y)) -#if __has_builtin(__builtin_copysignf128) +// We define __has_builtin to always return 0 for GCC versions below 10, +// but __builtin_copysignf128 is available since version 7. +#if __has_builtin(__builtin_copysignf128) || \ + (defined(__GNUC__) && __GNUC__ >= 7) #define crt_copysignf128(x, y) __builtin_copysignf128((x), (y)) -#elif __has_builtin(__builtin_copysignq) || (defined(__GNUC__) && __GNUC__ >= 7) +#elif __has_builtin(__builtin_copysignq) #define crt_copysignf128(x, y) __builtin_copysignq((x), (y)) #endif #endif @@ -80,9 +83,11 @@ #define crt_fabs(x) __builtin_fabs((x)) #define crt_fabsf(x) __builtin_fabsf((x)) #define crt_fabsl(x) __builtin_fabsl((x)) -#if __has_builtin(__builtin_fabsf128) +// We define __has_builtin to always return 0 for GCC versions below 10, +// but __builtin_fabsf128 is available since version 7. +#if __has_builtin(__builtin_fabsf128) || (defined(__GNUC__) && __GNUC__ >= 7) #define crt_fabsf128(x) __builtin_fabsf128((x)) -#elif __has_builtin(__builtin_fabsq) || (defined(__GNUC__) && __GNUC__ >= 7) +#elif __has_builtin(__builtin_fabsq) #define crt_fabsf128(x) __builtin_fabsq((x)) #endif #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/lib/fuzzer/FuzzerUtilWindows.cpp new/compiler-rt-19.1.4.src/lib/fuzzer/FuzzerUtilWindows.cpp --- old/compiler-rt-19.1.3.src/lib/fuzzer/FuzzerUtilWindows.cpp 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/lib/fuzzer/FuzzerUtilWindows.cpp 2024-11-19 09:08:07.000000000 +0100 @@ -239,10 +239,11 @@ } void SetThreadName(std::thread &thread, const std::string &name) { -#if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) || \ - defined(_GLIBCXX_GCC_GTHR_POSIX_H) - (void)pthread_setname_np(thread.native_handle(), name.c_str()); -#else +#ifndef __MINGW32__ + // Not setting the thread name in MinGW environments. MinGW C++ standard + // libraries can either use native Windows threads or pthreads, so we + // don't know with certainty what kind of thread handle we're getting + // from thread.native_handle() here. typedef HRESULT(WINAPI * proc)(HANDLE, PCWSTR); HMODULE kbase = GetModuleHandleA("KernelBase.dll"); proc ThreadNameProc = diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/lib/sanitizer_common/sanitizer_linux.cpp new/compiler-rt-19.1.4.src/lib/sanitizer_common/sanitizer_linux.cpp --- old/compiler-rt-19.1.3.src/lib/sanitizer_common/sanitizer_linux.cpp 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/lib/sanitizer_common/sanitizer_linux.cpp 2024-11-19 09:08:07.000000000 +0100 @@ -160,33 +160,56 @@ CHECK_EQ(0, internal_sigprocmask(SIG_SETMASK, set, oldset)); } +# if SANITIZER_LINUX +// Deletes the specified signal from newset, if it is not present in oldset +// Equivalently: newset[signum] = newset[signum] & oldset[signum] +static void KeepUnblocked(__sanitizer_sigset_t &newset, + __sanitizer_sigset_t &oldset, int signum) { + // FIXME: https://github.com/google/sanitizers/issues/1816 + if (SANITIZER_ANDROID || !internal_sigismember(&oldset, signum)) + internal_sigdelset(&newset, signum); +} +# endif + // Block asynchronous signals void BlockSignals(__sanitizer_sigset_t *oldset) { - __sanitizer_sigset_t set; - internal_sigfillset(&set); -# if SANITIZER_LINUX && !SANITIZER_ANDROID + __sanitizer_sigset_t newset; + internal_sigfillset(&newset); + +# if SANITIZER_LINUX + __sanitizer_sigset_t currentset; + +# if !SANITIZER_ANDROID + // FIXME: https://github.com/google/sanitizers/issues/1816 + SetSigProcMask(NULL, ¤tset); + // Glibc uses SIGSETXID signal during setuid call. If this signal is blocked // on any thread, setuid call hangs. // See test/sanitizer_common/TestCases/Linux/setuid.c. - internal_sigdelset(&set, 33); -# endif -# if SANITIZER_LINUX + KeepUnblocked(newset, currentset, 33); +# endif // !SANITIZER_ANDROID + // Seccomp-BPF-sandboxed processes rely on SIGSYS to handle trapped syscalls. // If this signal is blocked, such calls cannot be handled and the process may // hang. - internal_sigdelset(&set, 31); + KeepUnblocked(newset, currentset, 31); +# if !SANITIZER_ANDROID // Don't block synchronous signals - internal_sigdelset(&set, SIGSEGV); - internal_sigdelset(&set, SIGBUS); - internal_sigdelset(&set, SIGILL); - internal_sigdelset(&set, SIGTRAP); - internal_sigdelset(&set, SIGABRT); - internal_sigdelset(&set, SIGFPE); - internal_sigdelset(&set, SIGPIPE); -# endif + // but also don't unblock signals that the user had deliberately blocked. + // FIXME: https://github.com/google/sanitizers/issues/1816 + KeepUnblocked(newset, currentset, SIGSEGV); + KeepUnblocked(newset, currentset, SIGBUS); + KeepUnblocked(newset, currentset, SIGILL); + KeepUnblocked(newset, currentset, SIGTRAP); + KeepUnblocked(newset, currentset, SIGABRT); + KeepUnblocked(newset, currentset, SIGFPE); + KeepUnblocked(newset, currentset, SIGPIPE); +# endif //! SANITIZER_ANDROID + +# endif // SANITIZER_LINUX - SetSigProcMask(&set, oldset); + SetSigProcMask(&newset, oldset); } ScopedBlockSignals::ScopedBlockSignals(__sanitizer_sigset_t *copy) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/lib/sanitizer_common/tests/CMakeLists.txt new/compiler-rt-19.1.4.src/lib/sanitizer_common/tests/CMakeLists.txt --- old/compiler-rt-19.1.3.src/lib/sanitizer_common/tests/CMakeLists.txt 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/lib/sanitizer_common/tests/CMakeLists.txt 2024-11-19 09:08:07.000000000 +0100 @@ -15,6 +15,7 @@ sanitizer_array_ref_test.cpp sanitizer_atomic_test.cpp sanitizer_bitvector_test.cpp + sanitizer_block_signals.cpp sanitizer_bvgraph_test.cpp sanitizer_chained_origin_depot_test.cpp sanitizer_common_test.cpp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/lib/sanitizer_common/tests/sanitizer_block_signals.cpp new/compiler-rt-19.1.4.src/lib/sanitizer_common/tests/sanitizer_block_signals.cpp --- old/compiler-rt-19.1.3.src/lib/sanitizer_common/tests/sanitizer_block_signals.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/compiler-rt-19.1.4.src/lib/sanitizer_common/tests/sanitizer_block_signals.cpp 2024-11-19 09:08:07.000000000 +0100 @@ -0,0 +1,76 @@ +//===-- sanitizer_block_signals.cpp ---------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file is a part of sanitizer_common unit tests. +// +//===----------------------------------------------------------------------===// +#include <signal.h> +#include <stdio.h> + +#include "gtest/gtest.h" +#include "sanitizer_common/sanitizer_linux.h" + +namespace __sanitizer { + +#if SANITIZER_LINUX && !SANITIZER_ANDROID +volatile int received_sig = -1; + +void signal_handler(int signum) { received_sig = signum; } + +TEST(SanitizerCommon, NoBlockSignals) { + // No signals blocked + signal(SIGUSR1, signal_handler); + raise(SIGUSR1); + EXPECT_EQ(received_sig, SIGUSR1); + + received_sig = -1; + signal(SIGPIPE, signal_handler); + raise(SIGPIPE); + EXPECT_EQ(received_sig, SIGPIPE); +} + +TEST(SanitizerCommon, BlockSignalsPlain) { + // ScopedBlockSignals; SIGUSR1 should be blocked but not SIGPIPE + { + __sanitizer_sigset_t sigset = {}; + ScopedBlockSignals block(&sigset); + + received_sig = -1; + signal(SIGUSR1, signal_handler); + raise(SIGUSR1); + EXPECT_EQ(received_sig, -1); + + received_sig = -1; + signal(SIGPIPE, signal_handler); + raise(SIGPIPE); + EXPECT_EQ(received_sig, SIGPIPE); + } + EXPECT_EQ(received_sig, SIGUSR1); +} + +TEST(SanitizerCommon, BlockSignalsExceptPipe) { + // Manually block SIGPIPE; ScopedBlockSignals should not unblock this + sigset_t block_sigset; + sigemptyset(&block_sigset); + sigaddset(&block_sigset, SIGPIPE); + sigprocmask(SIG_BLOCK, &block_sigset, NULL); + { + __sanitizer_sigset_t sigset = {}; + ScopedBlockSignals block(&sigset); + + received_sig = -1; + signal(SIGPIPE, signal_handler); + raise(SIGPIPE); + EXPECT_EQ(received_sig, -1); + } + sigprocmask(SIG_UNBLOCK, &block_sigset, NULL); + EXPECT_EQ(received_sig, SIGPIPE); +} +#endif // SANITIZER_LINUX && !SANITIZER_ANDROID + +} // namespace __sanitizer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/test/CMakeLists.txt new/compiler-rt-19.1.4.src/test/CMakeLists.txt --- old/compiler-rt-19.1.3.src/test/CMakeLists.txt 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/test/CMakeLists.txt 2024-11-19 09:08:07.000000000 +0100 @@ -12,6 +12,8 @@ pythonize_bool(COMPILER_RT_HAS_AARCH64_SME) +pythonize_bool(COMPILER_RT_HAS_NO_DEFAULT_CONFIG_FLAG) + configure_compiler_rt_lit_site_cfg( ${CMAKE_CURRENT_SOURCE_DIR}/lit.common.configured.in ${CMAKE_CURRENT_BINARY_DIR}/lit.common.configured) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/test/lit.common.cfg.py new/compiler-rt-19.1.4.src/test/lit.common.cfg.py --- old/compiler-rt-19.1.3.src/test/lit.common.cfg.py 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/test/lit.common.cfg.py 2024-11-19 09:08:07.000000000 +0100 @@ -980,7 +980,11 @@ # default configs for the test runs. In particular, anything hardening # related is likely to cause issues with sanitizer tests, because it may # preempt something we're looking to trap (e.g. _FORTIFY_SOURCE vs our ASAN). -config.environment["CLANG_NO_DEFAULT_CONFIG"] = "1" +# +# Only set this if we know we can still build for the target while disabling +# default configs. +if config.has_no_default_config_flag: + config.environment["CLANG_NO_DEFAULT_CONFIG"] = "1" if config.has_compiler_rt_libatomic: base_lib = os.path.join(config.compiler_rt_libdir, "libclang_rt.atomic%s.so" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-19.1.3.src/test/lit.common.configured.in new/compiler-rt-19.1.4.src/test/lit.common.configured.in --- old/compiler-rt-19.1.3.src/test/lit.common.configured.in 2024-10-29 11:09:39.000000000 +0100 +++ new/compiler-rt-19.1.4.src/test/lit.common.configured.in 2024-11-19 09:08:07.000000000 +0100 @@ -53,6 +53,7 @@ set_default("has_compiler_rt_libatomic", @COMPILER_RT_BUILD_STANDALONE_LIBATOMIC_PYBOOL@) set_default("aarch64_sme", @COMPILER_RT_HAS_AARCH64_SME_PYBOOL@) set_default("darwin_linker_version", "@COMPILER_RT_DARWIN_LINKER_VERSION@") +set_default("has_no_default_config_flag", @COMPILER_RT_HAS_NO_DEFAULT_CONFIG_FLAG_PYBOOL@) # True iff the test suite supports ignoring the test compiler's runtime library path # and using `config.compiler_rt_libdir` instead. This only matters when the runtime # library paths differ. ++++++ libcxx-19.1.3.src.tar.xz -> libcxx-19.1.4.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-19.1.3.src/cmake/Modules/HandleLibCXXABI.cmake new/libcxx-19.1.4.src/cmake/Modules/HandleLibCXXABI.cmake --- old/libcxx-19.1.3.src/cmake/Modules/HandleLibCXXABI.cmake 2024-10-29 11:09:39.000000000 +0100 +++ new/libcxx-19.1.4.src/cmake/Modules/HandleLibCXXABI.cmake 2024-11-19 09:08:07.000000000 +0100 @@ -83,6 +83,10 @@ # Link against a system-provided libstdc++ if ("${LIBCXX_CXX_ABI}" STREQUAL "libstdc++") + if(NOT LIBCXX_CXX_ABI_INCLUDE_PATHS) + message(FATAL_ERROR "LIBCXX_CXX_ABI_INCLUDE_PATHS must be set when selecting libstdc++ as an ABI library") + endif() + add_library(libcxx-abi-headers INTERFACE) import_private_headers(libcxx-abi-headers "${LIBCXX_CXX_ABI_INCLUDE_PATHS}" "cxxabi.h;bits/c++config.h;bits/os_defines.h;bits/cpu_defines.h;bits/cxxabi_tweaks.h;bits/cxxabi_forced.h") @@ -96,6 +100,10 @@ # Link against a system-provided libsupc++ elseif ("${LIBCXX_CXX_ABI}" STREQUAL "libsupc++") + if(NOT LIBCXX_CXX_ABI_INCLUDE_PATHS) + message(FATAL_ERROR "LIBCXX_CXX_ABI_INCLUDE_PATHS must be set when selecting libsupc++ as an ABI library") + endif() + add_library(libcxx-abi-headers INTERFACE) import_private_headers(libcxx-abi-headers "${LIBCXX_CXX_ABI_INCLUDE_PATHS}" "cxxabi.h;bits/c++config.h;bits/os_defines.h;bits/cpu_defines.h;bits/cxxabi_tweaks.h;bits/cxxabi_forced.h") @@ -114,7 +122,18 @@ target_compile_definitions(libcxx-abi-headers INTERFACE "-DLIBCXX_BUILDING_LIBCXXABI") if (TARGET cxxabi_shared) - add_library(libcxx-abi-shared ALIAS cxxabi_shared) + add_library(libcxx-abi-shared INTERFACE) + target_link_libraries(libcxx-abi-shared INTERFACE cxxabi_shared) + + # When using the in-tree libc++abi as an ABI library, libc++ re-exports the + # libc++abi symbols (on platforms where it can) because libc++abi is only an + # implementation detail of libc++. + target_link_libraries(libcxx-abi-shared INTERFACE cxxabi-reexports) + + # Populate the OUTPUT_NAME property of libcxx-abi-shared because that is used when + # generating a linker script. + get_target_property(_output_name cxxabi_shared OUTPUT_NAME) + set_target_properties(libcxx-abi-shared PROPERTIES "OUTPUT_NAME" "${_output_name}") endif() if (TARGET cxxabi_static) @@ -131,6 +150,10 @@ # Link against a system-provided libc++abi elseif ("${LIBCXX_CXX_ABI}" STREQUAL "system-libcxxabi") + if(NOT LIBCXX_CXX_ABI_INCLUDE_PATHS) + message(FATAL_ERROR "LIBCXX_CXX_ABI_INCLUDE_PATHS must be set when selecting system-libcxxabi as an ABI library") + endif() + add_library(libcxx-abi-headers INTERFACE) import_private_headers(libcxx-abi-headers "${LIBCXX_CXX_ABI_INCLUDE_PATHS}" "cxxabi.h;__cxxabi_config.h") target_compile_definitions(libcxx-abi-headers INTERFACE "-DLIBCXX_BUILDING_LIBCXXABI") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-19.1.3.src/include/__config new/libcxx-19.1.4.src/include/__config --- old/libcxx-19.1.3.src/include/__config 2024-10-29 11:09:39.000000000 +0100 +++ new/libcxx-19.1.4.src/include/__config 2024-11-19 09:08:07.000000000 +0100 @@ -27,7 +27,7 @@ // _LIBCPP_VERSION represents the version of libc++, which matches the version of LLVM. // Given a LLVM release LLVM XX.YY.ZZ (e.g. LLVM 17.0.1 == 17.00.01), _LIBCPP_VERSION is // defined to XXYYZZ. -# define _LIBCPP_VERSION 190103 +# define _LIBCPP_VERSION 190104 # define _LIBCPP_CONCAT_IMPL(_X, _Y) _X##_Y # define _LIBCPP_CONCAT(_X, _Y) _LIBCPP_CONCAT_IMPL(_X, _Y) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-19.1.3.src/src/CMakeLists.txt new/libcxx-19.1.4.src/src/CMakeLists.txt --- old/libcxx-19.1.3.src/src/CMakeLists.txt 2024-10-29 11:09:39.000000000 +0100 +++ new/libcxx-19.1.4.src/src/CMakeLists.txt 2024-11-19 09:08:07.000000000 +0100 @@ -229,14 +229,10 @@ target_link_libraries(cxx_shared PUBLIC libcxx-abi-shared) endif() - # Maybe re-export symbols from libc++abi - # In particular, we don't re-export the symbols if libc++abi is merged statically - # into libc++ because in that case there's no dylib to re-export from. + # Maybe force some symbols to be weak, not weak or not exported. + # TODO: This shouldn't depend on the platform, and ideally it should be done in the sources. if (APPLE AND LIBCXX_CXX_ABI MATCHES "libcxxabi$" AND NOT LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY) - target_link_libraries(cxx_shared PRIVATE cxxabi-reexports) - - # TODO: These exports controls should not be tied to whether we re-export libc++abi symbols target_link_libraries(cxx_shared PRIVATE "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++unexp.exp" "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp" ++++++ libcxxabi-19.1.3.src.tar.xz -> libcxxabi-19.1.4.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxxabi-19.1.3.src/src/CMakeLists.txt new/libcxxabi-19.1.4.src/src/CMakeLists.txt --- old/libcxxabi-19.1.3.src/src/CMakeLists.txt 2024-10-29 11:09:39.000000000 +0100 +++ new/libcxxabi-19.1.4.src/src/CMakeLists.txt 2024-11-19 09:08:07.000000000 +0100 @@ -213,6 +213,8 @@ list(APPEND LIBCXXABI_INSTALL_TARGETS "cxxabi_shared") endif() + # TODO: Move this to libc++'s HandleLibCXXABI.cmake since this is effectively trying to control + # what libc++ re-exports. add_library(cxxabi-reexports INTERFACE) function(export_symbols file) # -exported_symbols_list is only available on Apple platforms ++++++ lld-19.1.3.src.tar.xz -> lld-19.1.4.src.tar.xz ++++++ ++++++ lldb-19.1.3.src.tar.xz -> lldb-19.1.4.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm19/lldb-19.1.3.src.tar.xz /work/SRC/openSUSE:Factory/.llvm19.new.28523/lldb-19.1.4.src.tar.xz differ: char 15, line 1 ++++++ llvm-19.1.3.src.tar.xz -> llvm-19.1.4.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm19/llvm-19.1.3.src.tar.xz /work/SRC/openSUSE:Factory/.llvm19.new.28523/llvm-19.1.4.src.tar.xz differ: char 15, line 1 ++++++ llvm-do-not-install-static-libraries.patch ++++++ --- /var/tmp/diff_new_pack.rQcDIV/_old 2024-11-22 23:50:35.783077228 +0100 +++ /var/tmp/diff_new_pack.rQcDIV/_new 2024-11-22 23:50:35.783077228 +0100 @@ -2,10 +2,10 @@ want after installation. By not copying them in the first place we reduce the disk usage during installation. -Index: clang-19.1.3.src/cmake/modules/AddClang.cmake +Index: clang-19.1.4.src/cmake/modules/AddClang.cmake =================================================================== ---- a/clang-19.1.3.src/cmake/modules/AddClang.cmake -+++ b/clang-19.1.3.src/cmake/modules/AddClang.cmake +--- a/clang-19.1.4.src/cmake/modules/AddClang.cmake ++++ b/clang-19.1.4.src/cmake/modules/AddClang.cmake @@ -106,12 +106,15 @@ macro(add_clang_library name) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ARG_INSTALL_WITH_TOOLCHAIN) @@ -68,10 +68,10 @@ endif() get_subproject_title(subproject_title) -Index: lld-19.1.3.src/cmake/modules/AddLLD.cmake +Index: lld-19.1.4.src/cmake/modules/AddLLD.cmake =================================================================== ---- a/lld-19.1.3.src/cmake/modules/AddLLD.cmake -+++ b/lld-19.1.3.src/cmake/modules/AddLLD.cmake +--- a/lld-19.1.4.src/cmake/modules/AddLLD.cmake ++++ b/lld-19.1.4.src/cmake/modules/AddLLD.cmake @@ -17,13 +17,6 @@ macro(add_lld_library name) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) @@ -86,10 +86,10 @@ if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) add_llvm_install_targets(install-${name} DEPENDS ${name} -Index: polly-19.1.3.src/cmake/polly_macros.cmake +Index: polly-19.1.4.src/cmake/polly_macros.cmake =================================================================== ---- a/polly-19.1.3.src/cmake/polly_macros.cmake -+++ b/polly-19.1.3.src/cmake/polly_macros.cmake +--- a/polly-19.1.4.src/cmake/polly_macros.cmake ++++ b/polly-19.1.4.src/cmake/polly_macros.cmake @@ -42,15 +42,17 @@ macro(add_polly_library name) llvm_config(${name} ${LLVM_LINK_COMPONENTS}) endif( LLVM_LINK_COMPONENTS ) @@ -116,10 +116,10 @@ endmacro(add_polly_library) macro(add_polly_loadable_module name) -Index: polly-19.1.3.src/lib/CMakeLists.txt +Index: polly-19.1.4.src/lib/CMakeLists.txt =================================================================== ---- a/polly-19.1.3.src/lib/CMakeLists.txt -+++ b/polly-19.1.3.src/lib/CMakeLists.txt +--- a/polly-19.1.4.src/lib/CMakeLists.txt ++++ b/polly-19.1.4.src/lib/CMakeLists.txt @@ -109,7 +109,7 @@ set_target_properties(PollyCore PROPERTI # It depends on all library it needs, such that with # LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as ++++++ llvm-docs-19.1.3.src.tar.xz -> llvm-docs-19.1.4.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm19/llvm-docs-19.1.3.src.tar.xz /work/SRC/openSUSE:Factory/.llvm19.new.28523/llvm-docs-19.1.4.src.tar.xz differ: char 15, line 1 ++++++ openmp-19.1.3.src.tar.xz -> openmp-19.1.4.src.tar.xz ++++++ ++++++ polly-19.1.3.src.tar.xz -> polly-19.1.4.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm19/polly-19.1.3.src.tar.xz /work/SRC/openSUSE:Factory/.llvm19.new.28523/polly-19.1.4.src.tar.xz differ: char 15, line 1 ++++++ runtimes-19.1.3.src.tar.xz -> runtimes-19.1.4.src.tar.xz ++++++ ++++++ third-party-19.1.3.src.tar.xz -> third-party-19.1.4.src.tar.xz ++++++
