Index: contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h =================================================================== --- contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h +++ contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.h @@ -70,7 +70,7 @@ const llvm::opt::ArgList &Args) const override; bool isPIEDefault() const override; SanitizerMask getSupportedSanitizers() const override; - unsigned GetDefaultDwarfVersion() const override { return 2; } + unsigned GetDefaultDwarfVersion() const override; // Until dtrace (via CTF) and LLDB can deal with distributed debug info, // FreeBSD defaults to standalone/full debug info. bool GetDefaultStandaloneDebug() const override { return true; } Index: contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp =================================================================== --- contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp +++ contrib/llvm/tools/clang/lib/Driver/ToolChains/FreeBSD.cpp @@ -330,6 +330,13 @@ return ToolChain::CST_Libstdcxx; } +unsigned FreeBSD::GetDefaultDwarfVersion() const { + // Default to use DWARF 2 before FreeBSD 12. + if (getTriple().getOSMajorVersion() < 12) + return 2; + return 4; +} + void FreeBSD::addLibStdCxxIncludePaths( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const {