Skip to content

Instantly share code, notes, and snippets.

@shirro
Created June 1, 2012 06:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shirro/2849698 to your computer and use it in GitHub Desktop.
Save shirro/2849698 to your computer and use it in GitHub Desktop.
Raspbian Clang 3.0 diff
diff -pruN orig/debian/changelog clang-3.0/debian/changelog
--- orig/debian/changelog 2012-02-25 13:05:54.000000000 +0000
+++ clang-3.0/debian/changelog 2012-06-01 01:21:32.687758804 +0000
@@ -1,3 +1,10 @@
+clang (3.0-6+rpi1) unstable; urgency=low
+
+ * Added modified patch from Ubuntu to target 1176jzfs-s cpu
+ * Added patch from Ubuntu to fix armhf ld path
+
+ -- Paul Shirren <shirro@shirro.com> Fri, 01 Jun 2012 10:51:00 +0930
+
clang (3.0-6) unstable; urgency=low
* Improve the soname patch
diff -pruN orig/debian/patches/26-armhf-linker-name.diff clang-3.0/debian/patches/26-armhf-linker-name.diff
--- orig/debian/patches/26-armhf-linker-name.diff 1970-01-01 00:00:00.000000000 +0000
+++ clang-3.0/debian/patches/26-armhf-linker-name.diff 2012-06-01 00:55:15.157747024 +0000
@@ -0,0 +1,90 @@
+Index: clang-3.0/tools/clang/lib/Driver/Tools.cpp
+===================================================================
+--- clang-3.0.orig/tools/clang/lib/Driver/Tools.cpp 2012-03-02 01:59:31.000000000 -0500
++++ clang-3.0/tools/clang/lib/Driver/Tools.cpp 2012-03-02 02:00:09.746488895 -0500
+@@ -526,6 +526,7 @@
+ // Select the default based on the platform.
+ switch(Triple.getEnvironment()) {
+ case llvm::Triple::GNUEABI:
++ case llvm::Triple::GNUEABIHF:
+ ABIName = "aapcs-linux";
+ break;
+ case llvm::Triple::EABI:
+@@ -586,11 +587,18 @@
+ FloatABI = "softfp";
+ break;
+ }
++ else if (getToolChain().getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) {
++ FloatABI = "hard";
++ break;
++ }
+ }
+ // fall through
+
+ default:
+ switch(Triple.getEnvironment()) {
++ case llvm::Triple::GNUEABIHF:
++ FloatABI = "hard";
++ break;
+ case llvm::Triple::GNUEABI:
+ FloatABI = "softfp";
+ break;
+@@ -4310,8 +4318,14 @@
+ if (ToolChain.getArch() == llvm::Triple::x86)
+ CmdArgs.push_back("/lib/ld-linux.so.2");
+ else if (ToolChain.getArch() == llvm::Triple::arm ||
+- ToolChain.getArch() == llvm::Triple::thumb)
++ ToolChain.getArch() == llvm::Triple::thumb) {
++ // FIXME: default triplet and command line args
++#if defined(__ARM_PCS_VFP)
++ CmdArgs.push_back("/lib/ld-linux-armhf.so.3");
++#else
+ CmdArgs.push_back("/lib/ld-linux.so.3");
++#endif
++ }
+ else if (ToolChain.getArch() == llvm::Triple::ppc)
+ CmdArgs.push_back("/lib/ld.so.1");
+ else if (ToolChain.getArch() == llvm::Triple::ppc64)
+Index: clang-3.0/tools/clang/lib/CodeGen/TargetInfo.cpp
+===================================================================
+--- clang-3.0.orig/tools/clang/lib/CodeGen/TargetInfo.cpp 2012-03-02 01:59:31.000000000 -0500
++++ clang-3.0/tools/clang/lib/CodeGen/TargetInfo.cpp 2012-03-02 02:00:09.746488895 -0500
+@@ -2328,7 +2328,7 @@
+
+ bool isEABI() const {
+ StringRef Env = getContext().getTargetInfo().getTriple().getEnvironmentName();
+- return (Env == "gnueabi" || Env == "eabi");
++ return (Env == "gnueabihf" || Env == "gnueabi" || Env == "eabi");
+ }
+
+ private:
+Index: clang-3.0/tools/clang/lib/Driver/ToolChains.cpp
+===================================================================
+--- clang-3.0.orig/tools/clang/lib/Driver/ToolChains.cpp 2012-03-02 01:59:41.000000000 -0500
++++ clang-3.0/tools/clang/lib/Driver/ToolChains.cpp 2012-03-02 02:04:04.992139693 -0500
+@@ -1654,7 +1654,12 @@
+ SmallVectorImpl<StringRef> &Triples) {
+ if (HostArch == llvm::Triple::arm || HostArch == llvm::Triple::thumb) {
+ static const char *const ARMLibDirs[] = { "/lib" };
++ // FIXME: default triplet and command line args
++#if defined(__ARM_PCS_VFP)
++ static const char *const ARMTriples[] = { "arm-linux-gnueabihf" };
++#else
+ static const char *const ARMTriples[] = { "arm-linux-gnueabi" };
++#endif
+ LibDirs.append(ARMLibDirs, ARMLibDirs + llvm::array_lengthof(ARMLibDirs));
+ Triples.append(ARMTriples, ARMTriples + llvm::array_lengthof(ARMTriples));
+ } else if (HostArch == llvm::Triple::x86_64) {
+@@ -1801,8 +1806,11 @@
+ return "powerpc-linux-gnu";
+ return TargetTriple.str();
+ case llvm::Triple::arm:
+- if (llvm::sys::fs::exists(SysRoot + "/lib/arm-linux-gnueabi"))
++ case llvm::Triple::thumb:
++ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABI)
+ return "arm-linux-gnueabi";
++ if (TargetTriple.getEnvironment() == llvm::Triple::GNUEABIHF)
++ return "arm-linux-gnueabihf";
+ return TargetTriple.str();
+
+ }
diff -pruN orig/debian/patches/27-armhf-is-armv6.patch clang-3.0/debian/patches/27-armhf-is-armv6.patch
--- orig/debian/patches/27-armhf-is-armv6.patch 1970-01-01 00:00:00.000000000 +0000
+++ clang-3.0/debian/patches/27-armhf-is-armv6.patch 2012-06-01 00:50:55.607746184 +0000
@@ -0,0 +1,19 @@
+Description: Always build armhf for cortex-a8 CPUs, never lower
+Author: Adam Conrad <adconrad@ubuntu.com>
+Forwarded: no
+Reviewed-By: Colin Watson <cjwatson@ubuntu.com>
+Last-Update: 2012-04-24
+
+--- clang-3.0.orig/tools/clang/lib/Driver/Tools.cpp
++++ clang-3.0/tools/clang/lib/Driver/Tools.cpp
+@@ -434,6 +434,10 @@ static const char *getARMTargetCPU(const
+ const llvm::Triple &Triple) {
+ // FIXME: Warn on inconsistent use of -mcpu and -march.
+
++ // always return armv7-a for GNUEABIHF
++ if (Triple.getEnvironment() == llvm::Triple::GNUEABIHF)
++ return "arm1176jzf-s";
++
+ // If we have -mcpu=, use that.
+ if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
+ return A->getValue(Args);
diff -pruN orig/debian/patches/series clang-3.0/debian/patches/series
--- orig/debian/patches/series 2012-02-25 13:05:54.000000000 +0000
+++ clang-3.0/debian/patches/series 2012-06-01 00:57:22.977746141 +0000
@@ -6,3 +6,5 @@
23-strlcpy_strlcat_warning_removed.diff
24-path-multiarch.diff
25-amdfam10.diff
+26-armhf-linker-name.diff
+27-armhf-is-armv6.patch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment