This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Change got[1] flag for MIPS
- To: binutils at sourceware dot cygnus dot com
- Subject: Change got[1] flag for MIPS
- From: jaeger at informatik dot uni-kl dot de
- Date: Wed, 5 Apr 2000 03:28:15 MET DST
- Cc: ralf at uni-koblenz dot de
- Source-Info: From (or Sender) name not authenticated.
Last August there was a discussion on the binutils list started by
Ralf Baechle about "elf32-mips breaks binary compatibility" (see
<http://sourceware.cygnus.com/ml/binutils/1999-q3/msg00446.html>).
I propose to add the following patch to binutils (I discussed the
patch with Ralf). glibc needs also to be changed (the patch is small
and easy). This way we get binary compatibility with older binutils
again.
Andreas
2000-04-04 Andreas Jaeger <aj@suse.de>
* elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Change
value of got[1] to mark this as a file generated by new binutils.
Index: bfd/elf32-mips.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-mips.c,v
retrieving revision 1.60
diff -u -p -r1.60 elf32-mips.c
--- elf32-mips.c 2000/03/11 02:23:10 1.60
+++ elf32-mips.c 2000/04/05 01:21:58
@@ -8668,7 +8668,15 @@ _bfd_mips_elf_finish_dynamic_sections (o
if (sgot != NULL && sgot->_raw_size > 0)
{
MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0, sgot->contents);
- MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0x80000000,
+ /* Older binutils used to write 0x80000000. The value has been
+ changed to signal that newer binutils are used. We do need
+ to differentiate because older binutils generated some wrong
+ relocations - and the dynamic linker has to work around this.
+ Since this bug is fixed, the workaround has to be disabled.
+ For details see the thread "elf32-mips breaks binary
+ compatibility" at
+ <http://sourceware.cygnus.com/ml/binutils/1999-q3/msg00446.html>. */
+ MIPS_ELF_PUT_WORD (output_bfd, (bfd_vma) 0xC0000000,
sgot->contents + MIPS_ELF_GOT_SIZE (output_bfd));
}
--
Andreas Jaeger
SuSE Labs aj@suse.de