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