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

Reply via email to