This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Recent mipsel-linux-gnu breakge


Thiemo,

This patch:

   http://sources.redhat.com/ml/binutils/2003-06/msg00374.html

reduced the .got alignment from 16 to 4, but unfortunately the 16-byte
assumption is hard-coded into the ld scripts:

OTHER_GOT_SYMBOLS='
  _gp = ALIGN(16) + 0x7ff0;
'

The stubs generated by elfxx-mips.c assume that _gp = .got + 0x7ff0:

#define STUB_LW(abfd)						\
  ((ABI_64_P (abfd)  						\
    ? 0xdf998010		/* ld t9,0x8010(gp) */		\
    : 0x8f998010))              /* lw t9,0x8010(gp) */

but that no longer holds: _gp can be anywhere between .got + 0x7ff0
and .got + 0x7ffc.  This has broken mipsel-linux-gnu.

One possible fix is to change ALIGN (16) to ALIGN (4) in the ld scripts.
But I'm worried that people will have created custom scripts based off
the default ones.  This definitely seems to be a user-visible change.
And it might seems like a gratuitous one in some eyes ;)

Would it be OK to go back to 16-byte .got alignment?

Richard


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]