diff --git a/debian/changelog b/debian/changelog index 7ab9d71a..e5120bfe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,10 @@ llvm-toolchain-3.3 (1:3.3-9) unstable; urgency=low See libstdc++-header-i386.diff. (Closes: #714890) * Add more fixes for the HURD port... (but still fails) + [ Robert Millan ] + * clang under KfFreeBSD was not exporting the correct defines + (Closes: #721880) + [ Jon Severinsson ] * Merge from llvm-toolchain-3.2 branch up to 3.2repack-11. * Drop auto-generated file debian/libllvm3.3.install. diff --git a/debian/patches/kfreebsd_target_info_clang33.diff b/debian/patches/kfreebsd_target_info_clang33.diff new file mode 100644 index 00000000..2453068b --- /dev/null +++ b/debian/patches/kfreebsd_target_info_clang33.diff @@ -0,0 +1,51 @@ +--- a/clang/lib/Basic/Targets.cpp ++++ b/clang/lib/Basic/Targets.cpp +@@ -283,6 +283,30 @@ + } + }; + ++// GNU/kFreeBSD Target ++template ++class KFreeBSDTargetInfo : public OSTargetInfo { ++protected: ++ virtual void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, ++ MacroBuilder &Builder) const { ++ // GNU/kFreeBSD defines; list based off of gcc output ++ ++ DefineStd(Builder, "unix", Opts); ++ Builder.defineMacro("__FreeBSD_kernel__"); ++ Builder.defineMacro("__GLIBC__"); ++ Builder.defineMacro("__ELF__"); ++ if (Opts.POSIXThreads) ++ Builder.defineMacro("_REENTRANT"); ++ if (Opts.CPlusPlus) ++ Builder.defineMacro("_GNU_SOURCE"); ++ } ++public: ++ KFreeBSDTargetInfo(const std::string &triple) ++ : OSTargetInfo(triple) { ++ this->UserLabelPrefix = ""; ++ } ++}; ++ + // Minix Target + template + class MinixTargetInfo : public OSTargetInfo { +@@ -5434,6 +5458,8 @@ + return new BitrigI386TargetInfo(T); + case llvm::Triple::FreeBSD: + return new FreeBSDTargetInfo(T); ++ case llvm::Triple::KFreeBSD: ++ return new KFreeBSDTargetInfo(T); + case llvm::Triple::Minix: + return new MinixTargetInfo(T); + case llvm::Triple::Solaris: +@@ -5473,6 +5499,8 @@ + return new BitrigX86_64TargetInfo(T); + case llvm::Triple::FreeBSD: + return new FreeBSDTargetInfo(T); ++ case llvm::Triple::KFreeBSD: ++ return new KFreeBSDTargetInfo(T); + case llvm::Triple::Solaris: + return new SolarisTargetInfo(T); + case llvm::Triple::MinGW32: diff --git a/debian/patches/series b/debian/patches/series index eb0f56b6..1d2eb3d5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -34,3 +34,4 @@ hurd-pathmax.diff libprofile_rt_sparc.patch lldb-hurd.diff libstdc++-header-i386.diff +kfreebsd_target_info_clang33.diff