summary refs log tree commit diff
path: root/elf/elf.h
diff options
context:
space:
mode:
Diffstat (limited to 'elf/elf.h')
-rw-r--r--elf/elf.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/elf/elf.h b/elf/elf.h
index 02d092ffac..e78bcb5102 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -505,6 +505,7 @@ typedef struct
 					   entry */
 } Elf32_Verdef;
 
+#if 0
 /* XXX We have no information what types should be used for 64 bit
    architectures.  What is following is only an intelligent guess.  */
 typedef struct
@@ -518,6 +519,11 @@ typedef struct
   Elf64_Word	vd_next;		/* Offset in bytes to next verdef
 					   entry */
 } Elf64_Verdef;
+#else
+/* The linker doesn't even parameterize the version info swapping
+   routines.  I wonder if it should or is this good enough.  */
+typedef Elf32_Verdef Elf64_Verdef;
+#endif
 
 /* Legal values for vd_version (version revision).  */
 #define VER_DEF_NONE	0		/* No version */
@@ -537,6 +543,7 @@ typedef struct
 					   entry */
 } Elf32_Verdaux;
 
+#if 0
 /* XXX We have no information what types should be used for 64 bit
    architectures.  What is following is only an intelligent guess.  */
 typedef struct
@@ -545,6 +552,10 @@ typedef struct
   Elf64_Word	vda_next;		/* Offset in bytes to next verdaux
 					   entry */
 } Elf64_Verdaux;
+#else
+/* The linker doesn't even parameterize this -- should it?  */
+typedef Elf32_Verdaux Elf64_Verdaux;
+#endif
 
 /* Version dependency section.  */
 
@@ -559,6 +570,7 @@ typedef struct
 					   entry */
 } Elf32_Verneed;
 
+#if 0
 /* XXX We have no information what types should be used for 64 bit
    architectures.  What is following is only an intelligent guess.  */
 typedef struct
@@ -571,6 +583,10 @@ typedef struct
   Elf64_Word	vn_next;		/* Offset in bytes to next verneed
 					   entry */
 } Elf64_Verneed;
+#else
+/* The linker doesn't even parameterize this -- should it?  */
+typedef Elf32_Verneed Elf64_Verneed;
+#endif
 
 /* Legal values for vn_version (version revision).  */
 #define VER_NEED_NONE	 0		/* No version */
@@ -589,6 +605,7 @@ typedef struct
 					   entry */
 } Elf32_Vernaux;
 
+#if 0
 /* XXX We have no information what types should be used for 64 bit
    architectures.  What is following is only an intelligent guess.  */
 typedef struct
@@ -600,6 +617,10 @@ typedef struct
   Elf64_Word	vna_next;		/* Offset in bytes to next vernaux
 					   entry */
 } Elf64_Vernaux;
+#else
+/* The linker doesn't even parameterize these -- should it?  */
+typedef Elf32_Vernaux Elf64_Vernaux;
+#endif
 
 /* Legal values for vna_flags.  */
 #define VER_FLG_WEAK	0x2		/* Weak verison identifier */
@@ -732,6 +753,36 @@ typedef struct
 #define R_SPARC_RELATIVE 22		/* Adjust by program base */
 #define R_SPARC_UA32	23		/* Direct 32 bit unaligned */
 
+/* Additional Sparc64 relocs.  */
+
+#define R_SPARC_PLT32	24		/* Direct 32 bit ref to PLT entry */
+#define R_SPARC_HIPLT22	25		/* High 22 bit PLT entry */
+#define R_SPARC_LOPLT10	26		/* Truncated 10 bit PLT entry */
+#define R_SPARC_PCPLT32	27		/* PC rel 32 bit ref to PLT entry */
+#define R_SPARC_PCPLT22	28		/* PC rel high 22 bit PLT entry */
+#define R_SPARC_PCPLT10	29		/* PC rel trunc 10 bit PLT entry */
+#define R_SPARC_10	30		/* Direct 10 bit */
+#define R_SPARC_11	31		/* Direct 11 bit */
+#define R_SPARC_64	32		/* Direct 64 bit */
+#define R_SPARC_OLO10	33		/* ?? */
+#define R_SPARC_HH22	34		/* Top 22 bits of direct 64 bit */
+#define R_SPARC_HM10	35		/* High middle 10 bits of ... */
+#define R_SPARC_LM22	36		/* Low middle 22 bits of ... */
+#define R_SPARC_PC_HH22	37		/* Top 22 bits of pc rel 64 bit */
+#define R_SPARC_PC_HM10	38		/* High middle 10 bit of ... */
+#define R_SPARC_PC_LM22	39		/* Low miggle 22 bits of ... */
+#define R_SPARC_WDISP16	40		/* PC relative 16 bit shifted */
+#define R_SPARC_WDISP19	41		/* PC relative 19 bit shifted */
+#define R_SPARC_GLOB_JMP 42		/* ?? */
+#define R_SPARC_7	43		/* Direct 7 bit */
+#define R_SPARC_5	44		/* Direct 5 bit */
+#define R_SPARC_6	45		/* Direct 6 bit */
+
+/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */
+
+#define DT_SPARC_PLTFMT	0x70000001	/* .plt format version/type */
+#define DT_SPARC_NUM	2
+
 /* MIPS R3000 specific definitions.  */
 
 /* Legal values for e_flags field of Elf32_Ehdr.  */