00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _ELF_SPARC_H
00027 #define _ELF_SPARC_H
00028
00029
00030
00031
00032
00033 #define EF_SPARC_32PLUS_MASK 0xffff00
00034 #define EF_SPARC_32PLUS 0x000100
00035 #define EF_SPARC_SUN_US1 0x000200
00036 #define EF_SPARC_HAL_R1 0x000400
00037 #define EF_SPARC_SUN_US3 0x000800
00038
00039 #define EF_SPARC_LEDATA 0x800000
00040
00041
00042 #define EF_SPARC_EXT_MASK 0xffff00
00043
00044
00045 #define EF_SPARCV9_MM 0x3
00046 #define EF_SPARCV9_TSO 0x0
00047 #define EF_SPARCV9_PSO 0x1
00048 #define EF_SPARCV9_RMO 0x2
00049
00050
00051
00052 #define SHN_BEFORE 0xff00
00053 #define SHN_AFTER 0xff01
00054
00055
00056
00057 #define SHF_EXCLUDE 0x80000000
00058 #define SHF_ORDERED 0x40000000
00059
00060
00061
00062 #define STT_REGISTER 13
00063
00064 #include "elf/reloc-macros.h"
00065
00066
00067 START_RELOC_NUMBERS (elf_sparc_reloc_type)
00068 RELOC_NUMBER (R_SPARC_NONE, 0)
00069 RELOC_NUMBER (R_SPARC_8, 1)
00070 RELOC_NUMBER (R_SPARC_16, 2)
00071 RELOC_NUMBER (R_SPARC_32, 3)
00072 RELOC_NUMBER (R_SPARC_DISP8, 4)
00073 RELOC_NUMBER (R_SPARC_DISP16, 5)
00074 RELOC_NUMBER (R_SPARC_DISP32, 6)
00075 RELOC_NUMBER (R_SPARC_WDISP30, 7)
00076 RELOC_NUMBER (R_SPARC_WDISP22, 8)
00077 RELOC_NUMBER (R_SPARC_HI22, 9)
00078 RELOC_NUMBER (R_SPARC_22, 10)
00079 RELOC_NUMBER (R_SPARC_13, 11)
00080 RELOC_NUMBER (R_SPARC_LO10, 12)
00081 RELOC_NUMBER (R_SPARC_GOT10, 13)
00082 RELOC_NUMBER (R_SPARC_GOT13, 14)
00083 RELOC_NUMBER (R_SPARC_GOT22, 15)
00084 RELOC_NUMBER (R_SPARC_PC10, 16)
00085 RELOC_NUMBER (R_SPARC_PC22, 17)
00086 RELOC_NUMBER (R_SPARC_WPLT30, 18)
00087 RELOC_NUMBER (R_SPARC_COPY, 19)
00088 RELOC_NUMBER (R_SPARC_GLOB_DAT, 20)
00089 RELOC_NUMBER (R_SPARC_JMP_SLOT, 21)
00090 RELOC_NUMBER (R_SPARC_RELATIVE, 22)
00091 RELOC_NUMBER (R_SPARC_UA32, 23)
00092
00093
00094
00095
00096 #ifndef SPARC64_OLD_RELOCS
00097
00098 RELOC_NUMBER (R_SPARC_PLT32, 24)
00099 RELOC_NUMBER (R_SPARC_HIPLT22, 25)
00100 RELOC_NUMBER (R_SPARC_LOPLT10, 26)
00101 RELOC_NUMBER (R_SPARC_PCPLT32, 27)
00102 RELOC_NUMBER (R_SPARC_PCPLT22, 28)
00103 RELOC_NUMBER (R_SPARC_PCPLT10, 29)
00104 #endif
00105
00106
00107 RELOC_NUMBER (R_SPARC_10, 30)
00108 RELOC_NUMBER (R_SPARC_11, 31)
00109 RELOC_NUMBER (R_SPARC_64, 32)
00110 RELOC_NUMBER (R_SPARC_OLO10, 33)
00111 RELOC_NUMBER (R_SPARC_HH22, 34)
00112 RELOC_NUMBER (R_SPARC_HM10, 35)
00113 RELOC_NUMBER (R_SPARC_LM22, 36)
00114 RELOC_NUMBER (R_SPARC_PC_HH22, 37)
00115 RELOC_NUMBER (R_SPARC_PC_HM10, 38)
00116 RELOC_NUMBER (R_SPARC_PC_LM22, 39)
00117 RELOC_NUMBER (R_SPARC_WDISP16, 40)
00118 RELOC_NUMBER (R_SPARC_WDISP19, 41)
00119 RELOC_NUMBER (R_SPARC_UNUSED_42, 42)
00120 RELOC_NUMBER (R_SPARC_7, 43)
00121 RELOC_NUMBER (R_SPARC_5, 44)
00122 RELOC_NUMBER (R_SPARC_6, 45)
00123 RELOC_NUMBER (R_SPARC_DISP64, 46)
00124 RELOC_NUMBER (R_SPARC_PLT64, 47)
00125 RELOC_NUMBER (R_SPARC_HIX22, 48)
00126 RELOC_NUMBER (R_SPARC_LOX10, 49)
00127 RELOC_NUMBER (R_SPARC_H44, 50)
00128 RELOC_NUMBER (R_SPARC_M44, 51)
00129 RELOC_NUMBER (R_SPARC_L44, 52)
00130 RELOC_NUMBER (R_SPARC_REGISTER, 53)
00131 RELOC_NUMBER (R_SPARC_UA64, 54)
00132 RELOC_NUMBER (R_SPARC_UA16, 55)
00133
00134 RELOC_NUMBER (R_SPARC_TLS_GD_HI22, 56)
00135 RELOC_NUMBER (R_SPARC_TLS_GD_LO10, 57)
00136 RELOC_NUMBER (R_SPARC_TLS_GD_ADD, 58)
00137 RELOC_NUMBER (R_SPARC_TLS_GD_CALL, 59)
00138 RELOC_NUMBER (R_SPARC_TLS_LDM_HI22, 60)
00139 RELOC_NUMBER (R_SPARC_TLS_LDM_LO10, 61)
00140 RELOC_NUMBER (R_SPARC_TLS_LDM_ADD, 62)
00141 RELOC_NUMBER (R_SPARC_TLS_LDM_CALL, 63)
00142 RELOC_NUMBER (R_SPARC_TLS_LDO_HIX22, 64)
00143 RELOC_NUMBER (R_SPARC_TLS_LDO_LOX10, 65)
00144 RELOC_NUMBER (R_SPARC_TLS_LDO_ADD, 66)
00145 RELOC_NUMBER (R_SPARC_TLS_IE_HI22, 67)
00146 RELOC_NUMBER (R_SPARC_TLS_IE_LO10, 68)
00147 RELOC_NUMBER (R_SPARC_TLS_IE_LD, 69)
00148 RELOC_NUMBER (R_SPARC_TLS_IE_LDX, 70)
00149 RELOC_NUMBER (R_SPARC_TLS_IE_ADD, 71)
00150 RELOC_NUMBER (R_SPARC_TLS_LE_HIX22, 72)
00151 RELOC_NUMBER (R_SPARC_TLS_LE_LOX10, 73)
00152 RELOC_NUMBER (R_SPARC_TLS_DTPMOD32, 74)
00153 RELOC_NUMBER (R_SPARC_TLS_DTPMOD64, 75)
00154 RELOC_NUMBER (R_SPARC_TLS_DTPOFF32, 76)
00155 RELOC_NUMBER (R_SPARC_TLS_DTPOFF64, 77)
00156 RELOC_NUMBER (R_SPARC_TLS_TPOFF32, 78)
00157 RELOC_NUMBER (R_SPARC_TLS_TPOFF64, 79)
00158
00159 EMPTY_RELOC (R_SPARC_max_std)
00160
00161 RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250)
00162 RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251)
00163 RELOC_NUMBER (R_SPARC_REV32, 252)
00164
00165 END_RELOC_NUMBERS (R_SPARC_max)
00166
00167
00168
00169 #define ELF64_R_TYPE_DATA(info) \
00170 (((bfd_signed_vma)(ELF64_R_TYPE(info) >> 8) ^ 0x800000) - 0x800000)
00171 #define ELF64_R_TYPE_ID(info) \
00172 ((info) & 0xff)
00173 #define ELF64_R_TYPE_INFO(data, type) \
00174 (((bfd_vma) ((data) & 0xffffff) << 8) | (bfd_vma) (type))
00175
00176
00177
00178 #define DT_SPARC_REGISTER 0x70000001
00179
00180 #endif