commit: 5b60e27c215afa30028733992d271e5a298ebe03 Author: Cato Auestad <cato <AT> cato <DOT> ninja> AuthorDate: Fri Mar 20 18:40:26 2015 +0000 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> CommitDate: Fri Mar 20 18:40:26 2015 +0000 URL: https://gitweb.gentoo.org/proj/hardened-dev.git/commit/?id=5b60e27c
sys-devel/llvm: fix patches .../llvm/files/llvm-3.5-musl-clang-support.patch | 59 +++++++++++++++++ .../llvm/files/llvm-3.5-musl-compiler-rt.patch | 22 +++---- sys-devel/llvm/files/llvm-3.5-musl-support.patch | 73 +++------------------- sys-devel/llvm/llvm-3.5.0-r99.ebuild | 3 +- 4 files changed, 80 insertions(+), 77 deletions(-) diff --git a/sys-devel/llvm/files/llvm-3.5-musl-clang-support.patch b/sys-devel/llvm/files/llvm-3.5-musl-clang-support.patch new file mode 100644 index 0000000..a492f12 --- /dev/null +++ b/sys-devel/llvm/files/llvm-3.5-musl-clang-support.patch @@ -0,0 +1,59 @@ +adapted from llvm-alpine-linux.patch from Alpine + +diff -ru llvm-3.5.0.src.orig/tools/clang/lib/Driver/Tools.cpp llvm-3.5.0.src/tools/clang/lib/Driver/Tools.cpp +--- tools/clang/lib/Driver/Tools.cpp 2014-08-07 07:51:51.000000000 -0300 ++++ tools/clang/lib/Driver/Tools.cpp 2014-11-12 15:11:31.901864030 -0200 +@@ -7182,8 +7182,14 @@ + return "/system/bin/linker64"; + else + return "/system/bin/linker"; +- } else if (ToolChain.getArch() == llvm::Triple::x86 || +- ToolChain.getArch() == llvm::Triple::sparc) ++ } else if (ToolChain.getArch() == llvm::Triple::x86) { ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ return "/lib/ld-musl-i386.so.1"; ++ default: ++ return "/lib/ld-linux.so.2"; ++ } ++ } else if (ToolChain.getArch() == llvm::Triple::sparc) + return "/lib/ld-linux.so.2"; + else if (ToolChain.getArch() == llvm::Triple::aarch64 || + ToolChain.getArch() == llvm::Triple::arm64) +@@ -7193,10 +7199,17 @@ + return "/lib/ld-linux-aarch64_be.so.1"; + else if (ToolChain.getArch() == llvm::Triple::arm || + ToolChain.getArch() == llvm::Triple::thumb) { +- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ case llvm::Triple::MuslEABI: ++ return "/lib/ld-musl-arm.so.3"; ++ case llvm::Triple::MuslEABIHF: ++ return "/lib/ld-musl-armhf.so.3"; ++ case llvm::Triple::GNUEABIHF: + return "/lib/ld-linux-armhf.so.3"; +- else ++ default: + return "/lib/ld-linux.so.3"; ++ } + } else if (ToolChain.getArch() == llvm::Triple::armeb || + ToolChain.getArch() == llvm::Triple::thumbeb) { + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) +@@ -7227,8 +7240,14 @@ + else if (ToolChain.getArch() == llvm::Triple::x86_64 && + ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUX32) + return "/libx32/ld-linux-x32.so.2"; +- else +- return "/lib64/ld-linux-x86-64.so.2"; ++ else { ++ switch (ToolChain.getTriple().getEnvironment()) { ++ case llvm::Triple::Musl: ++ return "/lib/ld-musl-x86_64.so.1"; ++ default: ++ return "/lib64/ld-linux-x86-64.so.2"; ++ } ++ } + } + + static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, diff --git a/sys-devel/llvm/files/llvm-3.5-musl-compiler-rt.patch b/sys-devel/llvm/files/llvm-3.5-musl-compiler-rt.patch index b1646b8..b1f48d2 100644 --- a/sys-devel/llvm/files/llvm-3.5-musl-compiler-rt.patch +++ b/sys-devel/llvm/files/llvm-3.5-musl-compiler-rt.patch @@ -1,6 +1,6 @@ diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk b/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk ---- a/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk 2014-02-14 10:20:33.000000000 -0100 -+++ b/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk 2015-01-07 13:56:00.362944069 -0100 +--- a/projects/compiler-rt/lib/Makefile.mk 2014-02-14 10:20:33.000000000 -0100 ++++ b/projects/compiler-rt/lib/Makefile.mk 2015-01-07 13:56:00.362944069 -0100 @@ -10,13 +10,13 @@ SubDirs := @@ -23,12 +23,12 @@ diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/Makefile.mk b/llvm-3.5.0.src/ +#SubDirs += tsan +#SubDirs += ubsan diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.cc b/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.cc ---- a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.cc 2014-02-24 09:37:41.000000000 -0100 -+++ b/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.cc 2015-01-07 13:56:56.609240893 -0100 +--- a/projects/compiler-rt/lib/interception/interception_linux.cc 2014-02-24 09:37:41.000000000 -0100 ++++ b/projects/compiler-rt/lib/interception/interception_linux.cc 2015-01-07 13:56:56.609240893 -0100 @@ -24,12 +24,6 @@ return real == wrapper; } - + -#if !defined(__ANDROID__) // android does not have dlvsym -void *GetFuncAddrVer(const char *func_name, const char *ver) { - return dlvsym(RTLD_NEXT, func_name, ver); @@ -36,15 +36,15 @@ diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_lin -#endif // !defined(__ANDROID__) - } // namespace __interception - - + + diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.h b/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.h ---- a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.h 2014-02-24 09:37:41.000000000 -0100 -+++ b/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_linux.h 2015-01-07 13:56:41.617428317 -0100 +--- a/projects/compiler-rt/lib/interception/interception_linux.h 2014-02-24 09:37:41.000000000 -0100 ++++ b/projects/compiler-rt/lib/interception/interception_linux.h 2015-01-07 13:56:41.617428317 -0100 @@ -34,14 +34,8 @@ (::__interception::uptr) & (func), \ (::__interception::uptr) & WRAP(func)) - + -#if !defined(__ANDROID__) // android does not have dlvsym -# define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \ - ::__interception::real_##func = (func##_f)(unsigned long) \ @@ -53,6 +53,6 @@ diff -ur a/llvm-3.5.0.src/projects/compiler-rt/lib/interception/interception_lin # define INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver) \ INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func) -#endif // !defined(__ANDROID__) - + #endif // INTERCEPTION_LINUX_H #endif // __linux__ || __FreeBSD__ diff --git a/sys-devel/llvm/files/llvm-3.5-musl-support.patch b/sys-devel/llvm/files/llvm-3.5-musl-support.patch index be92809..4abb854 100644 --- a/sys-devel/llvm/files/llvm-3.5-musl-support.patch +++ b/sys-devel/llvm/files/llvm-3.5-musl-support.patch @@ -1,8 +1,8 @@ adapted from llvm-alpine-linux.patch from Alpine diff -ru llvm-3.5.0.src.orig/include/llvm/ADT/Triple.h llvm-3.5.0.src/include/llvm/ADT/Triple.h ---- llvm-3.5.0.src.orig/include/llvm/ADT/Triple.h 2014-07-18 17:28:19.000000000 -0300 -+++ llvm-3.5.0.src/include/llvm/ADT/Triple.h 2014-11-12 14:44:41.738448045 -0200 +--- include/llvm/ADT/Triple.h 2014-07-18 17:28:19.000000000 -0300 ++++ include/llvm/ADT/Triple.h 2014-11-12 14:44:41.738448045 -0200 @@ -149,6 +149,10 @@ EABIHF, Android, @@ -16,8 +16,8 @@ diff -ru llvm-3.5.0.src.orig/include/llvm/ADT/Triple.h llvm-3.5.0.src/include/ll Cygnus, Only in llvm-3.5.0.src/include/llvm/ADT: Triple.h.orig diff -ru llvm-3.5.0.src.orig/lib/Support/Triple.cpp llvm-3.5.0.src/lib/Support/Triple.cpp ---- llvm-3.5.0.src.orig/lib/Support/Triple.cpp 2014-07-18 17:28:19.000000000 -0300 -+++ llvm-3.5.0.src/lib/Support/Triple.cpp 2014-11-12 14:47:06.565122146 -0200 +--- lib/Support/Triple.cpp 2014-07-18 17:28:19.000000000 -0300 ++++ lib/Support/Triple.cpp 2014-11-12 14:47:06.565122146 -0200 @@ -168,6 +168,9 @@ case CODE16: return "code16"; case EABI: return "eabi"; @@ -40,8 +40,8 @@ diff -ru llvm-3.5.0.src.orig/lib/Support/Triple.cpp llvm-3.5.0.src/lib/Support/T .StartsWith("itanium", Triple::Itanium) Only in llvm-3.5.0.src/lib/Support: Triple.cpp.orig diff -ru llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.cpp llvm-3.5.0.src/lib/Target/ARM/ARMSubtarget.cpp ---- llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.cpp 2014-07-16 23:13:31.000000000 -0300 -+++ llvm-3.5.0.src/lib/Target/ARM/ARMSubtarget.cpp 2014-11-12 14:50:40.025133104 -0200 +--- lib/Target/ARM/ARMSubtarget.cpp 2014-07-16 23:13:31.000000000 -0300 ++++ lib/Target/ARM/ARMSubtarget.cpp 2014-11-12 14:50:40.025133104 -0200 @@ -273,6 +273,8 @@ case Triple::EABIHF: case Triple::GNUEABI: @@ -52,8 +52,8 @@ diff -ru llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.cpp llvm-3.5.0.src/lib/ break; default: diff -ru llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.h llvm-3.5.0.src/lib/Target/ARM/ARMSubtarget.h ---- llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.h 2014-07-16 23:13:31.000000000 -0300 -+++ llvm-3.5.0.src/lib/Target/ARM/ARMSubtarget.h 2014-11-12 14:53:36.571808822 -0200 +--- lib/Target/ARM/ARMSubtarget.h 2014-07-16 23:13:31.000000000 -0300 ++++ lib/Target/ARM/ARMSubtarget.h 2014-11-12 14:53:36.571808822 -0200 @@ -372,8 +372,10 @@ bool isTargetEHABICompatible() const { return (TargetTriple.getEnvironment() == Triple::EABI || @@ -65,60 +65,3 @@ diff -ru llvm-3.5.0.src.orig/lib/Target/ARM/ARMSubtarget.h llvm-3.5.0.src/lib/Ta TargetTriple.getEnvironment() == Triple::Android) && !isTargetDarwin() && !isTargetWindows(); } -diff -ru llvm-3.5.0.src.orig/tools/clang/lib/Driver/Tools.cpp llvm-3.5.0.src/tools/clang/lib/Driver/Tools.cpp ---- llvm-3.5.0.src.orig/tools/clang/lib/Driver/Tools.cpp 2014-08-07 07:51:51.000000000 -0300 -+++ llvm-3.5.0.src/tools/clang/lib/Driver/Tools.cpp 2014-11-12 15:11:31.901864030 -0200 -@@ -7182,8 +7182,14 @@ - return "/system/bin/linker64"; - else - return "/system/bin/linker"; -- } else if (ToolChain.getArch() == llvm::Triple::x86 || -- ToolChain.getArch() == llvm::Triple::sparc) -+ } else if (ToolChain.getArch() == llvm::Triple::x86) { -+ switch (ToolChain.getTriple().getEnvironment()) { -+ case llvm::Triple::Musl: -+ return "/lib/ld-musl-i386.so.1"; -+ default: -+ return "/lib/ld-linux.so.2"; -+ } -+ } else if (ToolChain.getArch() == llvm::Triple::sparc) - return "/lib/ld-linux.so.2"; - else if (ToolChain.getArch() == llvm::Triple::aarch64 || - ToolChain.getArch() == llvm::Triple::arm64) -@@ -7193,10 +7199,17 @@ - return "/lib/ld-linux-aarch64_be.so.1"; - else if (ToolChain.getArch() == llvm::Triple::arm || - ToolChain.getArch() == llvm::Triple::thumb) { -- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) -+ switch (ToolChain.getTriple().getEnvironment()) { -+ case llvm::Triple::Musl: -+ case llvm::Triple::MuslEABI: -+ return "/lib/ld-musl-arm.so.3"; -+ case llvm::Triple::MuslEABIHF: -+ return "/lib/ld-musl-armhf.so.3"; -+ case llvm::Triple::GNUEABIHF: - return "/lib/ld-linux-armhf.so.3"; -- else -+ default: - return "/lib/ld-linux.so.3"; -+ } - } else if (ToolChain.getArch() == llvm::Triple::armeb || - ToolChain.getArch() == llvm::Triple::thumbeb) { - if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) -@@ -7227,8 +7240,14 @@ - else if (ToolChain.getArch() == llvm::Triple::x86_64 && - ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUX32) - return "/libx32/ld-linux-x32.so.2"; -- else -- return "/lib64/ld-linux-x86-64.so.2"; -+ else { -+ switch (ToolChain.getTriple().getEnvironment()) { -+ case llvm::Triple::Musl: -+ return "/lib/ld-musl-x86_64.so.1"; -+ default: -+ return "/lib64/ld-linux-x86-64.so.2"; -+ } -+ } - } - - static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, diff --git a/sys-devel/llvm/llvm-3.5.0-r99.ebuild b/sys-devel/llvm/llvm-3.5.0-r99.ebuild index 9db3f59..22c7f6b 100644 --- a/sys-devel/llvm/llvm-3.5.0-r99.ebuild +++ b/sys-devel/llvm/llvm-3.5.0-r99.ebuild @@ -149,12 +149,13 @@ src_prepare() { epatch "${FILESDIR}"/${PN}-3.5-musl-fixes.patch epatch "${FILESDIR}"/${PN}-3.5-musl-support.patch - epatch "${FILESDIR}"/${PN}-3.5-musl-compiler-rt.patch epatch "${FILESDIR}"/${P}-fix_LLVMExports_cmake.patch if use clang; then # Automatically select active system GCC's libraries, bugs #406163 and #417913 + epatch "${FILESDIR}"/${PN}-3.5-musl-compiler-rt.patch + epatch "${FILESDIR}"/${PN}-3.5-musl-clang-support.patch epatch "${FILESDIR}"/clang-3.5-gentoo-runtime-gcc-detection-v3.patch epatch "${FILESDIR}"/clang-3.5-gentoo-install.patch