mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-10-04 17:48:13 +00:00
move libcxx patches in a directory
This commit is contained in:
parent
912892b003
commit
a077cef5df
24
debian/patches/libcxx/libcxx-silent-failure-arm64.diff
vendored
Normal file
24
debian/patches/libcxx/libcxx-silent-failure-arm64.diff
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/thread/thread.condition/thread.condition.condvar/wait_for.pass.cpp
|
||||
@@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
+// XFAIL: *
|
||||
|
||||
// <condition_variable>
|
||||
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/thread/thread.mutex/thread.lock/thread.lock.shared/thread.lock.shared.locking/lock.pass.cpp
|
||||
@@ -9,6 +9,7 @@
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
// UNSUPPORTED: c++98, c++03, c++11
|
||||
+// XFAIL: *
|
||||
|
||||
// <shared_mutex>
|
||||
|
13
debian/patches/libcxx/libcxx-silent-failure-ppc64el.diff
vendored
Normal file
13
debian/patches/libcxx/libcxx-silent-failure-ppc64el.diff
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/libcxx/atomics/atomics.align/align.pass.sh.cpp
|
||||
@@ -14,7 +14,7 @@
|
||||
//
|
||||
// GCC currently fails because it needs -fabi-version=6 to fix mangling of
|
||||
// std::atomic when used with __attribute__((vector(X))).
|
||||
-// XFAIL: gcc
|
||||
+// XFAIL: *
|
||||
|
||||
// <atomic>
|
||||
|
51
debian/patches/libcxx/libcxx-silent-test-libcxx.diff
vendored
Normal file
51
debian/patches/libcxx/libcxx-silent-test-libcxx.diff
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/numerics/rand/rand.util/rand.util.canonical/generate_canonical.pass.cpp
|
||||
@@ -12,6 +12,8 @@
|
||||
// template<class RealType, size_t bits, class URNG>
|
||||
// RealType generate_canonical(URNG& g);
|
||||
|
||||
+// XFAIL: *
|
||||
+
|
||||
#include <random>
|
||||
#include <cassert>
|
||||
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/re/re.traits/isctype.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/re/re.traits/isctype.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/re/re.traits/isctype.pass.cpp
|
||||
@@ -16,6 +16,7 @@
|
||||
// TODO(EricWF): This test takes 40+ minutes to build with Clang 3.8 under ASAN or MSAN.
|
||||
// UNSUPPORTED: asan, msan
|
||||
|
||||
+// XFAIL: *
|
||||
|
||||
#include <regex>
|
||||
#include <cassert>
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxxabi/test/catch_multi_level_pointer.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxxabi/test/catch_multi_level_pointer.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxxabi/test/catch_multi_level_pointer.pass.cpp
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
// UNSUPPORTED: libcxxabi-no-exceptions
|
||||
|
||||
+// XFAIL: *
|
||||
+
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/utilities/allocator.adaptor/allocator.adaptor.members/construct.pass.cpp
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
// template <class T, class... Args> void construct(T* p, Args&&... args);
|
||||
|
||||
+// XFAIL: *
|
||||
+
|
||||
#include <scoped_allocator>
|
||||
#include <cassert>
|
||||
#include <string>
|
58
debian/patches/libcxx/libcxx-test-atomics-set-compare-exchange-to-be-expected-fails-on-arm.patch
vendored
Normal file
58
debian/patches/libcxx/libcxx-test-atomics-set-compare-exchange-to-be-expected-fails-on-arm.patch
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
Clang 3.9 regression causes a bug when generating code for
|
||||
std::atomic_compare_and_exchange*(std::atomic<long long>,...) without
|
||||
optimizations. If same code is compiled with -O2 tests pass without problems.
|
||||
Atomics are implement in headers with builtin functions which makes this
|
||||
affect application code instead of libc++ library code.
|
||||
|
||||
libcxx tests default to -O0 compilation so these test need to be marked failing
|
||||
on arm to allow installing packages. Use cases is so borderline failure that it
|
||||
shouldn't prevent building the package. (64bit atomics in 32bit mode)
|
||||
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong.pass.cpp
|
||||
@@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
+// XFAIL: arm
|
||||
// ... assertion fails line 34
|
||||
|
||||
// <atomic>
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_strong_explicit.pass.cpp
|
||||
@@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
+// XFAIL: arm
|
||||
// ... assertion fails line 38
|
||||
|
||||
// <atomic>
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak.pass.cpp
|
||||
@@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
+// XFAIL: arm
|
||||
// ... assertion fails line 34
|
||||
|
||||
// <atomic>
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.types.operations/atomics.types.operations.req/atomic_compare_exchange_weak_explicit.pass.cpp
|
||||
@@ -8,6 +8,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// UNSUPPORTED: libcpp-has-no-threads
|
||||
+// XFAIL: arm
|
||||
// ... assertion fails line 38
|
||||
|
||||
// <atomic>
|
31
debian/patches/libcxx/libcxx-test-fix-lockfree-test-for-i386.patch
vendored
Normal file
31
debian/patches/libcxx/libcxx-test-fix-lockfree-test-for-i386.patch
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
Lock is_always_lock free test fails on i386 because std::atomic is aligned
|
||||
to 8 bytes while long long is aligned to 4 bytes. clang can't generate inline
|
||||
code for unaligned 8 byte atomics even tough instruction set and gcc support
|
||||
it.
|
||||
|
||||
That makes it expected thaqt ATOMIC_LLONG_LOCK_FREE and
|
||||
std::atomic<long long>::is_always_lock_free don't match on i386. Correct test
|
||||
for std::atomic<long long> is to check if target cpu support cmpxchg8 instruction.
|
||||
To set instruction support one can check __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 define.
|
||||
|
||||
Bug: https://llvm.org/bugs/show_bug.cgi?id=19355
|
||||
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372/libcxx/test/std/atomics/atomics.lockfree/isalwayslockfree.pass.cpp
|
||||
@@ -20,6 +20,14 @@
|
||||
# error Feature test macro missing.
|
||||
#endif
|
||||
|
||||
+#if defined(__i386__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8)
|
||||
+/* Fix for clang setting __GCC_ATOMIC_LLONG_LOCK_FREE incorecctly for x86
|
||||
+ * https://llvm.org/bugs/show_bug.cgi?id=19355
|
||||
+ */
|
||||
+#undef ATOMIC_LLONG_LOCK_FREE
|
||||
+#define ATOMIC_LLONG_LOCK_FREE 2
|
||||
+#endif
|
||||
+
|
||||
template <typename T> void checkAlwaysLockFree() {
|
||||
if (std::atomic<T>::is_always_lock_free)
|
||||
assert(std::atomic<T>().is_lock_free());
|
118
debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch
vendored
Normal file
118
debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch
vendored
Normal file
@ -0,0 +1,118 @@
|
||||
Fix arm EHABI code to work. armhf had exception test failing without EHABI support.
|
||||
|
||||
No known upstream bug about this. Actual code change is more like workaround than
|
||||
something that upstream would accept. Proper fix would be adding _Unwind_Control_Block
|
||||
to clang unwind.h. _Unwind_Control_Block should also extend _Unwind_Exception to make
|
||||
sure their ABI stays in sync.
|
||||
|
||||
No known upstream bug about this.
|
||||
|
||||
Index: llvm-toolchain-snapshot_7svn337372/libcxxabi/src/cxa_exception.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7svn337372.orig/libcxxabi/src/cxa_exception.cpp
|
||||
+++ llvm-toolchain-snapshot_7svn337372/libcxxabi/src/cxa_exception.cpp
|
||||
@@ -261,15 +261,16 @@ __cxa_throw(void *thrown_object, std::ty
|
||||
|
||||
#ifdef __USING_SJLJ_EXCEPTIONS__
|
||||
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
|
||||
-#else
|
||||
+#elif !LIBCXXABI_ARM_EHABI
|
||||
_Unwind_RaiseException(&exception_header->unwindHeader);
|
||||
+#else
|
||||
+ _Unwind_RaiseException(exception_header->unwindHeader);
|
||||
#endif
|
||||
// This only happens when there is no handler, or some unexpected unwinding
|
||||
// error happens.
|
||||
failed_throw(exception_header);
|
||||
}
|
||||
|
||||
-
|
||||
// 2.5.3 Exception Handlers
|
||||
/*
|
||||
The adjusted pointer is computed by the personality routine during phase 1
|
||||
@@ -532,7 +533,11 @@ void __cxa_end_catch() {
|
||||
// to touch a foreign exception in any way, that is undefined
|
||||
// behavior. They likely can't since the only way to catch
|
||||
// a foreign exception is with catch (...)!
|
||||
+#if !LIBCXXABI_ARM_EHABI
|
||||
_Unwind_DeleteException(&globals->caughtExceptions->unwindHeader);
|
||||
+#else
|
||||
+ _Unwind_DeleteException(globals->caughtExceptions->unwindHeader);
|
||||
+#endif
|
||||
globals->caughtExceptions = 0;
|
||||
}
|
||||
}
|
||||
@@ -589,8 +594,10 @@ void __cxa_rethrow() {
|
||||
}
|
||||
#ifdef __USING_SJLJ_EXCEPTIONS__
|
||||
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
|
||||
-#else
|
||||
+#elif !LIBCXXABI_ARM_EHABI
|
||||
_Unwind_RaiseException(&exception_header->unwindHeader);
|
||||
+#else
|
||||
+ _Unwind_RaiseException(exception_header->unwindHeader);
|
||||
#endif
|
||||
|
||||
// If we get here, some kind of unwinding error has occurred.
|
||||
@@ -714,8 +721,10 @@ __cxa_rethrow_primary_exception(void* th
|
||||
dep_exception_header->unwindHeader.exception_cleanup = dependent_exception_cleanup;
|
||||
#ifdef __USING_SJLJ_EXCEPTIONS__
|
||||
_Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader);
|
||||
+#elif !LIBCXXABI_ARM_EHABI
|
||||
+ _Unwind_RaiseException(&dep_exception_header->unwindHeader);
|
||||
#else
|
||||
- _Unwind_RaiseException(&dep_exception_header->unwindHeader);
|
||||
+ _Unwind_RaiseException(dep_exception_header->unwindHeader);
|
||||
#endif
|
||||
// Some sort of unwinding error. Note that terminate is a handler.
|
||||
__cxa_begin_catch(&dep_exception_header->unwindHeader);
|
||||
Index: llvm-toolchain-snapshot_7svn337372/libcxxabi/src/cxa_exception.hpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7svn337372.orig/libcxxabi/src/cxa_exception.hpp
|
||||
+++ llvm-toolchain-snapshot_7svn337372/libcxxabi/src/cxa_exception.hpp
|
||||
@@ -24,6 +24,45 @@ static const uint64_t kOurExceptionClass
|
||||
static const uint64_t kOurDependentExceptionClass = 0x434C4E47432B2B01; // CLNGC++\1
|
||||
static const uint64_t get_vendor_and_language = 0xFFFFFFFFFFFFFF00; // mask for CLNGC++
|
||||
|
||||
+#if LIBCXXABI_ARM_EHABI
|
||||
+// GCC has _Unwind_Control_Block in unwind.h (unwind_arm_common.h)
|
||||
+#if defined(__clang__)
|
||||
+struct _Unwind_Control_Block
|
||||
+{
|
||||
+ uint64_t exception_class;
|
||||
+ void (*exception_cleanup)(_Unwind_Reason_Code, _Unwind_Control_Block *);
|
||||
+ struct {
|
||||
+ _Unwind_Word reserved1;
|
||||
+ _Unwind_Word reserved2;
|
||||
+ _Unwind_Word reserved3;
|
||||
+ _Unwind_Word reserved4;
|
||||
+ _Unwind_Word reserved5;
|
||||
+ } unwinder_cache;
|
||||
+ struct {
|
||||
+ _Unwind_Word sp;
|
||||
+ _Unwind_Word bitpattern[5];
|
||||
+ } barrier_cache;
|
||||
+ struct {
|
||||
+ _Unwind_Word bitpattern[4];
|
||||
+ } cleanup_cache;
|
||||
+ struct {
|
||||
+ _Unwind_Word fnstart;
|
||||
+ _Unwind_Word *ehtp;
|
||||
+ _Unwind_Word additional;
|
||||
+ _Unwind_Word reserved1;
|
||||
+ } pr_cache;
|
||||
+ long long int :0;
|
||||
+ operator _Unwind_Exception*() noexcept
|
||||
+ {
|
||||
+ return reinterpret_cast<_Unwind_Exception*>(this);
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+#define _Unwind_Exception _Unwind_Control_Block
|
||||
+#endif
|
||||
+
|
||||
struct _LIBCXXABI_HIDDEN __cxa_exception {
|
||||
#if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI)
|
||||
// This is a new field to support C++ 0x exception_ptr.
|
17
debian/patches/libcxx/libcxxabi-test-don-t-fail-extended-long-double.patch
vendored
Normal file
17
debian/patches/libcxx/libcxxabi-test-don-t-fail-extended-long-double.patch
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
Powerpc has extended double that doesn't match x86 coding. Power format would
|
||||
need special tests to verify correctness but for now it is enough to prevent
|
||||
incorrect test from running.
|
||||
|
||||
Index: llvm-toolchain-snapshot_7~svn337372/libcxxabi/test/test_demangle.pass.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_7~svn337372.orig/libcxxabi/test/test_demangle.pass.cpp
|
||||
+++ llvm-toolchain-snapshot_7~svn337372svn337372/libcxxabi/test/test_demangle.pass.cpp
|
||||
@@ -29648,7 +29648,7 @@ const char* invalid_cases[] =
|
||||
"NSoERj5E=Y1[uM:ga",
|
||||
"Aon_PmKVPDk7?fg4XP5smMUL6;<WsI_mgbf23cCgsHbT<l8EE\0uVRkNOoXDrgdA4[8IU>Vl<>IL8ayHpiVDDDXTY;^o9;i",
|
||||
"_ZNSt16allocator_traitsISaIN4llvm3sys2fs18directory_iteratorEEE9constructIS3_IS3_EEEDTcl12_S_constructfp_fp0_spcl7forwardIT0_Efp1_EEERS4_PT_DpOS7_",
|
||||
-#if !LDBL_FP80
|
||||
+#if !LDBL_FP80 && __LDBL_MANT_DIG__ < 64
|
||||
"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c",
|
||||
#endif
|
||||
// The following test cases were found by libFuzzer+ASAN
|
Loading…
Reference in New Issue
Block a user