This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: [PATCH] Support for R_SPARC_OLO10 relocations
- To: Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
- Subject: Re: [PATCH] Support for R_SPARC_OLO10 relocations
- From: Richard Henderson <rth@cygnus.com>
- Date: Thu, 8 Jul 1999 16:09:22 -0700
- Cc: ian@cygnus.com, binutils@sourceware.cygnus.com, "David S. Miller" <davem@redhat.com>
- References: <19990705174729.B1736@mff.cuni.cz>
On Mon, Jul 05, 1999 at 05:47:29PM +0200, Jakub Jelinek wrote:
> * include/elf/sparc.h (ELF64_R_TYPE_DATA): Sign extend the value.
> (ELF64_R_TYPE_INFO): Mask out all but low 24 bits of data.
Actually, these macros macros made assumptions about the size
of bfd_vma. They did before your patch too, so I don't hold
that against you, but that doesn't mean it doesn't want fixing.
Plus I went ahead and killed DT_SPARC_PLTFMT. It was me that
added it in the first place, before we had a real ABI.
I committed this.
r~
Index: sparc.h
===================================================================
RCS file: /cvs/binutils/binutils/include/elf/sparc.h,v
retrieving revision 1.2
diff -c -p -d -r1.2 sparc.h
*** sparc.h 1999/06/10 21:00:53 1.2
--- sparc.h 1999/07/08 23:00:24
*************** END_RELOC_NUMBERS
*** 138,158 ****
/* Relocation macros. */
! #define ELF64_R_TYPE_DATA(info) (((bfd_vma) (info) << 32) >> 40)
! #define ELF64_R_TYPE_ID(info) (((bfd_vma) (info) << 56) >> 56)
! #define ELF64_R_TYPE_INFO(data, type) (((bfd_vma) (data) << 8) \
! + (bfd_vma) (type))
!
! #define DT_SPARC_REGISTER 0x70000001
! /*
! * FIXME: NOT ABI -- GET RID OF THIS
! * Defines the format used by the .plt. Currently defined values are
! * 0 -- reserved to SI
! * 1 -- absolute address in .got.plt
! * 2 -- got-relative address in .got.plt
! */
! #define DT_SPARC_PLTFMT 0x70000001
#endif /* _ELF_SPARC_H */
--- 138,152 ----
/* Relocation macros. */
! #define ELF64_R_TYPE_DATA(info) \
! (((bfd_signed_vma)((info) >> 8) ^ 0x800000) - 0x800000)
! #define ELF64_R_TYPE_ID(info) \
! ((info) & 0xff)
! #define ELF64_R_TYPE_INFO(data, type) \
! (((bfd_vma) ((data) & 0xffffff) << 8) | (bfd_vma) (type))
! /* Values for Elf64_Dyn.d_tag. */
! #define DT_SPARC_REGISTER 0x70000001
#endif /* _ELF_SPARC_H */