Subject: Link errors

From: [email-masked]
Date: Mon, 19 Jul 2004 16:48:04 +0100

Hi All,

I'm new to MIPs architecture and Linux so apologies in advance!

I'm trying to build an application to run on the Au1100.
I have a crosscompiler setup (gcc 3.2) and can build a 'hello world' that
runs on the target.
When I try building a more serious application using Kdevelop - with the
appropriate settings
for the crosstools - I get lots of errors like this:
assert.o(.text+0x1cc): relocation truncated to fit: R_MIPS_GOT16
__assert_program_name
/opt/crosstool/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/mipsel-unknown
-linux-gnu/lib/libc.a(dcigettext.o): In function `_nl_find_msg':
dcigettext.o(.text+0x153c): relocation truncated to fit: R_MIPS_CALL16
_nl_load_domain
/opt/crosstool/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/mipsel-unknown
-linux-gnu/lib/libc.a(finddomain.o): In function `_nl_find_domain':

Could someone tell me what I'm doing wrong please.

Thanks,

Martin.

 ###  OXFORD INSTRUMENTS   http://www.oxford-instruments.com/  ### 

Unless stated above to be non-confidential, this E-mail and any 
attachments are private and confidential and are for the addressee 
only and may not be used, copied or disclosed save to the addressee.
If you have received this E-mail in error please notify us upon receipt 
and delete it from your records. Internet communications are not secure 
and Oxford Instruments is not responsible for their abuse by third 
parties nor for any alteration or corruption in transmission.

---

From: David Daney <[email-masked]>
Date: Mon, 19 Jul 2004 09:43:47 -0700

> Could someone tell me what I'm doing wrong please.
This is the got overflow problem.

Later versions of binutils have multi-got support (2.15 for example),
which under most circumstances will fix the problem.

If you have extreamly large compilation units you might have to use a
32bit got index.  In GCC3.4 and later this is done with the -mxgot
option.  With eariler versions of GCC you have to pass -xgot to the
assembler (-Wa,-xgot IIRC).

David Daney.