This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
[PATCH] ppc64 elf relocations
- From: Steve Munroe <sjmunroe at vnet dot ibm dot com>
- To: libc-alpha at sources dot redhat dot com
- Cc: aj at suse dot de, geoffk at geoffk dot org, roland at frob dot com
- Date: Mon, 9 Sep 2002 11:25:55 -0500
- Subject: [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 */