diff options
author | Julian Büning <julian.buening@rwth-aachen.de> | 2019-08-31 10:25:37 +0200 |
---|---|---|
committer | MartinNowack <martin.nowack@gmail.com> | 2019-09-05 14:00:30 +0100 |
commit | 649c8bce588f04ed9099686f0d9ed9c326567c44 (patch) | |
tree | 4649e7e812e2c482fc3348d6e8fca4362db9613e | |
parent | 368409073b0e4037a879bcc3f30265aa93a2b367 (diff) | |
download | klee-649c8bce588f04ed9099686f0d9ed9c326567c44.tar.gz |
build: additional patches for LLVM 3.8-5.0
-rw-r--r-- | scripts/build/patches/llvm38.patch | 55 | ||||
-rw-r--r-- | scripts/build/patches/llvm40.patch | 36 | ||||
-rw-r--r-- | scripts/build/patches/llvm50.patch | 11 |
3 files changed, 89 insertions, 13 deletions
diff --git a/scripts/build/patches/llvm38.patch b/scripts/build/patches/llvm38.patch new file mode 100644 index 00000000..e6afcce9 --- /dev/null +++ b/scripts/build/patches/llvm38.patch @@ -0,0 +1,55 @@ +--- include/llvm/IR/ValueMap.h ++++ include/llvm/IR/ValueMap.h +@@ -99,7 +99,7 @@ public: + explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64) + : Map(NumInitBuckets), Data(Data) {} + +- bool hasMD() const { return MDMap; } ++ bool hasMD() const { return static_cast<bool>(MDMap); } + MDMapT &MD() { + if (!MDMap) + MDMap.reset(new MDMapT); + + +Backport from https://reviews.llvm.org/rC330696 to include the detection of GCC +versions without second and third component in path, such as +"/usr/lib/gcc/x86_64-redhat-linux/8/". Support for single digit versions was +introduced with https://reviews.llvm.org/D14727 +--- tools/clang/lib/Driver/ToolChains.cpp ++++ tools/clang/lib/Driver/ToolChains.cpp +@@ -1241,20 +1241,31 @@ Generic_GCC::GCCVersion Linux::GCCVersion::Parse(StringRef VersionText) { + if (First.first.getAsInteger(10, GoodVersion.Major) || GoodVersion.Major < 0) + return BadVersion; + GoodVersion.MajorStr = First.first.str(); +- if (Second.first.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0) ++ if (First.second.empty()) ++ return GoodVersion; ++ StringRef MinorStr = Second.first; ++ if (Second.second.empty()) { ++ if (size_t EndNumber = MinorStr.find_first_not_of("0123456789")) { ++ GoodVersion.PatchSuffix = MinorStr.substr(EndNumber); ++ MinorStr = MinorStr.slice(0, EndNumber); ++ } ++ } ++ if (MinorStr.getAsInteger(10, GoodVersion.Minor) || GoodVersion.Minor < 0) + return BadVersion; +- GoodVersion.MinorStr = Second.first.str(); ++ GoodVersion.MinorStr = MinorStr.str(); + + // First look for a number prefix and parse that if present. Otherwise just + // stash the entire patch string in the suffix, and leave the number + // unspecified. This covers versions strings such as: ++ // 5 (handled above) + // 4.4 ++ // 4.4-patched + // 4.4.0 + // 4.4.x + // 4.4.2-rc4 + // 4.4.x-patched + // And retains any patch number it finds. +- StringRef PatchText = GoodVersion.PatchSuffix = Second.second.str(); ++ StringRef PatchText = Second.second.str(); + if (!PatchText.empty()) { + if (size_t EndNumber = PatchText.find_first_not_of("0123456789")) { + // Try to parse the number and any suffix. + diff --git a/scripts/build/patches/llvm40.patch b/scripts/build/patches/llvm40.patch index 6cc9fe41..0f39a499 100644 --- a/scripts/build/patches/llvm40.patch +++ b/scripts/build/patches/llvm40.patch @@ -1,5 +1,5 @@ ---- ./projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc 2018-12-20 22:32:09.636508226 +0000 -+++ ../llvm-40-copy/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc 2018-12-20 22:36:10.752698342 +0000 +--- projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ++++ projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc @@ -607,8 +607,7 @@ uptr internal_prctl(int option, uptr arg } #endif @@ -10,8 +10,8 @@ return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss); } ---- ./projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.h 2018-12-20 22:32:10.020508531 +0000 -+++ ../llvm-40-copy/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.h 2018-12-20 22:36:10.752698342 +0000 +--- projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.h ++++ projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.h @@ -21,7 +21,6 @@ #include "sanitizer_platform_limits_posix.h" @@ -30,8 +30,8 @@ uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set, __sanitizer_sigset_t *oldset); ---- ./projects/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 2018-12-20 22:32:09.456508085 +0000 -+++ ../llvm-40-copy/projects/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 2018-12-20 22:36:10.756698345 +0000 +--- projects/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc ++++ projects/compiler-rt/lib/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc @@ -275,7 +275,7 @@ static int TracerThread(void* argument) // Alternate stack for signal handling. @@ -41,8 +41,8 @@ internal_memset(&handler_stack, 0, sizeof(handler_stack)); handler_stack.ss_sp = handler_stack_memory.data(); handler_stack.ss_size = kHandlerStackSize; ---- ./projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc 2018-12-20 22:32:15.780513072 +0000 -+++ ../llvm-40-copy/projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc 2018-12-20 22:36:10.756698345 +0000 +--- projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc ++++ projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc @@ -289,7 +289,7 @@ void InitializePlatform() { int ExtractResolvFDs(void *state, int *fds, int nfd) { #if SANITIZER_LINUX && !SANITIZER_ANDROID @@ -52,9 +52,8 @@ for (int i = 0; i < MAXNS && cnt < nfd; i++) { if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1) fds[cnt++] = statp->_u._ext.nssocks[i]; -diff -rup ./projects/libcxx/include/__locale ../llvm-40-copy/projects/libcxx/include/__locale ---- ./projects/libcxx/include/__locale 2018-12-20 22:33:14.484559356 +0000 -+++ ../llvm-40-copy/projects/libcxx/include/__locale 2018-12-20 22:34:34.432622394 +0000 +--- projects/libcxx/include/__locale ++++ projects/libcxx/include/__locale @@ -34,7 +34,7 @@ # include <support/solaris/xlocale.h> #elif defined(_NEWLIB_VERSION) @@ -64,8 +63,8 @@ diff -rup ./projects/libcxx/include/__locale ../llvm-40-copy/projects/libcxx/inc || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)) # include <xlocale.h> #elif defined(_LIBCPP_HAS_MUSL_LIBC) ---- ./projects/compiler-rt/lib/esan/esan_sideline_linux.cpp 2018-12-20 22:32:12.368510380 +0000 -+++ ../llvm-40-copy/projects/compiler-rt/lib/esan/esan_sideline_linux.cpp 2018-12-21 09:15:03.721823179 +0000 +--- projects/compiler-rt/lib/esan/esan_sideline_linux.cpp ++++ projects/compiler-rt/lib/esan/esan_sideline_linux.cpp @@ -70,7 +70,7 @@ int SidelineThread::runSideline(void *Ar // Set up a signal handler on an alternate stack for safety. @@ -75,3 +74,14 @@ diff -rup ./projects/libcxx/include/__locale ../llvm-40-copy/projects/libcxx/inc SigAltStack.ss_sp = StackMap.data(); SigAltStack.ss_size = SigAltStackSize; SigAltStack.ss_flags = 0; +--- include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h ++++ include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h +@@ -687,7 +687,7 @@ private: + + uint32_t getTrampolineSize() const { return RemoteTrampolineSize; } + +- Expected<std::vector<char>> readMem(char *Dst, JITTargetAddress Src, ++ Expected<std::vector<unsigned char>> readMem(char *Dst, JITTargetAddress Src, + uint64_t Size) { + // Check for an 'out-of-band' error, e.g. from an MM destructor. + if (ExistingError) diff --git a/scripts/build/patches/llvm50.patch b/scripts/build/patches/llvm50.patch new file mode 100644 index 00000000..f10a47c7 --- /dev/null +++ b/scripts/build/patches/llvm50.patch @@ -0,0 +1,11 @@ +--- include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h ++++ include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h +@@ -713,7 +713,7 @@ private: + + uint32_t getTrampolineSize() const { return RemoteTrampolineSize; } + +- Expected<std::vector<char>> readMem(char *Dst, JITTargetAddress Src, ++ Expected<std::vector<unsigned char>> readMem(char *Dst, JITTargetAddress Src, + uint64_t Size) { + // Check for an 'out-of-band' error, e.g. from an MM destructor. + if (ExistingError) |