Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package llvm13 for openSUSE:Factory checked in at 2022-02-06 23:54:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm13 (Old) and /work/SRC/openSUSE:Factory/.llvm13.new.1898 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm13" Sun Feb 6 23:54:04 2022 rev:6 rq:951461 version:13.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm13/llvm13.changes 2022-01-29 21:01:27.598924974 +0100 +++ /work/SRC/openSUSE:Factory/.llvm13.new.1898/llvm13.changes 2022-02-06 23:55:07.046483439 +0100 @@ -1,0 +2,17 @@ +Thu Feb 3 21:56:28 UTC 2022 - Aaron Puchert <aaronpuch...@alice-dsl.net> + +- Update to version 13.0.1. + * This release contains bug-fixes for the LLVM 13.0.0 release. + This release is API and ABI compatible with 13.0.0. +- Rebase llvm-do-not-install-static-libraries.patch. +- Drop obsolete patches: + * llvm-fix-building-with-GCC-12.patch +- Drop RUNPATH from packaged binaries, instead set LD_LIBRARY_PATH + for building and testing to simulate behavior of actual package. + +------------------------------------------------------------------- +Mon Jan 31 21:16:52 UTC 2022 - Andreas Schwab <sch...@suse.de> + +- Update constraints for riscv64 + +------------------------------------------------------------------- Old: ---- clang-13.0.0.src.tar.xz clang-docs-13.0.0.src.tar.xz clang-tools-extra-13.0.0.src.tar.xz compiler-rt-13.0.0.src.tar.xz libcxx-13.0.0.src.tar.xz libcxxabi-13.0.0.src.tar.xz lld-13.0.0.src.tar.xz lldb-13.0.0.src.tar.xz llvm-13.0.0.src.tar.xz llvm-docs-13.0.0.src.tar.xz llvm-fix-building-with-GCC-12.patch openmp-13.0.0.src.tar.xz polly-13.0.0.src.tar.xz New: ---- clang-13.0.1.src.tar.xz clang-docs-13.0.1.src.tar.xz clang-tools-extra-13.0.1.src.tar.xz compiler-rt-13.0.1.src.tar.xz libcxx-13.0.1.src.tar.xz libcxxabi-13.0.1.src.tar.xz lld-13.0.1.src.tar.xz lldb-13.0.1.src.tar.xz llvm-13.0.1.src.tar.xz llvm-docs-13.0.1.src.tar.xz openmp-13.0.1.src.tar.xz polly-13.0.1.src.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm13.spec ++++++ --- /var/tmp/diff_new_pack.W2B5uV/_old 2022-02-06 23:55:08.818471456 +0100 +++ /var/tmp/diff_new_pack.W2B5uV/_new 2022-02-06 23:55:08.826471402 +0100 @@ -16,13 +16,13 @@ # -%define _relver 13.0.0 +%define _relver 13.0.1 %define _version %_relver%{?_rc:rc%_rc} %define _tagver %_relver%{?_rc:-rc%_rc} %define _minor 13.0 %define _sonum 13 # Integer version used by update-alternatives -%define _uaver 1300 +%define _uaver 1301 %define _socxx 1 %ifarch x86_64 aarch64 %arm @@ -137,7 +137,6 @@ Patch27: llvm-exegesis-link-dylib.patch # Fix lookup of targets in installed CMake files. (boo#1180748, https://reviews.llvm.org/D96670) Patch33: CMake-Look-up-target-subcomponents-in-LLVM_AVAILABLE_LIBS.patch -Patch34: llvm-fix-building-with-GCC-12.patch Patch35: llvm-update-extract-section-script.patch BuildRequires: binutils-devel >= 2.21.90 BuildRequires: cmake >= 3.13.4 @@ -566,7 +565,6 @@ %patch24 -p1 %patch27 -p2 %patch33 -p2 -%patch34 -p2 %patch35 -p2 pushd clang-%{_version}.src @@ -725,7 +723,6 @@ -DCOMPILER_RT_BUILD_SANITIZERS:BOOL=OFF \ -DCOMPILER_RT_BUILD_XRAY:BOOL=OFF \ -DLLDB_DISABLE_PYTHON=ON \ - -DCMAKE_SKIP_RPATH:BOOL=OFF \ -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -Wl,--no-keep-memory" \ -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -Wl,--no-keep-memory" \ -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -Wl,--no-keep-memory" @@ -781,6 +778,9 @@ export CLANG_TABLEGEN=${PWD}/stage1/bin/clang-tblgen # Build is using absolute paths assuming the monorepo layout, so we need this. export CLANG_TOOLS_EXTRA_DIR=${PWD}/tools/clang/tools/extra +# The build occasionally uses tools linking against previously built +# libraries (mostly libLLVM.so), but we don't want to set RUNPATHs. +export LD_LIBRARY_PATH=${PWD}/build/%{_lib} # -z,now is breaking now, it needs to be fixed %cmake \ -DBUILD_SHARED_LIBS:BOOL=OFF \ @@ -835,7 +835,7 @@ %if %{without lldb_python} -DLLDB_DISABLE_PYTHON=ON \ %endif - -DCMAKE_SKIP_RPATH:BOOL=OFF \ + -DCMAKE_SKIP_RPATH:BOOL=ON \ -DCMAKE_EXE_LINKER_FLAGS="-Wl,--as-needed -Wl,--build-id=sha1" \ -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -Wl,--build-id=sha1" \ -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed -Wl,--build-id=sha1" \ @@ -860,6 +860,8 @@ cd .. %install +# Installation seems to build some files not contained in "all". +export LD_LIBRARY_PATH=${PWD}/build/%{_lib} %cmake_install # Install FileCheck needed for testing Rust boo#1192629 @@ -1107,6 +1109,9 @@ %fdupes %{_includedir}/%{name}/Host/ %check +# We don't want to set RUNPATHs, and running tests against installed libraries +# should be more representative of the actual behavior of the installed packages. +export LD_LIBRARY_PATH=%{buildroot}%{_libdir} # LLVM test suite is written in python and has troubles with encoding if # python 3 is used because it is written with assumption that python will # default to UTF-8 encoding. However, it only does if the current locale is ++++++ _constraints ++++++ --- /var/tmp/diff_new_pack.W2B5uV/_old 2022-02-06 23:55:08.858471185 +0100 +++ /var/tmp/diff_new_pack.W2B5uV/_new 2022-02-06 23:55:08.858471185 +0100 @@ -34,11 +34,8 @@ <arch>riscv64</arch> </conditions> <hardware> - <disk> - <size unit="G">52</size> - </disk> <memory> - <size unit="M">10000</size> + <size unit="M">14000</size> </memory> </hardware> </overwrite> ++++++ clang-13.0.0.src.tar.xz -> clang-13.0.1.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm13/clang-13.0.0.src.tar.xz /work/SRC/openSUSE:Factory/.llvm13.new.1898/clang-13.0.1.src.tar.xz differ: char 26, line 1 ++++++ clang-docs-13.0.0.src.tar.xz -> clang-docs-13.0.1.src.tar.xz ++++++ ++++ 9106 lines of diff (skipped) ++++++ clang-tools-extra-13.0.0.src.tar.xz -> clang-tools-extra-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/clang-tools-extra-13.0.0.src/docs/ReleaseNotes.rst new/clang-tools-extra-13.0.1.src/docs/ReleaseNotes.rst --- old/clang-tools-extra-13.0.0.src/docs/ReleaseNotes.rst 2021-09-24 18:18:10.000000000 +0200 +++ new/clang-tools-extra-13.0.1.src/docs/ReleaseNotes.rst 2022-01-20 22:31:59.000000000 +0100 @@ -1,5 +1,5 @@ ==================================================== -Extra Clang Tools 13.0.0 (In-Progress) Release Notes +Extra Clang Tools 13.0.0 Release Notes ==================================================== .. contents:: @@ -8,12 +8,6 @@ Written by the `LLVM Team <https://llvm.org/>`_ -.. warning:: - - These are in-progress notes for the upcoming Extra Clang Tools 13 release. - Release notes for previous releases can be found on - `the Download Page <https://releases.llvm.org/download.html>`_. - Introduction ============ @@ -47,7 +41,93 @@ Improvements to clangd ---------------------- -The improvements are... +Code Completion +^^^^^^^^^^^^^^^ + +- ML based model is used by default for ranking completion candidates. + +- Support for completion of attributes. + +- Improved handling of Objective-C(++) constructs. + + +Hover +^^^^^ + +- Shows documentation for Attributes. + +- Displays resolved paths for includes. + +- Shows padding for fields. + +Document Outline +^^^^^^^^^^^^^^^^ + +- Contains information in detail field about extra type information + +- Macro expansions now show up in the tree + +- Improved handling of Objective-C(++) constructs. + +Code Navigation +^^^^^^^^^^^^^^^^ + +- Cross references surfaces occurrences for calls to overridden methods and + declarations. + +Semantic Highlighting +^^^^^^^^^^^^^^^^^^^^^ + +- Support for legacy semantic tokens extension is dropped. + +- Better support for Objective-C(++) constructs and dependent code. + + +Diagnostics +^^^^^^^^^^^ + +- Diagnostics for unused/deprecated code are tagged according to LSP. + +- Clang-tidy checks that operate at translation-unit level are now available. + +System Integration +^^^^^^^^^^^^^^^^^^ + +- Compile flag parsing has been improved to be more resilient against multiple + jobs. + +- Better error reporting when compile flags are unusable. + + +Miscellaneous +^^^^^^^^^^^^^ + +- Better support for TUs with circular includes (e.g. templated header vs + implementation file). + +- Compile flags for headers are inferred from files known to be including them + when possible. + +- Version info contains information about compile-time setup of clangd + +- FeatureModule mechanism has been introduced to make contribution of vertical + features to clangd easier, by making it possible to write features that can + interact with clangd-core without touching it. + +- There's an extension for inlay-hints for deduced types and parameter names, + hidden behind -inlay-hints flag. + +- Rename is more robust: + + - Won't trigger on non-identifiers. + - Makes use of dirty buffers for open files. + +- Improvements to dex query latency. + +- There's a remote-index service for LLVM at http://clangd-index.llvm.org/. + +- There's a remote-index service for Chromium at + https://linux.clangd-index.chromium.org/. Improvements to clang-doc ------------------------- ++++++ compiler-rt-13.0.0.src.tar.xz -> compiler-rt-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/cmake/base-config-ix.cmake new/compiler-rt-13.0.1.src/cmake/base-config-ix.cmake --- old/compiler-rt-13.0.0.src/cmake/base-config-ix.cmake 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/cmake/base-config-ix.cmake 2022-01-20 22:31:59.000000000 +0100 @@ -204,7 +204,7 @@ test_target_arch(x86_64 "" "") endif() endif() - elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le") + elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc64le|ppc64le") test_target_arch(powerpc64le "" "-m64") elseif("${COMPILER_RT_DEFAULT_TARGET_ARCH}" MATCHES "powerpc") if(CMAKE_SYSTEM_NAME MATCHES "AIX") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/lib/asan/asan_malloc_linux.cpp new/compiler-rt-13.0.1.src/lib/asan/asan_malloc_linux.cpp --- old/compiler-rt-13.0.0.src/lib/asan/asan_malloc_linux.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/lib/asan/asan_malloc_linux.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -30,7 +30,7 @@ static uptr allocated_for_dlsym; static uptr last_dlsym_alloc_size_in_words; -static const uptr kDlsymAllocPoolSize = 1024; +static const uptr kDlsymAllocPoolSize = 8192; static uptr alloc_memory_for_dlsym[kDlsymAllocPoolSize]; static inline bool IsInDlsymAllocPool(const void *ptr) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/lib/msan/msan_interceptors.cpp new/compiler-rt-13.0.1.src/lib/msan/msan_interceptors.cpp --- old/compiler-rt-13.0.0.src/lib/msan/msan_interceptors.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/lib/msan/msan_interceptors.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -33,6 +33,7 @@ #include "sanitizer_common/sanitizer_stackdepot.h" #include "sanitizer_common/sanitizer_libc.h" #include "sanitizer_common/sanitizer_linux.h" +#include "sanitizer_common/sanitizer_glibc_version.h" #include "sanitizer_common/sanitizer_tls_get_addr.h" #include "sanitizer_common/sanitizer_vector.h" @@ -656,7 +657,8 @@ return res; } -#if SANITIZER_FREEBSD || SANITIZER_NETBSD +#define SANITIZER_STAT_LINUX (SANITIZER_LINUX && __GLIBC_PREREQ(2, 33)) +#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_STAT_LINUX INTERCEPTOR(int, fstat, int fd, void *buf) { ENSURE_MSAN_INITED(); int res = REAL(fstat)(fd, buf); @@ -664,7 +666,7 @@ __msan_unpoison(buf, __sanitizer::struct_stat_sz); return res; } -#define MSAN_MAYBE_INTERCEPT_FSTAT INTERCEPT_FUNCTION(fstat) +# define MSAN_MAYBE_INTERCEPT_FSTAT MSAN_INTERCEPT_FUNC(fstat) #else #define MSAN_MAYBE_INTERCEPT_FSTAT #endif @@ -677,7 +679,7 @@ __msan_unpoison(buf, __sanitizer::struct_stat_sz); return res; } -#define MSAN_MAYBE_INTERCEPT___FXSTAT INTERCEPT_FUNCTION(__fxstat) +# define MSAN_MAYBE_INTERCEPT___FXSTAT MSAN_INTERCEPT_FUNC(__fxstat) #else #define MSAN_MAYBE_INTERCEPT___FXSTAT #endif @@ -690,20 +692,24 @@ __msan_unpoison(buf, __sanitizer::struct_stat64_sz); return res; } -#define MSAN_MAYBE_INTERCEPT___FXSTAT64 INTERCEPT_FUNCTION(__fxstat64) +# define MSAN_MAYBE_INTERCEPT___FXSTAT64 MSAN_INTERCEPT_FUNC(__fxstat64) #else -#define MSAN_MAYBE_INTERCEPT___FXSTAT64 +# define MSAN_MAYBE_INTERCEPT___FXSTAT64 #endif -#if SANITIZER_FREEBSD || SANITIZER_NETBSD +#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_STAT_LINUX INTERCEPTOR(int, fstatat, int fd, char *pathname, void *buf, int flags) { ENSURE_MSAN_INITED(); int res = REAL(fstatat)(fd, pathname, buf, flags); if (!res) __msan_unpoison(buf, __sanitizer::struct_stat_sz); return res; } -# define MSAN_INTERCEPT_FSTATAT INTERCEPT_FUNCTION(fstatat) +# define MSAN_MAYBE_INTERCEPT_FSTATAT MSAN_INTERCEPT_FUNC(fstatat) #else +# define MSAN_MAYBE_INTERCEPT_FSTATAT +#endif + +#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD INTERCEPTOR(int, __fxstatat, int magic, int fd, char *pathname, void *buf, int flags) { ENSURE_MSAN_INITED(); @@ -711,7 +717,9 @@ if (!res) __msan_unpoison(buf, __sanitizer::struct_stat_sz); return res; } -# define MSAN_INTERCEPT_FSTATAT INTERCEPT_FUNCTION(__fxstatat) +# define MSAN_MAYBE_INTERCEPT___FXSTATAT MSAN_INTERCEPT_FUNC(__fxstatat) +#else +# define MSAN_MAYBE_INTERCEPT___FXSTATAT #endif #if !SANITIZER_FREEBSD && !SANITIZER_NETBSD @@ -722,9 +730,9 @@ if (!res) __msan_unpoison(buf, __sanitizer::struct_stat64_sz); return res; } -#define MSAN_MAYBE_INTERCEPT___FXSTATAT64 INTERCEPT_FUNCTION(__fxstatat64) +# define MSAN_MAYBE_INTERCEPT___FXSTATAT64 MSAN_INTERCEPT_FUNC(__fxstatat64) #else -#define MSAN_MAYBE_INTERCEPT___FXSTATAT64 +# define MSAN_MAYBE_INTERCEPT___FXSTATAT64 #endif INTERCEPTOR(int, pipe, int pipefd[2]) { @@ -1686,7 +1694,8 @@ MSAN_MAYBE_INTERCEPT_FCVT; MSAN_MAYBE_INTERCEPT_FSTAT; MSAN_MAYBE_INTERCEPT___FXSTAT; - MSAN_INTERCEPT_FSTATAT; + MSAN_MAYBE_INTERCEPT_FSTATAT; + MSAN_MAYBE_INTERCEPT___FXSTATAT; MSAN_MAYBE_INTERCEPT___FXSTAT64; MSAN_MAYBE_INTERCEPT___FXSTATAT64; INTERCEPT_FUNCTION(pipe); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/lib/sanitizer_common/sanitizer_platform_interceptors.h new/compiler-rt-13.0.1.src/lib/sanitizer_common/sanitizer_platform_interceptors.h --- old/compiler-rt-13.0.0.src/lib/sanitizer_common/sanitizer_platform_interceptors.h 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/lib/sanitizer_common/sanitizer_platform_interceptors.h 2022-01-20 22:31:59.000000000 +0100 @@ -457,10 +457,13 @@ #define SANITIZER_INTERCEPT_SEND_SENDTO SI_POSIX #define SANITIZER_INTERCEPT_EVENTFD_READ_WRITE SI_LINUX -#define SANITIZER_INTERCEPT_STAT \ - (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS) -#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD) -#define SANITIZER_INTERCEPT___XSTAT (!SANITIZER_INTERCEPT_STAT && SI_POSIX) +#define SI_STAT_LINUX (SI_LINUX && __GLIBC_PREREQ(2, 33)) +#define SANITIZER_INTERCEPT_STAT \ + (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS || \ + SI_STAT_LINUX) +#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX) +#define SANITIZER_INTERCEPT___XSTAT \ + ((!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX) #define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID #define SANITIZER_INTERCEPT___LXSTAT SANITIZER_INTERCEPT___XSTAT #define SANITIZER_INTERCEPT___LXSTAT64 SI_LINUX_NOT_ANDROID diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp new/compiler-rt-13.0.1.src/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp --- old/compiler-rt-13.0.0.src/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/test/asan/TestCases/Posix/unpoison-alternate-stack.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -139,7 +139,7 @@ int main() { size_t const PageSize = sysconf(_SC_PAGESIZE); // The Solaris defaults of 4k (32-bit) and 8k (64-bit) are too small. - size_t const MinStackSize = std::max(PTHREAD_STACK_MIN, 16 * 1024); + size_t const MinStackSize = std::max<size_t>(PTHREAD_STACK_MIN, 16 * 1024); // To align the alternate stack, we round this up to page_size. size_t const DefaultStackSize = (MinStackSize - 1 + PageSize) & ~(PageSize - 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/test/lit.common.cfg.py new/compiler-rt-13.0.1.src/test/lit.common.cfg.py --- old/compiler-rt-13.0.0.src/test/lit.common.cfg.py 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/test/lit.common.cfg.py 2022-01-20 22:31:59.000000000 +0100 @@ -491,7 +491,7 @@ if not config.android and len(ver_lines) and ver_lines[0].startswith(b"ldd "): from distutils.version import LooseVersion ver = LooseVersion(ver_lines[0].split()[-1].decode()) - for required in ["2.27", "2.30"]: + for required in ["2.27", "2.30", "2.34"]: if ver >= LooseVersion(required): config.available_features.add("glibc-" + required) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/test/msan/preinit_array.cpp new/compiler-rt-13.0.1.src/test/msan/preinit_array.cpp --- old/compiler-rt-13.0.0.src/test/msan/preinit_array.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/test/msan/preinit_array.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -1,5 +1,8 @@ // RUN: %clangxx_msan -O0 %s -o %t && %run %t +// FIXME: Something changed in glibc 2.34, maybe earier. +// UNSUPPORTED: glibc-2.34 + #include <sanitizer/msan_interface.h> volatile int global; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/test/sanitizer_common/TestCases/Linux/pthread_mutex.cpp new/compiler-rt-13.0.1.src/test/sanitizer_common/TestCases/Linux/pthread_mutex.cpp --- old/compiler-rt-13.0.0.src/test/sanitizer_common/TestCases/Linux/pthread_mutex.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/test/sanitizer_common/TestCases/Linux/pthread_mutex.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -4,7 +4,12 @@ #include <pthread.h> -#ifdef USE_GLIBC +#if !defined(__GLIBC_PREREQ) +#define __GLIBC_PREREQ(a, b) 0 +#endif + +#if defined(USE_GLIBC) && !__GLIBC_PREREQ(2, 34) +// They were removed from GLIBC 2.34 extern "C" int __pthread_mutex_lock(pthread_mutex_t *__mutex); extern "C" int __pthread_mutex_unlock(pthread_mutex_t *__mutex); #define LOCK __pthread_mutex_lock diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compiler-rt-13.0.0.src/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp new/compiler-rt-13.0.1.src/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp --- old/compiler-rt-13.0.0.src/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/compiler-rt-13.0.1.src/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -8,12 +8,13 @@ // getauxval() used instead of sysconf() in GetPageSize() is defined starting // glbc version 2.16. -#if __GLIBC_PREREQ(2, 16) +// Does not work with 2.31 and above at it calls sysconf for SIGSTKSZ. +#if __GLIBC_PREREQ(2, 16) && !__GLIBC_PREREQ(2, 31) extern "C" long sysconf(int name) { fprintf(stderr, "sysconf wrapper called\n"); return 0; } -#endif // defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 16) +#endif int main() { // All we need to check is that the sysconf() interceptor defined above was ++++++ libcxx-13.0.0.src.tar.xz -> libcxx-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/CMakeLists.txt new/libcxx-13.0.1.src/CMakeLists.txt --- old/libcxx-13.0.0.src/CMakeLists.txt 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/CMakeLists.txt 2022-01-20 22:31:59.000000000 +0100 @@ -27,7 +27,7 @@ project(libcxx CXX C) set(PACKAGE_NAME libcxx) - set(PACKAGE_VERSION 13.0.0git) + set(PACKAGE_VERSION 13.0.1) set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_BUGREPORT "llvm-b...@lists.llvm.org") @@ -256,9 +256,15 @@ # Target options -------------------------------------------------------------- option(LIBCXX_BUILD_32_BITS "Build 32 bit libc++." ${LLVM_BUILD_32_BITS}) -set(LIBCXX_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE STRING "Use alternate target triple.") -set(LIBCXX_SYSROOT "" CACHE STRING "Use alternate sysroot.") -set(LIBCXX_GCC_TOOLCHAIN "" CACHE STRING "Use alternate GCC toolchain.") + +if(CMAKE_CXX_COMPILER_TARGET) + set(LIBCXX_DEFAULT_TARGET_TRIPLE "${CMAKE_CXX_COMPILER_TARGET}") +else() + set(LIBCXX_DEFAULT_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}") +endif() +set(LIBCXX_TARGET_TRIPLE "${LIBCXX_DEFAULT_TARGET_TRIPLE}" CACHE STRING "Use alternate target triple.") +set(LIBCXX_SYSROOT "${CMAKE_SYSROOT}" CACHE STRING "Use alternate sysroot.") +set(LIBCXX_GCC_TOOLCHAIN "${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}" CACHE STRING "Use alternate GCC toolchain.") # Feature options ------------------------------------------------------------- option(LIBCXX_ENABLE_EXCEPTIONS "Use exceptions." ON) @@ -468,21 +474,14 @@ # 'config-ix' use them during feature checks. It also adds them to both # 'LIBCXX_COMPILE_FLAGS' and 'LIBCXX_LINK_FLAGS' add_target_flags_if(LIBCXX_BUILD_32_BITS "-m32") - if(LIBCXX_TARGET_TRIPLE) add_target_flags_if_supported("--target=${LIBCXX_TARGET_TRIPLE}") -elseif(CMAKE_CXX_COMPILER_TARGET) - set(LIBCXX_TARGET_TRIPLE "${CMAKE_CXX_COMPILER_TARGET}") endif() if(LIBCXX_SYSROOT) add_target_flags_if_supported("--sysroot=${LIBCXX_SYSROOT}") -elseif(CMAKE_SYSROOT) - set(LIBCXX_SYSROOT "${CMAKE_SYSROOT}") endif() if(LIBCXX_GCC_TOOLCHAIN) add_target_flags_if_supported("--gcc-toolchain=${LIBCXX_GCC_TOOLCHAIN}") -elseif(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN) - set(LIBCXX_GCC_TOOLCHAIN "${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}") endif() # Configure compiler. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/docs/ReleaseNotes.rst new/libcxx-13.0.1.src/docs/ReleaseNotes.rst --- old/libcxx-13.0.0.src/docs/ReleaseNotes.rst 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/docs/ReleaseNotes.rst 2022-01-20 22:31:59.000000000 +0100 @@ -1,5 +1,5 @@ ========================================= -Libc++ 13.0.0 (In-Progress) Release Notes +Libc++ 13.0.0 Release Notes ========================================= .. contents:: @@ -8,12 +8,6 @@ Written by the `Libc++ Team <https://libcxx.llvm.org>`_ -.. warning:: - - These are in-progress notes for the upcoming libc++ 13 release. - Release notes for previous releases can be found on - `the Download Page <https://releases.llvm.org/download.html>`_. - Introduction ============ @@ -67,8 +61,8 @@ - The documentation conversion from html to restructured text has been completed. -API Changes ------------ +API and ABI Changes +------------------- - There has been several changes in the tuple constructors provided by libc++. Those changes were made as part of an effort to regularize libc++'s tuple @@ -101,3 +95,10 @@ - The ``std::result_of`` and ``std::is_literal_type`` type traits have been removed in C++20 mode. + +- The C++20 type ``std::counted_semaphore<N>`` is now based on ``std::atomic`` + on all platforms, and does not use "native" semaphores such as pthreads + ``sem_t`` even on platforms that would support them. This changes the layout + of ``counted_semaphore<N>`` notably on Linux, so it is an ABI break on that + platform. This change is needed to conform to the Standard, which requires + ``counted_semaphore``'s constructor to be constexpr. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/include/__threading_support new/libcxx-13.0.1.src/include/__threading_support --- old/libcxx-13.0.0.src/include/__threading_support 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/include/__threading_support 2022-01-20 22:31:59.000000000 +0100 @@ -29,16 +29,9 @@ # include <__external_threading> #elif !defined(_LIBCPP_HAS_NO_THREADS) -#if defined(__APPLE__) || defined(__MVS__) -# define _LIBCPP_NO_NATIVE_SEMAPHORES -#endif - #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) # include <pthread.h> # include <sched.h> -# ifndef _LIBCPP_NO_NATIVE_SEMAPHORES -# include <semaphore.h> -# endif #elif defined(_LIBCPP_HAS_THREAD_API_C11) # include <threads.h> #endif @@ -78,12 +71,6 @@ typedef pthread_cond_t __libcpp_condvar_t; #define _LIBCPP_CONDVAR_INITIALIZER PTHREAD_COND_INITIALIZER -#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES -// Semaphore -typedef sem_t __libcpp_semaphore_t; -# define _LIBCPP_SEMAPHORE_MAX SEM_VALUE_MAX -#endif - // Execute once typedef pthread_once_t __libcpp_exec_once_flag; #define _LIBCPP_EXEC_ONCE_INITIALIZER PTHREAD_ONCE_INIT @@ -149,12 +136,6 @@ typedef void* __libcpp_condvar_t; #define _LIBCPP_CONDVAR_INITIALIZER 0 -// Semaphore -typedef void* __libcpp_semaphore_t; -#if defined(_LIBCPP_HAS_THREAD_API_WIN32) -# define _LIBCPP_SEMAPHORE_MAX (::std::numeric_limits<long>::max()) -#endif - // Execute Once typedef void* __libcpp_exec_once_flag; #define _LIBCPP_EXEC_ONCE_INITIALIZER 0 @@ -219,26 +200,6 @@ _LIBCPP_THREAD_ABI_VISIBILITY int __libcpp_condvar_destroy(__libcpp_condvar_t* __cv); -#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES - -// Semaphore -_LIBCPP_THREAD_ABI_VISIBILITY -bool __libcpp_semaphore_init(__libcpp_semaphore_t* __sem, int __init); - -_LIBCPP_THREAD_ABI_VISIBILITY -bool __libcpp_semaphore_destroy(__libcpp_semaphore_t* __sem); - -_LIBCPP_THREAD_ABI_VISIBILITY -bool __libcpp_semaphore_post(__libcpp_semaphore_t* __sem); - -_LIBCPP_THREAD_ABI_VISIBILITY -bool __libcpp_semaphore_wait(__libcpp_semaphore_t* __sem); - -_LIBCPP_THREAD_ABI_VISIBILITY -bool __libcpp_semaphore_wait_timed(__libcpp_semaphore_t* __sem, chrono::nanoseconds const& __ns); - -#endif // _LIBCPP_NO_NATIVE_SEMAPHORES - // Execute once _LIBCPP_THREAD_ABI_VISIBILITY int __libcpp_execute_once(__libcpp_exec_once_flag *flag, @@ -452,38 +413,6 @@ return pthread_cond_destroy(__cv); } -#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES - -// Semaphore -bool __libcpp_semaphore_init(__libcpp_semaphore_t* __sem, int __init) -{ - return sem_init(__sem, 0, __init) == 0; -} - -bool __libcpp_semaphore_destroy(__libcpp_semaphore_t* __sem) -{ - return sem_destroy(__sem) == 0; -} - -bool __libcpp_semaphore_post(__libcpp_semaphore_t* __sem) -{ - return sem_post(__sem) == 0; -} - -bool __libcpp_semaphore_wait(__libcpp_semaphore_t* __sem) -{ - return sem_wait(__sem) == 0; -} - -bool __libcpp_semaphore_wait_timed(__libcpp_semaphore_t* __sem, chrono::nanoseconds const& __ns) -{ - auto const __abs_time = chrono::system_clock::now().time_since_epoch() + __ns; - __libcpp_timespec_t __ts = __thread_detail::__convert_to_timespec(__abs_time); - return sem_timedwait(__sem, &__ts) == 0; -} - -#endif //_LIBCPP_NO_NATIVE_SEMAPHORES - // Execute once int __libcpp_execute_once(__libcpp_exec_once_flag *flag, void (*init_routine)()) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/include/semaphore new/libcxx-13.0.1.src/include/semaphore --- old/libcxx-13.0.0.src/include/semaphore 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/include/semaphore 2022-01-20 22:31:59.000000000 +0100 @@ -67,10 +67,7 @@ /* -__atomic_semaphore_base is the general-case implementation, to be used for -user-requested least-max values that exceed the OS implementation support -(incl. when the OS has no support of its own) and for binary semaphores. - +__atomic_semaphore_base is the general-case implementation. It is a typical Dijkstra semaphore algorithm over atomics, wait and notify functions. It avoids contention against users' own use of those facilities. @@ -82,7 +79,7 @@ public: _LIBCPP_INLINE_VISIBILITY - __atomic_semaphore_base(ptrdiff_t __count) : __a(__count) + constexpr explicit __atomic_semaphore_base(ptrdiff_t __count) : __a(__count) { } _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY @@ -108,81 +105,30 @@ _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY bool try_acquire_for(chrono::duration<Rep, Period> const& __rel_time) { - auto const __test_fn = [this]() -> bool { - auto __old = __a.load(memory_order_acquire); - while(1) { - if (__old == 0) - return false; - if(__a.compare_exchange_strong(__old, __old - 1, memory_order_acquire, memory_order_relaxed)) - return true; - } - }; + if (__rel_time == chrono::duration<Rep, Period>::zero()) + return try_acquire(); + auto const __test_fn = [this]() { return try_acquire(); }; return __libcpp_thread_poll_with_backoff(__test_fn, __libcpp_timed_backoff_policy(), __rel_time); } -}; - -#ifndef _LIBCPP_NO_NATIVE_SEMAPHORES - -/* - -__platform_semaphore_base a simple wrapper for the OS semaphore type. That -is, every call is routed to the OS in the most direct manner possible. - -*/ - -class __platform_semaphore_base -{ - __libcpp_semaphore_t __semaphore; - -public: - _LIBCPP_INLINE_VISIBILITY - __platform_semaphore_base(ptrdiff_t __count) : - __semaphore() - { - __libcpp_semaphore_init(&__semaphore, __count); - } - _LIBCPP_INLINE_VISIBILITY - ~__platform_semaphore_base() { - __libcpp_semaphore_destroy(&__semaphore); - } - _LIBCPP_INLINE_VISIBILITY - void release(ptrdiff_t __update) - { - for(; __update; --__update) - __libcpp_semaphore_post(&__semaphore); - } - _LIBCPP_INLINE_VISIBILITY - void acquire() - { - __libcpp_semaphore_wait(&__semaphore); - } - _LIBCPP_INLINE_VISIBILITY - bool try_acquire_for(chrono::nanoseconds __rel_time) + _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY + bool try_acquire() { - return __libcpp_semaphore_wait_timed(&__semaphore, __rel_time); + auto __old = __a.load(memory_order_acquire); + while (true) { + if (__old == 0) + return false; + if (__a.compare_exchange_strong(__old, __old - 1, memory_order_acquire, memory_order_relaxed)) + return true; + } } }; -template<ptrdiff_t __least_max_value> -using __semaphore_base = - typename conditional<(__least_max_value > 1 && __least_max_value <= _LIBCPP_SEMAPHORE_MAX), - __platform_semaphore_base, - __atomic_semaphore_base>::type; - -#else - -template<ptrdiff_t __least_max_value> -using __semaphore_base = - __atomic_semaphore_base; - #define _LIBCPP_SEMAPHORE_MAX (numeric_limits<ptrdiff_t>::max()) -#endif //_LIBCPP_NO_NATIVE_SEMAPHORES - template<ptrdiff_t __least_max_value = _LIBCPP_SEMAPHORE_MAX> class counting_semaphore { - __semaphore_base<__least_max_value> __semaphore; + __atomic_semaphore_base __semaphore; public: static constexpr ptrdiff_t max() noexcept { @@ -190,7 +136,7 @@ } _LIBCPP_INLINE_VISIBILITY - counting_semaphore(ptrdiff_t __count = 0) : __semaphore(__count) { } + constexpr explicit counting_semaphore(ptrdiff_t __count) : __semaphore(__count) { } ~counting_semaphore() = default; counting_semaphore(const counting_semaphore&) = delete; @@ -215,14 +161,14 @@ _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY bool try_acquire() { - return try_acquire_for(chrono::nanoseconds::zero()); + return __semaphore.try_acquire(); } template <class Clock, class Duration> _LIBCPP_AVAILABILITY_SYNC _LIBCPP_INLINE_VISIBILITY bool try_acquire_until(chrono::time_point<Clock, Duration> const& __abs_time) { auto const current = Clock::now(); - if(current >= __abs_time) + if (current >= __abs_time) return try_acquire(); else return try_acquire_for(__abs_time - current); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/include/string new/libcxx-13.0.1.src/include/string --- old/libcxx-13.0.0.src/include/string 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/include/string 2022-01-20 22:31:59.000000000 +0100 @@ -3345,6 +3345,7 @@ } template <class _CharT, class _Traits, class _Allocator> +inline void basic_string<_CharT, _Traits, _Allocator>::shrink_to_fit() _NOEXCEPT { @@ -3355,6 +3356,7 @@ } template <class _CharT, class _Traits, class _Allocator> +inline void basic_string<_CharT, _Traits, _Allocator>::__shrink_or_extend(size_type __target_capacity) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/src/support/win32/thread_win32.cpp new/libcxx-13.0.1.src/src/support/win32/thread_win32.cpp --- old/libcxx-13.0.0.src/src/support/win32/thread_win32.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/src/support/win32/thread_win32.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -39,9 +39,6 @@ static_assert(sizeof(__libcpp_tls_key) == sizeof(DWORD), ""); static_assert(alignof(__libcpp_tls_key) == alignof(DWORD), ""); -static_assert(sizeof(__libcpp_semaphore_t) == sizeof(HANDLE), ""); -static_assert(alignof(__libcpp_semaphore_t) == alignof(HANDLE), ""); - // Mutex int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m) { @@ -275,37 +272,4 @@ return 0; } -// Semaphores -bool __libcpp_semaphore_init(__libcpp_semaphore_t* __sem, int __init) -{ - *(PHANDLE)__sem = CreateSemaphoreEx(nullptr, __init, _LIBCPP_SEMAPHORE_MAX, - nullptr, 0, SEMAPHORE_ALL_ACCESS); - return *__sem != nullptr; -} - -bool __libcpp_semaphore_destroy(__libcpp_semaphore_t* __sem) -{ - CloseHandle(*(PHANDLE)__sem); - return true; -} - -bool __libcpp_semaphore_post(__libcpp_semaphore_t* __sem) -{ - return ReleaseSemaphore(*(PHANDLE)__sem, 1, nullptr); -} - -bool __libcpp_semaphore_wait(__libcpp_semaphore_t* __sem) -{ - return WaitForSingleObjectEx(*(PHANDLE)__sem, INFINITE, false) == - WAIT_OBJECT_0; -} - -bool __libcpp_semaphore_wait_timed(__libcpp_semaphore_t* __sem, - chrono::nanoseconds const& __ns) -{ - chrono::milliseconds __ms = chrono::ceil<chrono::milliseconds>(__ns); - return WaitForSingleObjectEx(*(PHANDLE)__sem, __ms.count(), false) == - WAIT_OBJECT_0; -} - _LIBCPP_END_NAMESPACE_STD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp new/libcxx-13.0.1.src/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp --- old/libcxx-13.0.0.src/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libcxx-13.0.1.src/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,59 @@ +//===----------------------------------------------------------------------===// +// +// 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 test checks that we can explicitly instantiate std::string with a custom +// character type and traits and then use `shrink_to_fit`. In particular, this is +// a regression test for the bug that was reported at https://stackoverflow.com/q/69520633/627587 +// and https://seedcentral.apple.com/sm/feedback_collector/radar/85053279. + +// RUN: %{cxx} %{flags} %{compile_flags} %s %{link_flags} -DTU1 -c -o %t.tu1.o +// RUN: %{cxx} %{flags} %{compile_flags} %s %{link_flags} -DTU2 -c -o %t.tu2.o +// RUN: %{cxx} %{flags} %t.tu1.o %t.tu2.o %{link_flags} -o %t.exe + +// UNSUPPORTED: libcpp-has-no-localization + +#include <cstdint> +#include <ios> +#include <string> + +typedef std::uint16_t char16; + +struct string16_char_traits { + typedef char16 char_type; + typedef int int_type; + + typedef std::streamoff off_type; + typedef std::mbstate_t state_type; + typedef std::fpos<state_type> pos_type; + + static void assign(char_type&, const char_type&) { } + static bool eq(const char_type&, const char_type&) { return false; } + static bool lt(const char_type&, const char_type&) { return false; } + static int compare(const char_type*, const char_type*, size_t) { return 0; } + static size_t length(const char_type*) { return 0; } + static const char_type* find(const char_type*, size_t, const char_type&) { return nullptr; } + static char_type* move(char_type*, const char_type*, size_t) { return nullptr; } + static char_type* copy(char_type*, const char_type*, size_t) { return nullptr; } + static char_type* assign(char_type*, size_t, char_type) { return nullptr; } + static int_type not_eof(const int_type&) { return 0; } + static char_type to_char_type(const int_type&) { return char_type(); } + static int_type to_int_type(const char_type&) { return int_type(); } + static bool eq_int_type(const int_type&, const int_type&) { return false; } + static int_type eof() { return int_type(); } +}; + +#if defined(TU1) +template class std::basic_string<char16, string16_char_traits>; +#else +extern template class std::basic_string<char16, string16_char_traits>; + +int main() { + std::basic_string<char16, string16_char_traits> s; + s.shrink_to_fit(); +} +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/acquire.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/acquire.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/acquire.pass.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/acquire.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -13,6 +13,9 @@ // macOS 11.0. // XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14|15}} +// TODO(ldionne): This test fails on Ubuntu Focal on our CI nodes (and only there), in 32 bit mode. +// UNSUPPORTED: linux && 32bits-on-64bits + // <semaphore> #include <semaphore> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/binary.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/binary.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/binary.pass.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/binary.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -18,10 +18,13 @@ #include <semaphore> #include <chrono> #include <thread> +#include <type_traits> #include "make_test_thread.h" #include "test_macros.h" +static_assert(std::is_same<std::binary_semaphore, std::counting_semaphore<1>>::value, ""); + int main(int, char**) { std::binary_semaphore s(1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/ctor.compile.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/ctor.compile.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/ctor.compile.pass.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/ctor.compile.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,31 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: libcpp-has-no-threads +// UNSUPPORTED: c++03, c++11 + +// <semaphore> + +// constexpr explicit counting_semaphore(ptrdiff_t desired); + +#include <semaphore> +#include <type_traits> + +#include "test_macros.h" + +static_assert(!std::is_default_constructible<std::binary_semaphore>::value, ""); +static_assert(!std::is_default_constructible<std::counting_semaphore<>>::value, ""); + +static_assert(!std::is_convertible<int, std::binary_semaphore>::value, ""); +static_assert(!std::is_convertible<int, std::counting_semaphore<>>::value, ""); + +#if TEST_STD_VER > 17 +// Test constexpr-constructibility. (But not destructibility.) +constinit std::binary_semaphore bs(1); +constinit std::counting_semaphore cs(1); +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/max.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/max.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/max.pass.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/max.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -18,10 +18,9 @@ int main(int, char**) { - static_assert(std::counting_semaphore<>::max() > 0, ""); + static_assert(std::counting_semaphore<>::max() >= 1, ""); static_assert(std::counting_semaphore<1>::max() >= 1, ""); - static_assert(std::counting_semaphore<std::numeric_limits<int>::max()>::max() >= 1, ""); - static_assert(std::counting_semaphore<std::numeric_limits<ptrdiff_t>::max()>::max() >= 1, ""); - static_assert(std::counting_semaphore<1>::max() == std::binary_semaphore::max(), ""); + static_assert(std::counting_semaphore<std::numeric_limits<int>::max()>::max() >= std::numeric_limits<int>::max(), ""); + static_assert(std::counting_semaphore<std::numeric_limits<ptrdiff_t>::max()>::max() == std::numeric_limits<ptrdiff_t>::max(), ""); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/release.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/release.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/release.pass.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/release.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -13,6 +13,9 @@ // macOS 11.0. // XFAIL: use_system_cxx_lib && target={{.+}}-apple-macosx10.{{9|10|11|12|13|14|15}} +// TODO(ldionne): This test fails on Ubuntu Focal on our CI nodes (and only there), in 32 bit mode. +// UNSUPPORTED: linux && 32bits-on-64bits + // <semaphore> #include <semaphore> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/try_acquire.pass.cpp new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/try_acquire.pass.cpp --- old/libcxx-13.0.0.src/test/std/thread/thread.semaphore/try_acquire.pass.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxx-13.0.1.src/test/std/thread/thread.semaphore/try_acquire.pass.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -27,14 +27,17 @@ std::counting_semaphore<> s(1); assert(s.try_acquire()); + assert(!s.try_acquire()); s.release(); assert(s.try_acquire()); + assert(!s.try_acquire()); s.release(2); std::thread t = support::make_test_thread([&](){ assert(s.try_acquire()); }); t.join(); assert(s.try_acquire()); + assert(!s.try_acquire()); return 0; } ++++++ libcxxabi-13.0.0.src.tar.xz -> libcxxabi-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libcxxabi-13.0.0.src/CMakeLists.txt new/libcxxabi-13.0.1.src/CMakeLists.txt --- old/libcxxabi-13.0.0.src/CMakeLists.txt 2021-09-24 18:18:10.000000000 +0200 +++ new/libcxxabi-13.0.1.src/CMakeLists.txt 2022-01-20 22:31:59.000000000 +0100 @@ -28,7 +28,7 @@ project(libcxxabi CXX C) set(PACKAGE_NAME libcxxabi) - set(PACKAGE_VERSION 11.0.0git) + set(PACKAGE_VERSION 13.0.1) set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_BUGREPORT "llvm-b...@lists.llvm.org") @@ -111,9 +111,16 @@ set(LIBCXXABI_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE STRING "Define suffix of library directory name (32/64)") option(LIBCXXABI_INSTALL_LIBRARY "Install the libc++abi library." ON) -set(LIBCXXABI_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}" CACHE STRING "Target triple for cross compiling.") -set(LIBCXXABI_GCC_TOOLCHAIN "" CACHE PATH "GCC toolchain for cross compiling.") -set(LIBCXXABI_SYSROOT "" CACHE PATH "Sysroot for cross compiling.") + +if(CMAKE_CXX_COMPILER_TARGET) + set(LIBCXXABI_DEFAULT_TARGET_TRIPLE "${CMAKE_CXX_COMPILER_TARGET}") +else() + set(LIBCXXABI_DEFAULT_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}") +endif() +set(LIBCXXABI_TARGET_TRIPLE "${LIBCXXABI_DEFAULT_TARGET_TRIPLE}" CACHE STRING "Target triple for cross compiling.") +set(LIBCXXABI_GCC_TOOLCHAIN "${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}" CACHE PATH "GCC toolchain for cross compiling.") +set(LIBCXXABI_SYSROOT "${CMAKE_SYSROOT}" CACHE PATH "Sysroot for cross compiling.") + set(LIBCXXABI_LIBCXX_LIBRARY_PATH "" CACHE PATH "The path to libc++ library.") set(LIBCXXABI_LIBRARY_VERSION "1.0" CACHE STRING "Version of libc++abi. This will be reflected in the name of the shared \ @@ -259,18 +266,12 @@ if(LIBCXXABI_TARGET_TRIPLE) add_target_flags_if_supported("--target=${LIBCXXABI_TARGET_TRIPLE}") -elseif(CMAKE_CXX_COMPILER_TARGET) - set(LIBCXXABI_TARGET_TRIPLE "${CMAKE_CXX_COMPILER_TARGET}") endif() -if(LIBCXX_GCC_TOOLCHAIN) +if(LIBCXXABI_GCC_TOOLCHAIN) add_target_flags_if_supported("--gcc-toolchain=${LIBCXXABI_GCC_TOOLCHAIN}") -elseif(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN) - set(LIBCXXABI_GCC_TOOLCHAIN "${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}") endif() if(LIBCXXABI_SYSROOT) add_target_flags_if_supported("--sysroot=${LIBCXXABI_SYSROOT}") -elseif(CMAKE_SYSROOT) - set(LIBCXXABI_SYSROOT "${CMAKE_SYSROOT}") endif() # Configure compiler. Must happen after setting the target flags. ++++++ lld-13.0.0.src.tar.xz -> lld-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/ELF/Arch/PPC.cpp new/lld-13.0.1.src/ELF/Arch/PPC.cpp --- old/lld-13.0.0.src/ELF/Arch/PPC.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/ELF/Arch/PPC.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -20,6 +20,9 @@ using namespace lld; using namespace lld::elf; +// Undefine the macro predefined by GCC powerpc32. +#undef PPC + namespace { class PPC final : public TargetInfo { public: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/ELF/InputFiles.cpp new/lld-13.0.1.src/ELF/InputFiles.cpp --- old/lld-13.0.0.src/ELF/InputFiles.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/ELF/InputFiles.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -1567,7 +1567,7 @@ Symbol *s = symtab->addSymbol( Undefined{this, name, sym.getBinding(), sym.st_other, sym.getType()}); s->exportDynamic = true; - if (s->isUndefined() && !s->isWeak() && + if (s->isUndefined() && sym.getBinding() != STB_WEAK && config->unresolvedSymbolsInShlib != UnresolvedPolicy::Ignore) requiredSymbols.push_back(s); continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/ELF/Relocations.cpp new/lld-13.0.1.src/ELF/Relocations.cpp --- old/lld-13.0.0.src/ELF/Relocations.cpp 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/ELF/Relocations.cpp 2022-01-20 22:31:59.000000000 +0100 @@ -927,6 +927,12 @@ msg += "\n>>> the vtable symbol may be undefined because the class is missing " "its key function (see https://lld.llvm.org/missingkeyfunction)"; + if (config->gcSections && config->zStartStopGC && + sym.getName().startswith("__start_")) { + msg += "\n>>> the encapsulation symbol needs to be retained under " + "--gc-sections properly; consider -z nostart-stop-gc " + "(see https://lld.llvm.org/ELF/start-stop-gc)"; + } if (undef.isWarning) warn(msg); @@ -1403,8 +1409,8 @@ // The 4 types that relative GOTPLT are all x86 and x86-64 specific. if (oneof<R_GOTPLTONLY_PC, R_GOTPLTREL, R_GOTPLT, R_TLSGD_GOTPLT>(expr)) { in.gotPlt->hasGotPltOffRel = true; - } else if (oneof<R_GOTONLY_PC, R_GOTREL, R_PPC64_TOCBASE, R_PPC64_RELAX_TOC>( - expr)) { + } else if (oneof<R_GOTONLY_PC, R_GOTREL, R_PPC32_PLTREL, R_PPC64_TOCBASE, + R_PPC64_RELAX_TOC>( expr)) { in.got->hasGotOffRel = true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/docs/ELF/start-stop-gc.rst new/lld-13.0.1.src/docs/ELF/start-stop-gc.rst --- old/lld-13.0.0.src/docs/ELF/start-stop-gc.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/lld-13.0.1.src/docs/ELF/start-stop-gc.rst 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,66 @@ +-z start-stop-gc +================ + +If your ``-Wl,--gc-sections`` build fail with a linker error like this: + + error: undefined symbol: __start_meta + >>> referenced by {{.*}} + >>> the encapsulation symbol needs to be retained under --gc-sections properly; consider -z nostart-stop-gc (see https://lld.llvm.org/ELF/start-stop-gc) + +it is likely your C identifier name sections are not properly annotated to +suffice under ``--gc-sections``. + +``__start_meta`` and ``__stop_meta`` are sometimed called encapsulation +symbols. In October 2015, GNU ld switched behavior and made a ``__start_meta`` +reference from a live section retain all ``meta`` input sections. This +conservative behavior works for existing code which does not take GC into fair +consideration, but unnecessarily increases sizes for modern metadata section +usage which desires precise GC. + +GNU ld 2.37 added ``-z start-stop-gc`` to restore the traditional behavior +ld.lld 13.0.0 defaults to ``-z start-stop-gc`` and supports ``-z nostart-stop-gc`` +to switch to the conservative behavior. + +The Apple ld64 linker has a similar ``section$start`` feature and always +allowed GC (like ``-z start-stop-gc``). + +Annotate C identifier name sections +----------------------------------- + +A C identifier name section (``meta``) sometimes depends on another section. +Let that section reference ``meta`` via a relocation. + +.. code-block:: c + + asm(".pushsection .init_array,\"aw\",%init_array\n" \ + ".reloc ., BFD_RELOC_NONE, meta\n" \ + ".popsection\n") + +If a relocation is inconvenient, consider using ``__attribute__((retain))`` +(GCC 11 with modern binutils, Clang 13). + +.. code-block:: c + + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wattributes" + __attribute__((retain,used,section("meta"))) + static const char dummy[0]; + #pragma GCC diagnostic pop + +GCC before 11 and Clang before 13 do not recognize ``__attribute__((retain))``, +so ``-Wattributes`` may need to be ignored. On ELF targets, +``__attribute__((used))`` prevents compiler discarding, but does not affect +linker ``--gc-sections``. + +In a macro, you may use: + +.. code-block:: c + + _Pragma("GCC diagnostic push") + _Pragma("GCC diagnostic ignored \"-Wattributes\"") + ... + _Pragma("GCC diagnostic pop") + +If you use the ``SECTIONS`` command in a linker script, use +`the ``KEEP`` keyword <https://sourceware.org/binutils/docs/ld/Input-Section-Keep.html>`_, e.g. +``meta : { KEEP(*(meta)) }`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/docs/ReleaseNotes.rst new/lld-13.0.1.src/docs/ReleaseNotes.rst --- old/lld-13.0.0.src/docs/ReleaseNotes.rst 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/docs/ReleaseNotes.rst 2022-01-20 22:31:59.000000000 +0100 @@ -5,11 +5,6 @@ .. contents:: :local: -.. warning:: - These are in-progress notes for the upcoming LLVM 13.0.0 release. - Release notes for previous releases can be found on - `the Download Page <https://releases.llvm.org/download.html>`_. - Introduction ============ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/docs/index.rst new/lld-13.0.1.src/docs/index.rst --- old/lld-13.0.0.src/docs/index.rst 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/docs/index.rst 2022-01-20 22:31:59.000000000 +0100 @@ -178,4 +178,5 @@ Partitions ReleaseNotes ELF/linker_script + ELF/start-stop-gc ELF/warn_backrefs diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/test/ELF/allow-shlib-undefined-weak.s new/lld-13.0.1.src/test/ELF/allow-shlib-undefined-weak.s --- old/lld-13.0.0.src/test/ELF/allow-shlib-undefined-weak.s 1970-01-01 01:00:00.000000000 +0100 +++ new/lld-13.0.1.src/test/ELF/allow-shlib-undefined-weak.s 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,48 @@ +# REQUIRES: x86 + +# RUN: rm -rf %t.dir +# RUN: split-file %s %t.dir +# RUN: cd %t.dir + +## Verify that in the following case: +## +## <exec> +## +- ref.so (weak reference to foo) +## +- wrap.so (non-weak reference to foo) +## +- def.so (defines foo) +## +## we don't report that foo is undefined in ref.so when linking <exec>. + +# RUN: llvm-mc -filetype=obj -triple=x86_64 ref.s -o ref.o +# RUN: llvm-mc -filetype=obj -triple=x86_64 wrap.s -o wrap.o +# RUN: llvm-mc -filetype=obj -triple=x86_64 def.s -o def.o +# RUN: ld.lld -shared ref.o -o ref.so +# RUN: ld.lld -shared def.o -soname def.so -o def.so +# RUN: ld.lld -shared wrap.o def.so -o wrap.so + +# RUN: llvm-mc -filetype=obj -triple=x86_64 start.s -o start.o +# RUN: ld.lld --no-allow-shlib-undefined start.o wrap.so ref.so -o /dev/null 2>&1 | count 0 + +#--- start.s +.globl _start +_start: + callq wrap_get_foo@PLT + +#--- ref.s +.weak foo +.globl ref_get_foo +ref_get_foo: + movq foo@GOTPCREL(%rip), %rax + retq + +#--- wrap.s +.globl wrap_get_foo +wrap_get_foo: + movq foo@GOTPCREL(%rip), %rax + retq + +#--- def.s +.data +.globl foo +foo: + .long 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/test/ELF/gc-sections-startstop-hint.s new/lld-13.0.1.src/test/ELF/gc-sections-startstop-hint.s --- old/lld-13.0.0.src/test/ELF/gc-sections-startstop-hint.s 1970-01-01 01:00:00.000000000 +0100 +++ new/lld-13.0.1.src/test/ELF/gc-sections-startstop-hint.s 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,21 @@ +# REQUIRES: x86 +## Some projects may not work with GNU ld<2015-10 (ld.lld 13.0.0) --gc-sections behavior. +## Give a hint. + +# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o +# RUN: ld.lld %t.o -o /dev/null +# RUN: ld.lld %t.o --gc-sections -z nostart-stop-gc -o /dev/null +# RUN: not ld.lld %t.o --gc-sections -o /dev/null 2>&1 | FileCheck %s + +# CHECK: error: undefined symbol: __start_meta +# CHECK-NEXT: >>> referenced by {{.*}} +# CHECK-NEXT: >>> the encapsulation symbol needs to be retained under --gc-sections properly; consider -z nostart-stop-gc (see https://lld.llvm.org/ELF/start-stop-gc) + +.section .text,"ax",@progbits +.global _start +_start: + .quad __start_meta - . + .quad __stop_meta - . + +.section meta,"aw",@progbits +.quad 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/test/ELF/ppc32-ifunc-nonpreemptible-pic.s new/lld-13.0.1.src/test/ELF/ppc32-ifunc-nonpreemptible-pic.s --- old/lld-13.0.0.src/test/ELF/ppc32-ifunc-nonpreemptible-pic.s 2021-09-24 18:18:10.000000000 +0200 +++ new/lld-13.0.1.src/test/ELF/ppc32-ifunc-nonpreemptible-pic.s 2022-01-20 22:31:59.000000000 +0100 @@ -7,12 +7,12 @@ # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s # RELOC: .rela.dyn { -# RELOC-NEXT: 0x30248 R_PPC_RELATIVE - 0x101A8 -# RELOC-NEXT: 0x3024C R_PPC_IRELATIVE - 0x10188 +# RELOC-NEXT: 0x30254 R_PPC_RELATIVE - 0x101A8 +# RELOC-NEXT: 0x30258 R_PPC_IRELATIVE - 0x10188 # RELOC-NEXT: } # SYM: 000101a8 0 FUNC GLOBAL DEFAULT {{.*}} func -# HEX: 0x00030248 00000000 +# HEX: 0x00030254 00000000 .section .got2,"aw" .long func diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lld-13.0.0.src/test/ELF/ppc32-reloc-pltrel.s new/lld-13.0.1.src/test/ELF/ppc32-reloc-pltrel.s --- old/lld-13.0.0.src/test/ELF/ppc32-reloc-pltrel.s 1970-01-01 01:00:00.000000000 +0100 +++ new/lld-13.0.1.src/test/ELF/ppc32-reloc-pltrel.s 2022-01-20 22:31:59.000000000 +0100 @@ -0,0 +1,35 @@ +# REQUIRES: ppc + +## Ensure R_PPC_PLTREL retains .got even in the absence of +## .got/_GLOBAL_OFFSET_TABLE_ references. + +# RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o +# RUN: ld.lld -shared %t.o -o %t.so +# RUN: llvm-readobj -Sdr %t.so | FileCheck %s + +.section .got2,"aw",@progbits +.set .LTOC, .+0x8000 + +.text +.L0: +addis 30,30,.LTOC-.L0@ha +addi 30,30,.LTOC-.L0@l +bl baz+0x8000@plt + +## DT_PPC_GOT must point to .got, which must have the 12-byte header. +## The only relocation is an R_PPC_JMP_SLOT. + +# CHECK: Sections [ +# CHECK: Name: .got ( +# CHECK: Address: +# CHECK-SAME: {{ }}[[#%x,GOT:]] +# CHECK: Size: +# CHECK-SAME: {{ 12$}} +# CHECK: DynamicSection [ +# CHECK-NEXT: Tag Type Name/Value +# CHECK: 0x70000000 PPC_GOT [[#GOT]] +# CHECK: Relocations [ +# CHECK-NEXT: Section ([[#]]) .rela.plt { +# CHECK-NEXT: 0x[[#%x,]] R_PPC_JMP_SLOT baz 0x0 +# CHECK-NEXT: } +# CHECK-NEXT: ] ++++++ lldb-13.0.0.src.tar.xz -> lldb-13.0.1.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm13/lldb-13.0.0.src.tar.xz /work/SRC/openSUSE:Factory/.llvm13.new.1898/lldb-13.0.1.src.tar.xz differ: char 26, line 1 ++++++ llvm-13.0.0.src.tar.xz -> llvm-13.0.1.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm13/llvm-13.0.0.src.tar.xz /work/SRC/openSUSE:Factory/.llvm13.new.1898/llvm-13.0.1.src.tar.xz differ: char 26, line 1 ++++++ llvm-do-not-install-static-libraries.patch ++++++ --- /var/tmp/diff_new_pack.W2B5uV/_old 2022-02-06 23:55:13.766437992 +0100 +++ /var/tmp/diff_new_pack.W2B5uV/_new 2022-02-06 23:55:13.770437966 +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-13.0.0.src/cmake/modules/AddClang.cmake +Index: clang-13.0.1.src/cmake/modules/AddClang.cmake =================================================================== ---- a/clang-13.0.0.src/cmake/modules/AddClang.cmake -+++ b/clang-13.0.0.src/cmake/modules/AddClang.cmake +--- a/clang-13.0.1.src/cmake/modules/AddClang.cmake ++++ b/clang-13.0.1.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() if (ARG_MODULE) set_target_properties(${name} PROPERTIES FOLDER "Loadable modules") -Index: lld-13.0.0.src/cmake/modules/AddLLD.cmake +Index: lld-13.0.1.src/cmake/modules/AddLLD.cmake =================================================================== ---- a/lld-13.0.0.src/cmake/modules/AddLLD.cmake -+++ b/lld-13.0.0.src/cmake/modules/AddLLD.cmake +--- a/lld-13.0.1.src/cmake/modules/AddLLD.cmake ++++ b/lld-13.0.1.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-13.0.0.src/cmake/polly_macros.cmake +Index: polly-13.0.1.src/cmake/polly_macros.cmake =================================================================== ---- a/polly-13.0.0.src/cmake/polly_macros.cmake -+++ b/polly-13.0.0.src/cmake/polly_macros.cmake +--- a/polly-13.0.1.src/cmake/polly_macros.cmake ++++ b/polly-13.0.1.src/cmake/polly_macros.cmake @@ -42,12 +42,14 @@ macro(add_polly_library name) llvm_config(${name} ${LLVM_LINK_COMPONENTS}) endif( LLVM_LINK_COMPONENTS ) @@ -110,10 +110,10 @@ endmacro(add_polly_library) macro(add_polly_loadable_module name) -Index: polly-13.0.0.src/lib/CMakeLists.txt +Index: polly-13.0.1.src/lib/CMakeLists.txt =================================================================== ---- a/polly-13.0.0.src/lib/CMakeLists.txt -+++ b/polly-13.0.0.src/lib/CMakeLists.txt +--- a/polly-13.0.1.src/lib/CMakeLists.txt ++++ b/polly-13.0.1.src/lib/CMakeLists.txt @@ -74,7 +74,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-13.0.0.src.tar.xz -> llvm-docs-13.0.1.src.tar.xz ++++++ ++++ 19799 lines of diff (skipped) ++++++ openmp-13.0.0.src.tar.xz -> openmp-13.0.1.src.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openmp-13.0.0.src/libomptarget/plugins/common/elf_common/CMakeLists.txt new/openmp-13.0.1.src/libomptarget/plugins/common/elf_common/CMakeLists.txt --- old/openmp-13.0.0.src/libomptarget/plugins/common/elf_common/CMakeLists.txt 2021-09-24 18:18:10.000000000 +0200 +++ new/openmp-13.0.1.src/libomptarget/plugins/common/elf_common/CMakeLists.txt 2022-01-20 22:31:59.000000000 +0100 @@ -16,6 +16,9 @@ set_property(TARGET elf_common PROPERTY POSITION_INDEPENDENT_CODE ON) llvm_update_compile_flags(elf_common) set(LINK_LLVM_LIBS LLVMBinaryFormat LLVMObject LLVMSupport) +if (LLVM_LINK_LLVM_DYLIB) + set(LINK_LLVM_LIBS LLVM) +endif() target_link_libraries(elf_common INTERFACE ${LINK_LLVM_LIBS}) include_directories(${LIBOMPTARGET_LLVM_INCLUDE_DIRS}) add_dependencies(elf_common ${LINK_LLVM_LIBS}) ++++++ polly-13.0.0.src.tar.xz -> polly-13.0.1.src.tar.xz ++++++ /work/SRC/openSUSE:Factory/llvm13/polly-13.0.0.src.tar.xz /work/SRC/openSUSE:Factory/.llvm13.new.1898/polly-13.0.1.src.tar.xz differ: char 26, line 1