diff --git a/include/clang/Driver/Distro.h b/include/clang/Driver/Distro.h index 7b34a09..fd47ef6 100644 --- a/include/clang/Driver/Distro.h +++ b/include/clang/Driver/Distro.h @@ -39,6 +39,7 @@ public: RHEL6, RHEL7, Fedora, + Gentoo, OpenSUSE, UbuntuHardy, UbuntuIntrepid, diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp index 2c4d44f..bd98104 100644 --- a/lib/Driver/Distro.cpp +++ b/lib/Driver/Distro.cpp @@ -136,6 +136,9 @@ static Distro::DistroType DetectDistro(vfs::FileSystem &VFS) { if (VFS.exists("/etc/arch-release")) return Distro::ArchLinux; + if (VFS.exists("/etc/gentoo-release")) + return Distro::Gentoo; + return Distro::UnknownDistro; } diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 8e9c4c6..cbb5622 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -25,6 +25,7 @@ #include "clang/Basic/LangOptions.h" #include "clang/Basic/ObjCRuntime.h" #include "clang/Basic/Version.h" +#include "clang/Driver/Distro.h" #include "clang/Driver/DriverDiagnostic.h" #include "clang/Driver/Options.h" #include "clang/Driver/SanitizerArgs.h" @@ -4839,7 +4840,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasFlag(options::OPT_faddrsig, options::OPT_fno_addrsig, getToolChain().getTriple().isOSBinFormatELF() && - getToolChain().useIntegratedAs())) + getToolChain().useIntegratedAs() && + Distro(D.getVFS()) != Distro::Gentoo)) CmdArgs.push_back("-faddrsig"); // Finally add the compile command to the compilation.