llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Rainer Orth (rorth) <details> <summary>Changes</summary> The introduction of `std::put_time` in fad17b43dbc09ac7e0a95535459845f72c2b739a broke the Solaris build: ``` Undefined first referenced symbol in file _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKSt2tmPKcSB_ lib/libclangLex.a(PPMacroExpansion.cpp.o) ld: fatal: symbol referencing errors ``` As discussed in PR #<!-- -->99075, the problem is that GCC mangles `std::tm` as `tm` on Solaris for binary compatility, while `clang` doesn't (Issue #<!-- -->33114). As a stop-gap measure, this patch introduces an `asm` level alias to the same effect. Tested on `sparcv9-sun-solaris2.11`, `amd64-pc-solaris2.11`, and `x86_64-pc-linux-gnu`. --- Full diff: https://github.com/llvm/llvm-project/pull/100724.diff 1 Files Affected: - (modified) clang/lib/Lex/PPMacroExpansion.cpp (+10) ``````````diff diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp index 879f01e87806e..1e31fcc3d731e 100644 --- a/clang/lib/Lex/PPMacroExpansion.cpp +++ b/clang/lib/Lex/PPMacroExpansion.cpp @@ -1604,6 +1604,16 @@ static bool isTargetVariantEnvironment(const TargetInfo &TI, return false; } +#if defined(__sun__) && defined(__svr4__) +// GCC mangles std::tm as tm for binary compatibility on Solaris (Issue +// #33114). We need to match this to allow the std::put_time calls to link +// (PR #99075). +asm("_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_" + "RSt8ios_basecPKSt2tmPKcSB_ = " + "_ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_" + "RSt8ios_basecPK2tmPKcSB_"); +#endif + /// ExpandBuiltinMacro - If an identifier token is read that is to be expanded /// as a builtin macro, handle it and return the next token as 'Tok'. void Preprocessor::ExpandBuiltinMacro(Token &Tok) { `````````` </details> https://github.com/llvm/llvm-project/pull/100724 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits