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 <n...@nop.com>
---
 .../gcc/patches/4.6-linaro/900-bad-mips16-crt      |    9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 toolchain/gcc/patches/4.6-linaro/900-bad-mips16-crt

diff --git a/toolchain/gcc/patches/4.6-linaro/900-bad-mips16-crt 
b/toolchain/gcc/patches/4.6-linaro/900-bad-mips16-crt
new file mode 100644
index 0000000..5bb2ffb
--- /dev/null
+++ b/toolchain/gcc/patches/4.6-linaro/900-bad-mips16-crt
@@ -0,0 +1,9 @@
+--- gcc/gcc/config/mips/t-libgcc-mips16~       2013-03-26 09:09:34.209077496 
-0400
++++ gcc/gcc/config/mips/t-libgcc-mips16        2013-03-26 18:21:01.717303669 
-0400
+@@ -43,3 +43,6 @@
+ 
+ # 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
-- 
1.7.9.5

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to