Queries related to MIPS cross Linker

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For our MIPS cross-compiler,
gcc version is  4.2.0
binutils version is 2.17.90.

When our application  tries to link with third-party library,  the
MIPS linker reports  failure as
"ld: Bad value"

The library is not available to us.

Since the linking passes after applying the patches  given by Richard
Sandiford at http://sourceware.org/ml/binutils/2008-06/msg00270.html ,
we  figured that the error has something to do with multigot feature.
The description of the patch is difficult for us to understand.

We want to reproduce the failure with a test program.  As  a first
step, we are are trying to access  many extern symbols
from main().
But when the GOT table size  exceeds 64 Kb,  the linker fails with
message such as :
"relocation truncated to fit: R_MIPS_GOT16 against `global_variable__d13155'"


With less than 64 Kb GOT ,  I can see that the binary is in multigot
mode. (Each function's prolog is assigning
a different value for gp reg. )

a) In multigot mode, why should linker fail to create larger-than-64Kb
 GOT ?   The very purpose of multigot
is to overcome this limit, isn't it ?

b) I looked at another application built in our company with same
toolchain.  Its GOT is 188 Kb in size.
(There are about 33000 extern symbol entries in the GOT .) I  looked
at its linking options and did not find anything special.
I looked  at its binary.  It is NOT in xgot mode.  Any clues ?

c) For the above binary mentioned in  ,  I can see lot of relocation
entries in .rel.dyn for the GOT table fixup.  From what I know,
in MIPS,  reloc entries are not needed for GOT relocation.  Why would
the linker output those for this binary?

d) I want to understand the ld test-suite
(/toolchain/testsuite/binutils/testsuite/ld/ld-mips-elf)  Is there any
writeup  somewhere ?

                 thanks a lot
                 naveen

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux