I wanted to make sure I reported back my results...
I updated only binutils to the latest version (18.104.22.168.4), cleaned the source
trees, and rebuilt with success. This saved me much time that might have been
spent on the -GN or -Wa,xgot workarounds (which might not even have worked).
So thanks a lot Thiemo!
[mailto:email@example.com]On Behalf Of Thiemo Seufer
Sent: Tuesday, May 27, 2003 3:27 PM
To: Brad Barrett
Cc: 'Linux-Mips@Linux-Mips. Org'
Subject: Re: "relocation truncated to fit"
Brad Barrett wrote:
> I have a userspace toolchain issue. I'm not sure where to post it, so I'll
> start here.
firstname.lastname@example.org is probably the better place for this.
> I built the cross-tools myself. They are now about 6-8 months old. They
> consist of:
> - gcc version 3.2.1 20020903 (prerelease)
> - GNU ld version 22.214.171.124.10 20021010 [from H.J. Lu]
> - glibc version 2.2.5
An upgrade is IMHO the best solution:
gcc 3.3 will fix some "branch out of range" issues, and binutils
newer than 126.96.36.199.18 implement multigot. Both together should
solve the problem.
> What I know:
> Googling hasn't turn up much, with the exception of an intriguing exchange
> Sept 2001 on this mailing list:
The GOT overflow problem is quite well known, it hits every largish
executable for O32 MIPS. Most notably Mozilla and parts of KDE were
> Petter Reinholdtsen reports similar messages when (native) compiling "a huge
> program" (actually Opera) on an Indy:
> Wilbern Cobb suggests using -G4, -G2, or -G1, which Petter reports reduces the
> messages but does not eliminate them.
These reduce GOT usage at the expense of speed and size, so they
help a bit as workaround.
> Then Ryan Murray says that every static
> library used in the link, including libc_noshared.a and libgcc.a, must be
> compiled with -Wa,xgot.
Would also work, but is binary incompatible then.