--- llvm-2.8/lib/Support/CommandLine.cpp +++ llvm-2.8.mod/lib/Support/CommandLine.cpp @@ -31,7 +31,10 @@ #include "llvm/ADT/StringMap.h" #include "llvm/ADT/Twine.h" #include "llvm/Config/config.h" -#include + +#include +extern __thread int errno; + #include using namespace llvm; using namespace cl; --- llvm-2.8/lib/Support/raw_ostream.cpp +++ llvm-2.8.mod/lib/Support/raw_ostream.cpp @@ -22,7 +22,10 @@ #include "llvm/System/Signals.h" #include "llvm/ADT/STLExtras.h" #include -#include + +#include +extern __thread int errno; + #include #include --- llvm-2.8/lib/System/Errno.cpp +++ llvm-2.8.mod/lib/System/Errno.cpp @@ -14,13 +14,11 @@ #include "llvm/System/Errno.h" #include "llvm/Config/config.h" // Get autoconf configuration settings +extern __thread int errno; + #if HAVE_STRING_H #include -#if HAVE_ERRNO_H -#include -#endif - //===----------------------------------------------------------------------===// //=== WARNING: Implementation here must contain only TRULY operating system //=== independent code. @@ -29,11 +27,9 @@ namespace llvm { namespace sys { -#if HAVE_ERRNO_H std::string StrError() { return StrError(errno); } -#endif // HAVE_ERRNO_H std::string StrError(int errnum) { const int MaxErrStrLen = 2000; --- llvm-2.8/lib/System/Unix/Unix.h +++ llvm-2.8.mod/lib/System/Unix/Unix.h @@ -24,7 +24,10 @@ #include #include #include -#include + +#include +extern __thread int errno; + #include #include --- llvm-2.8/utils/TableGen/TGLexer.cpp +++ llvm-2.8.mod/utils/TableGen/TGLexer.cpp @@ -19,7 +19,10 @@ #include #include #include -#include + +#include +extern __thread int errno; + using namespace llvm; TGLexer::TGLexer(SourceMgr &SM) : SrcMgr(SM) {