This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc 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]

[PATCH] ppc64 elf relocations


The patch below adds the PowerPC64 specific elf relocations and dynamic types
defined by the ABI. These symbols are needed by dl_machine.h.


2002-09-09  Steven Munroe  <sjmunroe@us.ibm.com>

	* elf/elf.h: Add powerpc64 specific elf relocation and dynamic types.
	
diff -rc2PN libc23-cvstip-20020906/elf/elf.h libc23/elf/elf.h
*** libc23-cvstip-20020906/elf/elf.h	Thu May 30 18:15:26 2002
--- libc23/elf/elf.h	Mon Sep  9 11:10:19 2002
***************
*** 1872,1875 ****
--- 1872,1947 ----
  #define R_PPC_NUM		37
  
+ /* PowerPC64 relocations defined by the ABIs */
+ #define R_PPC64_NONE    R_PPC_NONE
+ #define R_PPC64_ADDR32  R_PPC_ADDR32  /* 32bit absolute address.  */
+ #define R_PPC64_ADDR24  R_PPC_ADDR24  /* 26bit address, word aligned.  */
+ #define R_PPC64_ADDR16  R_PPC_ADDR16  /* 16bit absolute address. */
+ #define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of abs. address.  */
+ #define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of abs. address. */
+ #define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits.  */
+ #define R_PPC64_ADDR14 R_PPC_ADDR14   /* 16bit address, word aligned.  */
+ #define R_PPC64_ADDR14_BRTAKEN  R_PPC_ADDR14_BRTAKEN
+ #define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
+ #define R_PPC64_REL24   R_PPC_REL24 /* PC relative 26 bit, word aligned.  */
+ #define R_PPC64_REL14   R_PPC_REL14 /* PC relative 16 bit. */
+ #define R_PPC64_REL14_BRTAKEN   R_PPC_REL14_BRTAKEN
+ #define R_PPC64_REL14_BRNTAKEN  R_PPC_REL14_BRNTAKEN
+ #define R_PPC64_GOT16     R_PPC_GOT16
+ #define R_PPC64_GOT16_LO  R_PPC_GOT16_LO
+ #define R_PPC64_GOT16_HI  R_PPC_GOT16_HI
+ #define R_PPC64_GOT16_HA  R_PPC_GOT16_HA
+ 
+ #define R_PPC64_COPY      R_PPC_COPY
+ #define R_PPC64_GLOB_DAT  R_PPC_GLOB_DAT
+ #define R_PPC64_JMP_SLOT  R_PPC_JMP_SLOT
+ #define R_PPC64_RELATIVE  R_PPC_RELATIVE
+ 
+ #define R_PPC64_UADDR32   R_PPC_UADDR32
+ #define R_PPC64_UADDR16   R_PPC_UADDR16
+ #define R_PPC64_REL32     R_PPC_REL32
+ #define R_PPC64_PLT32     R_PPC_PLT32
+ #define R_PPC64_PLTREL32  R_PPC_PLTREL32
+ #define R_PPC64_PLT16_LO  R_PPC_PLT16_LO
+ #define R_PPC64_PLT16_HI  R_PPC_PLT16_HI
+ #define R_PPC64_PLT16_HA  R_PPC_PLT16_HA
+ 
+ #define R_PPC64_SECTOFF     R_PPC_SECTOFF
+ #define R_PPC64_SECTOFF_LO  R_PPC_SECTOFF_LO
+ #define R_PPC64_SECTOFF_HI  R_PPC_SECTOFF_HI
+ #define R_PPC64_SECTOFF_HA  R_PPC_SECTOFF_HA
+ #define R_PPC64_ADDR30          37  /* word30 (S + A - P) >> 2.  */
+ #define R_PPC64_ADDR64          38  /* doubleword64 S + A.  */
+ #define R_PPC64_ADDR16_HIGHER   39  /* half16 #higher(S + A).  */
+ #define R_PPC64_ADDR16_HIGHERA  40  /* half16 #highera(S + A).  */
+ #define R_PPC64_ADDR16_HIGHEST  41  /* half16 #highest(S + A).  */
+ #define R_PPC64_ADDR16_HIGHESTA 42  /* half16 #highesta(S + A). */
+ #define R_PPC64_UADDR64     43  /* doubleword64 S + A.  */
+ #define R_PPC64_REL64       44  /* doubleword64 S + A - P.  */
+ #define R_PPC64_PLT64       45  /* doubleword64 L + A.  */
+ #define R_PPC64_PLTREL64    46  /* doubleword64 L + A - P.  */
+ #define R_PPC64_TOC16       47  /* half16* S + A - .TOC.  */
+ #define R_PPC64_TOC16_LO    48  /* half16 #lo(S + A - .TOC.).  */
+ #define R_PPC64_TOC16_HI    49  /* half16 #hi(S + A - .TOC.).  */
+ #define R_PPC64_TOC16_HA    50  /* half16 #ha(S + A - .TOC.).  */
+ #define R_PPC64_TOC         51  /* doubleword64 .TOC. */
+ #define R_PPC64_PLTGOT16    52  /* half16* M + A.  */
+ #define R_PPC64_PLTGOT16_LO 53  /* half16 #lo(M + A).  */
+ #define R_PPC64_PLTGOT16_HI 54  /* half16 #hi(M + A).  */
+ #define R_PPC64_PLTGOT16_HA 55  /* half16 #ha(M + A).  */
+ 
+ #define R_PPC64_ADDR16_DS      56 /* half16ds* (S + A) >> 2.  */
+ #define R_PPC64_ADDR16_LO_DS   57 /* half16ds  #lo(S + A) >> 2.  */
+ #define R_PPC64_GOT16_DS       58 /* half16ds* (G + A) >> 2.  */
+ #define R_PPC64_GOT16_LO_DS    59 /* half16ds  #lo(G + A) >> 2.  */
+ #define R_PPC64_PLT16_LO_DS    60 /* half16ds  #lo(L + A) >> 2.  */
+ #define R_PPC64_SECTOFF_DS     61 /* half16ds* (R + A) >> 2.  */
+ #define R_PPC64_SECTOFF_LO_DS  62 /* half16ds  #lo(R + A) >> 2.  */
+ #define R_PPC64_TOC16_DS       63 /* half16ds* (S + A - .TOC.) >> 2.  */
+ #define R_PPC64_TOC16_LO_DS    64 /* half16ds  #lo(S + A - .TOC.) >> 2.  */
+ #define R_PPC64_PLTGOT16_DS    65 /* half16ds* (M + A) >> 2.  */
+ #define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds  #lo(M + A) >> 2.  */
+ /* Keep this the last entry.  */
+ #define R_PPC64_NUM		67
+ 
  /* The remaining relocs are from the Embedded ELF ABI, and are not
     in the SVR4 ELF ABI.  */
***************
*** 1903,1906 ****
--- 1975,1981 ----
  #define R_PPC_TOC16		255
  
+ /* PowerPC64 specific values for the Dyn d_tag field.  */
+ #define DT_PPC64_GLINK  (DT_LOPROC + 0)
+ #define DT_PPC64_NUM    1
  
  /* ARM specific declarations */
  


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