Bug#519006: mips/ld: non-dynamic relocations refer to dynamic symbol
Hi all,
I have made some progress on this bug, though it has not progress in the
expected direction. In other words I got some surprises.
First of all it the bug has been introduced in binutils when introducing
the MIPS PLT support [1] (commits around 2008-08-08). I am still
convinced it is actually a binutils bug. Secondly, if the problem is
actually not present in gcc-snapshot in gcc 4.5 we have *in Debian*, it
is not due to the fix linked in the bugzilla entry. It is due to the
fact we default to -mplt on these compilers. It is possible to
workaround the bug on gcc 4.4 using -mplt (like it is possible to
workaround it by dropping the -g).
Given all of that, the only forseen solution for this fix is to also
default to -mplt on gcc 4.4. It also brings speed improvements, as
well as some more "standard" binaries with regard to other
architectures. On the other hand, I understand it is something quite
risky so close to a release. If we go for this solution, we may want
to trigger a rebuild of part of the archive as it is currently done
on sparc.
Cheers,
Aurelien
[1] http://readlist.com/lists/gcc.gnu.org/gcc/4/22455.html
diff -u gcc-4.4-4.4.4/debian/changelog gcc-4.4-4.4.4/debian/changelog
--- gcc-4.4-4.4.4/debian/changelog
+++ gcc-4.4-4.4.4/debian/changelog
@@ -1,3 +1,10 @@
+gcc-4.4 (4.4.4-11+mipsplt) UNRELEASED; urgency=low
+
+ [ Aurelien Jarno ]
+ * Default to -mplt on mips(el).
+
+ -- Aurelien Jarno <aurel32@debian.org> Mon, 30 Aug 2010 15:58:29 +0000
+
gcc-4.4 (4.4.4-11) unstable; urgency=medium
* Update to SVN 20100824 from the gcc-4_4-branch (r163521).
diff -u gcc-4.4-4.4.4/debian/rules2 gcc-4.4-4.4.4/debian/rules2
--- gcc-4.4-4.4.4/debian/rules2
+++ gcc-4.4-4.4.4/debian/rules2
@@ -384,12 +384,14 @@
endif
ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE)))
+ CONFARGS += --with-mips-plt
ifeq ($(biarchn32)-$(biarch64),yes-yes)
CONFARGS += --enable-targets=all
endif
endif
ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE)))
+ CONFARGS += --with-mips-plt
ifeq ($(biarchn32)-$(biarch64),yes-yes)
CONFARGS += --enable-targets=all
endif
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
Reply to: