From faca3fbd15d0c3108493c3c54cd93138e049ac43 Mon Sep 17 00:00:00 2001 From: Andrea Brancaleoni Date: Tue, 8 Sep 2015 22:03:02 +0200 Subject: [PATCH 3/3] musl --- include/llvm/Analysis/TargetLibraryInfo.h | 9 +++++++++ lib/Analysis/TargetLibraryInfo.cpp | 5 +++-- lib/Support/DynamicLibrary.cpp | 2 +- lib/Support/Unix/Signals.inc | 6 +++--- utils/unittest/googletest/src/gtest.cc | 1 + 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/include/llvm/Analysis/TargetLibraryInfo.h b/include/llvm/Analysis/TargetLibraryInfo.h index e0a1ee3..465b65a 100644 --- a/include/llvm/Analysis/TargetLibraryInfo.h +++ b/include/llvm/Analysis/TargetLibraryInfo.h @@ -18,6 +18,15 @@ #include "llvm/IR/Module.h" #include "llvm/Pass.h" +#undef fopen64 +#undef fseeko64 +#undef fstat64 +#undef fstatvfs64 +#undef ftello64 +#undef lstat64 +#undef stat64 +#undef tmpfile64 + namespace llvm { /// VecDesc - Describes a possible vectorization of a function. /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized diff --git a/lib/Analysis/TargetLibraryInfo.cpp b/lib/Analysis/TargetLibraryInfo.cpp index 635c50c..863f4a0 100644 --- a/lib/Analysis/TargetLibraryInfo.cpp +++ b/lib/Analysis/TargetLibraryInfo.cpp @@ -336,14 +336,15 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, } // The following functions are available on at least Linux: - if (!T.isOSLinux()) { + if (!T.isOSLinux()) + TLI.setUnavailable(LibFunc::memalign); + if (1 /*!T.isGlibc()*/) { TLI.setUnavailable(LibFunc::dunder_strdup); TLI.setUnavailable(LibFunc::dunder_strtok_r); TLI.setUnavailable(LibFunc::dunder_isoc99_scanf); TLI.setUnavailable(LibFunc::dunder_isoc99_sscanf); TLI.setUnavailable(LibFunc::under_IO_getc); TLI.setUnavailable(LibFunc::under_IO_putc); - TLI.setUnavailable(LibFunc::memalign); TLI.setUnavailable(LibFunc::fopen64); TLI.setUnavailable(LibFunc::fseeko64); TLI.setUnavailable(LibFunc::fstat64); diff --git a/lib/Support/DynamicLibrary.cpp b/lib/Support/DynamicLibrary.cpp index 9a7aeb5..e21750d 100644 --- a/lib/Support/DynamicLibrary.cpp +++ b/lib/Support/DynamicLibrary.cpp @@ -138,7 +138,7 @@ void* DynamicLibrary::SearchForAddressOfSymbol(const char *symbolName) { // This macro returns the address of a well-known, explicit symbol #define EXPLICIT_SYMBOL(SYM) \ - if (!strcmp(symbolName, #SYM)) return &SYM + if (!strcmp(symbolName, #SYM)) return (void *) &SYM // On linux we have a weird situation. The stderr/out/in symbols are both // macros and global variables because of standards requirements. So, we diff --git a/lib/Support/Unix/Signals.inc b/lib/Support/Unix/Signals.inc index bfe2a3a..e8372d9 100644 --- a/lib/Support/Unix/Signals.inc +++ b/lib/Support/Unix/Signals.inc @@ -117,7 +117,7 @@ static void RegisterHandlers() { // during handling an actual signal because you can't safely call new in a // signal handler. *SignalsMutex; - + // If the handlers are already registered, we're done. if (NumRegisteredSignals != 0) return; @@ -164,7 +164,7 @@ static void RemoveFilesToRemove() { // super-user permissions. if (!S_ISREG(buf.st_mode)) continue; - + // Otherwise, remove the file. We ignore any errors here as there is nothing // else we can do. unlink(path); @@ -430,7 +430,7 @@ static bool printSymbolizedStackTrace(void **StackTrace, int Depth, // On glibc systems we have the 'backtrace' function, which works nicely, but // doesn't demangle symbols. void llvm::sys::PrintStackTrace(raw_ostream &OS) { -#if defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES) +#if defined(__GLIBC__) && defined(HAVE_BACKTRACE) && defined(ENABLE_BACKTRACES) static void* StackTrace[256]; // Use backtrace() to output a backtrace on Linux systems with glibc. int depth = backtrace(StackTrace, diff --git a/utils/unittest/googletest/src/gtest.cc b/utils/unittest/googletest/src/gtest.cc index 5780764..1d548c1 100644 --- a/utils/unittest/googletest/src/gtest.cc +++ b/utils/unittest/googletest/src/gtest.cc @@ -120,6 +120,7 @@ #if GTEST_CAN_STREAM_RESULTS_ # include // NOLINT +# include // NOLINT # include // NOLINT #endif -- 2.5.1