aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch')
-rw-r--r--toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch b/toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch
new file mode 100644
index 0000000000..f5cc0a74ee
--- /dev/null
+++ b/toolchain/gcc/patches/arc-2017.09-release/900-bad-mips16-crt.patch
@@ -0,0 +1,30 @@
+commit 9dc38e48f7a6f88b7ac7bfaced91f53660204e46
+Author: Florian Fainelli <florian@openwrt.org>
+Date: Fri Apr 5 12:36:06 2013 +0000
+
+ toolchain/gcc: .init and .fini need to pick one ISA
+
+ The .init and .fini sections are built by concatenating code
+ fragments. Putting mips16 code in the middle of a mips32 code block
+ doesn't work. Make gcc built the magic crt stuff in no-mips16 mode.
+
+ This is specific to 4.6-linaro but is probably portable to other gcc
+ flavors. Adding this to the t-libgcc-mips16 makefile fragment is a
+ hack not suitable for pushing upstream, but there is no mips/t-linux
+ or mips/t-uclibc and I am not going to touch gcc/configure for two
+ lines.
+
+ Signed-off-by: Jay Carlson <nop@nop.com>
+ Signed-off-by: Florian Fainelli <florian@openwrt.org>
+
+ SVN-Revision: 36200
+
+--- a/libgcc/config/mips/t-mips16
++++ b/libgcc/config/mips/t-mips16
+@@ -43,3 +43,6 @@ SYNC_CFLAGS = -mno-mips16
+
+ # Version these symbols if building libgcc.so.
+ SHLIB_MAPFILES += $(srcdir)/config/mips/libgcc-mips16.ver
++
++CRTSTUFF_T_CFLAGS += -mno-mips16
++CRTSTUFF_T_CFLAGS_S += -mno-mips16