Merged to release_90 in r367527.
On Tue, Jul 30, 2019 at 12:37 PM Rainer Orth via cfe-commits <cfe-commits@lists.llvm.org> wrote: > > Author: ro > Date: Tue Jul 30 03:38:41 2019 > New Revision: 367305 > > URL: http://llvm.org/viewvc/llvm-project?rev=367305&view=rev > Log: > [Driver] Define _FILE_OFFSET_BITS=64 on Solaris > > make check-all currently fails on x86_64-pc-solaris2.11 when building with > GCC 9: > > Undefined first referenced > symbol in file > _ZN11__sanitizer14internal_lseekEimi > SANITIZER_TEST_OBJECTS.sanitizer_libc_test.cc.i386.o > _ZN11__sanitizer23MapWritableFileToMemoryEPvmim > SANITIZER_TEST_OBJECTS.sanitizer_libc_test.cc.i386.o > ld: fatal: symbol referencing errors > clang-9: error: linker command failed with exit code 1 (use -v to see > invocation) > make[3]: *** > [projects/compiler-rt/lib/sanitizer_common/tests/CMakeFiles/TSanitizer-i386-Test.dir/build.make:92: > projects/compiler-rt/lib/sanitizer_common/tests/Sanitizer-i386-Test] Error 1 > > While e.g. __sanitizer::internal_lseek is defined in sanitizer_solaris.cc, > g++ 9 > predefines _FILE_OFFSET_BITS=64 while clang++ currently does not. > > This patch resolves this inconsistency by following the gcc lead, which allows > make check-all to finish successfully. > > There's one caveat: gcc defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE for > C++ only, while clang has long been doing it for > all languages. I'd like to keep it this way because those macros do is to > make > declarations of fseek/ftello (_LARGEFILE_SOURCE) resp. the 64-bit versions > of largefile functions (*64 with _LARGEFILE64_SOURCE) visible additionally. > However, _FILE_OFFSET_BITS=64 changes all affected functions to be > largefile-aware. > I'd like to restrict this to C++, just like gcc does. > > To avoid a similar inconsistence with host compilers that don't predefine > _FILE_OFFSET_BITS=64 > (e.g. clang < 9, gcc < 9), this needs a compantion patch > https://reviews.llvm.org/D64483. > > Tested on x86_64-pc-solaris2.11. > > Differential Revision: https://reviews.llvm.org/D64482 > > Modified: > cfe/trunk/lib/Basic/Targets/OSTargets.h > > Modified: cfe/trunk/lib/Basic/Targets/OSTargets.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets/OSTargets.h?rev=367305&r1=367304&r2=367305&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/Targets/OSTargets.h (original) > +++ cfe/trunk/lib/Basic/Targets/OSTargets.h Tue Jul 30 03:38:41 2019 > @@ -622,8 +622,11 @@ protected: > Builder.defineMacro("_XOPEN_SOURCE", "600"); > else > Builder.defineMacro("_XOPEN_SOURCE", "500"); > - if (Opts.CPlusPlus) > + if (Opts.CPlusPlus) { > Builder.defineMacro("__C99FEATURES__"); > + Builder.defineMacro("_FILE_OFFSET_BITS", "64"); > + } > + // GCC restricts the next two to C++. > Builder.defineMacro("_LARGEFILE_SOURCE"); > Builder.defineMacro("_LARGEFILE64_SOURCE"); > Builder.defineMacro("__EXTENSIONS__"); > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits