| 1 | /* This file defines standard ELF types, structures, and macros. | 
| 2 |    Copyright (C) 1995-2022 Free Software Foundation, Inc. | 
| 3 |    This file is part of the GNU C Library. | 
| 4 |  | 
| 5 |    The GNU C Library is free software; you can redistribute it and/or | 
| 6 |    modify it under the terms of the GNU Lesser General Public | 
| 7 |    License as published by the Free Software Foundation; either | 
| 8 |    version 2.1 of the License, or (at your option) any later version. | 
| 9 |  | 
| 10 |    The GNU C Library is distributed in the hope that it will be useful, | 
| 11 |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 12 |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
| 13 |    Lesser General Public License for more details. | 
| 14 |  | 
| 15 |    You should have received a copy of the GNU Lesser General Public | 
| 16 |    License along with the GNU C Library; if not, see | 
| 17 |    <https://www.gnu.org/licenses/>.  */ | 
| 18 |  | 
| 19 | #ifndef _ELF_H | 
| 20 | #define        _ELF_H 1 | 
| 21 |  | 
| 22 | /* Standard ELF types.  */ | 
| 23 |  | 
| 24 | #include <stdint.h> | 
| 25 |  | 
| 26 | /* Type for a 16-bit quantity.  */ | 
| 27 | typedef uint16_t Elf32_Half; | 
| 28 | typedef uint16_t Elf64_Half; | 
| 29 |  | 
| 30 | /* Types for signed and unsigned 32-bit quantities.  */ | 
| 31 | typedef uint32_t Elf32_Word; | 
| 32 | typedef        int32_t  Elf32_Sword; | 
| 33 | typedef uint32_t Elf64_Word; | 
| 34 | typedef        int32_t  Elf64_Sword; | 
| 35 |  | 
| 36 | /* Types for signed and unsigned 64-bit quantities.  */ | 
| 37 | typedef uint64_t Elf32_Xword; | 
| 38 | typedef        int64_t  Elf32_Sxword; | 
| 39 | typedef uint64_t Elf64_Xword; | 
| 40 | typedef        int64_t  Elf64_Sxword; | 
| 41 |  | 
| 42 | /* Type of addresses.  */ | 
| 43 | typedef uint32_t Elf32_Addr; | 
| 44 | typedef uint64_t Elf64_Addr; | 
| 45 |  | 
| 46 | /* Type of file offsets.  */ | 
| 47 | typedef uint32_t Elf32_Off; | 
| 48 | typedef uint64_t Elf64_Off; | 
| 49 |  | 
| 50 | /* Type for section indices, which are 16-bit quantities.  */ | 
| 51 | typedef uint16_t Elf32_Section; | 
| 52 | typedef uint16_t Elf64_Section; | 
| 53 |  | 
| 54 | /* Type for version symbol information.  */ | 
| 55 | typedef Elf32_Half Elf32_Versym; | 
| 56 | typedef Elf64_Half Elf64_Versym; | 
| 57 |  | 
| 58 |  | 
| 59 | /* The ELF file header.  This appears at the start of every ELF file.  */ | 
| 60 |  | 
| 61 | #define EI_NIDENT (16) | 
| 62 |  | 
| 63 | typedef struct | 
| 64 | { | 
| 65 |   unsigned char        e_ident[EI_NIDENT];        /* Magic number and other info */ | 
| 66 |   Elf32_Half        e_type;                        /* Object file type */ | 
| 67 |   Elf32_Half        e_machine;                /* Architecture */ | 
| 68 |   Elf32_Word        e_version;                /* Object file version */ | 
| 69 |   Elf32_Addr        e_entry;                /* Entry point virtual address */ | 
| 70 |   Elf32_Off        e_phoff;                /* Program header table file offset */ | 
| 71 |   Elf32_Off        e_shoff;                /* Section header table file offset */ | 
| 72 |   Elf32_Word        e_flags;                /* Processor-specific flags */ | 
| 73 |   Elf32_Half        e_ehsize;                /* ELF header size in bytes */ | 
| 74 |   Elf32_Half        e_phentsize;                /* Program header table entry size */ | 
| 75 |   Elf32_Half        e_phnum;                /* Program header table entry count */ | 
| 76 |   Elf32_Half        e_shentsize;                /* Section header table entry size */ | 
| 77 |   Elf32_Half        e_shnum;                /* Section header table entry count */ | 
| 78 |   Elf32_Half        e_shstrndx;                /* Section header string table index */ | 
| 79 | } Elf32_Ehdr; | 
| 80 |  | 
| 81 | typedef struct | 
| 82 | { | 
| 83 |   unsigned char        e_ident[EI_NIDENT];        /* Magic number and other info */ | 
| 84 |   Elf64_Half        e_type;                        /* Object file type */ | 
| 85 |   Elf64_Half        e_machine;                /* Architecture */ | 
| 86 |   Elf64_Word        e_version;                /* Object file version */ | 
| 87 |   Elf64_Addr        e_entry;                /* Entry point virtual address */ | 
| 88 |   Elf64_Off        e_phoff;                /* Program header table file offset */ | 
| 89 |   Elf64_Off        e_shoff;                /* Section header table file offset */ | 
| 90 |   Elf64_Word        e_flags;                /* Processor-specific flags */ | 
| 91 |   Elf64_Half        e_ehsize;                /* ELF header size in bytes */ | 
| 92 |   Elf64_Half        e_phentsize;                /* Program header table entry size */ | 
| 93 |   Elf64_Half        e_phnum;                /* Program header table entry count */ | 
| 94 |   Elf64_Half        e_shentsize;                /* Section header table entry size */ | 
| 95 |   Elf64_Half        e_shnum;                /* Section header table entry count */ | 
| 96 |   Elf64_Half        e_shstrndx;                /* Section header string table index */ | 
| 97 | } Elf64_Ehdr; | 
| 98 |  | 
| 99 | /* Fields in the e_ident array.  The EI_* macros are indices into the | 
| 100 |    array.  The macros under each EI_* macro are the values the byte | 
| 101 |    may have.  */ | 
| 102 |  | 
| 103 | #define EI_MAG0                0                /* File identification byte 0 index */ | 
| 104 | #define ELFMAG0                0x7f                /* Magic number byte 0 */ | 
| 105 |  | 
| 106 | #define EI_MAG1                1                /* File identification byte 1 index */ | 
| 107 | #define ELFMAG1                'E'                /* Magic number byte 1 */ | 
| 108 |  | 
| 109 | #define EI_MAG2                2                /* File identification byte 2 index */ | 
| 110 | #define ELFMAG2                'L'                /* Magic number byte 2 */ | 
| 111 |  | 
| 112 | #define EI_MAG3                3                /* File identification byte 3 index */ | 
| 113 | #define ELFMAG3                'F'                /* Magic number byte 3 */ | 
| 114 |  | 
| 115 | /* Conglomeration of the identification bytes, for easy testing as a word.  */ | 
| 116 | #define        ELFMAG                "\177ELF" | 
| 117 | #define        SELFMAG                4 | 
| 118 |  | 
| 119 | #define EI_CLASS        4                /* File class byte index */ | 
| 120 | #define ELFCLASSNONE        0                /* Invalid class */ | 
| 121 | #define ELFCLASS32        1                /* 32-bit objects */ | 
| 122 | #define ELFCLASS64        2                /* 64-bit objects */ | 
| 123 | #define ELFCLASSNUM        3 | 
| 124 |  | 
| 125 | #define EI_DATA                5                /* Data encoding byte index */ | 
| 126 | #define ELFDATANONE        0                /* Invalid data encoding */ | 
| 127 | #define ELFDATA2LSB        1                /* 2's complement, little endian */ | 
| 128 | #define ELFDATA2MSB        2                /* 2's complement, big endian */ | 
| 129 | #define ELFDATANUM        3 | 
| 130 |  | 
| 131 | #define EI_VERSION        6                /* File version byte index */ | 
| 132 |                                         /* Value must be EV_CURRENT */ | 
| 133 |  | 
| 134 | #define EI_OSABI        7                /* OS ABI identification */ | 
| 135 | #define ELFOSABI_NONE                0        /* UNIX System V ABI */ | 
| 136 | #define ELFOSABI_SYSV                0        /* Alias.  */ | 
| 137 | #define ELFOSABI_HPUX                1        /* HP-UX */ | 
| 138 | #define ELFOSABI_NETBSD                2        /* NetBSD.  */ | 
| 139 | #define ELFOSABI_GNU                3        /* Object uses GNU ELF extensions.  */ | 
| 140 | #define ELFOSABI_LINUX                ELFOSABI_GNU /* Compatibility alias.  */ | 
| 141 | #define ELFOSABI_SOLARIS        6        /* Sun Solaris.  */ | 
| 142 | #define ELFOSABI_AIX                7        /* IBM AIX.  */ | 
| 143 | #define ELFOSABI_IRIX                8        /* SGI Irix.  */ | 
| 144 | #define ELFOSABI_FREEBSD        9        /* FreeBSD.  */ | 
| 145 | #define ELFOSABI_TRU64                10        /* Compaq TRU64 UNIX.  */ | 
| 146 | #define ELFOSABI_MODESTO        11        /* Novell Modesto.  */ | 
| 147 | #define ELFOSABI_OPENBSD        12        /* OpenBSD.  */ | 
| 148 | #define ELFOSABI_ARM_AEABI        64        /* ARM EABI */ | 
| 149 | #define ELFOSABI_ARM                97        /* ARM */ | 
| 150 | #define ELFOSABI_STANDALONE        255        /* Standalone (embedded) application */ | 
| 151 |  | 
| 152 | #define EI_ABIVERSION        8                /* ABI version */ | 
| 153 |  | 
| 154 | #define EI_PAD                9                /* Byte index of padding bytes */ | 
| 155 |  | 
| 156 | /* Legal values for e_type (object file type).  */ | 
| 157 |  | 
| 158 | #define ET_NONE                0                /* No file type */ | 
| 159 | #define ET_REL                1                /* Relocatable file */ | 
| 160 | #define ET_EXEC                2                /* Executable file */ | 
| 161 | #define ET_DYN                3                /* Shared object file */ | 
| 162 | #define ET_CORE                4                /* Core file */ | 
| 163 | #define        ET_NUM                5                /* Number of defined types */ | 
| 164 | #define ET_LOOS                0xfe00                /* OS-specific range start */ | 
| 165 | #define ET_HIOS                0xfeff                /* OS-specific range end */ | 
| 166 | #define ET_LOPROC        0xff00                /* Processor-specific range start */ | 
| 167 | #define ET_HIPROC        0xffff                /* Processor-specific range end */ | 
| 168 |  | 
| 169 | /* Legal values for e_machine (architecture).  */ | 
| 170 |  | 
| 171 | #define EM_NONE                 0        /* No machine */ | 
| 172 | #define EM_M32                 1        /* AT&T WE 32100 */ | 
| 173 | #define EM_SPARC         2        /* SUN SPARC */ | 
| 174 | #define EM_386                 3        /* Intel 80386 */ | 
| 175 | #define EM_68K                 4        /* Motorola m68k family */ | 
| 176 | #define EM_88K                 5        /* Motorola m88k family */ | 
| 177 | #define EM_IAMCU         6        /* Intel MCU */ | 
| 178 | #define EM_860                 7        /* Intel 80860 */ | 
| 179 | #define EM_MIPS                 8        /* MIPS R3000 big-endian */ | 
| 180 | #define EM_S370                 9        /* IBM System/370 */ | 
| 181 | #define EM_MIPS_RS3_LE        10        /* MIPS R3000 little-endian */ | 
| 182 |                                 /* reserved 11-14 */ | 
| 183 | #define EM_PARISC        15        /* HPPA */ | 
| 184 |                                 /* reserved 16 */ | 
| 185 | #define EM_VPP500        17        /* Fujitsu VPP500 */ | 
| 186 | #define EM_SPARC32PLUS        18        /* Sun's "v8plus" */ | 
| 187 | #define EM_960                19        /* Intel 80960 */ | 
| 188 | #define EM_PPC                20        /* PowerPC */ | 
| 189 | #define EM_PPC64        21        /* PowerPC 64-bit */ | 
| 190 | #define EM_S390                22        /* IBM S390 */ | 
| 191 | #define EM_SPU                23        /* IBM SPU/SPC */ | 
| 192 |                                 /* reserved 24-35 */ | 
| 193 | #define EM_V800                36        /* NEC V800 series */ | 
| 194 | #define EM_FR20                37        /* Fujitsu FR20 */ | 
| 195 | #define EM_RH32                38        /* TRW RH-32 */ | 
| 196 | #define EM_RCE                39        /* Motorola RCE */ | 
| 197 | #define EM_ARM                40        /* ARM */ | 
| 198 | #define EM_FAKE_ALPHA        41        /* Digital Alpha */ | 
| 199 | #define EM_SH                42        /* Hitachi SH */ | 
| 200 | #define EM_SPARCV9        43        /* SPARC v9 64-bit */ | 
| 201 | #define EM_TRICORE        44        /* Siemens Tricore */ | 
| 202 | #define EM_ARC                45        /* Argonaut RISC Core */ | 
| 203 | #define EM_H8_300        46        /* Hitachi H8/300 */ | 
| 204 | #define EM_H8_300H        47        /* Hitachi H8/300H */ | 
| 205 | #define EM_H8S                48        /* Hitachi H8S */ | 
| 206 | #define EM_H8_500        49        /* Hitachi H8/500 */ | 
| 207 | #define EM_IA_64        50        /* Intel Merced */ | 
| 208 | #define EM_MIPS_X        51        /* Stanford MIPS-X */ | 
| 209 | #define EM_COLDFIRE        52        /* Motorola Coldfire */ | 
| 210 | #define EM_68HC12        53        /* Motorola M68HC12 */ | 
| 211 | #define EM_MMA                54        /* Fujitsu MMA Multimedia Accelerator */ | 
| 212 | #define EM_PCP                55        /* Siemens PCP */ | 
| 213 | #define EM_NCPU                56        /* Sony nCPU embeeded RISC */ | 
| 214 | #define EM_NDR1                57        /* Denso NDR1 microprocessor */ | 
| 215 | #define EM_STARCORE        58        /* Motorola Start*Core processor */ | 
| 216 | #define EM_ME16                59        /* Toyota ME16 processor */ | 
| 217 | #define EM_ST100        60        /* STMicroelectronic ST100 processor */ | 
| 218 | #define EM_TINYJ        61        /* Advanced Logic Corp. Tinyj emb.fam */ | 
| 219 | #define EM_X86_64        62        /* AMD x86-64 architecture */ | 
| 220 | #define EM_PDSP                63        /* Sony DSP Processor */ | 
| 221 | #define EM_PDP10        64        /* Digital PDP-10 */ | 
| 222 | #define EM_PDP11        65        /* Digital PDP-11 */ | 
| 223 | #define EM_FX66                66        /* Siemens FX66 microcontroller */ | 
| 224 | #define EM_ST9PLUS        67        /* STMicroelectronics ST9+ 8/16 mc */ | 
| 225 | #define EM_ST7                68        /* STmicroelectronics ST7 8 bit mc */ | 
| 226 | #define EM_68HC16        69        /* Motorola MC68HC16 microcontroller */ | 
| 227 | #define EM_68HC11        70        /* Motorola MC68HC11 microcontroller */ | 
| 228 | #define EM_68HC08        71        /* Motorola MC68HC08 microcontroller */ | 
| 229 | #define EM_68HC05        72        /* Motorola MC68HC05 microcontroller */ | 
| 230 | #define EM_SVX                73        /* Silicon Graphics SVx */ | 
| 231 | #define EM_ST19                74        /* STMicroelectronics ST19 8 bit mc */ | 
| 232 | #define EM_VAX                75        /* Digital VAX */ | 
| 233 | #define EM_CRIS                76        /* Axis Communications 32-bit emb.proc */ | 
| 234 | #define EM_JAVELIN        77        /* Infineon Technologies 32-bit emb.proc */ | 
| 235 | #define EM_FIREPATH        78        /* Element 14 64-bit DSP Processor */ | 
| 236 | #define EM_ZSP                79        /* LSI Logic 16-bit DSP Processor */ | 
| 237 | #define EM_MMIX                80        /* Donald Knuth's educational 64-bit proc */ | 
| 238 | #define EM_HUANY        81        /* Harvard University machine-independent object files */ | 
| 239 | #define EM_PRISM        82        /* SiTera Prism */ | 
| 240 | #define EM_AVR                83        /* Atmel AVR 8-bit microcontroller */ | 
| 241 | #define EM_FR30                84        /* Fujitsu FR30 */ | 
| 242 | #define EM_D10V                85        /* Mitsubishi D10V */ | 
| 243 | #define EM_D30V                86        /* Mitsubishi D30V */ | 
| 244 | #define EM_V850                87        /* NEC v850 */ | 
| 245 | #define EM_M32R                88        /* Mitsubishi M32R */ | 
| 246 | #define EM_MN10300        89        /* Matsushita MN10300 */ | 
| 247 | #define EM_MN10200        90        /* Matsushita MN10200 */ | 
| 248 | #define EM_PJ                91        /* picoJava */ | 
| 249 | #define EM_OPENRISC        92        /* OpenRISC 32-bit embedded processor */ | 
| 250 | #define EM_ARC_COMPACT        93        /* ARC International ARCompact */ | 
| 251 | #define EM_XTENSA        94        /* Tensilica Xtensa Architecture */ | 
| 252 | #define EM_VIDEOCORE        95        /* Alphamosaic VideoCore */ | 
| 253 | #define EM_TMM_GPP        96        /* Thompson Multimedia General Purpose Proc */ | 
| 254 | #define EM_NS32K        97        /* National Semi. 32000 */ | 
| 255 | #define EM_TPC                98        /* Tenor Network TPC */ | 
| 256 | #define EM_SNP1K        99        /* Trebia SNP 1000 */ | 
| 257 | #define EM_ST200        100        /* STMicroelectronics ST200 */ | 
| 258 | #define EM_IP2K                101        /* Ubicom IP2xxx */ | 
| 259 | #define EM_MAX                102        /* MAX processor */ | 
| 260 | #define EM_CR                103        /* National Semi. CompactRISC */ | 
| 261 | #define EM_F2MC16        104        /* Fujitsu F2MC16 */ | 
| 262 | #define EM_MSP430        105        /* Texas Instruments msp430 */ | 
| 263 | #define EM_BLACKFIN        106        /* Analog Devices Blackfin DSP */ | 
| 264 | #define EM_SE_C33        107        /* Seiko Epson S1C33 family */ | 
| 265 | #define EM_SEP                108        /* Sharp embedded microprocessor */ | 
| 266 | #define EM_ARCA                109        /* Arca RISC */ | 
| 267 | #define EM_UNICORE        110        /* PKU-Unity & MPRC Peking Uni. mc series */ | 
| 268 | #define EM_EXCESS        111        /* eXcess configurable cpu */ | 
| 269 | #define EM_DXP                112        /* Icera Semi. Deep Execution Processor */ | 
| 270 | #define EM_ALTERA_NIOS2 113        /* Altera Nios II */ | 
| 271 | #define EM_CRX                114        /* National Semi. CompactRISC CRX */ | 
| 272 | #define EM_XGATE        115        /* Motorola XGATE */ | 
| 273 | #define EM_C166                116        /* Infineon C16x/XC16x */ | 
| 274 | #define EM_M16C                117        /* Renesas M16C */ | 
| 275 | #define EM_DSPIC30F        118        /* Microchip Technology dsPIC30F */ | 
| 276 | #define EM_CE                119        /* Freescale Communication Engine RISC */ | 
| 277 | #define EM_M32C                120        /* Renesas M32C */ | 
| 278 |                                 /* reserved 121-130 */ | 
| 279 | #define EM_TSK3000        131        /* Altium TSK3000 */ | 
| 280 | #define EM_RS08                132        /* Freescale RS08 */ | 
| 281 | #define EM_SHARC        133        /* Analog Devices SHARC family */ | 
| 282 | #define EM_ECOG2        134        /* Cyan Technology eCOG2 */ | 
| 283 | #define EM_SCORE7        135        /* Sunplus S+core7 RISC */ | 
| 284 | #define EM_DSP24        136        /* New Japan Radio (NJR) 24-bit DSP */ | 
| 285 | #define EM_VIDEOCORE3        137        /* Broadcom VideoCore III */ | 
| 286 | #define EM_LATTICEMICO32 138        /* RISC for Lattice FPGA */ | 
| 287 | #define EM_SE_C17        139        /* Seiko Epson C17 */ | 
| 288 | #define EM_TI_C6000        140        /* Texas Instruments TMS320C6000 DSP */ | 
| 289 | #define EM_TI_C2000        141        /* Texas Instruments TMS320C2000 DSP */ | 
| 290 | #define EM_TI_C5500        142        /* Texas Instruments TMS320C55x DSP */ | 
| 291 | #define EM_TI_ARP32        143        /* Texas Instruments App. Specific RISC */ | 
| 292 | #define EM_TI_PRU        144        /* Texas Instruments Prog. Realtime Unit */ | 
| 293 |                                 /* reserved 145-159 */ | 
| 294 | #define EM_MMDSP_PLUS        160        /* STMicroelectronics 64bit VLIW DSP */ | 
| 295 | #define EM_CYPRESS_M8C        161        /* Cypress M8C */ | 
| 296 | #define EM_R32C                162        /* Renesas R32C */ | 
| 297 | #define EM_TRIMEDIA        163        /* NXP Semi. TriMedia */ | 
| 298 | #define EM_QDSP6        164        /* QUALCOMM DSP6 */ | 
| 299 | #define EM_8051                165        /* Intel 8051 and variants */ | 
| 300 | #define EM_STXP7X        166        /* STMicroelectronics STxP7x */ | 
| 301 | #define EM_NDS32        167        /* Andes Tech. compact code emb. RISC */ | 
| 302 | #define EM_ECOG1X        168        /* Cyan Technology eCOG1X */ | 
| 303 | #define EM_MAXQ30        169        /* Dallas Semi. MAXQ30 mc */ | 
| 304 | #define EM_XIMO16        170        /* New Japan Radio (NJR) 16-bit DSP */ | 
| 305 | #define EM_MANIK        171        /* M2000 Reconfigurable RISC */ | 
| 306 | #define EM_CRAYNV2        172        /* Cray NV2 vector architecture */ | 
| 307 | #define EM_RX                173        /* Renesas RX */ | 
| 308 | #define EM_METAG        174        /* Imagination Tech. META */ | 
| 309 | #define EM_MCST_ELBRUS        175        /* MCST Elbrus */ | 
| 310 | #define EM_ECOG16        176        /* Cyan Technology eCOG16 */ | 
| 311 | #define EM_CR16                177        /* National Semi. CompactRISC CR16 */ | 
| 312 | #define EM_ETPU                178        /* Freescale Extended Time Processing Unit */ | 
| 313 | #define EM_SLE9X        179        /* Infineon Tech. SLE9X */ | 
| 314 | #define EM_L10M                180        /* Intel L10M */ | 
| 315 | #define EM_K10M                181        /* Intel K10M */ | 
| 316 |                                 /* reserved 182 */ | 
| 317 | #define EM_AARCH64        183        /* ARM AARCH64 */ | 
| 318 |                                 /* reserved 184 */ | 
| 319 | #define EM_AVR32        185        /* Amtel 32-bit microprocessor */ | 
| 320 | #define EM_STM8                186        /* STMicroelectronics STM8 */ | 
| 321 | #define EM_TILE64        187        /* Tilera TILE64 */ | 
| 322 | #define EM_TILEPRO        188        /* Tilera TILEPro */ | 
| 323 | #define EM_MICROBLAZE        189        /* Xilinx MicroBlaze */ | 
| 324 | #define EM_CUDA                190        /* NVIDIA CUDA */ | 
| 325 | #define EM_TILEGX        191        /* Tilera TILE-Gx */ | 
| 326 | #define EM_CLOUDSHIELD        192        /* CloudShield */ | 
| 327 | #define EM_COREA_1ST        193        /* KIPO-KAIST Core-A 1st gen. */ | 
| 328 | #define EM_COREA_2ND        194        /* KIPO-KAIST Core-A 2nd gen. */ | 
| 329 | #define EM_ARCV2        195        /* Synopsys ARCv2 ISA.  */ | 
| 330 | #define EM_OPEN8        196        /* Open8 RISC */ | 
| 331 | #define EM_RL78                197        /* Renesas RL78 */ | 
| 332 | #define EM_VIDEOCORE5        198        /* Broadcom VideoCore V */ | 
| 333 | #define EM_78KOR        199        /* Renesas 78KOR */ | 
| 334 | #define EM_56800EX        200        /* Freescale 56800EX DSC */ | 
| 335 | #define EM_BA1                201        /* Beyond BA1 */ | 
| 336 | #define EM_BA2                202        /* Beyond BA2 */ | 
| 337 | #define EM_XCORE        203        /* XMOS xCORE */ | 
| 338 | #define EM_MCHP_PIC        204        /* Microchip 8-bit PIC(r) */ | 
| 339 | #define EM_INTELGT        205        /* Intel Graphics Technology */ | 
| 340 |                                 /* reserved 206-209 */ | 
| 341 | #define EM_KM32                210        /* KM211 KM32 */ | 
| 342 | #define EM_KMX32        211        /* KM211 KMX32 */ | 
| 343 | #define EM_EMX16        212        /* KM211 KMX16 */ | 
| 344 | #define EM_EMX8                213        /* KM211 KMX8 */ | 
| 345 | #define EM_KVARC        214        /* KM211 KVARC */ | 
| 346 | #define EM_CDP                215        /* Paneve CDP */ | 
| 347 | #define EM_COGE                216        /* Cognitive Smart Memory Processor */ | 
| 348 | #define EM_COOL                217        /* Bluechip CoolEngine */ | 
| 349 | #define EM_NORC                218        /* Nanoradio Optimized RISC */ | 
| 350 | #define EM_CSR_KALIMBA        219        /* CSR Kalimba */ | 
| 351 | #define EM_Z80                220        /* Zilog Z80 */ | 
| 352 | #define EM_VISIUM        221        /* Controls and Data Services VISIUMcore */ | 
| 353 | #define EM_FT32                222        /* FTDI Chip FT32 */ | 
| 354 | #define EM_MOXIE        223        /* Moxie processor */ | 
| 355 | #define EM_AMDGPU        224        /* AMD GPU */ | 
| 356 |                                 /* reserved 225-242 */ | 
| 357 | #define EM_RISCV        243        /* RISC-V */ | 
| 358 |  | 
| 359 | #define EM_BPF                247        /* Linux BPF -- in-kernel virtual machine */ | 
| 360 | #define EM_CSKY                252     /* C-SKY */ | 
| 361 |  | 
| 362 | #define EM_NUM                253 | 
| 363 |  | 
| 364 | /* Old spellings/synonyms.  */ | 
| 365 |  | 
| 366 | #define EM_ARC_A5        EM_ARC_COMPACT | 
| 367 |  | 
| 368 | /* If it is necessary to assign new unofficial EM_* values, please | 
| 369 |    pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the | 
| 370 |    chances of collision with official or non-GNU unofficial values.  */ | 
| 371 |  | 
| 372 | #define EM_ALPHA        0x9026 | 
| 373 |  | 
| 374 | /* Legal values for e_version (version).  */ | 
| 375 |  | 
| 376 | #define EV_NONE                0                /* Invalid ELF version */ | 
| 377 | #define EV_CURRENT        1                /* Current version */ | 
| 378 | #define EV_NUM                2 | 
| 379 |  | 
| 380 | /* Section header.  */ | 
| 381 |  | 
| 382 | typedef struct | 
| 383 | { | 
| 384 |   Elf32_Word        sh_name;                /* Section name (string tbl index) */ | 
| 385 |   Elf32_Word        sh_type;                /* Section type */ | 
| 386 |   Elf32_Word        sh_flags;                /* Section flags */ | 
| 387 |   Elf32_Addr        sh_addr;                /* Section virtual addr at execution */ | 
| 388 |   Elf32_Off        sh_offset;                /* Section file offset */ | 
| 389 |   Elf32_Word        sh_size;                /* Section size in bytes */ | 
| 390 |   Elf32_Word        sh_link;                /* Link to another section */ | 
| 391 |   Elf32_Word        sh_info;                /* Additional section information */ | 
| 392 |   Elf32_Word        sh_addralign;                /* Section alignment */ | 
| 393 |   Elf32_Word        sh_entsize;                /* Entry size if section holds table */ | 
| 394 | } Elf32_Shdr; | 
| 395 |  | 
| 396 | typedef struct | 
| 397 | { | 
| 398 |   Elf64_Word        sh_name;                /* Section name (string tbl index) */ | 
| 399 |   Elf64_Word        sh_type;                /* Section type */ | 
| 400 |   Elf64_Xword        sh_flags;                /* Section flags */ | 
| 401 |   Elf64_Addr        sh_addr;                /* Section virtual addr at execution */ | 
| 402 |   Elf64_Off        sh_offset;                /* Section file offset */ | 
| 403 |   Elf64_Xword        sh_size;                /* Section size in bytes */ | 
| 404 |   Elf64_Word        sh_link;                /* Link to another section */ | 
| 405 |   Elf64_Word        sh_info;                /* Additional section information */ | 
| 406 |   Elf64_Xword        sh_addralign;                /* Section alignment */ | 
| 407 |   Elf64_Xword        sh_entsize;                /* Entry size if section holds table */ | 
| 408 | } Elf64_Shdr; | 
| 409 |  | 
| 410 | /* Special section indices.  */ | 
| 411 |  | 
| 412 | #define SHN_UNDEF        0                /* Undefined section */ | 
| 413 | #define SHN_LORESERVE        0xff00                /* Start of reserved indices */ | 
| 414 | #define SHN_LOPROC        0xff00                /* Start of processor-specific */ | 
| 415 | #define SHN_BEFORE        0xff00                /* Order section before all others | 
| 416 |                                            (Solaris).  */ | 
| 417 | #define SHN_AFTER        0xff01                /* Order section after all others | 
| 418 |                                            (Solaris).  */ | 
| 419 | #define SHN_HIPROC        0xff1f                /* End of processor-specific */ | 
| 420 | #define SHN_LOOS        0xff20                /* Start of OS-specific */ | 
| 421 | #define SHN_HIOS        0xff3f                /* End of OS-specific */ | 
| 422 | #define SHN_ABS                0xfff1                /* Associated symbol is absolute */ | 
| 423 | #define SHN_COMMON        0xfff2                /* Associated symbol is common */ | 
| 424 | #define SHN_XINDEX        0xffff                /* Index is in extra table.  */ | 
| 425 | #define SHN_HIRESERVE        0xffff                /* End of reserved indices */ | 
| 426 |  | 
| 427 | /* Legal values for sh_type (section type).  */ | 
| 428 |  | 
| 429 | #define SHT_NULL          0                /* Section header table entry unused */ | 
| 430 | #define SHT_PROGBITS          1                /* Program data */ | 
| 431 | #define SHT_SYMTAB          2                /* Symbol table */ | 
| 432 | #define SHT_STRTAB          3                /* String table */ | 
| 433 | #define SHT_RELA          4                /* Relocation entries with addends */ | 
| 434 | #define SHT_HASH          5                /* Symbol hash table */ | 
| 435 | #define SHT_DYNAMIC          6                /* Dynamic linking information */ | 
| 436 | #define SHT_NOTE          7                /* Notes */ | 
| 437 | #define SHT_NOBITS          8                /* Program space with no data (bss) */ | 
| 438 | #define SHT_REL                  9                /* Relocation entries, no addends */ | 
| 439 | #define SHT_SHLIB          10                /* Reserved */ | 
| 440 | #define SHT_DYNSYM          11                /* Dynamic linker symbol table */ | 
| 441 | #define SHT_INIT_ARRAY          14                /* Array of constructors */ | 
| 442 | #define SHT_FINI_ARRAY          15                /* Array of destructors */ | 
| 443 | #define SHT_PREINIT_ARRAY 16                /* Array of pre-constructors */ | 
| 444 | #define SHT_GROUP          17                /* Section group */ | 
| 445 | #define SHT_SYMTAB_SHNDX  18                /* Extended section indices */ | 
| 446 | #define        SHT_NUM                  19                /* Number of defined types.  */ | 
| 447 | #define SHT_LOOS          0x60000000        /* Start OS-specific.  */ | 
| 448 | #define SHT_GNU_ATTRIBUTES 0x6ffffff5        /* Object attributes.  */ | 
| 449 | #define SHT_GNU_HASH          0x6ffffff6        /* GNU-style hash table.  */ | 
| 450 | #define SHT_GNU_LIBLIST          0x6ffffff7        /* Prelink library list */ | 
| 451 | #define SHT_CHECKSUM          0x6ffffff8        /* Checksum for DSO content.  */ | 
| 452 | #define SHT_LOSUNW          0x6ffffffa        /* Sun-specific low bound.  */ | 
| 453 | #define SHT_SUNW_move          0x6ffffffa | 
| 454 | #define SHT_SUNW_COMDAT   0x6ffffffb | 
| 455 | #define SHT_SUNW_syminfo  0x6ffffffc | 
| 456 | #define SHT_GNU_verdef          0x6ffffffd        /* Version definition section.  */ | 
| 457 | #define SHT_GNU_verneed          0x6ffffffe        /* Version needs section.  */ | 
| 458 | #define SHT_GNU_versym          0x6fffffff        /* Version symbol table.  */ | 
| 459 | #define SHT_HISUNW          0x6fffffff        /* Sun-specific high bound.  */ | 
| 460 | #define SHT_HIOS          0x6fffffff        /* End OS-specific type */ | 
| 461 | #define SHT_LOPROC          0x70000000        /* Start of processor-specific */ | 
| 462 | #define SHT_HIPROC          0x7fffffff        /* End of processor-specific */ | 
| 463 | #define SHT_LOUSER          0x80000000        /* Start of application-specific */ | 
| 464 | #define SHT_HIUSER          0x8fffffff        /* End of application-specific */ | 
| 465 |  | 
| 466 | /* Legal values for sh_flags (section flags).  */ | 
| 467 |  | 
| 468 | #define SHF_WRITE             (1 << 0)        /* Writable */ | 
| 469 | #define SHF_ALLOC             (1 << 1)        /* Occupies memory during execution */ | 
| 470 | #define SHF_EXECINSTR             (1 << 2)        /* Executable */ | 
| 471 | #define SHF_MERGE             (1 << 4)        /* Might be merged */ | 
| 472 | #define SHF_STRINGS             (1 << 5)        /* Contains nul-terminated strings */ | 
| 473 | #define SHF_INFO_LINK             (1 << 6)        /* `sh_info' contains SHT index */ | 
| 474 | #define SHF_LINK_ORDER             (1 << 7)        /* Preserve order after combining */ | 
| 475 | #define SHF_OS_NONCONFORMING (1 << 8)        /* Non-standard OS specific handling | 
| 476 |                                            required */ | 
| 477 | #define SHF_GROUP             (1 << 9)        /* Section is member of a group.  */ | 
| 478 | #define SHF_TLS                     (1 << 10)        /* Section hold thread-local data.  */ | 
| 479 | #define SHF_COMPRESSED             (1 << 11)        /* Section with compressed data. */ | 
| 480 | #define SHF_MASKOS             0x0ff00000        /* OS-specific.  */ | 
| 481 | #define SHF_MASKPROC             0xf0000000        /* Processor-specific */ | 
| 482 | #define SHF_GNU_RETAIN             (1 << 21)  /* Not to be GCed by linker.  */ | 
| 483 | #define SHF_ORDERED             (1 << 30)        /* Special ordering requirement | 
| 484 |                                            (Solaris).  */ | 
| 485 | #define SHF_EXCLUDE             (1U << 31)        /* Section is excluded unless | 
| 486 |                                            referenced or allocated (Solaris).*/ | 
| 487 |  | 
| 488 | /* Section compression header.  Used when SHF_COMPRESSED is set.  */ | 
| 489 |  | 
| 490 | typedef struct | 
| 491 | { | 
| 492 |   Elf32_Word        ch_type;        /* Compression format.  */ | 
| 493 |   Elf32_Word        ch_size;        /* Uncompressed data size.  */ | 
| 494 |   Elf32_Word        ch_addralign;        /* Uncompressed data alignment.  */ | 
| 495 | } Elf32_Chdr; | 
| 496 |  | 
| 497 | typedef struct | 
| 498 | { | 
| 499 |   Elf64_Word        ch_type;        /* Compression format.  */ | 
| 500 |   Elf64_Word        ch_reserved; | 
| 501 |   Elf64_Xword        ch_size;        /* Uncompressed data size.  */ | 
| 502 |   Elf64_Xword        ch_addralign;        /* Uncompressed data alignment.  */ | 
| 503 | } Elf64_Chdr; | 
| 504 |  | 
| 505 | /* Legal values for ch_type (compression algorithm).  */ | 
| 506 | #define ELFCOMPRESS_ZLIB        1           /* ZLIB/DEFLATE algorithm.  */ | 
| 507 | #define ELFCOMPRESS_LOOS        0x60000000 /* Start of OS-specific.  */ | 
| 508 | #define ELFCOMPRESS_HIOS        0x6fffffff /* End of OS-specific.  */ | 
| 509 | #define ELFCOMPRESS_LOPROC        0x70000000 /* Start of processor-specific.  */ | 
| 510 | #define ELFCOMPRESS_HIPROC        0x7fffffff /* End of processor-specific.  */ | 
| 511 |  | 
| 512 | /* Section group handling.  */ | 
| 513 | #define GRP_COMDAT        0x1                /* Mark group as COMDAT.  */ | 
| 514 |  | 
| 515 | /* Symbol table entry.  */ | 
| 516 |  | 
| 517 | typedef struct | 
| 518 | { | 
| 519 |   Elf32_Word        st_name;                /* Symbol name (string tbl index) */ | 
| 520 |   Elf32_Addr        st_value;                /* Symbol value */ | 
| 521 |   Elf32_Word        st_size;                /* Symbol size */ | 
| 522 |   unsigned char        st_info;                /* Symbol type and binding */ | 
| 523 |   unsigned char        st_other;                /* Symbol visibility */ | 
| 524 |   Elf32_Section        st_shndx;                /* Section index */ | 
| 525 | } Elf32_Sym; | 
| 526 |  | 
| 527 | typedef struct | 
| 528 | { | 
| 529 |   Elf64_Word        st_name;                /* Symbol name (string tbl index) */ | 
| 530 |   unsigned char        st_info;                /* Symbol type and binding */ | 
| 531 |   unsigned char st_other;                /* Symbol visibility */ | 
| 532 |   Elf64_Section        st_shndx;                /* Section index */ | 
| 533 |   Elf64_Addr        st_value;                /* Symbol value */ | 
| 534 |   Elf64_Xword        st_size;                /* Symbol size */ | 
| 535 | } Elf64_Sym; | 
| 536 |  | 
| 537 | /* The syminfo section if available contains additional information about | 
| 538 |    every dynamic symbol.  */ | 
| 539 |  | 
| 540 | typedef struct | 
| 541 | { | 
| 542 |   Elf32_Half si_boundto;                /* Direct bindings, symbol bound to */ | 
| 543 |   Elf32_Half si_flags;                        /* Per symbol flags */ | 
| 544 | } Elf32_Syminfo; | 
| 545 |  | 
| 546 | typedef struct | 
| 547 | { | 
| 548 |   Elf64_Half si_boundto;                /* Direct bindings, symbol bound to */ | 
| 549 |   Elf64_Half si_flags;                        /* Per symbol flags */ | 
| 550 | } Elf64_Syminfo; | 
| 551 |  | 
| 552 | /* Possible values for si_boundto.  */ | 
| 553 | #define SYMINFO_BT_SELF                0xffff        /* Symbol bound to self */ | 
| 554 | #define SYMINFO_BT_PARENT        0xfffe        /* Symbol bound to parent */ | 
| 555 | #define SYMINFO_BT_LOWRESERVE        0xff00        /* Beginning of reserved entries */ | 
| 556 |  | 
| 557 | /* Possible bitmasks for si_flags.  */ | 
| 558 | #define SYMINFO_FLG_DIRECT        0x0001        /* Direct bound symbol */ | 
| 559 | #define SYMINFO_FLG_PASSTHRU        0x0002        /* Pass-thru symbol for translator */ | 
| 560 | #define SYMINFO_FLG_COPY        0x0004        /* Symbol is a copy-reloc */ | 
| 561 | #define SYMINFO_FLG_LAZYLOAD        0x0008        /* Symbol bound to object to be lazy | 
| 562 |                                            loaded */ | 
| 563 | /* Syminfo version values.  */ | 
| 564 | #define SYMINFO_NONE                0 | 
| 565 | #define SYMINFO_CURRENT                1 | 
| 566 | #define SYMINFO_NUM                2 | 
| 567 |  | 
| 568 |  | 
| 569 | /* How to extract and insert information held in the st_info field.  */ | 
| 570 |  | 
| 571 | #define ELF32_ST_BIND(val)                (((unsigned char) (val)) >> 4) | 
| 572 | #define ELF32_ST_TYPE(val)                ((val) & 0xf) | 
| 573 | #define ELF32_ST_INFO(bind, type)        (((bind) << 4) + ((type) & 0xf)) | 
| 574 |  | 
| 575 | /* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ | 
| 576 | #define ELF64_ST_BIND(val)                ELF32_ST_BIND (val) | 
| 577 | #define ELF64_ST_TYPE(val)                ELF32_ST_TYPE (val) | 
| 578 | #define ELF64_ST_INFO(bind, type)        ELF32_ST_INFO ((bind), (type)) | 
| 579 |  | 
| 580 | /* Legal values for ST_BIND subfield of st_info (symbol binding).  */ | 
| 581 |  | 
| 582 | #define STB_LOCAL        0                /* Local symbol */ | 
| 583 | #define STB_GLOBAL        1                /* Global symbol */ | 
| 584 | #define STB_WEAK        2                /* Weak symbol */ | 
| 585 | #define        STB_NUM                3                /* Number of defined types.  */ | 
| 586 | #define STB_LOOS        10                /* Start of OS-specific */ | 
| 587 | #define STB_GNU_UNIQUE        10                /* Unique symbol.  */ | 
| 588 | #define STB_HIOS        12                /* End of OS-specific */ | 
| 589 | #define STB_LOPROC        13                /* Start of processor-specific */ | 
| 590 | #define STB_HIPROC        15                /* End of processor-specific */ | 
| 591 |  | 
| 592 | /* Legal values for ST_TYPE subfield of st_info (symbol type).  */ | 
| 593 |  | 
| 594 | #define STT_NOTYPE        0                /* Symbol type is unspecified */ | 
| 595 | #define STT_OBJECT        1                /* Symbol is a data object */ | 
| 596 | #define STT_FUNC        2                /* Symbol is a code object */ | 
| 597 | #define STT_SECTION        3                /* Symbol associated with a section */ | 
| 598 | #define STT_FILE        4                /* Symbol's name is file name */ | 
| 599 | #define STT_COMMON        5                /* Symbol is a common data object */ | 
| 600 | #define STT_TLS                6                /* Symbol is thread-local data object*/ | 
| 601 | #define        STT_NUM                7                /* Number of defined types.  */ | 
| 602 | #define STT_LOOS        10                /* Start of OS-specific */ | 
| 603 | #define STT_GNU_IFUNC        10                /* Symbol is indirect code object */ | 
| 604 | #define STT_HIOS        12                /* End of OS-specific */ | 
| 605 | #define STT_LOPROC        13                /* Start of processor-specific */ | 
| 606 | #define STT_HIPROC        15                /* End of processor-specific */ | 
| 607 |  | 
| 608 |  | 
| 609 | /* Symbol table indices are found in the hash buckets and chain table | 
| 610 |    of a symbol hash table section.  This special index value indicates | 
| 611 |    the end of a chain, meaning no further symbols are found in that bucket.  */ | 
| 612 |  | 
| 613 | #define STN_UNDEF        0                /* End of a chain.  */ | 
| 614 |  | 
| 615 |  | 
| 616 | /* How to extract and insert information held in the st_other field.  */ | 
| 617 |  | 
| 618 | #define ELF32_ST_VISIBILITY(o)        ((o) & 0x03) | 
| 619 |  | 
| 620 | /* For ELF64 the definitions are the same.  */ | 
| 621 | #define ELF64_ST_VISIBILITY(o)        ELF32_ST_VISIBILITY (o) | 
| 622 |  | 
| 623 | /* Symbol visibility specification encoded in the st_other field.  */ | 
| 624 | #define STV_DEFAULT        0                /* Default symbol visibility rules */ | 
| 625 | #define STV_INTERNAL        1                /* Processor specific hidden class */ | 
| 626 | #define STV_HIDDEN        2                /* Sym unavailable in other modules */ | 
| 627 | #define STV_PROTECTED        3                /* Not preemptible, not exported */ | 
| 628 |  | 
| 629 |  | 
| 630 | /* Relocation table entry without addend (in section of type SHT_REL).  */ | 
| 631 |  | 
| 632 | typedef struct | 
| 633 | { | 
| 634 |   Elf32_Addr        r_offset;                /* Address */ | 
| 635 |   Elf32_Word        r_info;                        /* Relocation type and symbol index */ | 
| 636 | } Elf32_Rel; | 
| 637 |  | 
| 638 | /* I have seen two different definitions of the Elf64_Rel and | 
| 639 |    Elf64_Rela structures, so we'll leave them out until Novell (or | 
| 640 |    whoever) gets their act together.  */ | 
| 641 | /* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ | 
| 642 |  | 
| 643 | typedef struct | 
| 644 | { | 
| 645 |   Elf64_Addr        r_offset;                /* Address */ | 
| 646 |   Elf64_Xword        r_info;                        /* Relocation type and symbol index */ | 
| 647 | } Elf64_Rel; | 
| 648 |  | 
| 649 | /* Relocation table entry with addend (in section of type SHT_RELA).  */ | 
| 650 |  | 
| 651 | typedef struct | 
| 652 | { | 
| 653 |   Elf32_Addr        r_offset;                /* Address */ | 
| 654 |   Elf32_Word        r_info;                        /* Relocation type and symbol index */ | 
| 655 |   Elf32_Sword        r_addend;                /* Addend */ | 
| 656 | } Elf32_Rela; | 
| 657 |  | 
| 658 | typedef struct | 
| 659 | { | 
| 660 |   Elf64_Addr        r_offset;                /* Address */ | 
| 661 |   Elf64_Xword        r_info;                        /* Relocation type and symbol index */ | 
| 662 |   Elf64_Sxword        r_addend;                /* Addend */ | 
| 663 | } Elf64_Rela; | 
| 664 |  | 
| 665 | /* How to extract and insert information held in the r_info field.  */ | 
| 666 |  | 
| 667 | #define ELF32_R_SYM(val)                ((val) >> 8) | 
| 668 | #define ELF32_R_TYPE(val)                ((val) & 0xff) | 
| 669 | #define ELF32_R_INFO(sym, type)                (((sym) << 8) + ((type) & 0xff)) | 
| 670 |  | 
| 671 | #define ELF64_R_SYM(i)                        ((i) >> 32) | 
| 672 | #define ELF64_R_TYPE(i)                        ((i) & 0xffffffff) | 
| 673 | #define ELF64_R_INFO(sym,type)                ((((Elf64_Xword) (sym)) << 32) + (type)) | 
| 674 |  | 
| 675 | /* Program segment header.  */ | 
| 676 |  | 
| 677 | typedef struct | 
| 678 | { | 
| 679 |   Elf32_Word        p_type;                        /* Segment type */ | 
| 680 |   Elf32_Off        p_offset;                /* Segment file offset */ | 
| 681 |   Elf32_Addr        p_vaddr;                /* Segment virtual address */ | 
| 682 |   Elf32_Addr        p_paddr;                /* Segment physical address */ | 
| 683 |   Elf32_Word        p_filesz;                /* Segment size in file */ | 
| 684 |   Elf32_Word        p_memsz;                /* Segment size in memory */ | 
| 685 |   Elf32_Word        p_flags;                /* Segment flags */ | 
| 686 |   Elf32_Word        p_align;                /* Segment alignment */ | 
| 687 | } Elf32_Phdr; | 
| 688 |  | 
| 689 | typedef struct | 
| 690 | { | 
| 691 |   Elf64_Word        p_type;                        /* Segment type */ | 
| 692 |   Elf64_Word        p_flags;                /* Segment flags */ | 
| 693 |   Elf64_Off        p_offset;                /* Segment file offset */ | 
| 694 |   Elf64_Addr        p_vaddr;                /* Segment virtual address */ | 
| 695 |   Elf64_Addr        p_paddr;                /* Segment physical address */ | 
| 696 |   Elf64_Xword        p_filesz;                /* Segment size in file */ | 
| 697 |   Elf64_Xword        p_memsz;                /* Segment size in memory */ | 
| 698 |   Elf64_Xword        p_align;                /* Segment alignment */ | 
| 699 | } Elf64_Phdr; | 
| 700 |  | 
| 701 | /* Special value for e_phnum.  This indicates that the real number of | 
| 702 |    program headers is too large to fit into e_phnum.  Instead the real | 
| 703 |    value is in the field sh_info of section 0.  */ | 
| 704 |  | 
| 705 | #define PN_XNUM                0xffff | 
| 706 |  | 
| 707 | /* Legal values for p_type (segment type).  */ | 
| 708 |  | 
| 709 | #define        PT_NULL                0                /* Program header table entry unused */ | 
| 710 | #define PT_LOAD                1                /* Loadable program segment */ | 
| 711 | #define PT_DYNAMIC        2                /* Dynamic linking information */ | 
| 712 | #define PT_INTERP        3                /* Program interpreter */ | 
| 713 | #define PT_NOTE                4                /* Auxiliary information */ | 
| 714 | #define PT_SHLIB        5                /* Reserved */ | 
| 715 | #define PT_PHDR                6                /* Entry for header table itself */ | 
| 716 | #define PT_TLS                7                /* Thread-local storage segment */ | 
| 717 | #define        PT_NUM                8                /* Number of defined types */ | 
| 718 | #define PT_LOOS                0x60000000        /* Start of OS-specific */ | 
| 719 | #define PT_GNU_EH_FRAME        0x6474e550        /* GCC .eh_frame_hdr segment */ | 
| 720 | #define PT_GNU_STACK        0x6474e551        /* Indicates stack executability */ | 
| 721 | #define PT_GNU_RELRO        0x6474e552        /* Read-only after relocation */ | 
| 722 | #define PT_GNU_PROPERTY        0x6474e553        /* GNU property */ | 
| 723 | #define PT_LOSUNW        0x6ffffffa | 
| 724 | #define PT_SUNWBSS        0x6ffffffa        /* Sun Specific segment */ | 
| 725 | #define PT_SUNWSTACK        0x6ffffffb        /* Stack segment */ | 
| 726 | #define PT_HISUNW        0x6fffffff | 
| 727 | #define PT_HIOS                0x6fffffff        /* End of OS-specific */ | 
| 728 | #define PT_LOPROC        0x70000000        /* Start of processor-specific */ | 
| 729 | #define PT_HIPROC        0x7fffffff        /* End of processor-specific */ | 
| 730 |  | 
| 731 | /* Legal values for p_flags (segment flags).  */ | 
| 732 |  | 
| 733 | #define PF_X                (1 << 0)        /* Segment is executable */ | 
| 734 | #define PF_W                (1 << 1)        /* Segment is writable */ | 
| 735 | #define PF_R                (1 << 2)        /* Segment is readable */ | 
| 736 | #define PF_MASKOS        0x0ff00000        /* OS-specific */ | 
| 737 | #define PF_MASKPROC        0xf0000000        /* Processor-specific */ | 
| 738 |  | 
| 739 | /* Legal values for note segment descriptor types for core files. */ | 
| 740 |  | 
| 741 | #define NT_PRSTATUS        1                /* Contains copy of prstatus struct */ | 
| 742 | #define NT_PRFPREG        2                /* Contains copy of fpregset | 
| 743 |                                            struct.  */ | 
| 744 | #define NT_FPREGSET        2                /* Contains copy of fpregset struct */ | 
| 745 | #define NT_PRPSINFO        3                /* Contains copy of prpsinfo struct */ | 
| 746 | #define NT_PRXREG        4                /* Contains copy of prxregset struct */ | 
| 747 | #define NT_TASKSTRUCT        4                /* Contains copy of task structure */ | 
| 748 | #define NT_PLATFORM        5                /* String from sysinfo(SI_PLATFORM) */ | 
| 749 | #define NT_AUXV                6                /* Contains copy of auxv array */ | 
| 750 | #define NT_GWINDOWS        7                /* Contains copy of gwindows struct */ | 
| 751 | #define NT_ASRS                8                /* Contains copy of asrset struct */ | 
| 752 | #define NT_PSTATUS        10                /* Contains copy of pstatus struct */ | 
| 753 | #define NT_PSINFO        13                /* Contains copy of psinfo struct */ | 
| 754 | #define NT_PRCRED        14                /* Contains copy of prcred struct */ | 
| 755 | #define NT_UTSNAME        15                /* Contains copy of utsname struct */ | 
| 756 | #define NT_LWPSTATUS        16                /* Contains copy of lwpstatus struct */ | 
| 757 | #define NT_LWPSINFO        17                /* Contains copy of lwpinfo struct */ | 
| 758 | #define NT_PRFPXREG        20                /* Contains copy of fprxregset struct */ | 
| 759 | #define NT_SIGINFO        0x53494749        /* Contains copy of siginfo_t, | 
| 760 |                                            size might increase */ | 
| 761 | #define NT_FILE                0x46494c45        /* Contains information about mapped | 
| 762 |                                            files */ | 
| 763 | #define NT_PRXFPREG        0x46e62b7f        /* Contains copy of user_fxsr_struct */ | 
| 764 | #define NT_PPC_VMX        0x100                /* PowerPC Altivec/VMX registers */ | 
| 765 | #define NT_PPC_SPE        0x101                /* PowerPC SPE/EVR registers */ | 
| 766 | #define NT_PPC_VSX        0x102                /* PowerPC VSX registers */ | 
| 767 | #define NT_PPC_TAR        0x103                /* Target Address Register */ | 
| 768 | #define NT_PPC_PPR        0x104                /* Program Priority Register */ | 
| 769 | #define NT_PPC_DSCR        0x105                /* Data Stream Control Register */ | 
| 770 | #define NT_PPC_EBB        0x106                /* Event Based Branch Registers */ | 
| 771 | #define NT_PPC_PMU        0x107                /* Performance Monitor Registers */ | 
| 772 | #define NT_PPC_TM_CGPR        0x108                /* TM checkpointed GPR Registers */ | 
| 773 | #define NT_PPC_TM_CFPR        0x109                /* TM checkpointed FPR Registers */ | 
| 774 | #define NT_PPC_TM_CVMX        0x10a                /* TM checkpointed VMX Registers */ | 
| 775 | #define NT_PPC_TM_CVSX        0x10b                /* TM checkpointed VSX Registers */ | 
| 776 | #define NT_PPC_TM_SPR        0x10c                /* TM Special Purpose Registers */ | 
| 777 | #define NT_PPC_TM_CTAR        0x10d                /* TM checkpointed Target Address | 
| 778 |                                            Register */ | 
| 779 | #define NT_PPC_TM_CPPR        0x10e                /* TM checkpointed Program Priority | 
| 780 |                                            Register */ | 
| 781 | #define NT_PPC_TM_CDSCR        0x10f                /* TM checkpointed Data Stream Control | 
| 782 |                                            Register */ | 
| 783 | #define NT_PPC_PKEY        0x110                /* Memory Protection Keys | 
| 784 |                                            registers.  */ | 
| 785 | #define NT_386_TLS        0x200                /* i386 TLS slots (struct user_desc) */ | 
| 786 | #define NT_386_IOPERM        0x201                /* x86 io permission bitmap (1=deny) */ | 
| 787 | #define NT_X86_XSTATE        0x202                /* x86 extended state using xsave */ | 
| 788 | #define NT_S390_HIGH_GPRS        0x300        /* s390 upper register halves */ | 
| 789 | #define NT_S390_TIMER        0x301                /* s390 timer register */ | 
| 790 | #define NT_S390_TODCMP        0x302                /* s390 TOD clock comparator register */ | 
| 791 | #define NT_S390_TODPREG        0x303                /* s390 TOD programmable register */ | 
| 792 | #define NT_S390_CTRS        0x304                /* s390 control registers */ | 
| 793 | #define NT_S390_PREFIX        0x305                /* s390 prefix register */ | 
| 794 | #define NT_S390_LAST_BREAK        0x306        /* s390 breaking event address */ | 
| 795 | #define NT_S390_SYSTEM_CALL        0x307        /* s390 system call restart data */ | 
| 796 | #define NT_S390_TDB        0x308                /* s390 transaction diagnostic block */ | 
| 797 | #define NT_S390_VXRS_LOW        0x309        /* s390 vector registers 0-15 | 
| 798 |                                            upper half.  */ | 
| 799 | #define NT_S390_VXRS_HIGH        0x30a        /* s390 vector registers 16-31.  */ | 
| 800 | #define NT_S390_GS_CB        0x30b                /* s390 guarded storage registers.  */ | 
| 801 | #define NT_S390_GS_BC        0x30c                /* s390 guarded storage | 
| 802 |                                            broadcast control block.  */ | 
| 803 | #define NT_S390_RI_CB        0x30d                /* s390 runtime instrumentation.  */ | 
| 804 | #define NT_ARM_VFP        0x400                /* ARM VFP/NEON registers */ | 
| 805 | #define NT_ARM_TLS        0x401                /* ARM TLS register */ | 
| 806 | #define NT_ARM_HW_BREAK        0x402                /* ARM hardware breakpoint registers */ | 
| 807 | #define NT_ARM_HW_WATCH        0x403                /* ARM hardware watchpoint registers */ | 
| 808 | #define NT_ARM_SYSTEM_CALL        0x404        /* ARM system call number */ | 
| 809 | #define NT_ARM_SVE        0x405                /* ARM Scalable Vector Extension | 
| 810 |                                            registers */ | 
| 811 | #define NT_ARM_PAC_MASK        0x406                /* ARM pointer authentication | 
| 812 |                                            code masks.  */ | 
| 813 | #define NT_ARM_PACA_KEYS        0x407        /* ARM pointer authentication | 
| 814 |                                            address keys.  */ | 
| 815 | #define NT_ARM_PACG_KEYS        0x408        /* ARM pointer authentication | 
| 816 |                                            generic key.  */ | 
| 817 | #define NT_ARM_TAGGED_ADDR_CTRL        0x409        /* AArch64 tagged address | 
| 818 |                                            control.  */ | 
| 819 | #define NT_ARM_PAC_ENABLED_KEYS        0x40a        /* AArch64 pointer authentication | 
| 820 |                                            enabled keys.  */ | 
| 821 | #define NT_VMCOREDD        0x700                /* Vmcore Device Dump Note.  */ | 
| 822 | #define NT_MIPS_DSP        0x800                /* MIPS DSP ASE registers.  */ | 
| 823 | #define NT_MIPS_FP_MODE        0x801                /* MIPS floating-point mode.  */ | 
| 824 | #define NT_MIPS_MSA        0x802                /* MIPS SIMD registers.  */ | 
| 825 |  | 
| 826 | /* Legal values for the note segment descriptor types for object files.  */ | 
| 827 |  | 
| 828 | #define NT_VERSION        1                /* Contains a version string.  */ | 
| 829 |  | 
| 830 |  | 
| 831 | /* Dynamic section entry.  */ | 
| 832 |  | 
| 833 | typedef struct | 
| 834 | { | 
| 835 |   Elf32_Sword        d_tag;                        /* Dynamic entry type */ | 
| 836 |   union | 
| 837 |     { | 
| 838 |       Elf32_Word d_val;                        /* Integer value */ | 
| 839 |       Elf32_Addr d_ptr;                        /* Address value */ | 
| 840 |     } d_un; | 
| 841 | } Elf32_Dyn; | 
| 842 |  | 
| 843 | typedef struct | 
| 844 | { | 
| 845 |   Elf64_Sxword        d_tag;                        /* Dynamic entry type */ | 
| 846 |   union | 
| 847 |     { | 
| 848 |       Elf64_Xword d_val;                /* Integer value */ | 
| 849 |       Elf64_Addr d_ptr;                        /* Address value */ | 
| 850 |     } d_un; | 
| 851 | } Elf64_Dyn; | 
| 852 |  | 
| 853 | /* Legal values for d_tag (dynamic entry type).  */ | 
| 854 |  | 
| 855 | #define DT_NULL                0                /* Marks end of dynamic section */ | 
| 856 | #define DT_NEEDED        1                /* Name of needed library */ | 
| 857 | #define DT_PLTRELSZ        2                /* Size in bytes of PLT relocs */ | 
| 858 | #define DT_PLTGOT        3                /* Processor defined value */ | 
| 859 | #define DT_HASH                4                /* Address of symbol hash table */ | 
| 860 | #define DT_STRTAB        5                /* Address of string table */ | 
| 861 | #define DT_SYMTAB        6                /* Address of symbol table */ | 
| 862 | #define DT_RELA                7                /* Address of Rela relocs */ | 
| 863 | #define DT_RELASZ        8                /* Total size of Rela relocs */ | 
| 864 | #define DT_RELAENT        9                /* Size of one Rela reloc */ | 
| 865 | #define DT_STRSZ        10                /* Size of string table */ | 
| 866 | #define DT_SYMENT        11                /* Size of one symbol table entry */ | 
| 867 | #define DT_INIT                12                /* Address of init function */ | 
| 868 | #define DT_FINI                13                /* Address of termination function */ | 
| 869 | #define DT_SONAME        14                /* Name of shared object */ | 
| 870 | #define DT_RPATH        15                /* Library search path (deprecated) */ | 
| 871 | #define DT_SYMBOLIC        16                /* Start symbol search here */ | 
| 872 | #define DT_REL                17                /* Address of Rel relocs */ | 
| 873 | #define DT_RELSZ        18                /* Total size of Rel relocs */ | 
| 874 | #define DT_RELENT        19                /* Size of one Rel reloc */ | 
| 875 | #define DT_PLTREL        20                /* Type of reloc in PLT */ | 
| 876 | #define DT_DEBUG        21                /* For debugging; unspecified */ | 
| 877 | #define DT_TEXTREL        22                /* Reloc might modify .text */ | 
| 878 | #define DT_JMPREL        23                /* Address of PLT relocs */ | 
| 879 | #define        DT_BIND_NOW        24                /* Process relocations of object */ | 
| 880 | #define        DT_INIT_ARRAY        25                /* Array with addresses of init fct */ | 
| 881 | #define        DT_FINI_ARRAY        26                /* Array with addresses of fini fct */ | 
| 882 | #define        DT_INIT_ARRAYSZ        27                /* Size in bytes of DT_INIT_ARRAY */ | 
| 883 | #define        DT_FINI_ARRAYSZ        28                /* Size in bytes of DT_FINI_ARRAY */ | 
| 884 | #define DT_RUNPATH        29                /* Library search path */ | 
| 885 | #define DT_FLAGS        30                /* Flags for the object being loaded */ | 
| 886 | #define DT_ENCODING        32                /* Start of encoded range */ | 
| 887 | #define DT_PREINIT_ARRAY 32                /* Array with addresses of preinit fct*/ | 
| 888 | #define DT_PREINIT_ARRAYSZ 33                /* size in bytes of DT_PREINIT_ARRAY */ | 
| 889 | #define DT_SYMTAB_SHNDX        34                /* Address of SYMTAB_SHNDX section */ | 
| 890 | #define        DT_NUM                35                /* Number used */ | 
| 891 | #define DT_LOOS                0x6000000d        /* Start of OS-specific */ | 
| 892 | #define DT_HIOS                0x6ffff000        /* End of OS-specific */ | 
| 893 | #define DT_LOPROC        0x70000000        /* Start of processor-specific */ | 
| 894 | #define DT_HIPROC        0x7fffffff        /* End of processor-specific */ | 
| 895 | #define        DT_PROCNUM        DT_MIPS_NUM        /* Most used by any processor */ | 
| 896 |  | 
| 897 | /* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the | 
| 898 |    Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's | 
| 899 |    approach.  */ | 
| 900 | #define DT_VALRNGLO        0x6ffffd00 | 
| 901 | #define DT_GNU_PRELINKED 0x6ffffdf5        /* Prelinking timestamp */ | 
| 902 | #define DT_GNU_CONFLICTSZ 0x6ffffdf6        /* Size of conflict section */ | 
| 903 | #define DT_GNU_LIBLISTSZ 0x6ffffdf7        /* Size of library list */ | 
| 904 | #define DT_CHECKSUM        0x6ffffdf8 | 
| 905 | #define DT_PLTPADSZ        0x6ffffdf9 | 
| 906 | #define DT_MOVEENT        0x6ffffdfa | 
| 907 | #define DT_MOVESZ        0x6ffffdfb | 
| 908 | #define DT_FEATURE_1        0x6ffffdfc        /* Feature selection (DTF_*).  */ | 
| 909 | #define DT_POSFLAG_1        0x6ffffdfd        /* Flags for DT_* entries, effecting | 
| 910 |                                            the following DT_* entry.  */ | 
| 911 | #define DT_SYMINSZ        0x6ffffdfe        /* Size of syminfo table (in bytes) */ | 
| 912 | #define DT_SYMINENT        0x6ffffdff        /* Entry size of syminfo */ | 
| 913 | #define DT_VALRNGHI        0x6ffffdff | 
| 914 | #define DT_VALTAGIDX(tag)        (DT_VALRNGHI - (tag))        /* Reverse order! */ | 
| 915 | #define DT_VALNUM 12 | 
| 916 |  | 
| 917 | /* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the | 
| 918 |    Dyn.d_un.d_ptr field of the Elf*_Dyn structure. | 
| 919 |  | 
| 920 |    If any adjustment is made to the ELF object after it has been | 
| 921 |    built these entries will need to be adjusted.  */ | 
| 922 | #define DT_ADDRRNGLO        0x6ffffe00 | 
| 923 | #define DT_GNU_HASH        0x6ffffef5        /* GNU-style hash table.  */ | 
| 924 | #define DT_TLSDESC_PLT        0x6ffffef6 | 
| 925 | #define DT_TLSDESC_GOT        0x6ffffef7 | 
| 926 | #define DT_GNU_CONFLICT        0x6ffffef8        /* Start of conflict section */ | 
| 927 | #define DT_GNU_LIBLIST        0x6ffffef9        /* Library list */ | 
| 928 | #define DT_CONFIG        0x6ffffefa        /* Configuration information.  */ | 
| 929 | #define DT_DEPAUDIT        0x6ffffefb        /* Dependency auditing.  */ | 
| 930 | #define DT_AUDIT        0x6ffffefc        /* Object auditing.  */ | 
| 931 | #define        DT_PLTPAD        0x6ffffefd        /* PLT padding.  */ | 
| 932 | #define        DT_MOVETAB        0x6ffffefe        /* Move table.  */ | 
| 933 | #define DT_SYMINFO        0x6ffffeff        /* Syminfo table.  */ | 
| 934 | #define DT_ADDRRNGHI        0x6ffffeff | 
| 935 | #define DT_ADDRTAGIDX(tag)        (DT_ADDRRNGHI - (tag))        /* Reverse order! */ | 
| 936 | #define DT_ADDRNUM 11 | 
| 937 |  | 
| 938 | /* The versioning entry types.  The next are defined as part of the | 
| 939 |    GNU extension.  */ | 
| 940 | #define DT_VERSYM        0x6ffffff0 | 
| 941 |  | 
| 942 | #define DT_RELACOUNT        0x6ffffff9 | 
| 943 | #define DT_RELCOUNT        0x6ffffffa | 
| 944 |  | 
| 945 | /* These were chosen by Sun.  */ | 
| 946 | #define DT_FLAGS_1        0x6ffffffb        /* State flags, see DF_1_* below.  */ | 
| 947 | #define        DT_VERDEF        0x6ffffffc        /* Address of version definition | 
| 948 |                                            table */ | 
| 949 | #define        DT_VERDEFNUM        0x6ffffffd        /* Number of version definitions */ | 
| 950 | #define        DT_VERNEED        0x6ffffffe        /* Address of table with needed | 
| 951 |                                            versions */ | 
| 952 | #define        DT_VERNEEDNUM        0x6fffffff        /* Number of needed versions */ | 
| 953 | #define DT_VERSIONTAGIDX(tag)        (DT_VERNEEDNUM - (tag))        /* Reverse order! */ | 
| 954 | #define DT_VERSIONTAGNUM 16 | 
| 955 |  | 
| 956 | /* Sun added these machine-independent extensions in the "processor-specific" | 
| 957 |    range.  Be compatible.  */ | 
| 958 | #define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ | 
| 959 | #define DT_FILTER       0x7fffffff      /* Shared object to get values from */ | 
| 960 | #define (tag)        ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) | 
| 961 | #define         3 | 
| 962 |  | 
| 963 | /* Values of `d_un.d_val' in the DT_FLAGS entry.  */ | 
| 964 | #define DF_ORIGIN        0x00000001        /* Object may use DF_ORIGIN */ | 
| 965 | #define DF_SYMBOLIC        0x00000002        /* Symbol resolutions starts here */ | 
| 966 | #define DF_TEXTREL        0x00000004        /* Object contains text relocations */ | 
| 967 | #define DF_BIND_NOW        0x00000008        /* No lazy binding for this object */ | 
| 968 | #define DF_STATIC_TLS        0x00000010        /* Module uses the static TLS model */ | 
| 969 |  | 
| 970 | /* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 | 
| 971 |    entry in the dynamic section.  */ | 
| 972 | #define DF_1_NOW        0x00000001        /* Set RTLD_NOW for this object.  */ | 
| 973 | #define DF_1_GLOBAL        0x00000002        /* Set RTLD_GLOBAL for this object.  */ | 
| 974 | #define DF_1_GROUP        0x00000004        /* Set RTLD_GROUP for this object.  */ | 
| 975 | #define DF_1_NODELETE        0x00000008        /* Set RTLD_NODELETE for this object.*/ | 
| 976 | #define DF_1_LOADFLTR        0x00000010        /* Trigger filtee loading at runtime.*/ | 
| 977 | #define DF_1_INITFIRST        0x00000020        /* Set RTLD_INITFIRST for this object*/ | 
| 978 | #define DF_1_NOOPEN        0x00000040        /* Set RTLD_NOOPEN for this object.  */ | 
| 979 | #define DF_1_ORIGIN        0x00000080        /* $ORIGIN must be handled.  */ | 
| 980 | #define DF_1_DIRECT        0x00000100        /* Direct binding enabled.  */ | 
| 981 | #define DF_1_TRANS        0x00000200 | 
| 982 | #define DF_1_INTERPOSE        0x00000400        /* Object is used to interpose.  */ | 
| 983 | #define DF_1_NODEFLIB        0x00000800        /* Ignore default lib search path.  */ | 
| 984 | #define DF_1_NODUMP        0x00001000        /* Object can't be dldump'ed.  */ | 
| 985 | #define DF_1_CONFALT        0x00002000        /* Configuration alternative created.*/ | 
| 986 | #define DF_1_ENDFILTEE        0x00004000        /* Filtee terminates filters search. */ | 
| 987 | #define        DF_1_DISPRELDNE        0x00008000        /* Disp reloc applied at build time. */ | 
| 988 | #define        DF_1_DISPRELPND        0x00010000        /* Disp reloc applied at run-time.  */ | 
| 989 | #define        DF_1_NODIRECT        0x00020000        /* Object has no-direct binding. */ | 
| 990 | #define        DF_1_IGNMULDEF        0x00040000 | 
| 991 | #define        DF_1_NOKSYMS        0x00080000 | 
| 992 | #define        DF_1_NOHDR        0x00100000 | 
| 993 | #define        DF_1_EDITED        0x00200000        /* Object is modified after built.  */ | 
| 994 | #define        DF_1_NORELOC        0x00400000 | 
| 995 | #define        DF_1_SYMINTPOSE        0x00800000        /* Object has individual interposers.  */ | 
| 996 | #define        DF_1_GLOBAUDIT        0x01000000        /* Global auditing required.  */ | 
| 997 | #define        DF_1_SINGLETON        0x02000000        /* Singleton symbols are used.  */ | 
| 998 | #define        DF_1_STUB        0x04000000 | 
| 999 | #define        DF_1_PIE        0x08000000 | 
| 1000 | #define        DF_1_KMOD       0x10000000 | 
| 1001 | #define        DF_1_WEAKFILTER 0x20000000 | 
| 1002 | #define        DF_1_NOCOMMON   0x40000000 | 
| 1003 |  | 
| 1004 | /* Flags for the feature selection in DT_FEATURE_1.  */ | 
| 1005 | #define DTF_1_PARINIT        0x00000001 | 
| 1006 | #define DTF_1_CONFEXP        0x00000002 | 
| 1007 |  | 
| 1008 | /* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ | 
| 1009 | #define DF_P1_LAZYLOAD        0x00000001        /* Lazyload following object.  */ | 
| 1010 | #define DF_P1_GROUPPERM        0x00000002        /* Symbols from next object are not | 
| 1011 |                                            generally available.  */ | 
| 1012 |  | 
| 1013 | /* Version definition sections.  */ | 
| 1014 |  | 
| 1015 | typedef struct | 
| 1016 | { | 
| 1017 |   Elf32_Half        vd_version;                /* Version revision */ | 
| 1018 |   Elf32_Half        vd_flags;                /* Version information */ | 
| 1019 |   Elf32_Half        vd_ndx;                        /* Version Index */ | 
| 1020 |   Elf32_Half        vd_cnt;                        /* Number of associated aux entries */ | 
| 1021 |   Elf32_Word        vd_hash;                /* Version name hash value */ | 
| 1022 |   Elf32_Word        vd_aux;                        /* Offset in bytes to verdaux array */ | 
| 1023 |   Elf32_Word        vd_next;                /* Offset in bytes to next verdef | 
| 1024 |                                            entry */ | 
| 1025 | } Elf32_Verdef; | 
| 1026 |  | 
| 1027 | typedef struct | 
| 1028 | { | 
| 1029 |   Elf64_Half        vd_version;                /* Version revision */ | 
| 1030 |   Elf64_Half        vd_flags;                /* Version information */ | 
| 1031 |   Elf64_Half        vd_ndx;                        /* Version Index */ | 
| 1032 |   Elf64_Half        vd_cnt;                        /* Number of associated aux entries */ | 
| 1033 |   Elf64_Word        vd_hash;                /* Version name hash value */ | 
| 1034 |   Elf64_Word        vd_aux;                        /* Offset in bytes to verdaux array */ | 
| 1035 |   Elf64_Word        vd_next;                /* Offset in bytes to next verdef | 
| 1036 |                                            entry */ | 
| 1037 | } Elf64_Verdef; | 
| 1038 |  | 
| 1039 |  | 
| 1040 | /* Legal values for vd_version (version revision).  */ | 
| 1041 | #define VER_DEF_NONE        0                /* No version */ | 
| 1042 | #define VER_DEF_CURRENT        1                /* Current version */ | 
| 1043 | #define VER_DEF_NUM        2                /* Given version number */ | 
| 1044 |  | 
| 1045 | /* Legal values for vd_flags (version information flags).  */ | 
| 1046 | #define VER_FLG_BASE        0x1                /* Version definition of file itself */ | 
| 1047 | #define VER_FLG_WEAK        0x2                /* Weak version identifier */ | 
| 1048 |  | 
| 1049 | /* Versym symbol index values.  */ | 
| 1050 | #define        VER_NDX_LOCAL                0        /* Symbol is local.  */ | 
| 1051 | #define        VER_NDX_GLOBAL                1        /* Symbol is global.  */ | 
| 1052 | #define        VER_NDX_LORESERVE        0xff00        /* Beginning of reserved entries.  */ | 
| 1053 | #define        VER_NDX_ELIMINATE        0xff01        /* Symbol is to be eliminated.  */ | 
| 1054 |  | 
| 1055 | /* Auxiliary version information.  */ | 
| 1056 |  | 
| 1057 | typedef struct | 
| 1058 | { | 
| 1059 |   Elf32_Word        vda_name;                /* Version or dependency names */ | 
| 1060 |   Elf32_Word        vda_next;                /* Offset in bytes to next verdaux | 
| 1061 |                                            entry */ | 
| 1062 | } Elf32_Verdaux; | 
| 1063 |  | 
| 1064 | typedef struct | 
| 1065 | { | 
| 1066 |   Elf64_Word        vda_name;                /* Version or dependency names */ | 
| 1067 |   Elf64_Word        vda_next;                /* Offset in bytes to next verdaux | 
| 1068 |                                            entry */ | 
| 1069 | } Elf64_Verdaux; | 
| 1070 |  | 
| 1071 |  | 
| 1072 | /* Version dependency section.  */ | 
| 1073 |  | 
| 1074 | typedef struct | 
| 1075 | { | 
| 1076 |   Elf32_Half        vn_version;                /* Version of structure */ | 
| 1077 |   Elf32_Half        vn_cnt;                        /* Number of associated aux entries */ | 
| 1078 |   Elf32_Word        vn_file;                /* Offset of filename for this | 
| 1079 |                                            dependency */ | 
| 1080 |   Elf32_Word        vn_aux;                        /* Offset in bytes to vernaux array */ | 
| 1081 |   Elf32_Word        vn_next;                /* Offset in bytes to next verneed | 
| 1082 |                                            entry */ | 
| 1083 | } Elf32_Verneed; | 
| 1084 |  | 
| 1085 | typedef struct | 
| 1086 | { | 
| 1087 |   Elf64_Half        vn_version;                /* Version of structure */ | 
| 1088 |   Elf64_Half        vn_cnt;                        /* Number of associated aux entries */ | 
| 1089 |   Elf64_Word        vn_file;                /* Offset of filename for this | 
| 1090 |                                            dependency */ | 
| 1091 |   Elf64_Word        vn_aux;                        /* Offset in bytes to vernaux array */ | 
| 1092 |   Elf64_Word        vn_next;                /* Offset in bytes to next verneed | 
| 1093 |                                            entry */ | 
| 1094 | } Elf64_Verneed; | 
| 1095 |  | 
| 1096 |  | 
| 1097 | /* Legal values for vn_version (version revision).  */ | 
| 1098 | #define VER_NEED_NONE         0                /* No version */ | 
| 1099 | #define VER_NEED_CURRENT 1                /* Current version */ | 
| 1100 | #define VER_NEED_NUM         2                /* Given version number */ | 
| 1101 |  | 
| 1102 | /* Auxiliary needed version information.  */ | 
| 1103 |  | 
| 1104 | typedef struct | 
| 1105 | { | 
| 1106 |   Elf32_Word        vna_hash;                /* Hash value of dependency name */ | 
| 1107 |   Elf32_Half        vna_flags;                /* Dependency specific information */ | 
| 1108 |   Elf32_Half        vna_other;                /* Unused */ | 
| 1109 |   Elf32_Word        vna_name;                /* Dependency name string offset */ | 
| 1110 |   Elf32_Word        vna_next;                /* Offset in bytes to next vernaux | 
| 1111 |                                            entry */ | 
| 1112 | } Elf32_Vernaux; | 
| 1113 |  | 
| 1114 | typedef struct | 
| 1115 | { | 
| 1116 |   Elf64_Word        vna_hash;                /* Hash value of dependency name */ | 
| 1117 |   Elf64_Half        vna_flags;                /* Dependency specific information */ | 
| 1118 |   Elf64_Half        vna_other;                /* Unused */ | 
| 1119 |   Elf64_Word        vna_name;                /* Dependency name string offset */ | 
| 1120 |   Elf64_Word        vna_next;                /* Offset in bytes to next vernaux | 
| 1121 |                                            entry */ | 
| 1122 | } Elf64_Vernaux; | 
| 1123 |  | 
| 1124 |  | 
| 1125 | /* Legal values for vna_flags.  */ | 
| 1126 | #define VER_FLG_WEAK        0x2                /* Weak version identifier */ | 
| 1127 |  | 
| 1128 |  | 
| 1129 | /* Auxiliary vector.  */ | 
| 1130 |  | 
| 1131 | /* This vector is normally only used by the program interpreter.  The | 
| 1132 |    usual definition in an ABI supplement uses the name auxv_t.  The | 
| 1133 |    vector is not usually defined in a standard <elf.h> file, but it | 
| 1134 |    can't hurt.  We rename it to avoid conflicts.  The sizes of these | 
| 1135 |    types are an arrangement between the exec server and the program | 
| 1136 |    interpreter, so we don't fully specify them here.  */ | 
| 1137 |  | 
| 1138 | typedef struct | 
| 1139 | { | 
| 1140 |   uint32_t a_type;                /* Entry type */ | 
| 1141 |   union | 
| 1142 |     { | 
| 1143 |       uint32_t a_val;                /* Integer value */ | 
| 1144 |       /* We use to have pointer elements added here.  We cannot do that, | 
| 1145 |          though, since it does not work when using 32-bit definitions | 
| 1146 |          on 64-bit platforms and vice versa.  */ | 
| 1147 |     } a_un; | 
| 1148 | } Elf32_auxv_t; | 
| 1149 |  | 
| 1150 | typedef struct | 
| 1151 | { | 
| 1152 |   uint64_t a_type;                /* Entry type */ | 
| 1153 |   union | 
| 1154 |     { | 
| 1155 |       uint64_t a_val;                /* Integer value */ | 
| 1156 |       /* We use to have pointer elements added here.  We cannot do that, | 
| 1157 |          though, since it does not work when using 32-bit definitions | 
| 1158 |          on 64-bit platforms and vice versa.  */ | 
| 1159 |     } a_un; | 
| 1160 | } Elf64_auxv_t; | 
| 1161 |  | 
| 1162 | /* Legal values for a_type (entry type).  */ | 
| 1163 |  | 
| 1164 | #define AT_NULL                0                /* End of vector */ | 
| 1165 | #define AT_IGNORE        1                /* Entry should be ignored */ | 
| 1166 | #define AT_EXECFD        2                /* File descriptor of program */ | 
| 1167 | #define AT_PHDR                3                /* Program headers for program */ | 
| 1168 | #define AT_PHENT        4                /* Size of program header entry */ | 
| 1169 | #define AT_PHNUM        5                /* Number of program headers */ | 
| 1170 | #define AT_PAGESZ        6                /* System page size */ | 
| 1171 | #define AT_BASE                7                /* Base address of interpreter */ | 
| 1172 | #define AT_FLAGS        8                /* Flags */ | 
| 1173 | #define AT_ENTRY        9                /* Entry point of program */ | 
| 1174 | #define AT_NOTELF        10                /* Program is not ELF */ | 
| 1175 | #define AT_UID                11                /* Real uid */ | 
| 1176 | #define AT_EUID                12                /* Effective uid */ | 
| 1177 | #define AT_GID                13                /* Real gid */ | 
| 1178 | #define AT_EGID                14                /* Effective gid */ | 
| 1179 | #define AT_CLKTCK        17                /* Frequency of times() */ | 
| 1180 |  | 
| 1181 | /* Some more special a_type values describing the hardware.  */ | 
| 1182 | #define AT_PLATFORM        15                /* String identifying platform.  */ | 
| 1183 | #define AT_HWCAP        16                /* Machine-dependent hints about | 
| 1184 |                                            processor capabilities.  */ | 
| 1185 |  | 
| 1186 | /* This entry gives some information about the FPU initialization | 
| 1187 |    performed by the kernel.  */ | 
| 1188 | #define AT_FPUCW        18                /* Used FPU control word.  */ | 
| 1189 |  | 
| 1190 | /* Cache block sizes.  */ | 
| 1191 | #define AT_DCACHEBSIZE        19                /* Data cache block size.  */ | 
| 1192 | #define AT_ICACHEBSIZE        20                /* Instruction cache block size.  */ | 
| 1193 | #define AT_UCACHEBSIZE        21                /* Unified cache block size.  */ | 
| 1194 |  | 
| 1195 | /* A special ignored value for PPC, used by the kernel to control the | 
| 1196 |    interpretation of the AUXV. Must be > 16.  */ | 
| 1197 | #define AT_IGNOREPPC        22                /* Entry should be ignored.  */ | 
| 1198 |  | 
| 1199 | #define        AT_SECURE        23                /* Boolean, was exec setuid-like?  */ | 
| 1200 |  | 
| 1201 | #define AT_BASE_PLATFORM 24                /* String identifying real platforms.*/ | 
| 1202 |  | 
| 1203 | #define AT_RANDOM        25                /* Address of 16 random bytes.  */ | 
| 1204 |  | 
| 1205 | #define AT_HWCAP2        26                /* More machine-dependent hints about | 
| 1206 |                                            processor capabilities.  */ | 
| 1207 |  | 
| 1208 | #define AT_EXECFN        31                /* Filename of executable.  */ | 
| 1209 |  | 
| 1210 | /* Pointer to the global system page used for system calls and other | 
| 1211 |    nice things.  */ | 
| 1212 | #define AT_SYSINFO        32 | 
| 1213 | #define AT_SYSINFO_EHDR        33 | 
| 1214 |  | 
| 1215 | /* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains | 
| 1216 |    log2 of line size; mask those to get cache size.  */ | 
| 1217 | #define AT_L1I_CACHESHAPE        34 | 
| 1218 | #define AT_L1D_CACHESHAPE        35 | 
| 1219 | #define AT_L2_CACHESHAPE        36 | 
| 1220 | #define AT_L3_CACHESHAPE        37 | 
| 1221 |  | 
| 1222 | /* Shapes of the caches, with more room to describe them. | 
| 1223 |    *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits | 
| 1224 |    and the cache associativity in the next 16 bits.  */ | 
| 1225 | #define AT_L1I_CACHESIZE        40 | 
| 1226 | #define AT_L1I_CACHEGEOMETRY        41 | 
| 1227 | #define AT_L1D_CACHESIZE        42 | 
| 1228 | #define AT_L1D_CACHEGEOMETRY        43 | 
| 1229 | #define AT_L2_CACHESIZE                44 | 
| 1230 | #define AT_L2_CACHEGEOMETRY        45 | 
| 1231 | #define AT_L3_CACHESIZE                46 | 
| 1232 | #define AT_L3_CACHEGEOMETRY        47 | 
| 1233 |  | 
| 1234 | #define AT_MINSIGSTKSZ                51 /* Stack needed for signal delivery  */ | 
| 1235 |  | 
| 1236 | /* Note section contents.  Each entry in the note section begins with | 
| 1237 |    a header of a fixed form.  */ | 
| 1238 |  | 
| 1239 | typedef struct | 
| 1240 | { | 
| 1241 |   Elf32_Word n_namesz;                        /* Length of the note's name.  */ | 
| 1242 |   Elf32_Word n_descsz;                        /* Length of the note's descriptor.  */ | 
| 1243 |   Elf32_Word n_type;                        /* Type of the note.  */ | 
| 1244 | } Elf32_Nhdr; | 
| 1245 |  | 
| 1246 | typedef struct | 
| 1247 | { | 
| 1248 |   Elf64_Word n_namesz;                        /* Length of the note's name.  */ | 
| 1249 |   Elf64_Word n_descsz;                        /* Length of the note's descriptor.  */ | 
| 1250 |   Elf64_Word n_type;                        /* Type of the note.  */ | 
| 1251 | } Elf64_Nhdr; | 
| 1252 |  | 
| 1253 | /* Known names of notes.  */ | 
| 1254 |  | 
| 1255 | /* Solaris entries in the note section have this name.  */ | 
| 1256 | #define ELF_NOTE_SOLARIS        "SUNW Solaris" | 
| 1257 |  | 
| 1258 | /* Note entries for GNU systems have this name.  */ | 
| 1259 | #define ELF_NOTE_GNU                "GNU" | 
| 1260 |  | 
| 1261 | /* Note entries for freedesktop.org have this name.  */ | 
| 1262 | #define ELF_NOTE_FDO                "FDO" | 
| 1263 |  | 
| 1264 | /* Defined types of notes for Solaris.  */ | 
| 1265 |  | 
| 1266 | /* Value of descriptor (one word) is desired pagesize for the binary.  */ | 
| 1267 | #define ELF_NOTE_PAGESIZE_HINT        1 | 
| 1268 |  | 
| 1269 |  | 
| 1270 | /* Defined note types for GNU systems.  */ | 
| 1271 |  | 
| 1272 | /* ABI information.  The descriptor consists of words: | 
| 1273 |    word 0: OS descriptor | 
| 1274 |    word 1: major version of the ABI | 
| 1275 |    word 2: minor version of the ABI | 
| 1276 |    word 3: subminor version of the ABI | 
| 1277 | */ | 
| 1278 | #define NT_GNU_ABI_TAG        1 | 
| 1279 | #define ELF_NOTE_ABI        NT_GNU_ABI_TAG /* Old name.  */ | 
| 1280 |  | 
| 1281 | /* Known OSes.  These values can appear in word 0 of an | 
| 1282 |    NT_GNU_ABI_TAG note section entry.  */ | 
| 1283 | #define ELF_NOTE_OS_LINUX        0 | 
| 1284 | #define ELF_NOTE_OS_GNU                1 | 
| 1285 | #define ELF_NOTE_OS_SOLARIS2        2 | 
| 1286 | #define ELF_NOTE_OS_FREEBSD        3 | 
| 1287 |  | 
| 1288 | /* Synthetic hwcap information.  The descriptor begins with two words: | 
| 1289 |    word 0: number of entries | 
| 1290 |    word 1: bitmask of enabled entries | 
| 1291 |    Then follow variable-length entries, one byte followed by a | 
| 1292 |    '\0'-terminated hwcap name string.  The byte gives the bit | 
| 1293 |    number to test if enabled, (1U << bit) & bitmask.  */ | 
| 1294 | #define NT_GNU_HWCAP        2 | 
| 1295 |  | 
| 1296 | /* Build ID bits as generated by ld --build-id. | 
| 1297 |    The descriptor consists of any nonzero number of bytes.  */ | 
| 1298 | #define NT_GNU_BUILD_ID        3 | 
| 1299 |  | 
| 1300 | /* Version note generated by GNU gold containing a version string.  */ | 
| 1301 | #define NT_GNU_GOLD_VERSION        4 | 
| 1302 |  | 
| 1303 | /* Program property.  */ | 
| 1304 | #define NT_GNU_PROPERTY_TYPE_0 5 | 
| 1305 |  | 
| 1306 | /* Packaging metadata as defined on | 
| 1307 |    https://systemd.io/COREDUMP_PACKAGE_METADATA/ */ | 
| 1308 | #define NT_FDO_PACKAGING_METADATA 0xcafe1a7e | 
| 1309 |  | 
| 1310 | /* Note section name of program property.   */ | 
| 1311 | #define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property" | 
| 1312 |  | 
| 1313 | /* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0).  */ | 
| 1314 |  | 
| 1315 | /* Stack size.  */ | 
| 1316 | #define GNU_PROPERTY_STACK_SIZE                        1 | 
| 1317 | /* No copy relocation on protected data symbol.  */ | 
| 1318 | #define GNU_PROPERTY_NO_COPY_ON_PROTECTED        2 | 
| 1319 |  | 
| 1320 | /* A 4-byte unsigned integer property: A bit is set if it is set in all | 
| 1321 |    relocatable inputs.  */ | 
| 1322 | #define GNU_PROPERTY_UINT32_AND_LO        0xb0000000 | 
| 1323 | #define GNU_PROPERTY_UINT32_AND_HI        0xb0007fff | 
| 1324 |  | 
| 1325 | /* A 4-byte unsigned integer property: A bit is set if it is set in any | 
| 1326 |    relocatable inputs.  */ | 
| 1327 | #define GNU_PROPERTY_UINT32_OR_LO        0xb0008000 | 
| 1328 | #define GNU_PROPERTY_UINT32_OR_HI        0xb000ffff | 
| 1329 |  | 
| 1330 | /* The needed properties by the object file.  */ | 
| 1331 | #define GNU_PROPERTY_1_NEEDED                GNU_PROPERTY_UINT32_OR_LO | 
| 1332 |  | 
| 1333 | /* Set if the object file requires canonical function pointers and | 
| 1334 |    cannot be used with copy relocation.  */ | 
| 1335 | #define GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS (1U << 0) | 
| 1336 |  | 
| 1337 | /* Processor-specific semantics, lo */ | 
| 1338 | #define GNU_PROPERTY_LOPROC                        0xc0000000 | 
| 1339 | /* Processor-specific semantics, hi */ | 
| 1340 | #define GNU_PROPERTY_HIPROC                        0xdfffffff | 
| 1341 | /* Application-specific semantics, lo */ | 
| 1342 | #define GNU_PROPERTY_LOUSER                        0xe0000000 | 
| 1343 | /* Application-specific semantics, hi */ | 
| 1344 | #define GNU_PROPERTY_HIUSER                        0xffffffff | 
| 1345 |  | 
| 1346 | /* AArch64 specific GNU properties.  */ | 
| 1347 | #define GNU_PROPERTY_AARCH64_FEATURE_1_AND        0xc0000000 | 
| 1348 |  | 
| 1349 | #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI        (1U << 0) | 
| 1350 | #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC        (1U << 1) | 
| 1351 |  | 
| 1352 | /* The x86 instruction sets indicated by the corresponding bits are | 
| 1353 |    used in program.  Their support in the hardware is optional.  */ | 
| 1354 | #define GNU_PROPERTY_X86_ISA_1_USED                0xc0010002 | 
| 1355 | /* The x86 instruction sets indicated by the corresponding bits are | 
| 1356 |    used in program and they must be supported by the hardware.   */ | 
| 1357 | #define GNU_PROPERTY_X86_ISA_1_NEEDED                0xc0008002 | 
| 1358 | /* X86 processor-specific features used in program.  */ | 
| 1359 | #define GNU_PROPERTY_X86_FEATURE_1_AND                0xc0000002 | 
| 1360 |  | 
| 1361 | /* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld), | 
| 1362 |    MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2.  */ | 
| 1363 | #define GNU_PROPERTY_X86_ISA_1_BASELINE                (1U << 0) | 
| 1364 | /* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE, | 
| 1365 |    CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, | 
| 1366 |    SSSE3, SSE4.1 and SSE4.2.  */ | 
| 1367 | #define GNU_PROPERTY_X86_ISA_1_V2                (1U << 1) | 
| 1368 | /* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1, | 
| 1369 |    BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE.  */ | 
| 1370 | #define GNU_PROPERTY_X86_ISA_1_V3                (1U << 2) | 
| 1371 | /* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F, | 
| 1372 |    AVX512BW, AVX512CD, AVX512DQ and AVX512VL.  */ | 
| 1373 | #define GNU_PROPERTY_X86_ISA_1_V4                (1U << 3) | 
| 1374 |  | 
| 1375 | /* This indicates that all executable sections are compatible with | 
| 1376 |    IBT.  */ | 
| 1377 | #define GNU_PROPERTY_X86_FEATURE_1_IBT                (1U << 0) | 
| 1378 | /* This indicates that all executable sections are compatible with | 
| 1379 |    SHSTK.  */ | 
| 1380 | #define GNU_PROPERTY_X86_FEATURE_1_SHSTK        (1U << 1) | 
| 1381 |  | 
| 1382 | /* Move records.  */ | 
| 1383 | typedef struct | 
| 1384 | { | 
| 1385 |   Elf32_Xword m_value;                /* Symbol value.  */ | 
| 1386 |   Elf32_Word m_info;                /* Size and index.  */ | 
| 1387 |   Elf32_Word m_poffset;                /* Symbol offset.  */ | 
| 1388 |   Elf32_Half m_repeat;                /* Repeat count.  */ | 
| 1389 |   Elf32_Half m_stride;                /* Stride info.  */ | 
| 1390 | } Elf32_Move; | 
| 1391 |  | 
| 1392 | typedef struct | 
| 1393 | { | 
| 1394 |   Elf64_Xword m_value;                /* Symbol value.  */ | 
| 1395 |   Elf64_Xword m_info;                /* Size and index.  */ | 
| 1396 |   Elf64_Xword m_poffset;        /* Symbol offset.  */ | 
| 1397 |   Elf64_Half m_repeat;                /* Repeat count.  */ | 
| 1398 |   Elf64_Half m_stride;                /* Stride info.  */ | 
| 1399 | } Elf64_Move; | 
| 1400 |  | 
| 1401 | /* Macro to construct move records.  */ | 
| 1402 | #define ELF32_M_SYM(info)        ((info) >> 8) | 
| 1403 | #define ELF32_M_SIZE(info)        ((unsigned char) (info)) | 
| 1404 | #define ELF32_M_INFO(sym, size)        (((sym) << 8) + (unsigned char) (size)) | 
| 1405 |  | 
| 1406 | #define ELF64_M_SYM(info)        ELF32_M_SYM (info) | 
| 1407 | #define ELF64_M_SIZE(info)        ELF32_M_SIZE (info) | 
| 1408 | #define ELF64_M_INFO(sym, size)        ELF32_M_INFO (sym, size) | 
| 1409 |  | 
| 1410 |  | 
| 1411 | /* Motorola 68k specific definitions.  */ | 
| 1412 |  | 
| 1413 | /* Values for Elf32_Ehdr.e_flags.  */ | 
| 1414 | #define EF_CPU32        0x00810000 | 
| 1415 |  | 
| 1416 | /* m68k relocs.  */ | 
| 1417 |  | 
| 1418 | #define R_68K_NONE        0                /* No reloc */ | 
| 1419 | #define R_68K_32        1                /* Direct 32 bit  */ | 
| 1420 | #define R_68K_16        2                /* Direct 16 bit  */ | 
| 1421 | #define R_68K_8                3                /* Direct 8 bit  */ | 
| 1422 | #define R_68K_PC32        4                /* PC relative 32 bit */ | 
| 1423 | #define R_68K_PC16        5                /* PC relative 16 bit */ | 
| 1424 | #define R_68K_PC8        6                /* PC relative 8 bit */ | 
| 1425 | #define R_68K_GOT32        7                /* 32 bit PC relative GOT entry */ | 
| 1426 | #define R_68K_GOT16        8                /* 16 bit PC relative GOT entry */ | 
| 1427 | #define R_68K_GOT8        9                /* 8 bit PC relative GOT entry */ | 
| 1428 | #define R_68K_GOT32O        10                /* 32 bit GOT offset */ | 
| 1429 | #define R_68K_GOT16O        11                /* 16 bit GOT offset */ | 
| 1430 | #define R_68K_GOT8O        12                /* 8 bit GOT offset */ | 
| 1431 | #define R_68K_PLT32        13                /* 32 bit PC relative PLT address */ | 
| 1432 | #define R_68K_PLT16        14                /* 16 bit PC relative PLT address */ | 
| 1433 | #define R_68K_PLT8        15                /* 8 bit PC relative PLT address */ | 
| 1434 | #define R_68K_PLT32O        16                /* 32 bit PLT offset */ | 
| 1435 | #define R_68K_PLT16O        17                /* 16 bit PLT offset */ | 
| 1436 | #define R_68K_PLT8O        18                /* 8 bit PLT offset */ | 
| 1437 | #define R_68K_COPY        19                /* Copy symbol at runtime */ | 
| 1438 | #define R_68K_GLOB_DAT        20                /* Create GOT entry */ | 
| 1439 | #define R_68K_JMP_SLOT        21                /* Create PLT entry */ | 
| 1440 | #define R_68K_RELATIVE        22                /* Adjust by program base */ | 
| 1441 | #define R_68K_TLS_GD32      25          /* 32 bit GOT offset for GD */ | 
| 1442 | #define R_68K_TLS_GD16      26          /* 16 bit GOT offset for GD */ | 
| 1443 | #define R_68K_TLS_GD8       27          /* 8 bit GOT offset for GD */ | 
| 1444 | #define R_68K_TLS_LDM32     28          /* 32 bit GOT offset for LDM */ | 
| 1445 | #define R_68K_TLS_LDM16     29          /* 16 bit GOT offset for LDM */ | 
| 1446 | #define R_68K_TLS_LDM8      30          /* 8 bit GOT offset for LDM */ | 
| 1447 | #define R_68K_TLS_LDO32     31          /* 32 bit module-relative offset */ | 
| 1448 | #define R_68K_TLS_LDO16     32          /* 16 bit module-relative offset */ | 
| 1449 | #define R_68K_TLS_LDO8      33          /* 8 bit module-relative offset */ | 
| 1450 | #define R_68K_TLS_IE32      34          /* 32 bit GOT offset for IE */ | 
| 1451 | #define R_68K_TLS_IE16      35          /* 16 bit GOT offset for IE */ | 
| 1452 | #define R_68K_TLS_IE8       36          /* 8 bit GOT offset for IE */ | 
| 1453 | #define R_68K_TLS_LE32      37          /* 32 bit offset relative to | 
| 1454 |                                            static TLS block */ | 
| 1455 | #define R_68K_TLS_LE16      38          /* 16 bit offset relative to | 
| 1456 |                                            static TLS block */ | 
| 1457 | #define R_68K_TLS_LE8       39          /* 8 bit offset relative to | 
| 1458 |                                            static TLS block */ | 
| 1459 | #define R_68K_TLS_DTPMOD32  40          /* 32 bit module number */ | 
| 1460 | #define R_68K_TLS_DTPREL32  41          /* 32 bit module-relative offset */ | 
| 1461 | #define R_68K_TLS_TPREL32   42          /* 32 bit TP-relative offset */ | 
| 1462 | /* Keep this the last entry.  */ | 
| 1463 | #define R_68K_NUM        43 | 
| 1464 |  | 
| 1465 | /* Intel 80386 specific definitions.  */ | 
| 1466 |  | 
| 1467 | /* i386 relocs.  */ | 
| 1468 |  | 
| 1469 | #define R_386_NONE           0                /* No reloc */ | 
| 1470 | #define R_386_32           1                /* Direct 32 bit  */ | 
| 1471 | #define R_386_PC32           2                /* PC relative 32 bit */ | 
| 1472 | #define R_386_GOT32           3                /* 32 bit GOT entry */ | 
| 1473 | #define R_386_PLT32           4                /* 32 bit PLT address */ | 
| 1474 | #define R_386_COPY           5                /* Copy symbol at runtime */ | 
| 1475 | #define R_386_GLOB_DAT           6                /* Create GOT entry */ | 
| 1476 | #define R_386_JMP_SLOT           7                /* Create PLT entry */ | 
| 1477 | #define R_386_RELATIVE           8                /* Adjust by program base */ | 
| 1478 | #define R_386_GOTOFF           9                /* 32 bit offset to GOT */ | 
| 1479 | #define R_386_GOTPC           10                /* 32 bit PC relative offset to GOT */ | 
| 1480 | #define R_386_32PLT           11 | 
| 1481 | #define R_386_TLS_TPOFF           14                /* Offset in static TLS block */ | 
| 1482 | #define R_386_TLS_IE           15                /* Address of GOT entry for static TLS | 
| 1483 |                                            block offset */ | 
| 1484 | #define R_386_TLS_GOTIE           16                /* GOT entry for static TLS block | 
| 1485 |                                            offset */ | 
| 1486 | #define R_386_TLS_LE           17                /* Offset relative to static TLS | 
| 1487 |                                            block */ | 
| 1488 | #define R_386_TLS_GD           18                /* Direct 32 bit for GNU version of | 
| 1489 |                                            general dynamic thread local data */ | 
| 1490 | #define R_386_TLS_LDM           19                /* Direct 32 bit for GNU version of | 
| 1491 |                                            local dynamic thread local data | 
| 1492 |                                            in LE code */ | 
| 1493 | #define R_386_16           20 | 
| 1494 | #define R_386_PC16           21 | 
| 1495 | #define R_386_8                   22 | 
| 1496 | #define R_386_PC8           23 | 
| 1497 | #define R_386_TLS_GD_32           24                /* Direct 32 bit for general dynamic | 
| 1498 |                                            thread local data */ | 
| 1499 | #define R_386_TLS_GD_PUSH  25                /* Tag for pushl in GD TLS code */ | 
| 1500 | #define R_386_TLS_GD_CALL  26                /* Relocation for call to | 
| 1501 |                                            __tls_get_addr() */ | 
| 1502 | #define R_386_TLS_GD_POP   27                /* Tag for popl in GD TLS code */ | 
| 1503 | #define R_386_TLS_LDM_32   28                /* Direct 32 bit for local dynamic | 
| 1504 |                                            thread local data in LE code */ | 
| 1505 | #define R_386_TLS_LDM_PUSH 29                /* Tag for pushl in LDM TLS code */ | 
| 1506 | #define R_386_TLS_LDM_CALL 30                /* Relocation for call to | 
| 1507 |                                            __tls_get_addr() in LDM code */ | 
| 1508 | #define R_386_TLS_LDM_POP  31                /* Tag for popl in LDM TLS code */ | 
| 1509 | #define R_386_TLS_LDO_32   32                /* Offset relative to TLS block */ | 
| 1510 | #define R_386_TLS_IE_32           33                /* GOT entry for negated static TLS | 
| 1511 |                                            block offset */ | 
| 1512 | #define R_386_TLS_LE_32           34                /* Negated offset relative to static | 
| 1513 |                                            TLS block */ | 
| 1514 | #define R_386_TLS_DTPMOD32 35                /* ID of module containing symbol */ | 
| 1515 | #define R_386_TLS_DTPOFF32 36                /* Offset in TLS block */ | 
| 1516 | #define R_386_TLS_TPOFF32  37                /* Negated offset in static TLS block */ | 
| 1517 | #define R_386_SIZE32           38                 /* 32-bit symbol size */ | 
| 1518 | #define R_386_TLS_GOTDESC  39                /* GOT offset for TLS descriptor.  */ | 
| 1519 | #define R_386_TLS_DESC_CALL 40                /* Marker of call through TLS | 
| 1520 |                                            descriptor for | 
| 1521 |                                            relaxation.  */ | 
| 1522 | #define R_386_TLS_DESC     41                /* TLS descriptor containing | 
| 1523 |                                            pointer to code and to | 
| 1524 |                                            argument, returning the TLS | 
| 1525 |                                            offset for the symbol.  */ | 
| 1526 | #define R_386_IRELATIVE           42                /* Adjust indirectly by program base */ | 
| 1527 | #define R_386_GOT32X           43                /* Load from 32 bit GOT entry, | 
| 1528 |                                            relaxable. */ | 
| 1529 | /* Keep this the last entry.  */ | 
| 1530 | #define R_386_NUM           44 | 
| 1531 |  | 
| 1532 | /* SUN SPARC specific definitions.  */ | 
| 1533 |  | 
| 1534 | /* Legal values for ST_TYPE subfield of st_info (symbol type).  */ | 
| 1535 |  | 
| 1536 | #define STT_SPARC_REGISTER        13        /* Global register reserved to app. */ | 
| 1537 |  | 
| 1538 | /* Values for Elf64_Ehdr.e_flags.  */ | 
| 1539 |  | 
| 1540 | #define EF_SPARCV9_MM                3 | 
| 1541 | #define EF_SPARCV9_TSO                0 | 
| 1542 | #define EF_SPARCV9_PSO                1 | 
| 1543 | #define EF_SPARCV9_RMO                2 | 
| 1544 | #define EF_SPARC_LEDATA                0x800000 /* little endian data */ | 
| 1545 | #define EF_SPARC_EXT_MASK        0xFFFF00 | 
| 1546 | #define EF_SPARC_32PLUS                0x000100 /* generic V8+ features */ | 
| 1547 | #define EF_SPARC_SUN_US1        0x000200 /* Sun UltraSPARC1 extensions */ | 
| 1548 | #define EF_SPARC_HAL_R1                0x000400 /* HAL R1 extensions */ | 
| 1549 | #define EF_SPARC_SUN_US3        0x000800 /* Sun UltraSPARCIII extensions */ | 
| 1550 |  | 
| 1551 | /* SPARC relocs.  */ | 
| 1552 |  | 
| 1553 | #define R_SPARC_NONE                0        /* No reloc */ | 
| 1554 | #define R_SPARC_8                1        /* Direct 8 bit */ | 
| 1555 | #define R_SPARC_16                2        /* Direct 16 bit */ | 
| 1556 | #define R_SPARC_32                3        /* Direct 32 bit */ | 
| 1557 | #define R_SPARC_DISP8                4        /* PC relative 8 bit */ | 
| 1558 | #define R_SPARC_DISP16                5        /* PC relative 16 bit */ | 
| 1559 | #define R_SPARC_DISP32                6        /* PC relative 32 bit */ | 
| 1560 | #define R_SPARC_WDISP30                7        /* PC relative 30 bit shifted */ | 
| 1561 | #define R_SPARC_WDISP22                8        /* PC relative 22 bit shifted */ | 
| 1562 | #define R_SPARC_HI22                9        /* High 22 bit */ | 
| 1563 | #define R_SPARC_22                10        /* Direct 22 bit */ | 
| 1564 | #define R_SPARC_13                11        /* Direct 13 bit */ | 
| 1565 | #define R_SPARC_LO10                12        /* Truncated 10 bit */ | 
| 1566 | #define R_SPARC_GOT10                13        /* Truncated 10 bit GOT entry */ | 
| 1567 | #define R_SPARC_GOT13                14        /* 13 bit GOT entry */ | 
| 1568 | #define R_SPARC_GOT22                15        /* 22 bit GOT entry shifted */ | 
| 1569 | #define R_SPARC_PC10                16        /* PC relative 10 bit truncated */ | 
| 1570 | #define R_SPARC_PC22                17        /* PC relative 22 bit shifted */ | 
| 1571 | #define R_SPARC_WPLT30                18        /* 30 bit PC relative PLT address */ | 
| 1572 | #define R_SPARC_COPY                19        /* Copy symbol at runtime */ | 
| 1573 | #define R_SPARC_GLOB_DAT        20        /* Create GOT entry */ | 
| 1574 | #define R_SPARC_JMP_SLOT        21        /* Create PLT entry */ | 
| 1575 | #define R_SPARC_RELATIVE        22        /* Adjust by program base */ | 
| 1576 | #define R_SPARC_UA32                23        /* Direct 32 bit unaligned */ | 
| 1577 |  | 
| 1578 | /* Additional Sparc64 relocs.  */ | 
| 1579 |  | 
| 1580 | #define R_SPARC_PLT32                24        /* Direct 32 bit ref to PLT entry */ | 
| 1581 | #define R_SPARC_HIPLT22                25        /* High 22 bit PLT entry */ | 
| 1582 | #define R_SPARC_LOPLT10                26        /* Truncated 10 bit PLT entry */ | 
| 1583 | #define R_SPARC_PCPLT32                27        /* PC rel 32 bit ref to PLT entry */ | 
| 1584 | #define R_SPARC_PCPLT22                28        /* PC rel high 22 bit PLT entry */ | 
| 1585 | #define R_SPARC_PCPLT10                29        /* PC rel trunc 10 bit PLT entry */ | 
| 1586 | #define R_SPARC_10                30        /* Direct 10 bit */ | 
| 1587 | #define R_SPARC_11                31        /* Direct 11 bit */ | 
| 1588 | #define R_SPARC_64                32        /* Direct 64 bit */ | 
| 1589 | #define R_SPARC_OLO10                33        /* 10bit with secondary 13bit addend */ | 
| 1590 | #define R_SPARC_HH22                34        /* Top 22 bits of direct 64 bit */ | 
| 1591 | #define R_SPARC_HM10                35        /* High middle 10 bits of ... */ | 
| 1592 | #define R_SPARC_LM22                36        /* Low middle 22 bits of ... */ | 
| 1593 | #define R_SPARC_PC_HH22                37        /* Top 22 bits of pc rel 64 bit */ | 
| 1594 | #define R_SPARC_PC_HM10                38        /* High middle 10 bit of ... */ | 
| 1595 | #define R_SPARC_PC_LM22                39        /* Low miggle 22 bits of ... */ | 
| 1596 | #define R_SPARC_WDISP16                40        /* PC relative 16 bit shifted */ | 
| 1597 | #define R_SPARC_WDISP19                41        /* PC relative 19 bit shifted */ | 
| 1598 | #define R_SPARC_GLOB_JMP        42        /* was part of v9 ABI but was removed */ | 
| 1599 | #define R_SPARC_7                43        /* Direct 7 bit */ | 
| 1600 | #define R_SPARC_5                44        /* Direct 5 bit */ | 
| 1601 | #define R_SPARC_6                45        /* Direct 6 bit */ | 
| 1602 | #define R_SPARC_DISP64                46        /* PC relative 64 bit */ | 
| 1603 | #define R_SPARC_PLT64                47        /* Direct 64 bit ref to PLT entry */ | 
| 1604 | #define R_SPARC_HIX22                48        /* High 22 bit complemented */ | 
| 1605 | #define R_SPARC_LOX10                49        /* Truncated 11 bit complemented */ | 
| 1606 | #define R_SPARC_H44                50        /* Direct high 12 of 44 bit */ | 
| 1607 | #define R_SPARC_M44                51        /* Direct mid 22 of 44 bit */ | 
| 1608 | #define R_SPARC_L44                52        /* Direct low 10 of 44 bit */ | 
| 1609 | #define R_SPARC_REGISTER        53        /* Global register usage */ | 
| 1610 | #define R_SPARC_UA64                54        /* Direct 64 bit unaligned */ | 
| 1611 | #define R_SPARC_UA16                55        /* Direct 16 bit unaligned */ | 
| 1612 | #define R_SPARC_TLS_GD_HI22        56 | 
| 1613 | #define R_SPARC_TLS_GD_LO10        57 | 
| 1614 | #define R_SPARC_TLS_GD_ADD        58 | 
| 1615 | #define R_SPARC_TLS_GD_CALL        59 | 
| 1616 | #define R_SPARC_TLS_LDM_HI22        60 | 
| 1617 | #define R_SPARC_TLS_LDM_LO10        61 | 
| 1618 | #define R_SPARC_TLS_LDM_ADD        62 | 
| 1619 | #define R_SPARC_TLS_LDM_CALL        63 | 
| 1620 | #define R_SPARC_TLS_LDO_HIX22        64 | 
| 1621 | #define R_SPARC_TLS_LDO_LOX10        65 | 
| 1622 | #define R_SPARC_TLS_LDO_ADD        66 | 
| 1623 | #define R_SPARC_TLS_IE_HI22        67 | 
| 1624 | #define R_SPARC_TLS_IE_LO10        68 | 
| 1625 | #define R_SPARC_TLS_IE_LD        69 | 
| 1626 | #define R_SPARC_TLS_IE_LDX        70 | 
| 1627 | #define R_SPARC_TLS_IE_ADD        71 | 
| 1628 | #define R_SPARC_TLS_LE_HIX22        72 | 
| 1629 | #define R_SPARC_TLS_LE_LOX10        73 | 
| 1630 | #define R_SPARC_TLS_DTPMOD32        74 | 
| 1631 | #define R_SPARC_TLS_DTPMOD64        75 | 
| 1632 | #define R_SPARC_TLS_DTPOFF32        76 | 
| 1633 | #define R_SPARC_TLS_DTPOFF64        77 | 
| 1634 | #define R_SPARC_TLS_TPOFF32        78 | 
| 1635 | #define R_SPARC_TLS_TPOFF64        79 | 
| 1636 | #define R_SPARC_GOTDATA_HIX22        80 | 
| 1637 | #define R_SPARC_GOTDATA_LOX10        81 | 
| 1638 | #define R_SPARC_GOTDATA_OP_HIX22        82 | 
| 1639 | #define R_SPARC_GOTDATA_OP_LOX10        83 | 
| 1640 | #define R_SPARC_GOTDATA_OP        84 | 
| 1641 | #define R_SPARC_H34                85 | 
| 1642 | #define R_SPARC_SIZE32                86 | 
| 1643 | #define R_SPARC_SIZE64                87 | 
| 1644 | #define R_SPARC_WDISP10                88 | 
| 1645 | #define R_SPARC_JMP_IREL        248 | 
| 1646 | #define R_SPARC_IRELATIVE        249 | 
| 1647 | #define R_SPARC_GNU_VTINHERIT        250 | 
| 1648 | #define R_SPARC_GNU_VTENTRY        251 | 
| 1649 | #define R_SPARC_REV32                252 | 
| 1650 | /* Keep this the last entry.  */ | 
| 1651 | #define R_SPARC_NUM                253 | 
| 1652 |  | 
| 1653 | /* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ | 
| 1654 |  | 
| 1655 | #define DT_SPARC_REGISTER        0x70000001 | 
| 1656 | #define DT_SPARC_NUM                2 | 
| 1657 |  | 
| 1658 | /* MIPS R3000 specific definitions.  */ | 
| 1659 |  | 
| 1660 | /* Legal values for e_flags field of Elf32_Ehdr.  */ | 
| 1661 |  | 
| 1662 | #define EF_MIPS_NOREORDER        1     /* A .noreorder directive was used.  */ | 
| 1663 | #define EF_MIPS_PIC                2     /* Contains PIC code.  */ | 
| 1664 | #define EF_MIPS_CPIC                4     /* Uses PIC calling sequence.  */ | 
| 1665 | #define EF_MIPS_XGOT                8 | 
| 1666 | #define EF_MIPS_64BIT_WHIRL        16 | 
| 1667 | #define EF_MIPS_ABI2                32 | 
| 1668 | #define EF_MIPS_ABI_ON32        64 | 
| 1669 | #define EF_MIPS_FP64                512  /* Uses FP64 (12 callee-saved).  */ | 
| 1670 | #define EF_MIPS_NAN2008        1024  /* Uses IEEE 754-2008 NaN encoding.  */ | 
| 1671 | #define EF_MIPS_ARCH                0xf0000000 /* MIPS architecture level.  */ | 
| 1672 |  | 
| 1673 | /* Legal values for MIPS architecture level.  */ | 
| 1674 |  | 
| 1675 | #define EF_MIPS_ARCH_1                0x00000000 /* -mips1 code.  */ | 
| 1676 | #define EF_MIPS_ARCH_2                0x10000000 /* -mips2 code.  */ | 
| 1677 | #define EF_MIPS_ARCH_3                0x20000000 /* -mips3 code.  */ | 
| 1678 | #define EF_MIPS_ARCH_4                0x30000000 /* -mips4 code.  */ | 
| 1679 | #define EF_MIPS_ARCH_5                0x40000000 /* -mips5 code.  */ | 
| 1680 | #define EF_MIPS_ARCH_32                0x50000000 /* MIPS32 code.  */ | 
| 1681 | #define EF_MIPS_ARCH_64                0x60000000 /* MIPS64 code.  */ | 
| 1682 | #define EF_MIPS_ARCH_32R2        0x70000000 /* MIPS32r2 code.  */ | 
| 1683 | #define EF_MIPS_ARCH_64R2        0x80000000 /* MIPS64r2 code.  */ | 
| 1684 |  | 
| 1685 | /* The following are unofficial names and should not be used.  */ | 
| 1686 |  | 
| 1687 | #define E_MIPS_ARCH_1                EF_MIPS_ARCH_1 | 
| 1688 | #define E_MIPS_ARCH_2                EF_MIPS_ARCH_2 | 
| 1689 | #define E_MIPS_ARCH_3                EF_MIPS_ARCH_3 | 
| 1690 | #define E_MIPS_ARCH_4                EF_MIPS_ARCH_4 | 
| 1691 | #define E_MIPS_ARCH_5                EF_MIPS_ARCH_5 | 
| 1692 | #define E_MIPS_ARCH_32                EF_MIPS_ARCH_32 | 
| 1693 | #define E_MIPS_ARCH_64                EF_MIPS_ARCH_64 | 
| 1694 |  | 
| 1695 | /* Special section indices.  */ | 
| 1696 |  | 
| 1697 | #define SHN_MIPS_ACOMMON        0xff00        /* Allocated common symbols.  */ | 
| 1698 | #define SHN_MIPS_TEXT                0xff01        /* Allocated test symbols.  */ | 
| 1699 | #define SHN_MIPS_DATA                0xff02        /* Allocated data symbols.  */ | 
| 1700 | #define SHN_MIPS_SCOMMON         0xff03        /* Small common symbols.  */ | 
| 1701 | #define SHN_MIPS_SUNDEFINED        0xff04        /* Small undefined symbols.  */ | 
| 1702 |  | 
| 1703 | /* Legal values for sh_type field of Elf32_Shdr.  */ | 
| 1704 |  | 
| 1705 | #define SHT_MIPS_LIBLIST        0x70000000 /* Shared objects used in link.  */ | 
| 1706 | #define SHT_MIPS_MSYM                0x70000001 | 
| 1707 | #define SHT_MIPS_CONFLICT        0x70000002 /* Conflicting symbols.  */ | 
| 1708 | #define SHT_MIPS_GPTAB                0x70000003 /* Global data area sizes.  */ | 
| 1709 | #define SHT_MIPS_UCODE                0x70000004 /* Reserved for SGI/MIPS compilers */ | 
| 1710 | #define SHT_MIPS_DEBUG                0x70000005 /* MIPS ECOFF debugging info.  */ | 
| 1711 | #define SHT_MIPS_REGINFO        0x70000006 /* Register usage information.  */ | 
| 1712 | #define SHT_MIPS_PACKAGE        0x70000007 | 
| 1713 | #define SHT_MIPS_PACKSYM        0x70000008 | 
| 1714 | #define SHT_MIPS_RELD                0x70000009 | 
| 1715 | #define SHT_MIPS_IFACE                0x7000000b | 
| 1716 | #define SHT_MIPS_CONTENT        0x7000000c | 
| 1717 | #define SHT_MIPS_OPTIONS        0x7000000d /* Miscellaneous options.  */ | 
| 1718 | #define SHT_MIPS_SHDR                0x70000010 | 
| 1719 | #define SHT_MIPS_FDESC                0x70000011 | 
| 1720 | #define SHT_MIPS_EXTSYM                0x70000012 | 
| 1721 | #define SHT_MIPS_DENSE                0x70000013 | 
| 1722 | #define SHT_MIPS_PDESC                0x70000014 | 
| 1723 | #define SHT_MIPS_LOCSYM                0x70000015 | 
| 1724 | #define SHT_MIPS_AUXSYM                0x70000016 | 
| 1725 | #define SHT_MIPS_OPTSYM                0x70000017 | 
| 1726 | #define SHT_MIPS_LOCSTR                0x70000018 | 
| 1727 | #define SHT_MIPS_LINE                0x70000019 | 
| 1728 | #define SHT_MIPS_RFDESC                0x7000001a | 
| 1729 | #define SHT_MIPS_DELTASYM        0x7000001b | 
| 1730 | #define SHT_MIPS_DELTAINST        0x7000001c | 
| 1731 | #define SHT_MIPS_DELTACLASS        0x7000001d | 
| 1732 | #define SHT_MIPS_DWARF                0x7000001e /* DWARF debugging information.  */ | 
| 1733 | #define SHT_MIPS_DELTADECL        0x7000001f | 
| 1734 | #define SHT_MIPS_SYMBOL_LIB        0x70000020 | 
| 1735 | #define SHT_MIPS_EVENTS                0x70000021 /* Event section.  */ | 
| 1736 | #define SHT_MIPS_TRANSLATE        0x70000022 | 
| 1737 | #define SHT_MIPS_PIXIE                0x70000023 | 
| 1738 | #define SHT_MIPS_XLATE                0x70000024 | 
| 1739 | #define SHT_MIPS_XLATE_DEBUG        0x70000025 | 
| 1740 | #define SHT_MIPS_WHIRL                0x70000026 | 
| 1741 | #define SHT_MIPS_EH_REGION        0x70000027 | 
| 1742 | #define SHT_MIPS_XLATE_OLD        0x70000028 | 
| 1743 | #define SHT_MIPS_PDR_EXCEPTION        0x70000029 | 
| 1744 | #define SHT_MIPS_XHASH                0x7000002b | 
| 1745 |  | 
| 1746 | /* Legal values for sh_flags field of Elf32_Shdr.  */ | 
| 1747 |  | 
| 1748 | #define SHF_MIPS_GPREL                0x10000000 /* Must be in global data area.  */ | 
| 1749 | #define SHF_MIPS_MERGE                0x20000000 | 
| 1750 | #define SHF_MIPS_ADDR                0x40000000 | 
| 1751 | #define SHF_MIPS_STRINGS        0x80000000 | 
| 1752 | #define SHF_MIPS_NOSTRIP        0x08000000 | 
| 1753 | #define SHF_MIPS_LOCAL                0x04000000 | 
| 1754 | #define SHF_MIPS_NAMES                0x02000000 | 
| 1755 | #define SHF_MIPS_NODUPE                0x01000000 | 
| 1756 |  | 
| 1757 |  | 
| 1758 | /* Symbol tables.  */ | 
| 1759 |  | 
| 1760 | /* MIPS specific values for `st_other'.  */ | 
| 1761 | #define STO_MIPS_DEFAULT                0x0 | 
| 1762 | #define STO_MIPS_INTERNAL                0x1 | 
| 1763 | #define STO_MIPS_HIDDEN                        0x2 | 
| 1764 | #define STO_MIPS_PROTECTED                0x3 | 
| 1765 | #define STO_MIPS_PLT                        0x8 | 
| 1766 | #define STO_MIPS_SC_ALIGN_UNUSED        0xff | 
| 1767 |  | 
| 1768 | /* MIPS specific values for `st_info'.  */ | 
| 1769 | #define STB_MIPS_SPLIT_COMMON                13 | 
| 1770 |  | 
| 1771 | /* Entries found in sections of type SHT_MIPS_GPTAB.  */ | 
| 1772 |  | 
| 1773 | typedef union | 
| 1774 | { | 
| 1775 |   struct | 
| 1776 |     { | 
| 1777 |       Elf32_Word gt_current_g_value;        /* -G value used for compilation.  */ | 
| 1778 |       Elf32_Word gt_unused;                /* Not used.  */ | 
| 1779 |     } ;                        /* First entry in section.  */ | 
| 1780 |   struct | 
| 1781 |     { | 
| 1782 |       Elf32_Word gt_g_value;                /* If this value were used for -G.  */ | 
| 1783 |       Elf32_Word gt_bytes;                /* This many bytes would be used.  */ | 
| 1784 |     } gt_entry;                                /* Subsequent entries in section.  */ | 
| 1785 | } Elf32_gptab; | 
| 1786 |  | 
| 1787 | /* Entry found in sections of type SHT_MIPS_REGINFO.  */ | 
| 1788 |  | 
| 1789 | typedef struct | 
| 1790 | { | 
| 1791 |   Elf32_Word ri_gprmask;                /* General registers used.  */ | 
| 1792 |   Elf32_Word ri_cprmask[4];                /* Coprocessor registers used.  */ | 
| 1793 |   Elf32_Sword ri_gp_value;                /* $gp register value.  */ | 
| 1794 | } Elf32_RegInfo; | 
| 1795 |  | 
| 1796 | /* Entries found in sections of type SHT_MIPS_OPTIONS.  */ | 
| 1797 |  | 
| 1798 | typedef struct | 
| 1799 | { | 
| 1800 |   unsigned char kind;                /* Determines interpretation of the | 
| 1801 |                                    variable part of descriptor.  */ | 
| 1802 |   unsigned char size;                /* Size of descriptor, including header.  */ | 
| 1803 |   Elf32_Section section;        /* Section header index of section affected, | 
| 1804 |                                    0 for global options.  */ | 
| 1805 |   Elf32_Word info;                /* Kind-specific information.  */ | 
| 1806 | } Elf_Options; | 
| 1807 |  | 
| 1808 | /* Values for `kind' field in Elf_Options.  */ | 
| 1809 |  | 
| 1810 | #define ODK_NULL        0        /* Undefined.  */ | 
| 1811 | #define ODK_REGINFO        1        /* Register usage information.  */ | 
| 1812 | #define ODK_EXCEPTIONS        2        /* Exception processing options.  */ | 
| 1813 | #define ODK_PAD                3        /* Section padding options.  */ | 
| 1814 | #define ODK_HWPATCH        4        /* Hardware workarounds performed */ | 
| 1815 | #define ODK_FILL        5        /* record the fill value used by the linker. */ | 
| 1816 | #define ODK_TAGS        6        /* reserve space for desktop tools to write. */ | 
| 1817 | #define ODK_HWAND        7        /* HW workarounds.  'AND' bits when merging. */ | 
| 1818 | #define ODK_HWOR        8        /* HW workarounds.  'OR' bits when merging.  */ | 
| 1819 |  | 
| 1820 | /* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ | 
| 1821 |  | 
| 1822 | #define OEX_FPU_MIN        0x1f        /* FPE's which MUST be enabled.  */ | 
| 1823 | #define OEX_FPU_MAX        0x1f00        /* FPE's which MAY be enabled.  */ | 
| 1824 | #define OEX_PAGE0        0x10000        /* page zero must be mapped.  */ | 
| 1825 | #define OEX_SMM                0x20000        /* Force sequential memory mode?  */ | 
| 1826 | #define OEX_FPDBUG        0x40000        /* Force floating point debug mode?  */ | 
| 1827 | #define OEX_PRECISEFP        OEX_FPDBUG | 
| 1828 | #define OEX_DISMISS        0x80000        /* Dismiss invalid address faults?  */ | 
| 1829 |  | 
| 1830 | #define OEX_FPU_INVAL        0x10 | 
| 1831 | #define OEX_FPU_DIV0        0x08 | 
| 1832 | #define OEX_FPU_OFLO        0x04 | 
| 1833 | #define OEX_FPU_UFLO        0x02 | 
| 1834 | #define OEX_FPU_INEX        0x01 | 
| 1835 |  | 
| 1836 | /* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ | 
| 1837 |  | 
| 1838 | #define OHW_R4KEOP        0x1        /* R4000 end-of-page patch.  */ | 
| 1839 | #define OHW_R8KPFETCH        0x2        /* may need R8000 prefetch patch.  */ | 
| 1840 | #define OHW_R5KEOP        0x4        /* R5000 end-of-page patch.  */ | 
| 1841 | #define OHW_R5KCVTL        0x8        /* R5000 cvt.[ds].l bug.  clean=1.  */ | 
| 1842 |  | 
| 1843 | #define OPAD_PREFIX        0x1 | 
| 1844 | #define OPAD_POSTFIX        0x2 | 
| 1845 | #define OPAD_SYMBOL        0x4 | 
| 1846 |  | 
| 1847 | /* Entry found in `.options' section.  */ | 
| 1848 |  | 
| 1849 | typedef struct | 
| 1850 | { | 
| 1851 |   Elf32_Word hwp_flags1;        /* Extra flags.  */ | 
| 1852 |   Elf32_Word hwp_flags2;        /* Extra flags.  */ | 
| 1853 | } Elf_Options_Hw; | 
| 1854 |  | 
| 1855 | /* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ | 
| 1856 |  | 
| 1857 | #define OHWA0_R4KEOP_CHECKED        0x00000001 | 
| 1858 | #define OHWA1_R4KEOP_CLEAN        0x00000002 | 
| 1859 |  | 
| 1860 | /* MIPS relocs.  */ | 
| 1861 |  | 
| 1862 | #define R_MIPS_NONE                0        /* No reloc */ | 
| 1863 | #define R_MIPS_16                1        /* Direct 16 bit */ | 
| 1864 | #define R_MIPS_32                2        /* Direct 32 bit */ | 
| 1865 | #define R_MIPS_REL32                3        /* PC relative 32 bit */ | 
| 1866 | #define R_MIPS_26                4        /* Direct 26 bit shifted */ | 
| 1867 | #define R_MIPS_HI16                5        /* High 16 bit */ | 
| 1868 | #define R_MIPS_LO16                6        /* Low 16 bit */ | 
| 1869 | #define R_MIPS_GPREL16                7        /* GP relative 16 bit */ | 
| 1870 | #define R_MIPS_LITERAL                8        /* 16 bit literal entry */ | 
| 1871 | #define R_MIPS_GOT16                9        /* 16 bit GOT entry */ | 
| 1872 | #define R_MIPS_PC16                10        /* PC relative 16 bit */ | 
| 1873 | #define R_MIPS_CALL16                11        /* 16 bit GOT entry for function */ | 
| 1874 | #define R_MIPS_GPREL32                12        /* GP relative 32 bit */ | 
| 1875 |  | 
| 1876 | #define R_MIPS_SHIFT5                16 | 
| 1877 | #define R_MIPS_SHIFT6                17 | 
| 1878 | #define R_MIPS_64                18 | 
| 1879 | #define R_MIPS_GOT_DISP                19 | 
| 1880 | #define R_MIPS_GOT_PAGE                20 | 
| 1881 | #define R_MIPS_GOT_OFST                21 | 
| 1882 | #define R_MIPS_GOT_HI16                22 | 
| 1883 | #define R_MIPS_GOT_LO16                23 | 
| 1884 | #define R_MIPS_SUB                24 | 
| 1885 | #define R_MIPS_INSERT_A                25 | 
| 1886 | #define R_MIPS_INSERT_B                26 | 
| 1887 | #define R_MIPS_DELETE                27 | 
| 1888 | #define R_MIPS_HIGHER                28 | 
| 1889 | #define R_MIPS_HIGHEST                29 | 
| 1890 | #define R_MIPS_CALL_HI16        30 | 
| 1891 | #define R_MIPS_CALL_LO16        31 | 
| 1892 | #define R_MIPS_SCN_DISP                32 | 
| 1893 | #define R_MIPS_REL16                33 | 
| 1894 | #define R_MIPS_ADD_IMMEDIATE        34 | 
| 1895 | #define R_MIPS_PJUMP                35 | 
| 1896 | #define R_MIPS_RELGOT                36 | 
| 1897 | #define R_MIPS_JALR                37 | 
| 1898 | #define R_MIPS_TLS_DTPMOD32        38        /* Module number 32 bit */ | 
| 1899 | #define R_MIPS_TLS_DTPREL32        39        /* Module-relative offset 32 bit */ | 
| 1900 | #define R_MIPS_TLS_DTPMOD64        40        /* Module number 64 bit */ | 
| 1901 | #define R_MIPS_TLS_DTPREL64        41        /* Module-relative offset 64 bit */ | 
| 1902 | #define R_MIPS_TLS_GD                42        /* 16 bit GOT offset for GD */ | 
| 1903 | #define R_MIPS_TLS_LDM                43        /* 16 bit GOT offset for LDM */ | 
| 1904 | #define R_MIPS_TLS_DTPREL_HI16        44        /* Module-relative offset, high 16 bits */ | 
| 1905 | #define R_MIPS_TLS_DTPREL_LO16        45        /* Module-relative offset, low 16 bits */ | 
| 1906 | #define R_MIPS_TLS_GOTTPREL        46        /* 16 bit GOT offset for IE */ | 
| 1907 | #define R_MIPS_TLS_TPREL32        47        /* TP-relative offset, 32 bit */ | 
| 1908 | #define R_MIPS_TLS_TPREL64        48        /* TP-relative offset, 64 bit */ | 
| 1909 | #define R_MIPS_TLS_TPREL_HI16        49        /* TP-relative offset, high 16 bits */ | 
| 1910 | #define R_MIPS_TLS_TPREL_LO16        50        /* TP-relative offset, low 16 bits */ | 
| 1911 | #define R_MIPS_GLOB_DAT                51 | 
| 1912 | #define R_MIPS_COPY                126 | 
| 1913 | #define R_MIPS_JUMP_SLOT        127 | 
| 1914 | /* Keep this the last entry.  */ | 
| 1915 | #define R_MIPS_NUM                128 | 
| 1916 |  | 
| 1917 | /* Legal values for p_type field of Elf32_Phdr.  */ | 
| 1918 |  | 
| 1919 | #define PT_MIPS_REGINFO          0x70000000        /* Register usage information. */ | 
| 1920 | #define PT_MIPS_RTPROC          0x70000001        /* Runtime procedure table. */ | 
| 1921 | #define PT_MIPS_OPTIONS          0x70000002 | 
| 1922 | #define PT_MIPS_ABIFLAGS  0x70000003        /* FP mode requirement. */ | 
| 1923 |  | 
| 1924 | /* Special program header types.  */ | 
| 1925 |  | 
| 1926 | #define PF_MIPS_LOCAL        0x10000000 | 
| 1927 |  | 
| 1928 | /* Legal values for d_tag field of Elf32_Dyn.  */ | 
| 1929 |  | 
| 1930 | #define DT_MIPS_RLD_VERSION  0x70000001        /* Runtime linker interface version */ | 
| 1931 | #define DT_MIPS_TIME_STAMP   0x70000002        /* Timestamp */ | 
| 1932 | #define DT_MIPS_ICHECKSUM    0x70000003        /* Checksum */ | 
| 1933 | #define DT_MIPS_IVERSION     0x70000004        /* Version string (string tbl index) */ | 
| 1934 | #define DT_MIPS_FLAGS             0x70000005        /* Flags */ | 
| 1935 | #define DT_MIPS_BASE_ADDRESS 0x70000006        /* Base address */ | 
| 1936 | #define DT_MIPS_MSYM             0x70000007 | 
| 1937 | #define DT_MIPS_CONFLICT     0x70000008        /* Address of CONFLICT section */ | 
| 1938 | #define DT_MIPS_LIBLIST             0x70000009        /* Address of LIBLIST section */ | 
| 1939 | #define DT_MIPS_LOCAL_GOTNO  0x7000000a        /* Number of local GOT entries */ | 
| 1940 | #define DT_MIPS_CONFLICTNO   0x7000000b        /* Number of CONFLICT entries */ | 
| 1941 | #define DT_MIPS_LIBLISTNO    0x70000010        /* Number of LIBLIST entries */ | 
| 1942 | #define DT_MIPS_SYMTABNO     0x70000011        /* Number of DYNSYM entries */ | 
| 1943 | #define DT_MIPS_UNREFEXTNO   0x70000012        /* First external DYNSYM */ | 
| 1944 | #define DT_MIPS_GOTSYM             0x70000013        /* First GOT entry in DYNSYM */ | 
| 1945 | #define DT_MIPS_HIPAGENO     0x70000014        /* Number of GOT page table entries */ | 
| 1946 | #define DT_MIPS_RLD_MAP             0x70000016        /* Address of run time loader map.  */ | 
| 1947 | #define DT_MIPS_DELTA_CLASS  0x70000017        /* Delta C++ class definition.  */ | 
| 1948 | #define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in | 
| 1949 |                                                 DT_MIPS_DELTA_CLASS.  */ | 
| 1950 | #define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ | 
| 1951 | #define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in | 
| 1952 |                                                 DT_MIPS_DELTA_INSTANCE.  */ | 
| 1953 | #define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ | 
| 1954 | #define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in | 
| 1955 |                                              DT_MIPS_DELTA_RELOC.  */ | 
| 1956 | #define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta | 
| 1957 |                                            relocations refer to.  */ | 
| 1958 | #define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in | 
| 1959 |                                            DT_MIPS_DELTA_SYM.  */ | 
| 1960 | #define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the | 
| 1961 |                                              class declaration.  */ | 
| 1962 | #define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in | 
| 1963 |                                                 DT_MIPS_DELTA_CLASSSYM.  */ | 
| 1964 | #define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ | 
| 1965 | #define DT_MIPS_PIXIE_INIT   0x70000023 | 
| 1966 | #define DT_MIPS_SYMBOL_LIB   0x70000024 | 
| 1967 | #define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 | 
| 1968 | #define DT_MIPS_LOCAL_GOTIDX 0x70000026 | 
| 1969 | #define DT_MIPS_HIDDEN_GOTIDX 0x70000027 | 
| 1970 | #define DT_MIPS_PROTECTED_GOTIDX 0x70000028 | 
| 1971 | #define DT_MIPS_OPTIONS             0x70000029 /* Address of .options.  */ | 
| 1972 | #define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ | 
| 1973 | #define DT_MIPS_DYNSTR_ALIGN 0x7000002b | 
| 1974 | #define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ | 
| 1975 | #define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve | 
| 1976 |                                                     function stored in GOT.  */ | 
| 1977 | #define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added | 
| 1978 |                                            by rld on dlopen() calls.  */ | 
| 1979 | #define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ | 
| 1980 | #define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ | 
| 1981 | #define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ | 
| 1982 | /* The address of .got.plt in an executable using the new non-PIC ABI.  */ | 
| 1983 | #define DT_MIPS_PLTGOT             0x70000032 | 
| 1984 | /* The base of the PLT in an executable using the new non-PIC ABI if that | 
| 1985 |    PLT is writable.  For a non-writable PLT, this is omitted or has a zero | 
| 1986 |    value.  */ | 
| 1987 | #define DT_MIPS_RWPLT        0x70000034 | 
| 1988 | /* An alternative description of the classic MIPS RLD_MAP that is usable | 
| 1989 |    in a PIE as it stores a relative offset from the address of the tag | 
| 1990 |    rather than an absolute address.  */ | 
| 1991 | #define DT_MIPS_RLD_MAP_REL  0x70000035 | 
| 1992 | /* GNU-style hash table with xlat.  */ | 
| 1993 | #define DT_MIPS_XHASH             0x70000036 | 
| 1994 | #define DT_MIPS_NUM             0x37 | 
| 1995 |  | 
| 1996 | /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ | 
| 1997 |  | 
| 1998 | #define RHF_NONE                   0                /* No flags */ | 
| 1999 | #define RHF_QUICKSTART                   (1 << 0)        /* Use quickstart */ | 
| 2000 | #define RHF_NOTPOT                   (1 << 1)        /* Hash size not power of 2 */ | 
| 2001 | #define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)        /* Ignore LD_LIBRARY_PATH */ | 
| 2002 | #define RHF_NO_MOVE                   (1 << 3) | 
| 2003 | #define RHF_SGI_ONLY                   (1 << 4) | 
| 2004 | #define RHF_GUARANTEE_INIT           (1 << 5) | 
| 2005 | #define RHF_DELTA_C_PLUS_PLUS           (1 << 6) | 
| 2006 | #define RHF_GUARANTEE_START_INIT   (1 << 7) | 
| 2007 | #define RHF_PIXIE                   (1 << 8) | 
| 2008 | #define RHF_DEFAULT_DELAY_LOAD           (1 << 9) | 
| 2009 | #define RHF_REQUICKSTART           (1 << 10) | 
| 2010 | #define RHF_REQUICKSTARTED           (1 << 11) | 
| 2011 | #define RHF_CORD                   (1 << 12) | 
| 2012 | #define RHF_NO_UNRES_UNDEF           (1 << 13) | 
| 2013 | #define RHF_RLD_ORDER_SAFE           (1 << 14) | 
| 2014 |  | 
| 2015 | /* Entries found in sections of type SHT_MIPS_LIBLIST.  */ | 
| 2016 |  | 
| 2017 | typedef struct | 
| 2018 | { | 
| 2019 |   Elf32_Word l_name;                /* Name (string table index) */ | 
| 2020 |   Elf32_Word l_time_stamp;        /* Timestamp */ | 
| 2021 |   Elf32_Word l_checksum;        /* Checksum */ | 
| 2022 |   Elf32_Word l_version;                /* Interface version */ | 
| 2023 |   Elf32_Word l_flags;                /* Flags */ | 
| 2024 | } Elf32_Lib; | 
| 2025 |  | 
| 2026 | typedef struct | 
| 2027 | { | 
| 2028 |   Elf64_Word l_name;                /* Name (string table index) */ | 
| 2029 |   Elf64_Word l_time_stamp;        /* Timestamp */ | 
| 2030 |   Elf64_Word l_checksum;        /* Checksum */ | 
| 2031 |   Elf64_Word l_version;                /* Interface version */ | 
| 2032 |   Elf64_Word l_flags;                /* Flags */ | 
| 2033 | } Elf64_Lib; | 
| 2034 |  | 
| 2035 |  | 
| 2036 | /* Legal values for l_flags.  */ | 
| 2037 |  | 
| 2038 | #define LL_NONE                  0 | 
| 2039 | #define LL_EXACT_MATCH          (1 << 0)        /* Require exact match */ | 
| 2040 | #define LL_IGNORE_INT_VER (1 << 1)        /* Ignore interface version */ | 
| 2041 | #define LL_REQUIRE_MINOR  (1 << 2) | 
| 2042 | #define LL_EXPORTS          (1 << 3) | 
| 2043 | #define LL_DELAY_LOAD          (1 << 4) | 
| 2044 | #define LL_DELTA          (1 << 5) | 
| 2045 |  | 
| 2046 | /* Entries found in sections of type SHT_MIPS_CONFLICT.  */ | 
| 2047 |  | 
| 2048 | typedef Elf32_Addr Elf32_Conflict; | 
| 2049 |  | 
| 2050 | typedef struct | 
| 2051 | { | 
| 2052 |   /* Version of flags structure.  */ | 
| 2053 |   Elf32_Half version; | 
| 2054 |   /* The level of the ISA: 1-5, 32, 64.  */ | 
| 2055 |   unsigned char isa_level; | 
| 2056 |   /* The revision of ISA: 0 for MIPS V and below, 1-n otherwise.  */ | 
| 2057 |   unsigned char isa_rev; | 
| 2058 |   /* The size of general purpose registers.  */ | 
| 2059 |   unsigned char gpr_size; | 
| 2060 |   /* The size of co-processor 1 registers.  */ | 
| 2061 |   unsigned char cpr1_size; | 
| 2062 |   /* The size of co-processor 2 registers.  */ | 
| 2063 |   unsigned char cpr2_size; | 
| 2064 |   /* The floating-point ABI.  */ | 
| 2065 |   unsigned char fp_abi; | 
| 2066 |   /* Processor-specific extension.  */ | 
| 2067 |   Elf32_Word isa_ext; | 
| 2068 |   /* Mask of ASEs used.  */ | 
| 2069 |   Elf32_Word ases; | 
| 2070 |   /* Mask of general flags.  */ | 
| 2071 |   Elf32_Word flags1; | 
| 2072 |   Elf32_Word flags2; | 
| 2073 | } Elf_MIPS_ABIFlags_v0; | 
| 2074 |  | 
| 2075 | /* Values for the register size bytes of an abi flags structure.  */ | 
| 2076 |  | 
| 2077 | #define MIPS_AFL_REG_NONE        0x00         /* No registers.  */ | 
| 2078 | #define MIPS_AFL_REG_32                0x01         /* 32-bit registers.  */ | 
| 2079 | #define MIPS_AFL_REG_64                0x02         /* 64-bit registers.  */ | 
| 2080 | #define MIPS_AFL_REG_128        0x03         /* 128-bit registers.  */ | 
| 2081 |  | 
| 2082 | /* Masks for the ases word of an ABI flags structure.  */ | 
| 2083 |  | 
| 2084 | #define MIPS_AFL_ASE_DSP        0x00000001 /* DSP ASE.  */ | 
| 2085 | #define MIPS_AFL_ASE_DSPR2        0x00000002 /* DSP R2 ASE.  */ | 
| 2086 | #define MIPS_AFL_ASE_EVA        0x00000004 /* Enhanced VA Scheme.  */ | 
| 2087 | #define MIPS_AFL_ASE_MCU        0x00000008 /* MCU (MicroController) ASE.  */ | 
| 2088 | #define MIPS_AFL_ASE_MDMX        0x00000010 /* MDMX ASE.  */ | 
| 2089 | #define MIPS_AFL_ASE_MIPS3D        0x00000020 /* MIPS-3D ASE.  */ | 
| 2090 | #define MIPS_AFL_ASE_MT                0x00000040 /* MT ASE.  */ | 
| 2091 | #define MIPS_AFL_ASE_SMARTMIPS        0x00000080 /* SmartMIPS ASE.  */ | 
| 2092 | #define MIPS_AFL_ASE_VIRT        0x00000100 /* VZ ASE.  */ | 
| 2093 | #define MIPS_AFL_ASE_MSA        0x00000200 /* MSA ASE.  */ | 
| 2094 | #define MIPS_AFL_ASE_MIPS16        0x00000400 /* MIPS16 ASE.  */ | 
| 2095 | #define MIPS_AFL_ASE_MICROMIPS        0x00000800 /* MICROMIPS ASE.  */ | 
| 2096 | #define MIPS_AFL_ASE_XPA        0x00001000 /* XPA ASE.  */ | 
| 2097 | #define MIPS_AFL_ASE_MASK        0x00001fff /* All ASEs.  */ | 
| 2098 |  | 
| 2099 | /* Values for the isa_ext word of an ABI flags structure.  */ | 
| 2100 |  | 
| 2101 | #define MIPS_AFL_EXT_XLR          1   /* RMI Xlr instruction.  */ | 
| 2102 | #define MIPS_AFL_EXT_OCTEON2          2   /* Cavium Networks Octeon2.  */ | 
| 2103 | #define MIPS_AFL_EXT_OCTEONP          3   /* Cavium Networks OcteonP.  */ | 
| 2104 | #define MIPS_AFL_EXT_LOONGSON_3A  4   /* Loongson 3A.  */ | 
| 2105 | #define MIPS_AFL_EXT_OCTEON          5   /* Cavium Networks Octeon.  */ | 
| 2106 | #define MIPS_AFL_EXT_5900          6   /* MIPS R5900 instruction.  */ | 
| 2107 | #define MIPS_AFL_EXT_4650          7   /* MIPS R4650 instruction.  */ | 
| 2108 | #define MIPS_AFL_EXT_4010          8   /* LSI R4010 instruction.  */ | 
| 2109 | #define MIPS_AFL_EXT_4100          9   /* NEC VR4100 instruction.  */ | 
| 2110 | #define MIPS_AFL_EXT_3900          10  /* Toshiba R3900 instruction.  */ | 
| 2111 | #define MIPS_AFL_EXT_10000          11  /* MIPS R10000 instruction.  */ | 
| 2112 | #define MIPS_AFL_EXT_SB1          12  /* Broadcom SB-1 instruction.  */ | 
| 2113 | #define MIPS_AFL_EXT_4111          13  /* NEC VR4111/VR4181 instruction.  */ | 
| 2114 | #define MIPS_AFL_EXT_4120          14  /* NEC VR4120 instruction.  */ | 
| 2115 | #define MIPS_AFL_EXT_5400          15  /* NEC VR5400 instruction.  */ | 
| 2116 | #define MIPS_AFL_EXT_5500          16  /* NEC VR5500 instruction.  */ | 
| 2117 | #define MIPS_AFL_EXT_LOONGSON_2E  17  /* ST Microelectronics Loongson 2E.  */ | 
| 2118 | #define MIPS_AFL_EXT_LOONGSON_2F  18  /* ST Microelectronics Loongson 2F.  */ | 
| 2119 |  | 
| 2120 | /* Masks for the flags1 word of an ABI flags structure.  */ | 
| 2121 | #define MIPS_AFL_FLAGS1_ODDSPREG  1  /* Uses odd single-precision registers.  */ | 
| 2122 |  | 
| 2123 | /* Object attribute values.  */ | 
| 2124 | enum | 
| 2125 | { | 
| 2126 |   /* Not tagged or not using any ABIs affected by the differences.  */ | 
| 2127 |   Val_GNU_MIPS_ABI_FP_ANY = 0, | 
| 2128 |   /* Using hard-float -mdouble-float.  */ | 
| 2129 |   Val_GNU_MIPS_ABI_FP_DOUBLE = 1, | 
| 2130 |   /* Using hard-float -msingle-float.  */ | 
| 2131 |   Val_GNU_MIPS_ABI_FP_SINGLE = 2, | 
| 2132 |   /* Using soft-float.  */ | 
| 2133 |   Val_GNU_MIPS_ABI_FP_SOFT = 3, | 
| 2134 |   /* Using -mips32r2 -mfp64.  */ | 
| 2135 |   Val_GNU_MIPS_ABI_FP_OLD_64 = 4, | 
| 2136 |   /* Using -mfpxx.  */ | 
| 2137 |   Val_GNU_MIPS_ABI_FP_XX = 5, | 
| 2138 |   /* Using -mips32r2 -mfp64.  */ | 
| 2139 |   Val_GNU_MIPS_ABI_FP_64 = 6, | 
| 2140 |   /* Using -mips32r2 -mfp64 -mno-odd-spreg.  */ | 
| 2141 |   Val_GNU_MIPS_ABI_FP_64A = 7, | 
| 2142 |   /* Maximum allocated FP ABI value.  */ | 
| 2143 |   Val_GNU_MIPS_ABI_FP_MAX = 7 | 
| 2144 | }; | 
| 2145 |  | 
| 2146 | /* HPPA specific definitions.  */ | 
| 2147 |  | 
| 2148 | /* Legal values for e_flags field of Elf32_Ehdr.  */ | 
| 2149 |  | 
| 2150 | #define EF_PARISC_TRAPNIL        0x00010000 /* Trap nil pointer dereference.  */ | 
| 2151 | #define EF_PARISC_EXT                0x00020000 /* Program uses arch. extensions. */ | 
| 2152 | #define EF_PARISC_LSB                0x00040000 /* Program expects little endian. */ | 
| 2153 | #define EF_PARISC_WIDE                0x00080000 /* Program expects wide mode.  */ | 
| 2154 | #define EF_PARISC_NO_KABP        0x00100000 /* No kernel assisted branch | 
| 2155 |                                               prediction.  */ | 
| 2156 | #define EF_PARISC_LAZYSWAP        0x00400000 /* Allow lazy swapping.  */ | 
| 2157 | #define EF_PARISC_ARCH                0x0000ffff /* Architecture version.  */ | 
| 2158 |  | 
| 2159 | /* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ | 
| 2160 |  | 
| 2161 | #define EFA_PARISC_1_0                    0x020b /* PA-RISC 1.0 big-endian.  */ | 
| 2162 | #define EFA_PARISC_1_1                    0x0210 /* PA-RISC 1.1 big-endian.  */ | 
| 2163 | #define EFA_PARISC_2_0                    0x0214 /* PA-RISC 2.0 big-endian.  */ | 
| 2164 |  | 
| 2165 | /* Additional section indices.  */ | 
| 2166 |  | 
| 2167 | #define SHN_PARISC_ANSI_COMMON        0xff00           /* Section for tentatively declared | 
| 2168 |                                               symbols in ANSI C.  */ | 
| 2169 | #define SHN_PARISC_HUGE_COMMON        0xff01           /* Common blocks in huge model.  */ | 
| 2170 |  | 
| 2171 | /* Legal values for sh_type field of Elf32_Shdr.  */ | 
| 2172 |  | 
| 2173 | #define SHT_PARISC_EXT                0x70000000 /* Contains product specific ext. */ | 
| 2174 | #define SHT_PARISC_UNWIND        0x70000001 /* Unwind information.  */ | 
| 2175 | #define SHT_PARISC_DOC                0x70000002 /* Debug info for optimized code. */ | 
| 2176 |  | 
| 2177 | /* Legal values for sh_flags field of Elf32_Shdr.  */ | 
| 2178 |  | 
| 2179 | #define SHF_PARISC_SHORT        0x20000000 /* Section with short addressing. */ | 
| 2180 | #define SHF_PARISC_HUGE                0x40000000 /* Section far from gp.  */ | 
| 2181 | #define SHF_PARISC_SBP                0x80000000 /* Static branch prediction code. */ | 
| 2182 |  | 
| 2183 | /* Legal values for ST_TYPE subfield of st_info (symbol type).  */ | 
| 2184 |  | 
| 2185 | #define STT_PARISC_MILLICODE        13        /* Millicode function entry point.  */ | 
| 2186 |  | 
| 2187 | #define STT_HP_OPAQUE                (STT_LOOS + 0x1) | 
| 2188 | #define STT_HP_STUB                (STT_LOOS + 0x2) | 
| 2189 |  | 
| 2190 | /* HPPA relocs.  */ | 
| 2191 |  | 
| 2192 | #define R_PARISC_NONE                0        /* No reloc.  */ | 
| 2193 | #define R_PARISC_DIR32                1        /* Direct 32-bit reference.  */ | 
| 2194 | #define R_PARISC_DIR21L                2        /* Left 21 bits of eff. address.  */ | 
| 2195 | #define R_PARISC_DIR17R                3        /* Right 17 bits of eff. address.  */ | 
| 2196 | #define R_PARISC_DIR17F                4        /* 17 bits of eff. address.  */ | 
| 2197 | #define R_PARISC_DIR14R                6        /* Right 14 bits of eff. address.  */ | 
| 2198 | #define R_PARISC_PCREL32        9        /* 32-bit rel. address.  */ | 
| 2199 | #define R_PARISC_PCREL21L        10        /* Left 21 bits of rel. address.  */ | 
| 2200 | #define R_PARISC_PCREL17R        11        /* Right 17 bits of rel. address.  */ | 
| 2201 | #define R_PARISC_PCREL17F        12        /* 17 bits of rel. address.  */ | 
| 2202 | #define R_PARISC_PCREL14R        14        /* Right 14 bits of rel. address.  */ | 
| 2203 | #define R_PARISC_DPREL21L        18        /* Left 21 bits of rel. address.  */ | 
| 2204 | #define R_PARISC_DPREL14R        22        /* Right 14 bits of rel. address.  */ | 
| 2205 | #define R_PARISC_GPREL21L        26        /* GP-relative, left 21 bits.  */ | 
| 2206 | #define R_PARISC_GPREL14R        30        /* GP-relative, right 14 bits.  */ | 
| 2207 | #define R_PARISC_LTOFF21L        34        /* LT-relative, left 21 bits.  */ | 
| 2208 | #define R_PARISC_LTOFF14R        38        /* LT-relative, right 14 bits.  */ | 
| 2209 | #define R_PARISC_SECREL32        41        /* 32 bits section rel. address.  */ | 
| 2210 | #define R_PARISC_SEGBASE        48        /* No relocation, set segment base.  */ | 
| 2211 | #define R_PARISC_SEGREL32        49        /* 32 bits segment rel. address.  */ | 
| 2212 | #define R_PARISC_PLTOFF21L        50        /* PLT rel. address, left 21 bits.  */ | 
| 2213 | #define R_PARISC_PLTOFF14R        54        /* PLT rel. address, right 14 bits.  */ | 
| 2214 | #define R_PARISC_LTOFF_FPTR32        57        /* 32 bits LT-rel. function pointer. */ | 
| 2215 | #define R_PARISC_LTOFF_FPTR21L        58        /* LT-rel. fct ptr, left 21 bits. */ | 
| 2216 | #define R_PARISC_LTOFF_FPTR14R        62        /* LT-rel. fct ptr, right 14 bits. */ | 
| 2217 | #define R_PARISC_FPTR64                64        /* 64 bits function address.  */ | 
| 2218 | #define R_PARISC_PLABEL32        65        /* 32 bits function address.  */ | 
| 2219 | #define R_PARISC_PLABEL21L        66        /* Left 21 bits of fdesc address.  */ | 
| 2220 | #define R_PARISC_PLABEL14R        70        /* Right 14 bits of fdesc address.  */ | 
| 2221 | #define R_PARISC_PCREL64        72        /* 64 bits PC-rel. address.  */ | 
| 2222 | #define R_PARISC_PCREL22F        74        /* 22 bits PC-rel. address.  */ | 
| 2223 | #define R_PARISC_PCREL14WR        75        /* PC-rel. address, right 14 bits.  */ | 
| 2224 | #define R_PARISC_PCREL14DR        76        /* PC rel. address, right 14 bits.  */ | 
| 2225 | #define R_PARISC_PCREL16F        77        /* 16 bits PC-rel. address.  */ | 
| 2226 | #define R_PARISC_PCREL16WF        78        /* 16 bits PC-rel. address.  */ | 
| 2227 | #define R_PARISC_PCREL16DF        79        /* 16 bits PC-rel. address.  */ | 
| 2228 | #define R_PARISC_DIR64                80        /* 64 bits of eff. address.  */ | 
| 2229 | #define R_PARISC_DIR14WR        83        /* 14 bits of eff. address.  */ | 
| 2230 | #define R_PARISC_DIR14DR        84        /* 14 bits of eff. address.  */ | 
| 2231 | #define R_PARISC_DIR16F                85        /* 16 bits of eff. address.  */ | 
| 2232 | #define R_PARISC_DIR16WF        86        /* 16 bits of eff. address.  */ | 
| 2233 | #define R_PARISC_DIR16DF        87        /* 16 bits of eff. address.  */ | 
| 2234 | #define R_PARISC_GPREL64        88        /* 64 bits of GP-rel. address.  */ | 
| 2235 | #define R_PARISC_GPREL14WR        91        /* GP-rel. address, right 14 bits.  */ | 
| 2236 | #define R_PARISC_GPREL14DR        92        /* GP-rel. address, right 14 bits.  */ | 
| 2237 | #define R_PARISC_GPREL16F        93        /* 16 bits GP-rel. address.  */ | 
| 2238 | #define R_PARISC_GPREL16WF        94        /* 16 bits GP-rel. address.  */ | 
| 2239 | #define R_PARISC_GPREL16DF        95        /* 16 bits GP-rel. address.  */ | 
| 2240 | #define R_PARISC_LTOFF64        96        /* 64 bits LT-rel. address.  */ | 
| 2241 | #define R_PARISC_LTOFF14WR        99        /* LT-rel. address, right 14 bits.  */ | 
| 2242 | #define R_PARISC_LTOFF14DR        100        /* LT-rel. address, right 14 bits.  */ | 
| 2243 | #define R_PARISC_LTOFF16F        101        /* 16 bits LT-rel. address.  */ | 
| 2244 | #define R_PARISC_LTOFF16WF        102        /* 16 bits LT-rel. address.  */ | 
| 2245 | #define R_PARISC_LTOFF16DF        103        /* 16 bits LT-rel. address.  */ | 
| 2246 | #define R_PARISC_SECREL64        104        /* 64 bits section rel. address.  */ | 
| 2247 | #define R_PARISC_SEGREL64        112        /* 64 bits segment rel. address.  */ | 
| 2248 | #define R_PARISC_PLTOFF14WR        115        /* PLT-rel. address, right 14 bits.  */ | 
| 2249 | #define R_PARISC_PLTOFF14DR        116        /* PLT-rel. address, right 14 bits.  */ | 
| 2250 | #define R_PARISC_PLTOFF16F        117        /* 16 bits LT-rel. address.  */ | 
| 2251 | #define R_PARISC_PLTOFF16WF        118        /* 16 bits PLT-rel. address.  */ | 
| 2252 | #define R_PARISC_PLTOFF16DF        119        /* 16 bits PLT-rel. address.  */ | 
| 2253 | #define R_PARISC_LTOFF_FPTR64        120        /* 64 bits LT-rel. function ptr.  */ | 
| 2254 | #define R_PARISC_LTOFF_FPTR14WR        123        /* LT-rel. fct. ptr., right 14 bits. */ | 
| 2255 | #define R_PARISC_LTOFF_FPTR14DR        124        /* LT-rel. fct. ptr., right 14 bits. */ | 
| 2256 | #define R_PARISC_LTOFF_FPTR16F        125        /* 16 bits LT-rel. function ptr.  */ | 
| 2257 | #define R_PARISC_LTOFF_FPTR16WF        126        /* 16 bits LT-rel. function ptr.  */ | 
| 2258 | #define R_PARISC_LTOFF_FPTR16DF        127        /* 16 bits LT-rel. function ptr.  */ | 
| 2259 | #define R_PARISC_LORESERVE        128 | 
| 2260 | #define R_PARISC_COPY                128        /* Copy relocation.  */ | 
| 2261 | #define R_PARISC_IPLT                129        /* Dynamic reloc, imported PLT */ | 
| 2262 | #define R_PARISC_EPLT                130        /* Dynamic reloc, exported PLT */ | 
| 2263 | #define R_PARISC_TPREL32        153        /* 32 bits TP-rel. address.  */ | 
| 2264 | #define R_PARISC_TPREL21L        154        /* TP-rel. address, left 21 bits.  */ | 
| 2265 | #define R_PARISC_TPREL14R        158        /* TP-rel. address, right 14 bits.  */ | 
| 2266 | #define R_PARISC_LTOFF_TP21L        162        /* LT-TP-rel. address, left 21 bits. */ | 
| 2267 | #define R_PARISC_LTOFF_TP14R        166        /* LT-TP-rel. address, right 14 bits.*/ | 
| 2268 | #define R_PARISC_LTOFF_TP14F        167        /* 14 bits LT-TP-rel. address.  */ | 
| 2269 | #define R_PARISC_TPREL64        216        /* 64 bits TP-rel. address.  */ | 
| 2270 | #define R_PARISC_TPREL14WR        219        /* TP-rel. address, right 14 bits.  */ | 
| 2271 | #define R_PARISC_TPREL14DR        220        /* TP-rel. address, right 14 bits.  */ | 
| 2272 | #define R_PARISC_TPREL16F        221        /* 16 bits TP-rel. address.  */ | 
| 2273 | #define R_PARISC_TPREL16WF        222        /* 16 bits TP-rel. address.  */ | 
| 2274 | #define R_PARISC_TPREL16DF        223        /* 16 bits TP-rel. address.  */ | 
| 2275 | #define R_PARISC_LTOFF_TP64        224        /* 64 bits LT-TP-rel. address.  */ | 
| 2276 | #define R_PARISC_LTOFF_TP14WR        227        /* LT-TP-rel. address, right 14 bits.*/ | 
| 2277 | #define R_PARISC_LTOFF_TP14DR        228        /* LT-TP-rel. address, right 14 bits.*/ | 
| 2278 | #define R_PARISC_LTOFF_TP16F        229        /* 16 bits LT-TP-rel. address.  */ | 
| 2279 | #define R_PARISC_LTOFF_TP16WF        230        /* 16 bits LT-TP-rel. address.  */ | 
| 2280 | #define R_PARISC_LTOFF_TP16DF        231        /* 16 bits LT-TP-rel. address.  */ | 
| 2281 | #define R_PARISC_GNU_VTENTRY        232 | 
| 2282 | #define R_PARISC_GNU_VTINHERIT        233 | 
| 2283 | #define R_PARISC_TLS_GD21L        234        /* GD 21-bit left.  */ | 
| 2284 | #define R_PARISC_TLS_GD14R        235        /* GD 14-bit right.  */ | 
| 2285 | #define R_PARISC_TLS_GDCALL        236        /* GD call to __t_g_a.  */ | 
| 2286 | #define R_PARISC_TLS_LDM21L        237        /* LD module 21-bit left.  */ | 
| 2287 | #define R_PARISC_TLS_LDM14R        238        /* LD module 14-bit right.  */ | 
| 2288 | #define R_PARISC_TLS_LDMCALL        239        /* LD module call to __t_g_a.  */ | 
| 2289 | #define R_PARISC_TLS_LDO21L        240        /* LD offset 21-bit left.  */ | 
| 2290 | #define R_PARISC_TLS_LDO14R        241        /* LD offset 14-bit right.  */ | 
| 2291 | #define R_PARISC_TLS_DTPMOD32        242        /* DTP module 32-bit.  */ | 
| 2292 | #define R_PARISC_TLS_DTPMOD64        243        /* DTP module 64-bit.  */ | 
| 2293 | #define R_PARISC_TLS_DTPOFF32        244        /* DTP offset 32-bit.  */ | 
| 2294 | #define R_PARISC_TLS_DTPOFF64        245        /* DTP offset 32-bit.  */ | 
| 2295 | #define R_PARISC_TLS_LE21L        R_PARISC_TPREL21L | 
| 2296 | #define R_PARISC_TLS_LE14R        R_PARISC_TPREL14R | 
| 2297 | #define R_PARISC_TLS_IE21L        R_PARISC_LTOFF_TP21L | 
| 2298 | #define R_PARISC_TLS_IE14R        R_PARISC_LTOFF_TP14R | 
| 2299 | #define R_PARISC_TLS_TPREL32        R_PARISC_TPREL32 | 
| 2300 | #define R_PARISC_TLS_TPREL64        R_PARISC_TPREL64 | 
| 2301 | #define R_PARISC_HIRESERVE        255 | 
| 2302 |  | 
| 2303 | /* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ | 
| 2304 |  | 
| 2305 | #define PT_HP_TLS                (PT_LOOS + 0x0) | 
| 2306 | #define PT_HP_CORE_NONE                (PT_LOOS + 0x1) | 
| 2307 | #define PT_HP_CORE_VERSION        (PT_LOOS + 0x2) | 
| 2308 | #define PT_HP_CORE_KERNEL        (PT_LOOS + 0x3) | 
| 2309 | #define PT_HP_CORE_COMM                (PT_LOOS + 0x4) | 
| 2310 | #define PT_HP_CORE_PROC                (PT_LOOS + 0x5) | 
| 2311 | #define PT_HP_CORE_LOADABLE        (PT_LOOS + 0x6) | 
| 2312 | #define PT_HP_CORE_STACK        (PT_LOOS + 0x7) | 
| 2313 | #define PT_HP_CORE_SHM                (PT_LOOS + 0x8) | 
| 2314 | #define PT_HP_CORE_MMF                (PT_LOOS + 0x9) | 
| 2315 | #define PT_HP_PARALLEL                (PT_LOOS + 0x10) | 
| 2316 | #define PT_HP_FASTBIND                (PT_LOOS + 0x11) | 
| 2317 | #define PT_HP_OPT_ANNOT                (PT_LOOS + 0x12) | 
| 2318 | #define PT_HP_HSL_ANNOT                (PT_LOOS + 0x13) | 
| 2319 | #define PT_HP_STACK                (PT_LOOS + 0x14) | 
| 2320 |  | 
| 2321 | #define PT_PARISC_ARCHEXT        0x70000000 | 
| 2322 | #define PT_PARISC_UNWIND        0x70000001 | 
| 2323 |  | 
| 2324 | /* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ | 
| 2325 |  | 
| 2326 | #define PF_PARISC_SBP                0x08000000 | 
| 2327 |  | 
| 2328 | #define PF_HP_PAGE_SIZE                0x00100000 | 
| 2329 | #define PF_HP_FAR_SHARED        0x00200000 | 
| 2330 | #define PF_HP_NEAR_SHARED        0x00400000 | 
| 2331 | #define PF_HP_CODE                0x01000000 | 
| 2332 | #define PF_HP_MODIFY                0x02000000 | 
| 2333 | #define PF_HP_LAZYSWAP                0x04000000 | 
| 2334 | #define PF_HP_SBP                0x08000000 | 
| 2335 |  | 
| 2336 |  | 
| 2337 | /* Alpha specific definitions.  */ | 
| 2338 |  | 
| 2339 | /* Legal values for e_flags field of Elf64_Ehdr.  */ | 
| 2340 |  | 
| 2341 | #define EF_ALPHA_32BIT                1        /* All addresses must be < 2GB.  */ | 
| 2342 | #define EF_ALPHA_CANRELAX        2        /* Relocations for relaxing exist.  */ | 
| 2343 |  | 
| 2344 | /* Legal values for sh_type field of Elf64_Shdr.  */ | 
| 2345 |  | 
| 2346 | /* These two are primerily concerned with ECOFF debugging info.  */ | 
| 2347 | #define SHT_ALPHA_DEBUG                0x70000001 | 
| 2348 | #define SHT_ALPHA_REGINFO        0x70000002 | 
| 2349 |  | 
| 2350 | /* Legal values for sh_flags field of Elf64_Shdr.  */ | 
| 2351 |  | 
| 2352 | #define SHF_ALPHA_GPREL                0x10000000 | 
| 2353 |  | 
| 2354 | /* Legal values for st_other field of Elf64_Sym.  */ | 
| 2355 | #define STO_ALPHA_NOPV                0x80        /* No PV required.  */ | 
| 2356 | #define STO_ALPHA_STD_GPLOAD        0x88        /* PV only used for initial ldgp.  */ | 
| 2357 |  | 
| 2358 | /* Alpha relocs.  */ | 
| 2359 |  | 
| 2360 | #define R_ALPHA_NONE                0        /* No reloc */ | 
| 2361 | #define R_ALPHA_REFLONG                1        /* Direct 32 bit */ | 
| 2362 | #define R_ALPHA_REFQUAD                2        /* Direct 64 bit */ | 
| 2363 | #define R_ALPHA_GPREL32                3        /* GP relative 32 bit */ | 
| 2364 | #define R_ALPHA_LITERAL                4        /* GP relative 16 bit w/optimization */ | 
| 2365 | #define R_ALPHA_LITUSE                5        /* Optimization hint for LITERAL */ | 
| 2366 | #define R_ALPHA_GPDISP                6        /* Add displacement to GP */ | 
| 2367 | #define R_ALPHA_BRADDR                7        /* PC+4 relative 23 bit shifted */ | 
| 2368 | #define R_ALPHA_HINT                8        /* PC+4 relative 16 bit shifted */ | 
| 2369 | #define R_ALPHA_SREL16                9        /* PC relative 16 bit */ | 
| 2370 | #define R_ALPHA_SREL32                10        /* PC relative 32 bit */ | 
| 2371 | #define R_ALPHA_SREL64                11        /* PC relative 64 bit */ | 
| 2372 | #define R_ALPHA_GPRELHIGH        17        /* GP relative 32 bit, high 16 bits */ | 
| 2373 | #define R_ALPHA_GPRELLOW        18        /* GP relative 32 bit, low 16 bits */ | 
| 2374 | #define R_ALPHA_GPREL16                19        /* GP relative 16 bit */ | 
| 2375 | #define R_ALPHA_COPY                24        /* Copy symbol at runtime */ | 
| 2376 | #define R_ALPHA_GLOB_DAT        25        /* Create GOT entry */ | 
| 2377 | #define R_ALPHA_JMP_SLOT        26        /* Create PLT entry */ | 
| 2378 | #define R_ALPHA_RELATIVE        27        /* Adjust by program base */ | 
| 2379 | #define R_ALPHA_TLS_GD_HI        28 | 
| 2380 | #define R_ALPHA_TLSGD                29 | 
| 2381 | #define R_ALPHA_TLS_LDM                30 | 
| 2382 | #define R_ALPHA_DTPMOD64        31 | 
| 2383 | #define R_ALPHA_GOTDTPREL        32 | 
| 2384 | #define R_ALPHA_DTPREL64        33 | 
| 2385 | #define R_ALPHA_DTPRELHI        34 | 
| 2386 | #define R_ALPHA_DTPRELLO        35 | 
| 2387 | #define R_ALPHA_DTPREL16        36 | 
| 2388 | #define R_ALPHA_GOTTPREL        37 | 
| 2389 | #define R_ALPHA_TPREL64                38 | 
| 2390 | #define R_ALPHA_TPRELHI                39 | 
| 2391 | #define R_ALPHA_TPRELLO                40 | 
| 2392 | #define R_ALPHA_TPREL16                41 | 
| 2393 | /* Keep this the last entry.  */ | 
| 2394 | #define R_ALPHA_NUM                46 | 
| 2395 |  | 
| 2396 | /* Magic values of the LITUSE relocation addend.  */ | 
| 2397 | #define LITUSE_ALPHA_ADDR        0 | 
| 2398 | #define LITUSE_ALPHA_BASE        1 | 
| 2399 | #define LITUSE_ALPHA_BYTOFF        2 | 
| 2400 | #define LITUSE_ALPHA_JSR        3 | 
| 2401 | #define LITUSE_ALPHA_TLS_GD        4 | 
| 2402 | #define LITUSE_ALPHA_TLS_LDM        5 | 
| 2403 |  | 
| 2404 | /* Legal values for d_tag of Elf64_Dyn.  */ | 
| 2405 | #define DT_ALPHA_PLTRO                (DT_LOPROC + 0) | 
| 2406 | #define DT_ALPHA_NUM                1 | 
| 2407 |  | 
| 2408 | /* PowerPC specific declarations */ | 
| 2409 |  | 
| 2410 | /* Values for Elf32/64_Ehdr.e_flags.  */ | 
| 2411 | #define EF_PPC_EMB                0x80000000        /* PowerPC embedded flag */ | 
| 2412 |  | 
| 2413 | /* Cygnus local bits below */ | 
| 2414 | #define EF_PPC_RELOCATABLE        0x00010000        /* PowerPC -mrelocatable flag*/ | 
| 2415 | #define EF_PPC_RELOCATABLE_LIB        0x00008000        /* PowerPC -mrelocatable-lib | 
| 2416 |                                                    flag */ | 
| 2417 |  | 
| 2418 | /* PowerPC relocations defined by the ABIs */ | 
| 2419 | #define R_PPC_NONE                0 | 
| 2420 | #define R_PPC_ADDR32                1        /* 32bit absolute address */ | 
| 2421 | #define R_PPC_ADDR24                2        /* 26bit address, 2 bits ignored.  */ | 
| 2422 | #define R_PPC_ADDR16                3        /* 16bit absolute address */ | 
| 2423 | #define R_PPC_ADDR16_LO                4        /* lower 16bit of absolute address */ | 
| 2424 | #define R_PPC_ADDR16_HI                5        /* high 16bit of absolute address */ | 
| 2425 | #define R_PPC_ADDR16_HA                6        /* adjusted high 16bit */ | 
| 2426 | #define R_PPC_ADDR14                7        /* 16bit address, 2 bits ignored */ | 
| 2427 | #define R_PPC_ADDR14_BRTAKEN        8 | 
| 2428 | #define R_PPC_ADDR14_BRNTAKEN        9 | 
| 2429 | #define R_PPC_REL24                10        /* PC relative 26 bit */ | 
| 2430 | #define R_PPC_REL14                11        /* PC relative 16 bit */ | 
| 2431 | #define R_PPC_REL14_BRTAKEN        12 | 
| 2432 | #define R_PPC_REL14_BRNTAKEN        13 | 
| 2433 | #define R_PPC_GOT16                14 | 
| 2434 | #define R_PPC_GOT16_LO                15 | 
| 2435 | #define R_PPC_GOT16_HI                16 | 
| 2436 | #define R_PPC_GOT16_HA                17 | 
| 2437 | #define R_PPC_PLTREL24                18 | 
| 2438 | #define R_PPC_COPY                19 | 
| 2439 | #define R_PPC_GLOB_DAT                20 | 
| 2440 | #define R_PPC_JMP_SLOT                21 | 
| 2441 | #define R_PPC_RELATIVE                22 | 
| 2442 | #define R_PPC_LOCAL24PC                23 | 
| 2443 | #define R_PPC_UADDR32                24 | 
| 2444 | #define R_PPC_UADDR16                25 | 
| 2445 | #define R_PPC_REL32                26 | 
| 2446 | #define R_PPC_PLT32                27 | 
| 2447 | #define R_PPC_PLTREL32                28 | 
| 2448 | #define R_PPC_PLT16_LO                29 | 
| 2449 | #define R_PPC_PLT16_HI                30 | 
| 2450 | #define R_PPC_PLT16_HA                31 | 
| 2451 | #define R_PPC_SDAREL16                32 | 
| 2452 | #define R_PPC_SECTOFF                33 | 
| 2453 | #define R_PPC_SECTOFF_LO        34 | 
| 2454 | #define R_PPC_SECTOFF_HI        35 | 
| 2455 | #define R_PPC_SECTOFF_HA        36 | 
| 2456 |  | 
| 2457 | /* PowerPC relocations defined for the TLS access ABI.  */ | 
| 2458 | #define R_PPC_TLS                67 /* none        (sym+add)@tls */ | 
| 2459 | #define R_PPC_DTPMOD32                68 /* word32        (sym+add)@dtpmod */ | 
| 2460 | #define R_PPC_TPREL16                69 /* half16*        (sym+add)@tprel */ | 
| 2461 | #define R_PPC_TPREL16_LO        70 /* half16        (sym+add)@tprel@l */ | 
| 2462 | #define R_PPC_TPREL16_HI        71 /* half16        (sym+add)@tprel@h */ | 
| 2463 | #define R_PPC_TPREL16_HA        72 /* half16        (sym+add)@tprel@ha */ | 
| 2464 | #define R_PPC_TPREL32                73 /* word32        (sym+add)@tprel */ | 
| 2465 | #define R_PPC_DTPREL16                74 /* half16*        (sym+add)@dtprel */ | 
| 2466 | #define R_PPC_DTPREL16_LO        75 /* half16        (sym+add)@dtprel@l */ | 
| 2467 | #define R_PPC_DTPREL16_HI        76 /* half16        (sym+add)@dtprel@h */ | 
| 2468 | #define R_PPC_DTPREL16_HA        77 /* half16        (sym+add)@dtprel@ha */ | 
| 2469 | #define R_PPC_DTPREL32                78 /* word32        (sym+add)@dtprel */ | 
| 2470 | #define R_PPC_GOT_TLSGD16        79 /* half16*        (sym+add)@got@tlsgd */ | 
| 2471 | #define R_PPC_GOT_TLSGD16_LO        80 /* half16        (sym+add)@got@tlsgd@l */ | 
| 2472 | #define R_PPC_GOT_TLSGD16_HI        81 /* half16        (sym+add)@got@tlsgd@h */ | 
| 2473 | #define R_PPC_GOT_TLSGD16_HA        82 /* half16        (sym+add)@got@tlsgd@ha */ | 
| 2474 | #define R_PPC_GOT_TLSLD16        83 /* half16*        (sym+add)@got@tlsld */ | 
| 2475 | #define R_PPC_GOT_TLSLD16_LO        84 /* half16        (sym+add)@got@tlsld@l */ | 
| 2476 | #define R_PPC_GOT_TLSLD16_HI        85 /* half16        (sym+add)@got@tlsld@h */ | 
| 2477 | #define R_PPC_GOT_TLSLD16_HA        86 /* half16        (sym+add)@got@tlsld@ha */ | 
| 2478 | #define R_PPC_GOT_TPREL16        87 /* half16*        (sym+add)@got@tprel */ | 
| 2479 | #define R_PPC_GOT_TPREL16_LO        88 /* half16        (sym+add)@got@tprel@l */ | 
| 2480 | #define R_PPC_GOT_TPREL16_HI        89 /* half16        (sym+add)@got@tprel@h */ | 
| 2481 | #define R_PPC_GOT_TPREL16_HA        90 /* half16        (sym+add)@got@tprel@ha */ | 
| 2482 | #define R_PPC_GOT_DTPREL16        91 /* half16*        (sym+add)@got@dtprel */ | 
| 2483 | #define R_PPC_GOT_DTPREL16_LO        92 /* half16*        (sym+add)@got@dtprel@l */ | 
| 2484 | #define R_PPC_GOT_DTPREL16_HI        93 /* half16*        (sym+add)@got@dtprel@h */ | 
| 2485 | #define R_PPC_GOT_DTPREL16_HA        94 /* half16*        (sym+add)@got@dtprel@ha */ | 
| 2486 | #define R_PPC_TLSGD                95 /* none        (sym+add)@tlsgd */ | 
| 2487 | #define R_PPC_TLSLD                96 /* none        (sym+add)@tlsld */ | 
| 2488 |  | 
| 2489 | /* The remaining relocs are from the Embedded ELF ABI, and are not | 
| 2490 |    in the SVR4 ELF ABI.  */ | 
| 2491 | #define R_PPC_EMB_NADDR32        101 | 
| 2492 | #define R_PPC_EMB_NADDR16        102 | 
| 2493 | #define R_PPC_EMB_NADDR16_LO        103 | 
| 2494 | #define R_PPC_EMB_NADDR16_HI        104 | 
| 2495 | #define R_PPC_EMB_NADDR16_HA        105 | 
| 2496 | #define R_PPC_EMB_SDAI16        106 | 
| 2497 | #define R_PPC_EMB_SDA2I16        107 | 
| 2498 | #define R_PPC_EMB_SDA2REL        108 | 
| 2499 | #define R_PPC_EMB_SDA21                109        /* 16 bit offset in SDA */ | 
| 2500 | #define R_PPC_EMB_MRKREF        110 | 
| 2501 | #define R_PPC_EMB_RELSEC16        111 | 
| 2502 | #define R_PPC_EMB_RELST_LO        112 | 
| 2503 | #define R_PPC_EMB_RELST_HI        113 | 
| 2504 | #define R_PPC_EMB_RELST_HA        114 | 
| 2505 | #define R_PPC_EMB_BIT_FLD        115 | 
| 2506 | #define R_PPC_EMB_RELSDA        116        /* 16 bit relative offset in SDA */ | 
| 2507 |  | 
| 2508 | /* Diab tool relocations.  */ | 
| 2509 | #define R_PPC_DIAB_SDA21_LO        180        /* like EMB_SDA21, but lower 16 bit */ | 
| 2510 | #define R_PPC_DIAB_SDA21_HI        181        /* like EMB_SDA21, but high 16 bit */ | 
| 2511 | #define R_PPC_DIAB_SDA21_HA        182        /* like EMB_SDA21, adjusted high 16 */ | 
| 2512 | #define R_PPC_DIAB_RELSDA_LO        183        /* like EMB_RELSDA, but lower 16 bit */ | 
| 2513 | #define R_PPC_DIAB_RELSDA_HI        184        /* like EMB_RELSDA, but high 16 bit */ | 
| 2514 | #define R_PPC_DIAB_RELSDA_HA        185        /* like EMB_RELSDA, adjusted high 16 */ | 
| 2515 |  | 
| 2516 | /* GNU extension to support local ifunc.  */ | 
| 2517 | #define R_PPC_IRELATIVE                248 | 
| 2518 |  | 
| 2519 | /* GNU relocs used in PIC code sequences.  */ | 
| 2520 | #define R_PPC_REL16                249        /* half16   (sym+add-.) */ | 
| 2521 | #define R_PPC_REL16_LO                250        /* half16   (sym+add-.)@l */ | 
| 2522 | #define R_PPC_REL16_HI                251        /* half16   (sym+add-.)@h */ | 
| 2523 | #define R_PPC_REL16_HA                252        /* half16   (sym+add-.)@ha */ | 
| 2524 |  | 
| 2525 | /* This is a phony reloc to handle any old fashioned TOC16 references | 
| 2526 |    that may still be in object files.  */ | 
| 2527 | #define R_PPC_TOC16                255 | 
| 2528 |  | 
| 2529 | /* PowerPC specific values for the Dyn d_tag field.  */ | 
| 2530 | #define DT_PPC_GOT                (DT_LOPROC + 0) | 
| 2531 | #define DT_PPC_OPT                (DT_LOPROC + 1) | 
| 2532 | #define DT_PPC_NUM                2 | 
| 2533 |  | 
| 2534 | /* PowerPC specific values for the DT_PPC_OPT Dyn entry.  */ | 
| 2535 | #define PPC_OPT_TLS                1 | 
| 2536 |  | 
| 2537 | /* PowerPC64 relocations defined by the ABIs */ | 
| 2538 | #define R_PPC64_NONE                R_PPC_NONE | 
| 2539 | #define R_PPC64_ADDR32                R_PPC_ADDR32 /* 32bit absolute address */ | 
| 2540 | #define R_PPC64_ADDR24                R_PPC_ADDR24 /* 26bit address, word aligned */ | 
| 2541 | #define R_PPC64_ADDR16                R_PPC_ADDR16 /* 16bit absolute address */ | 
| 2542 | #define R_PPC64_ADDR16_LO        R_PPC_ADDR16_LO        /* lower 16bits of address */ | 
| 2543 | #define R_PPC64_ADDR16_HI        R_PPC_ADDR16_HI        /* high 16bits of address. */ | 
| 2544 | #define R_PPC64_ADDR16_HA        R_PPC_ADDR16_HA /* adjusted high 16bits.  */ | 
| 2545 | #define R_PPC64_ADDR14                R_PPC_ADDR14 /* 16bit address, word aligned */ | 
| 2546 | #define R_PPC64_ADDR14_BRTAKEN        R_PPC_ADDR14_BRTAKEN | 
| 2547 | #define R_PPC64_ADDR14_BRNTAKEN        R_PPC_ADDR14_BRNTAKEN | 
| 2548 | #define R_PPC64_REL24                R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ | 
| 2549 | #define R_PPC64_REL14                R_PPC_REL14 /* PC relative 16 bit */ | 
| 2550 | #define R_PPC64_REL14_BRTAKEN        R_PPC_REL14_BRTAKEN | 
| 2551 | #define R_PPC64_REL14_BRNTAKEN        R_PPC_REL14_BRNTAKEN | 
| 2552 | #define R_PPC64_GOT16                R_PPC_GOT16 | 
| 2553 | #define R_PPC64_GOT16_LO        R_PPC_GOT16_LO | 
| 2554 | #define R_PPC64_GOT16_HI        R_PPC_GOT16_HI | 
| 2555 | #define R_PPC64_GOT16_HA        R_PPC_GOT16_HA | 
| 2556 |  | 
| 2557 | #define R_PPC64_COPY                R_PPC_COPY | 
| 2558 | #define R_PPC64_GLOB_DAT        R_PPC_GLOB_DAT | 
| 2559 | #define R_PPC64_JMP_SLOT        R_PPC_JMP_SLOT | 
| 2560 | #define R_PPC64_RELATIVE        R_PPC_RELATIVE | 
| 2561 |  | 
| 2562 | #define R_PPC64_UADDR32                R_PPC_UADDR32 | 
| 2563 | #define R_PPC64_UADDR16                R_PPC_UADDR16 | 
| 2564 | #define R_PPC64_REL32                R_PPC_REL32 | 
| 2565 | #define R_PPC64_PLT32                R_PPC_PLT32 | 
| 2566 | #define R_PPC64_PLTREL32        R_PPC_PLTREL32 | 
| 2567 | #define R_PPC64_PLT16_LO        R_PPC_PLT16_LO | 
| 2568 | #define R_PPC64_PLT16_HI        R_PPC_PLT16_HI | 
| 2569 | #define R_PPC64_PLT16_HA        R_PPC_PLT16_HA | 
| 2570 |  | 
| 2571 | #define R_PPC64_SECTOFF                R_PPC_SECTOFF | 
| 2572 | #define R_PPC64_SECTOFF_LO        R_PPC_SECTOFF_LO | 
| 2573 | #define R_PPC64_SECTOFF_HI        R_PPC_SECTOFF_HI | 
| 2574 | #define R_PPC64_SECTOFF_HA        R_PPC_SECTOFF_HA | 
| 2575 | #define R_PPC64_ADDR30                37 /* word30 (S + A - P) >> 2 */ | 
| 2576 | #define R_PPC64_ADDR64                38 /* doubleword64 S + A */ | 
| 2577 | #define R_PPC64_ADDR16_HIGHER        39 /* half16 #higher(S + A) */ | 
| 2578 | #define R_PPC64_ADDR16_HIGHERA        40 /* half16 #highera(S + A) */ | 
| 2579 | #define R_PPC64_ADDR16_HIGHEST        41 /* half16 #highest(S + A) */ | 
| 2580 | #define R_PPC64_ADDR16_HIGHESTA        42 /* half16 #highesta(S + A) */ | 
| 2581 | #define R_PPC64_UADDR64                43 /* doubleword64 S + A */ | 
| 2582 | #define R_PPC64_REL64                44 /* doubleword64 S + A - P */ | 
| 2583 | #define R_PPC64_PLT64                45 /* doubleword64 L + A */ | 
| 2584 | #define R_PPC64_PLTREL64        46 /* doubleword64 L + A - P */ | 
| 2585 | #define R_PPC64_TOC16                47 /* half16* S + A - .TOC */ | 
| 2586 | #define R_PPC64_TOC16_LO        48 /* half16 #lo(S + A - .TOC.) */ | 
| 2587 | #define R_PPC64_TOC16_HI        49 /* half16 #hi(S + A - .TOC.) */ | 
| 2588 | #define R_PPC64_TOC16_HA        50 /* half16 #ha(S + A - .TOC.) */ | 
| 2589 | #define R_PPC64_TOC                51 /* doubleword64 .TOC */ | 
| 2590 | #define R_PPC64_PLTGOT16        52 /* half16* M + A */ | 
| 2591 | #define R_PPC64_PLTGOT16_LO        53 /* half16 #lo(M + A) */ | 
| 2592 | #define R_PPC64_PLTGOT16_HI        54 /* half16 #hi(M + A) */ | 
| 2593 | #define R_PPC64_PLTGOT16_HA        55 /* half16 #ha(M + A) */ | 
| 2594 |  | 
| 2595 | #define R_PPC64_ADDR16_DS        56 /* half16ds* (S + A) >> 2 */ | 
| 2596 | #define R_PPC64_ADDR16_LO_DS        57 /* half16ds  #lo(S + A) >> 2 */ | 
| 2597 | #define R_PPC64_GOT16_DS        58 /* half16ds* (G + A) >> 2 */ | 
| 2598 | #define R_PPC64_GOT16_LO_DS        59 /* half16ds  #lo(G + A) >> 2 */ | 
| 2599 | #define R_PPC64_PLT16_LO_DS        60 /* half16ds  #lo(L + A) >> 2 */ | 
| 2600 | #define R_PPC64_SECTOFF_DS        61 /* half16ds* (R + A) >> 2 */ | 
| 2601 | #define R_PPC64_SECTOFF_LO_DS        62 /* half16ds  #lo(R + A) >> 2 */ | 
| 2602 | #define R_PPC64_TOC16_DS        63 /* half16ds* (S + A - .TOC.) >> 2 */ | 
| 2603 | #define R_PPC64_TOC16_LO_DS        64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ | 
| 2604 | #define R_PPC64_PLTGOT16_DS        65 /* half16ds* (M + A) >> 2 */ | 
| 2605 | #define R_PPC64_PLTGOT16_LO_DS        66 /* half16ds  #lo(M + A) >> 2 */ | 
| 2606 |  | 
| 2607 | /* PowerPC64 relocations defined for the TLS access ABI.  */ | 
| 2608 | #define R_PPC64_TLS                67 /* none        (sym+add)@tls */ | 
| 2609 | #define R_PPC64_DTPMOD64        68 /* doubleword64 (sym+add)@dtpmod */ | 
| 2610 | #define R_PPC64_TPREL16                69 /* half16*        (sym+add)@tprel */ | 
| 2611 | #define R_PPC64_TPREL16_LO        70 /* half16        (sym+add)@tprel@l */ | 
| 2612 | #define R_PPC64_TPREL16_HI        71 /* half16        (sym+add)@tprel@h */ | 
| 2613 | #define R_PPC64_TPREL16_HA        72 /* half16        (sym+add)@tprel@ha */ | 
| 2614 | #define R_PPC64_TPREL64                73 /* doubleword64 (sym+add)@tprel */ | 
| 2615 | #define R_PPC64_DTPREL16        74 /* half16*        (sym+add)@dtprel */ | 
| 2616 | #define R_PPC64_DTPREL16_LO        75 /* half16        (sym+add)@dtprel@l */ | 
| 2617 | #define R_PPC64_DTPREL16_HI        76 /* half16        (sym+add)@dtprel@h */ | 
| 2618 | #define R_PPC64_DTPREL16_HA        77 /* half16        (sym+add)@dtprel@ha */ | 
| 2619 | #define R_PPC64_DTPREL64        78 /* doubleword64 (sym+add)@dtprel */ | 
| 2620 | #define R_PPC64_GOT_TLSGD16        79 /* half16*        (sym+add)@got@tlsgd */ | 
| 2621 | #define R_PPC64_GOT_TLSGD16_LO        80 /* half16        (sym+add)@got@tlsgd@l */ | 
| 2622 | #define R_PPC64_GOT_TLSGD16_HI        81 /* half16        (sym+add)@got@tlsgd@h */ | 
| 2623 | #define R_PPC64_GOT_TLSGD16_HA        82 /* half16        (sym+add)@got@tlsgd@ha */ | 
| 2624 | #define R_PPC64_GOT_TLSLD16        83 /* half16*        (sym+add)@got@tlsld */ | 
| 2625 | #define R_PPC64_GOT_TLSLD16_LO        84 /* half16        (sym+add)@got@tlsld@l */ | 
| 2626 | #define R_PPC64_GOT_TLSLD16_HI        85 /* half16        (sym+add)@got@tlsld@h */ | 
| 2627 | #define R_PPC64_GOT_TLSLD16_HA        86 /* half16        (sym+add)@got@tlsld@ha */ | 
| 2628 | #define R_PPC64_GOT_TPREL16_DS        87 /* half16ds*        (sym+add)@got@tprel */ | 
| 2629 | #define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ | 
| 2630 | #define R_PPC64_GOT_TPREL16_HI        89 /* half16        (sym+add)@got@tprel@h */ | 
| 2631 | #define R_PPC64_GOT_TPREL16_HA        90 /* half16        (sym+add)@got@tprel@ha */ | 
| 2632 | #define R_PPC64_GOT_DTPREL16_DS        91 /* half16ds*        (sym+add)@got@dtprel */ | 
| 2633 | #define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ | 
| 2634 | #define R_PPC64_GOT_DTPREL16_HI        93 /* half16        (sym+add)@got@dtprel@h */ | 
| 2635 | #define R_PPC64_GOT_DTPREL16_HA        94 /* half16        (sym+add)@got@dtprel@ha */ | 
| 2636 | #define R_PPC64_TPREL16_DS        95 /* half16ds*        (sym+add)@tprel */ | 
| 2637 | #define R_PPC64_TPREL16_LO_DS        96 /* half16ds        (sym+add)@tprel@l */ | 
| 2638 | #define R_PPC64_TPREL16_HIGHER        97 /* half16        (sym+add)@tprel@higher */ | 
| 2639 | #define R_PPC64_TPREL16_HIGHERA        98 /* half16        (sym+add)@tprel@highera */ | 
| 2640 | #define R_PPC64_TPREL16_HIGHEST        99 /* half16        (sym+add)@tprel@highest */ | 
| 2641 | #define R_PPC64_TPREL16_HIGHESTA 100 /* half16        (sym+add)@tprel@highesta */ | 
| 2642 | #define R_PPC64_DTPREL16_DS        101 /* half16ds* (sym+add)@dtprel */ | 
| 2643 | #define R_PPC64_DTPREL16_LO_DS        102 /* half16ds        (sym+add)@dtprel@l */ | 
| 2644 | #define R_PPC64_DTPREL16_HIGHER        103 /* half16        (sym+add)@dtprel@higher */ | 
| 2645 | #define R_PPC64_DTPREL16_HIGHERA 104 /* half16        (sym+add)@dtprel@highera */ | 
| 2646 | #define R_PPC64_DTPREL16_HIGHEST 105 /* half16        (sym+add)@dtprel@highest */ | 
| 2647 | #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16        (sym+add)@dtprel@highesta */ | 
| 2648 | #define R_PPC64_TLSGD                107 /* none        (sym+add)@tlsgd */ | 
| 2649 | #define R_PPC64_TLSLD                108 /* none        (sym+add)@tlsld */ | 
| 2650 | #define R_PPC64_TOCSAVE                109 /* none */ | 
| 2651 |  | 
| 2652 | /* Added when HA and HI relocs were changed to report overflows.  */ | 
| 2653 | #define R_PPC64_ADDR16_HIGH        110 | 
| 2654 | #define R_PPC64_ADDR16_HIGHA        111 | 
| 2655 | #define R_PPC64_TPREL16_HIGH        112 | 
| 2656 | #define R_PPC64_TPREL16_HIGHA        113 | 
| 2657 | #define R_PPC64_DTPREL16_HIGH        114 | 
| 2658 | #define R_PPC64_DTPREL16_HIGHA        115 | 
| 2659 |  | 
| 2660 | /* GNU extension to support local ifunc.  */ | 
| 2661 | #define R_PPC64_JMP_IREL        247 | 
| 2662 | #define R_PPC64_IRELATIVE        248 | 
| 2663 | #define R_PPC64_REL16                249        /* half16   (sym+add-.) */ | 
| 2664 | #define R_PPC64_REL16_LO        250        /* half16   (sym+add-.)@l */ | 
| 2665 | #define R_PPC64_REL16_HI        251        /* half16   (sym+add-.)@h */ | 
| 2666 | #define R_PPC64_REL16_HA        252        /* half16   (sym+add-.)@ha */ | 
| 2667 |  | 
| 2668 | /* e_flags bits specifying ABI. | 
| 2669 |    1 for original function descriptor using ABI, | 
| 2670 |    2 for revised ABI without function descriptors, | 
| 2671 |    0 for unspecified or not using any features affected by the differences.  */ | 
| 2672 | #define EF_PPC64_ABI        3 | 
| 2673 |  | 
| 2674 | /* PowerPC64 specific values for the Dyn d_tag field.  */ | 
| 2675 | #define DT_PPC64_GLINK  (DT_LOPROC + 0) | 
| 2676 | #define DT_PPC64_OPD        (DT_LOPROC + 1) | 
| 2677 | #define DT_PPC64_OPDSZ        (DT_LOPROC + 2) | 
| 2678 | #define DT_PPC64_OPT        (DT_LOPROC + 3) | 
| 2679 | #define DT_PPC64_NUM    4 | 
| 2680 |  | 
| 2681 | /* PowerPC64 specific bits in the DT_PPC64_OPT Dyn entry.  */ | 
| 2682 | #define PPC64_OPT_TLS                1 | 
| 2683 | #define PPC64_OPT_MULTI_TOC        2 | 
| 2684 | #define PPC64_OPT_LOCALENTRY        4 | 
| 2685 |  | 
| 2686 | /* PowerPC64 specific values for the Elf64_Sym st_other field.  */ | 
| 2687 | #define STO_PPC64_LOCAL_BIT        5 | 
| 2688 | #define STO_PPC64_LOCAL_MASK        (7 << STO_PPC64_LOCAL_BIT) | 
| 2689 | #define PPC64_LOCAL_ENTRY_OFFSET(other)                                \ | 
| 2690 |  (((1 << (((other) & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT)) >> 2) << 2) | 
| 2691 |  | 
| 2692 |  | 
| 2693 | /* ARM specific declarations */ | 
| 2694 |  | 
| 2695 | /* Processor specific flags for the ELF header e_flags field.  */ | 
| 2696 | #define EF_ARM_RELEXEC                0x01 | 
| 2697 | #define EF_ARM_HASENTRY                0x02 | 
| 2698 | #define EF_ARM_INTERWORK        0x04 | 
| 2699 | #define EF_ARM_APCS_26                0x08 | 
| 2700 | #define EF_ARM_APCS_FLOAT        0x10 | 
| 2701 | #define EF_ARM_PIC                0x20 | 
| 2702 | #define EF_ARM_ALIGN8                0x40 /* 8-bit structure alignment is in use */ | 
| 2703 | #define EF_ARM_NEW_ABI                0x80 | 
| 2704 | #define EF_ARM_OLD_ABI                0x100 | 
| 2705 | #define EF_ARM_SOFT_FLOAT        0x200 | 
| 2706 | #define EF_ARM_VFP_FLOAT        0x400 | 
| 2707 | #define EF_ARM_MAVERICK_FLOAT        0x800 | 
| 2708 |  | 
| 2709 | #define EF_ARM_ABI_FLOAT_SOFT        0x200   /* NB conflicts with EF_ARM_SOFT_FLOAT */ | 
| 2710 | #define EF_ARM_ABI_FLOAT_HARD        0x400   /* NB conflicts with EF_ARM_VFP_FLOAT */ | 
| 2711 |  | 
| 2712 |  | 
| 2713 | /* Other constants defined in the ARM ELF spec. version B-01.  */ | 
| 2714 | /* NB. These conflict with values defined above.  */ | 
| 2715 | #define EF_ARM_SYMSARESORTED        0x04 | 
| 2716 | #define EF_ARM_DYNSYMSUSESEGIDX        0x08 | 
| 2717 | #define EF_ARM_MAPSYMSFIRST        0x10 | 
| 2718 | #define EF_ARM_EABIMASK                0XFF000000 | 
| 2719 |  | 
| 2720 | /* Constants defined in AAELF.  */ | 
| 2721 | #define EF_ARM_BE8            0x00800000 | 
| 2722 | #define EF_ARM_LE8            0x00400000 | 
| 2723 |  | 
| 2724 | #define EF_ARM_EABI_VERSION(flags)        ((flags) & EF_ARM_EABIMASK) | 
| 2725 | #define EF_ARM_EABI_UNKNOWN        0x00000000 | 
| 2726 | #define EF_ARM_EABI_VER1        0x01000000 | 
| 2727 | #define EF_ARM_EABI_VER2        0x02000000 | 
| 2728 | #define EF_ARM_EABI_VER3        0x03000000 | 
| 2729 | #define EF_ARM_EABI_VER4        0x04000000 | 
| 2730 | #define EF_ARM_EABI_VER5        0x05000000 | 
| 2731 |  | 
| 2732 | /* Additional symbol types for Thumb.  */ | 
| 2733 | #define STT_ARM_TFUNC                STT_LOPROC /* A Thumb function.  */ | 
| 2734 | #define STT_ARM_16BIT                STT_HIPROC /* A Thumb label.  */ | 
| 2735 |  | 
| 2736 | /* ARM-specific values for sh_flags */ | 
| 2737 | #define SHF_ARM_ENTRYSECT        0x10000000 /* Section contains an entry point */ | 
| 2738 | #define SHF_ARM_COMDEF                0x80000000 /* Section may be multiply defined | 
| 2739 |                                               in the input to a link step.  */ | 
| 2740 |  | 
| 2741 | /* ARM-specific program header flags */ | 
| 2742 | #define PF_ARM_SB                0x10000000 /* Segment contains the location | 
| 2743 |                                               addressed by the static base. */ | 
| 2744 | #define PF_ARM_PI                0x20000000 /* Position-independent segment.  */ | 
| 2745 | #define PF_ARM_ABS                0x40000000 /* Absolute segment.  */ | 
| 2746 |  | 
| 2747 | /* Processor specific values for the Phdr p_type field.  */ | 
| 2748 | #define PT_ARM_EXIDX                (PT_LOPROC + 1)        /* ARM unwind segment.  */ | 
| 2749 |  | 
| 2750 | /* Processor specific values for the Shdr sh_type field.  */ | 
| 2751 | #define SHT_ARM_EXIDX                (SHT_LOPROC + 1) /* ARM unwind section.  */ | 
| 2752 | #define SHT_ARM_PREEMPTMAP        (SHT_LOPROC + 2) /* Preemption details.  */ | 
| 2753 | #define SHT_ARM_ATTRIBUTES        (SHT_LOPROC + 3) /* ARM attributes section.  */ | 
| 2754 |  | 
| 2755 |  | 
| 2756 | /* AArch64 relocs.  */ | 
| 2757 |  | 
| 2758 | #define R_AARCH64_NONE            0        /* No relocation.  */ | 
| 2759 |  | 
| 2760 | /* ILP32 AArch64 relocs.  */ | 
| 2761 | #define R_AARCH64_P32_ABS32                  1        /* Direct 32 bit.  */ | 
| 2762 | #define R_AARCH64_P32_COPY                180        /* Copy symbol at runtime.  */ | 
| 2763 | #define R_AARCH64_P32_GLOB_DAT                181        /* Create GOT entry.  */ | 
| 2764 | #define R_AARCH64_P32_JUMP_SLOT                182        /* Create PLT entry.  */ | 
| 2765 | #define R_AARCH64_P32_RELATIVE                183        /* Adjust by program base.  */ | 
| 2766 | #define R_AARCH64_P32_TLS_DTPMOD        184        /* Module number, 32 bit.  */ | 
| 2767 | #define R_AARCH64_P32_TLS_DTPREL        185        /* Module-relative offset, 32 bit.  */ | 
| 2768 | #define R_AARCH64_P32_TLS_TPREL                186        /* TP-relative offset, 32 bit.  */ | 
| 2769 | #define R_AARCH64_P32_TLSDESC                187        /* TLS Descriptor.  */ | 
| 2770 | #define R_AARCH64_P32_IRELATIVE                188        /* STT_GNU_IFUNC relocation. */ | 
| 2771 |  | 
| 2772 | /* LP64 AArch64 relocs.  */ | 
| 2773 | #define R_AARCH64_ABS64         257        /* Direct 64 bit. */ | 
| 2774 | #define R_AARCH64_ABS32         258        /* Direct 32 bit.  */ | 
| 2775 | #define R_AARCH64_ABS16                259        /* Direct 16-bit.  */ | 
| 2776 | #define R_AARCH64_PREL64        260        /* PC-relative 64-bit.        */ | 
| 2777 | #define R_AARCH64_PREL32        261        /* PC-relative 32-bit.        */ | 
| 2778 | #define R_AARCH64_PREL16        262        /* PC-relative 16-bit.        */ | 
| 2779 | #define R_AARCH64_MOVW_UABS_G0        263        /* Dir. MOVZ imm. from bits 15:0.  */ | 
| 2780 | #define R_AARCH64_MOVW_UABS_G0_NC 264        /* Likewise for MOVK; no check.  */ | 
| 2781 | #define R_AARCH64_MOVW_UABS_G1        265        /* Dir. MOVZ imm. from bits 31:16.  */ | 
| 2782 | #define R_AARCH64_MOVW_UABS_G1_NC 266        /* Likewise for MOVK; no check.  */ | 
| 2783 | #define R_AARCH64_MOVW_UABS_G2        267        /* Dir. MOVZ imm. from bits 47:32.  */ | 
| 2784 | #define R_AARCH64_MOVW_UABS_G2_NC 268        /* Likewise for MOVK; no check.  */ | 
| 2785 | #define R_AARCH64_MOVW_UABS_G3        269        /* Dir. MOV{K,Z} imm. from 63:48.  */ | 
| 2786 | #define R_AARCH64_MOVW_SABS_G0        270        /* Dir. MOV{N,Z} imm. from 15:0.  */ | 
| 2787 | #define R_AARCH64_MOVW_SABS_G1        271        /* Dir. MOV{N,Z} imm. from 31:16.  */ | 
| 2788 | #define R_AARCH64_MOVW_SABS_G2        272        /* Dir. MOV{N,Z} imm. from 47:32.  */ | 
| 2789 | #define R_AARCH64_LD_PREL_LO19        273        /* PC-rel. LD imm. from bits 20:2.  */ | 
| 2790 | #define R_AARCH64_ADR_PREL_LO21        274        /* PC-rel. ADR imm. from bits 20:0.  */ | 
| 2791 | #define R_AARCH64_ADR_PREL_PG_HI21 275        /* Page-rel. ADRP imm. from 32:12.  */ | 
| 2792 | #define R_AARCH64_ADR_PREL_PG_HI21_NC 276 /* Likewise; no overflow check.  */ | 
| 2793 | #define R_AARCH64_ADD_ABS_LO12_NC 277        /* Dir. ADD imm. from bits 11:0.  */ | 
| 2794 | #define R_AARCH64_LDST8_ABS_LO12_NC 278        /* Likewise for LD/ST; no check. */ | 
| 2795 | #define R_AARCH64_TSTBR14        279        /* PC-rel. TBZ/TBNZ imm. from 15:2.  */ | 
| 2796 | #define R_AARCH64_CONDBR19        280        /* PC-rel. cond. br. imm. from 20:2. */ | 
| 2797 | #define R_AARCH64_JUMP26        282        /* PC-rel. B imm. from bits 27:2.  */ | 
| 2798 | #define R_AARCH64_CALL26        283        /* Likewise for CALL.  */ | 
| 2799 | #define R_AARCH64_LDST16_ABS_LO12_NC 284 /* Dir. ADD imm. from bits 11:1.  */ | 
| 2800 | #define R_AARCH64_LDST32_ABS_LO12_NC 285 /* Likewise for bits 11:2.  */ | 
| 2801 | #define R_AARCH64_LDST64_ABS_LO12_NC 286 /* Likewise for bits 11:3.  */ | 
| 2802 | #define R_AARCH64_MOVW_PREL_G0        287        /* PC-rel. MOV{N,Z} imm. from 15:0.  */ | 
| 2803 | #define R_AARCH64_MOVW_PREL_G0_NC 288        /* Likewise for MOVK; no check.  */ | 
| 2804 | #define R_AARCH64_MOVW_PREL_G1        289        /* PC-rel. MOV{N,Z} imm. from 31:16. */ | 
| 2805 | #define R_AARCH64_MOVW_PREL_G1_NC 290        /* Likewise for MOVK; no check.  */ | 
| 2806 | #define R_AARCH64_MOVW_PREL_G2        291        /* PC-rel. MOV{N,Z} imm. from 47:32. */ | 
| 2807 | #define R_AARCH64_MOVW_PREL_G2_NC 292        /* Likewise for MOVK; no check.  */ | 
| 2808 | #define R_AARCH64_MOVW_PREL_G3        293        /* PC-rel. MOV{N,Z} imm. from 63:48. */ | 
| 2809 | #define R_AARCH64_LDST128_ABS_LO12_NC 299 /* Dir. ADD imm. from bits 11:4.  */ | 
| 2810 | #define R_AARCH64_MOVW_GOTOFF_G0 300        /* GOT-rel. off. MOV{N,Z} imm. 15:0. */ | 
| 2811 | #define R_AARCH64_MOVW_GOTOFF_G0_NC 301        /* Likewise for MOVK; no check.  */ | 
| 2812 | #define R_AARCH64_MOVW_GOTOFF_G1 302        /* GOT-rel. o. MOV{N,Z} imm. 31:16.  */ | 
| 2813 | #define R_AARCH64_MOVW_GOTOFF_G1_NC 303        /* Likewise for MOVK; no check.  */ | 
| 2814 | #define R_AARCH64_MOVW_GOTOFF_G2 304        /* GOT-rel. o. MOV{N,Z} imm. 47:32.  */ | 
| 2815 | #define R_AARCH64_MOVW_GOTOFF_G2_NC 305        /* Likewise for MOVK; no check.  */ | 
| 2816 | #define R_AARCH64_MOVW_GOTOFF_G3 306        /* GOT-rel. o. MOV{N,Z} imm. 63:48.  */ | 
| 2817 | #define R_AARCH64_GOTREL64        307        /* GOT-relative 64-bit.  */ | 
| 2818 | #define R_AARCH64_GOTREL32        308        /* GOT-relative 32-bit.  */ | 
| 2819 | #define R_AARCH64_GOT_LD_PREL19        309        /* PC-rel. GOT off. load imm. 20:2.  */ | 
| 2820 | #define R_AARCH64_LD64_GOTOFF_LO15 310        /* GOT-rel. off. LD/ST imm. 14:3.  */ | 
| 2821 | #define R_AARCH64_ADR_GOT_PAGE        311        /* P-page-rel. GOT off. ADRP 32:12.  */ | 
| 2822 | #define R_AARCH64_LD64_GOT_LO12_NC 312        /* Dir. GOT off. LD/ST imm. 11:3.  */ | 
| 2823 | #define R_AARCH64_LD64_GOTPAGE_LO15 313        /* GOT-page-rel. GOT off. LD/ST 14:3 */ | 
| 2824 | #define R_AARCH64_TLSGD_ADR_PREL21 512        /* PC-relative ADR imm. 20:0.  */ | 
| 2825 | #define R_AARCH64_TLSGD_ADR_PAGE21 513        /* page-rel. ADRP imm. 32:12.  */ | 
| 2826 | #define R_AARCH64_TLSGD_ADD_LO12_NC 514        /* direct ADD imm. from 11:0.  */ | 
| 2827 | #define R_AARCH64_TLSGD_MOVW_G1        515        /* GOT-rel. MOV{N,Z} 31:16.  */ | 
| 2828 | #define R_AARCH64_TLSGD_MOVW_G0_NC 516        /* GOT-rel. MOVK imm. 15:0.  */ | 
| 2829 | #define R_AARCH64_TLSLD_ADR_PREL21 517        /* Like 512; local dynamic model.  */ | 
| 2830 | #define R_AARCH64_TLSLD_ADR_PAGE21 518        /* Like 513; local dynamic model.  */ | 
| 2831 | #define R_AARCH64_TLSLD_ADD_LO12_NC 519        /* Like 514; local dynamic model.  */ | 
| 2832 | #define R_AARCH64_TLSLD_MOVW_G1        520        /* Like 515; local dynamic model.  */ | 
| 2833 | #define R_AARCH64_TLSLD_MOVW_G0_NC 521        /* Like 516; local dynamic model.  */ | 
| 2834 | #define R_AARCH64_TLSLD_LD_PREL19 522        /* TLS PC-rel. load imm. 20:2.  */ | 
| 2835 | #define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 /* TLS DTP-rel. MOV{N,Z} 47:32.  */ | 
| 2836 | #define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 /* TLS DTP-rel. MOV{N,Z} 31:16.  */ | 
| 2837 | #define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 /* Likewise; MOVK; no check.  */ | 
| 2838 | #define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 /* TLS DTP-rel. MOV{N,Z} 15:0.  */ | 
| 2839 | #define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 /* Likewise; MOVK; no check.  */ | 
| 2840 | #define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 /* DTP-rel. ADD imm. from 23:12. */ | 
| 2841 | #define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 /* DTP-rel. ADD imm. from 11:0.  */ | 
| 2842 | #define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 /* Likewise; no ovfl. check.  */ | 
| 2843 | #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 /* DTP-rel. LD/ST imm. 11:0.  */ | 
| 2844 | #define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 /* Likewise; no check.  */ | 
| 2845 | #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 /* DTP-rel. LD/ST imm. 11:1.  */ | 
| 2846 | #define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 /* Likewise; no check.  */ | 
| 2847 | #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 /* DTP-rel. LD/ST imm. 11:2.  */ | 
| 2848 | #define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 /* Likewise; no check.  */ | 
| 2849 | #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 /* DTP-rel. LD/ST imm. 11:3.  */ | 
| 2850 | #define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 /* Likewise; no check.  */ | 
| 2851 | #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 /* GOT-rel. MOV{N,Z} 31:16.  */ | 
| 2852 | #define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 /* GOT-rel. MOVK 15:0.  */ | 
| 2853 | #define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 /* Page-rel. ADRP 32:12.  */ | 
| 2854 | #define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 /* Direct LD off. 11:3.  */ | 
| 2855 | #define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 /* PC-rel. load imm. 20:2.  */ | 
| 2856 | #define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 /* TLS TP-rel. MOV{N,Z} 47:32.  */ | 
| 2857 | #define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 /* TLS TP-rel. MOV{N,Z} 31:16.  */ | 
| 2858 | #define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 /* Likewise; MOVK; no check.  */ | 
| 2859 | #define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 /* TLS TP-rel. MOV{N,Z} 15:0.  */ | 
| 2860 | #define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 /* Likewise; MOVK; no check.  */ | 
| 2861 | #define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 /* TP-rel. ADD imm. 23:12.  */ | 
| 2862 | #define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 /* TP-rel. ADD imm. 11:0.  */ | 
| 2863 | #define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 /* Likewise; no ovfl. check.  */ | 
| 2864 | #define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 /* TP-rel. LD/ST off. 11:0.  */ | 
| 2865 | #define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 /* Likewise; no ovfl. check. */ | 
| 2866 | #define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 /* TP-rel. LD/ST off. 11:1.  */ | 
| 2867 | #define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 /* Likewise; no check.  */ | 
| 2868 | #define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 /* TP-rel. LD/ST off. 11:2.  */ | 
| 2869 | #define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 /* Likewise; no check.  */ | 
| 2870 | #define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 /* TP-rel. LD/ST off. 11:3.  */ | 
| 2871 | #define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 /* Likewise; no check.  */ | 
| 2872 | #define R_AARCH64_TLSDESC_LD_PREL19 560        /* PC-rel. load immediate 20:2.  */ | 
| 2873 | #define R_AARCH64_TLSDESC_ADR_PREL21 561 /* PC-rel. ADR immediate 20:0.  */ | 
| 2874 | #define R_AARCH64_TLSDESC_ADR_PAGE21 562 /* Page-rel. ADRP imm. 32:12.  */ | 
| 2875 | #define R_AARCH64_TLSDESC_LD64_LO12 563        /* Direct LD off. from 11:3.  */ | 
| 2876 | #define R_AARCH64_TLSDESC_ADD_LO12 564        /* Direct ADD imm. from 11:0.  */ | 
| 2877 | #define R_AARCH64_TLSDESC_OFF_G1 565        /* GOT-rel. MOV{N,Z} imm. 31:16.  */ | 
| 2878 | #define R_AARCH64_TLSDESC_OFF_G0_NC 566        /* GOT-rel. MOVK imm. 15:0; no ck.  */ | 
| 2879 | #define R_AARCH64_TLSDESC_LDR        567        /* Relax LDR.  */ | 
| 2880 | #define R_AARCH64_TLSDESC_ADD        568        /* Relax ADD.  */ | 
| 2881 | #define R_AARCH64_TLSDESC_CALL        569        /* Relax BLR.  */ | 
| 2882 | #define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 /* TP-rel. LD/ST off. 11:4.  */ | 
| 2883 | #define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 /* Likewise; no check.  */ | 
| 2884 | #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 /* DTP-rel. LD/ST imm. 11:4. */ | 
| 2885 | #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 /* Likewise; no check.  */ | 
| 2886 | #define R_AARCH64_COPY         1024        /* Copy symbol at runtime.  */ | 
| 2887 | #define R_AARCH64_GLOB_DAT     1025        /* Create GOT entry.  */ | 
| 2888 | #define R_AARCH64_JUMP_SLOT    1026        /* Create PLT entry.  */ | 
| 2889 | #define R_AARCH64_RELATIVE     1027        /* Adjust by program base.  */ | 
| 2890 | #define R_AARCH64_TLS_DTPMOD   1028        /* Module number, 64 bit.  */ | 
| 2891 | #define R_AARCH64_TLS_DTPREL   1029        /* Module-relative offset, 64 bit.  */ | 
| 2892 | #define R_AARCH64_TLS_TPREL    1030        /* TP-relative offset, 64 bit.  */ | 
| 2893 | #define R_AARCH64_TLSDESC      1031        /* TLS Descriptor.  */ | 
| 2894 | #define R_AARCH64_IRELATIVE        1032        /* STT_GNU_IFUNC relocation.  */ | 
| 2895 |  | 
| 2896 | /* AArch64 specific values for the Dyn d_tag field.  */ | 
| 2897 | #define DT_AARCH64_BTI_PLT        (DT_LOPROC + 1) | 
| 2898 | #define DT_AARCH64_PAC_PLT        (DT_LOPROC + 3) | 
| 2899 | #define DT_AARCH64_VARIANT_PCS        (DT_LOPROC + 5) | 
| 2900 | #define DT_AARCH64_NUM                6 | 
| 2901 |  | 
| 2902 | /* AArch64 specific values for the st_other field.  */ | 
| 2903 | #define STO_AARCH64_VARIANT_PCS 0x80 | 
| 2904 |  | 
| 2905 | /* ARM relocs.  */ | 
| 2906 |  | 
| 2907 | #define R_ARM_NONE                0        /* No reloc */ | 
| 2908 | #define R_ARM_PC24                1        /* Deprecated PC relative 26 | 
| 2909 |                                            bit branch.  */ | 
| 2910 | #define R_ARM_ABS32                2        /* Direct 32 bit  */ | 
| 2911 | #define R_ARM_REL32                3        /* PC relative 32 bit */ | 
| 2912 | #define R_ARM_PC13                4 | 
| 2913 | #define R_ARM_ABS16                5        /* Direct 16 bit */ | 
| 2914 | #define R_ARM_ABS12                6        /* Direct 12 bit */ | 
| 2915 | #define R_ARM_THM_ABS5                7        /* Direct & 0x7C (LDR, STR).  */ | 
| 2916 | #define R_ARM_ABS8                8        /* Direct 8 bit */ | 
| 2917 | #define R_ARM_SBREL32                9 | 
| 2918 | #define R_ARM_THM_PC22                10        /* PC relative 24 bit (Thumb32 BL).  */ | 
| 2919 | #define R_ARM_THM_PC8                11        /* PC relative & 0x3FC | 
| 2920 |                                            (Thumb16 LDR, ADD, ADR).  */ | 
| 2921 | #define R_ARM_AMP_VCALL9        12 | 
| 2922 | #define R_ARM_SWI24                13        /* Obsolete static relocation.  */ | 
| 2923 | #define R_ARM_TLS_DESC                13      /* Dynamic relocation.  */ | 
| 2924 | #define R_ARM_THM_SWI8                14        /* Reserved.  */ | 
| 2925 | #define R_ARM_XPC25                15        /* Reserved.  */ | 
| 2926 | #define R_ARM_THM_XPC22                16        /* Reserved.  */ | 
| 2927 | #define R_ARM_TLS_DTPMOD32        17        /* ID of module containing symbol */ | 
| 2928 | #define R_ARM_TLS_DTPOFF32        18        /* Offset in TLS block */ | 
| 2929 | #define R_ARM_TLS_TPOFF32        19        /* Offset in static TLS block */ | 
| 2930 | #define R_ARM_COPY                20        /* Copy symbol at runtime */ | 
| 2931 | #define R_ARM_GLOB_DAT                21        /* Create GOT entry */ | 
| 2932 | #define R_ARM_JUMP_SLOT                22        /* Create PLT entry */ | 
| 2933 | #define R_ARM_RELATIVE                23        /* Adjust by program base */ | 
| 2934 | #define R_ARM_GOTOFF                24        /* 32 bit offset to GOT */ | 
| 2935 | #define R_ARM_GOTPC                25        /* 32 bit PC relative offset to GOT */ | 
| 2936 | #define R_ARM_GOT32                26        /* 32 bit GOT entry */ | 
| 2937 | #define R_ARM_PLT32                27        /* Deprecated, 32 bit PLT address.  */ | 
| 2938 | #define R_ARM_CALL                28        /* PC relative 24 bit (BL, BLX).  */ | 
| 2939 | #define R_ARM_JUMP24                29        /* PC relative 24 bit | 
| 2940 |                                            (B, BL<cond>).  */ | 
| 2941 | #define R_ARM_THM_JUMP24        30        /* PC relative 24 bit (Thumb32 B.W).  */ | 
| 2942 | #define R_ARM_BASE_ABS                31        /* Adjust by program base.  */ | 
| 2943 | #define R_ARM_ALU_PCREL_7_0        32        /* Obsolete.  */ | 
| 2944 | #define R_ARM_ALU_PCREL_15_8        33        /* Obsolete.  */ | 
| 2945 | #define R_ARM_ALU_PCREL_23_15        34        /* Obsolete.  */ | 
| 2946 | #define R_ARM_LDR_SBREL_11_0        35        /* Deprecated, prog. base relative.  */ | 
| 2947 | #define R_ARM_ALU_SBREL_19_12        36        /* Deprecated, prog. base relative.  */ | 
| 2948 | #define R_ARM_ALU_SBREL_27_20        37        /* Deprecated, prog. base relative.  */ | 
| 2949 | #define R_ARM_TARGET1                38 | 
| 2950 | #define R_ARM_SBREL31                39        /* Program base relative.  */ | 
| 2951 | #define R_ARM_V4BX                40 | 
| 2952 | #define R_ARM_TARGET2                41 | 
| 2953 | #define R_ARM_PREL31                42        /* 32 bit PC relative.  */ | 
| 2954 | #define R_ARM_MOVW_ABS_NC        43        /* Direct 16-bit (MOVW).  */ | 
| 2955 | #define R_ARM_MOVT_ABS                44        /* Direct high 16-bit (MOVT).  */ | 
| 2956 | #define R_ARM_MOVW_PREL_NC        45        /* PC relative 16-bit (MOVW).  */ | 
| 2957 | #define R_ARM_MOVT_PREL                46        /* PC relative (MOVT).  */ | 
| 2958 | #define R_ARM_THM_MOVW_ABS_NC        47        /* Direct 16 bit (Thumb32 MOVW).  */ | 
| 2959 | #define R_ARM_THM_MOVT_ABS        48        /* Direct high 16 bit | 
| 2960 |                                            (Thumb32 MOVT).  */ | 
| 2961 | #define R_ARM_THM_MOVW_PREL_NC        49        /* PC relative 16 bit | 
| 2962 |                                            (Thumb32 MOVW).  */ | 
| 2963 | #define R_ARM_THM_MOVT_PREL        50        /* PC relative high 16 bit | 
| 2964 |                                            (Thumb32 MOVT).  */ | 
| 2965 | #define R_ARM_THM_JUMP19        51        /* PC relative 20 bit | 
| 2966 |                                            (Thumb32 B<cond>.W).  */ | 
| 2967 | #define R_ARM_THM_JUMP6                52        /* PC relative X & 0x7E | 
| 2968 |                                            (Thumb16 CBZ, CBNZ).  */ | 
| 2969 | #define R_ARM_THM_ALU_PREL_11_0        53        /* PC relative 12 bit | 
| 2970 |                                            (Thumb32 ADR.W).  */ | 
| 2971 | #define R_ARM_THM_PC12                54        /* PC relative 12 bit | 
| 2972 |                                            (Thumb32 LDR{D,SB,H,SH}).  */ | 
| 2973 | #define R_ARM_ABS32_NOI                55        /* Direct 32-bit.  */ | 
| 2974 | #define R_ARM_REL32_NOI                56        /* PC relative 32-bit.  */ | 
| 2975 | #define R_ARM_ALU_PC_G0_NC        57        /* PC relative (ADD, SUB).  */ | 
| 2976 | #define R_ARM_ALU_PC_G0                58        /* PC relative (ADD, SUB).  */ | 
| 2977 | #define R_ARM_ALU_PC_G1_NC        59        /* PC relative (ADD, SUB).  */ | 
| 2978 | #define R_ARM_ALU_PC_G1                60        /* PC relative (ADD, SUB).  */ | 
| 2979 | #define R_ARM_ALU_PC_G2                61        /* PC relative (ADD, SUB).  */ | 
| 2980 | #define R_ARM_LDR_PC_G1                62        /* PC relative (LDR,STR,LDRB,STRB).  */ | 
| 2981 | #define R_ARM_LDR_PC_G2                63        /* PC relative (LDR,STR,LDRB,STRB).  */ | 
| 2982 | #define R_ARM_LDRS_PC_G0        64        /* PC relative (STR{D,H}, | 
| 2983 |                                            LDR{D,SB,H,SH}).  */ | 
| 2984 | #define R_ARM_LDRS_PC_G1        65        /* PC relative (STR{D,H}, | 
| 2985 |                                            LDR{D,SB,H,SH}).  */ | 
| 2986 | #define R_ARM_LDRS_PC_G2        66        /* PC relative (STR{D,H}, | 
| 2987 |                                            LDR{D,SB,H,SH}).  */ | 
| 2988 | #define R_ARM_LDC_PC_G0                67        /* PC relative (LDC, STC).  */ | 
| 2989 | #define R_ARM_LDC_PC_G1                68        /* PC relative (LDC, STC).  */ | 
| 2990 | #define R_ARM_LDC_PC_G2                69        /* PC relative (LDC, STC).  */ | 
| 2991 | #define R_ARM_ALU_SB_G0_NC        70        /* Program base relative (ADD,SUB).  */ | 
| 2992 | #define R_ARM_ALU_SB_G0                71        /* Program base relative (ADD,SUB).  */ | 
| 2993 | #define R_ARM_ALU_SB_G1_NC        72        /* Program base relative (ADD,SUB).  */ | 
| 2994 | #define R_ARM_ALU_SB_G1                73        /* Program base relative (ADD,SUB).  */ | 
| 2995 | #define R_ARM_ALU_SB_G2                74        /* Program base relative (ADD,SUB).  */ | 
| 2996 | #define R_ARM_LDR_SB_G0                75        /* Program base relative (LDR, | 
| 2997 |                                            STR, LDRB, STRB).  */ | 
| 2998 | #define R_ARM_LDR_SB_G1                76        /* Program base relative | 
| 2999 |                                            (LDR, STR, LDRB, STRB).  */ | 
| 3000 | #define R_ARM_LDR_SB_G2                77        /* Program base relative | 
| 3001 |                                            (LDR, STR, LDRB, STRB).  */ | 
| 3002 | #define R_ARM_LDRS_SB_G0        78        /* Program base relative | 
| 3003 |                                            (LDR, STR, LDRB, STRB).  */ | 
| 3004 | #define R_ARM_LDRS_SB_G1        79        /* Program base relative | 
| 3005 |                                            (LDR, STR, LDRB, STRB).  */ | 
| 3006 | #define R_ARM_LDRS_SB_G2        80        /* Program base relative | 
| 3007 |                                            (LDR, STR, LDRB, STRB).  */ | 
| 3008 | #define R_ARM_LDC_SB_G0                81        /* Program base relative (LDC,STC).  */ | 
| 3009 | #define R_ARM_LDC_SB_G1                82        /* Program base relative (LDC,STC).  */ | 
| 3010 | #define R_ARM_LDC_SB_G2                83        /* Program base relative (LDC,STC).  */ | 
| 3011 | #define R_ARM_MOVW_BREL_NC        84        /* Program base relative 16 | 
| 3012 |                                            bit (MOVW).  */ | 
| 3013 | #define R_ARM_MOVT_BREL                85        /* Program base relative high | 
| 3014 |                                            16 bit (MOVT).  */ | 
| 3015 | #define R_ARM_MOVW_BREL                86        /* Program base relative 16 | 
| 3016 |                                            bit (MOVW).  */ | 
| 3017 | #define R_ARM_THM_MOVW_BREL_NC        87        /* Program base relative 16 | 
| 3018 |                                            bit (Thumb32 MOVW).  */ | 
| 3019 | #define R_ARM_THM_MOVT_BREL        88        /* Program base relative high | 
| 3020 |                                            16 bit (Thumb32 MOVT).  */ | 
| 3021 | #define R_ARM_THM_MOVW_BREL        89        /* Program base relative 16 | 
| 3022 |                                            bit (Thumb32 MOVW).  */ | 
| 3023 | #define R_ARM_TLS_GOTDESC        90 | 
| 3024 | #define R_ARM_TLS_CALL                91 | 
| 3025 | #define R_ARM_TLS_DESCSEQ        92        /* TLS relaxation.  */ | 
| 3026 | #define R_ARM_THM_TLS_CALL        93 | 
| 3027 | #define R_ARM_PLT32_ABS                94 | 
| 3028 | #define R_ARM_GOT_ABS                95        /* GOT entry.  */ | 
| 3029 | #define R_ARM_GOT_PREL                96        /* PC relative GOT entry.  */ | 
| 3030 | #define R_ARM_GOT_BREL12        97        /* GOT entry relative to GOT | 
| 3031 |                                            origin (LDR).  */ | 
| 3032 | #define R_ARM_GOTOFF12                98        /* 12 bit, GOT entry relative | 
| 3033 |                                            to GOT origin (LDR, STR).  */ | 
| 3034 | #define R_ARM_GOTRELAX                99 | 
| 3035 | #define R_ARM_GNU_VTENTRY        100 | 
| 3036 | #define R_ARM_GNU_VTINHERIT        101 | 
| 3037 | #define R_ARM_THM_PC11                102        /* PC relative & 0xFFE (Thumb16 B).  */ | 
| 3038 | #define R_ARM_THM_PC9                103        /* PC relative & 0x1FE | 
| 3039 |                                            (Thumb16 B/B<cond>).  */ | 
| 3040 | #define R_ARM_TLS_GD32                104        /* PC-rel 32 bit for global dynamic | 
| 3041 |                                            thread local data */ | 
| 3042 | #define R_ARM_TLS_LDM32                105        /* PC-rel 32 bit for local dynamic | 
| 3043 |                                            thread local data */ | 
| 3044 | #define R_ARM_TLS_LDO32                106        /* 32 bit offset relative to TLS | 
| 3045 |                                            block */ | 
| 3046 | #define R_ARM_TLS_IE32                107        /* PC-rel 32 bit for GOT entry of | 
| 3047 |                                            static TLS block offset */ | 
| 3048 | #define R_ARM_TLS_LE32                108        /* 32 bit offset relative to static | 
| 3049 |                                            TLS block */ | 
| 3050 | #define R_ARM_TLS_LDO12                109        /* 12 bit relative to TLS | 
| 3051 |                                            block (LDR, STR).  */ | 
| 3052 | #define R_ARM_TLS_LE12                110        /* 12 bit relative to static | 
| 3053 |                                            TLS block (LDR, STR).  */ | 
| 3054 | #define R_ARM_TLS_IE12GP        111        /* 12 bit GOT entry relative | 
| 3055 |                                            to GOT origin (LDR).  */ | 
| 3056 | #define R_ARM_ME_TOO                128        /* Obsolete.  */ | 
| 3057 | #define R_ARM_THM_TLS_DESCSEQ        129 | 
| 3058 | #define R_ARM_THM_TLS_DESCSEQ16        129 | 
| 3059 | #define R_ARM_THM_TLS_DESCSEQ32        130 | 
| 3060 | #define R_ARM_THM_GOT_BREL12        131        /* GOT entry relative to GOT | 
| 3061 |                                            origin, 12 bit (Thumb32 LDR).  */ | 
| 3062 | #define R_ARM_IRELATIVE                160 | 
| 3063 | #define R_ARM_RXPC25                249 | 
| 3064 | #define R_ARM_RSBREL32                250 | 
| 3065 | #define R_ARM_THM_RPC22                251 | 
| 3066 | #define R_ARM_RREL32                252 | 
| 3067 | #define R_ARM_RABS22                253 | 
| 3068 | #define R_ARM_RPC24                254 | 
| 3069 | #define R_ARM_RBASE                255 | 
| 3070 | /* Keep this the last entry.  */ | 
| 3071 | #define R_ARM_NUM                256 | 
| 3072 |  | 
| 3073 | /* C-SKY */ | 
| 3074 | #define R_CKCORE_NONE               0        /* no reloc */ | 
| 3075 | #define R_CKCORE_ADDR32             1        /* direct 32 bit (S + A) */ | 
| 3076 | #define R_CKCORE_PCRELIMM8BY4       2        /* disp ((S + A - P) >> 2) & 0xff   */ | 
| 3077 | #define R_CKCORE_PCRELIMM11BY2      3        /* disp ((S + A - P) >> 1) & 0x7ff  */ | 
| 3078 | #define R_CKCORE_PCREL32            5        /* 32-bit rel (S + A - P)           */ | 
| 3079 | #define R_CKCORE_PCRELJSR_IMM11BY2  6        /* disp ((S + A - P) >>1) & 0x7ff   */ | 
| 3080 | #define R_CKCORE_RELATIVE           9        /* 32 bit adjust program base(B + A)*/ | 
| 3081 | #define R_CKCORE_COPY               10        /* 32 bit adjust by program base    */ | 
| 3082 | #define R_CKCORE_GLOB_DAT           11        /* off between got and sym (S)      */ | 
| 3083 | #define R_CKCORE_JUMP_SLOT          12        /* PLT entry (S) */ | 
| 3084 | #define R_CKCORE_GOTOFF             13        /* offset to GOT (S + A - GOT)      */ | 
| 3085 | #define R_CKCORE_GOTPC              14        /* PC offset to GOT (GOT + A - P)   */ | 
| 3086 | #define R_CKCORE_GOT32              15        /* 32 bit GOT entry (G) */ | 
| 3087 | #define R_CKCORE_PLT32              16        /* 32 bit PLT entry (G) */ | 
| 3088 | #define R_CKCORE_ADDRGOT            17        /* GOT entry in GLOB_DAT (GOT + G)  */ | 
| 3089 | #define R_CKCORE_ADDRPLT            18        /* PLT entry in GLOB_DAT (GOT + G)  */ | 
| 3090 | #define R_CKCORE_PCREL_IMM26BY2     19        /* ((S + A - P) >> 1) & 0x3ffffff   */ | 
| 3091 | #define R_CKCORE_PCREL_IMM16BY2     20        /* disp ((S + A - P) >> 1) & 0xffff */ | 
| 3092 | #define R_CKCORE_PCREL_IMM16BY4     21        /* disp ((S + A - P) >> 2) & 0xffff */ | 
| 3093 | #define R_CKCORE_PCREL_IMM10BY2     22        /* disp ((S + A - P) >> 1) & 0x3ff  */ | 
| 3094 | #define R_CKCORE_PCREL_IMM10BY4     23        /* disp ((S + A - P) >> 2) & 0x3ff  */ | 
| 3095 | #define R_CKCORE_ADDR_HI16          24        /* high & low 16 bit ADDR */ | 
| 3096 |                                         /* ((S + A) >> 16) & 0xffff */ | 
| 3097 | #define R_CKCORE_ADDR_LO16          25        /* (S + A) & 0xffff */ | 
| 3098 | #define R_CKCORE_GOTPC_HI16         26        /* high & low 16 bit GOTPC */ | 
| 3099 |                                         /* ((GOT + A - P) >> 16) & 0xffff */ | 
| 3100 | #define R_CKCORE_GOTPC_LO16         27        /* (GOT + A - P) & 0xffff */ | 
| 3101 | #define R_CKCORE_GOTOFF_HI16        28        /* high & low 16 bit GOTOFF */ | 
| 3102 |                                         /* ((S + A - GOT) >> 16) & 0xffff */ | 
| 3103 | #define R_CKCORE_GOTOFF_LO16        29        /* (S + A - GOT) & 0xffff */ | 
| 3104 | #define R_CKCORE_GOT12              30        /* 12 bit disp GOT entry (G) */ | 
| 3105 | #define R_CKCORE_GOT_HI16           31        /* high & low 16 bit GOT */ | 
| 3106 |                                         /* (G >> 16) & 0xffff */ | 
| 3107 | #define R_CKCORE_GOT_LO16           32        /* (G & 0xffff) */ | 
| 3108 | #define R_CKCORE_PLT12              33        /* 12 bit disp PLT entry (G) */ | 
| 3109 | #define R_CKCORE_PLT_HI16           34        /* high & low 16 bit PLT */ | 
| 3110 |                                         /* (G >> 16) & 0xffff */ | 
| 3111 | #define R_CKCORE_PLT_LO16           35        /* G & 0xffff */ | 
| 3112 | #define R_CKCORE_ADDRGOT_HI16       36        /* high & low 16 bit ADDRGOT */ | 
| 3113 |                                         /* (GOT + G * 4) & 0xffff */ | 
| 3114 | #define R_CKCORE_ADDRGOT_LO16       37        /* (GOT + G * 4) & 0xffff */ | 
| 3115 | #define R_CKCORE_ADDRPLT_HI16       38        /* high & low 16 bit ADDRPLT */ | 
| 3116 |                                         /* ((GOT + G * 4) >> 16) & 0xFFFF */ | 
| 3117 | #define R_CKCORE_ADDRPLT_LO16       39        /* (GOT+G*4) & 0xffff */ | 
| 3118 | #define R_CKCORE_PCREL_JSR_IMM26BY2 40        /* disp ((S+A-P) >>1) & x3ffffff */ | 
| 3119 | #define R_CKCORE_TOFFSET_LO16       41        /* (S+A-BTEXT) & 0xffff */ | 
| 3120 | #define R_CKCORE_DOFFSET_LO16       42        /* (S+A-BTEXT) & 0xffff */ | 
| 3121 | #define R_CKCORE_PCREL_IMM18BY2     43        /* disp ((S+A-P) >>1) & 0x3ffff */ | 
| 3122 | #define R_CKCORE_DOFFSET_IMM18      44        /* disp (S+A-BDATA) & 0x3ffff */ | 
| 3123 | #define R_CKCORE_DOFFSET_IMM18BY2   45        /* disp ((S+A-BDATA)>>1) & 0x3ffff */ | 
| 3124 | #define R_CKCORE_DOFFSET_IMM18BY4   46        /* disp ((S+A-BDATA)>>2) & 0x3ffff */ | 
| 3125 | #define R_CKCORE_GOT_IMM18BY4       48        /* disp (G >> 2) */ | 
| 3126 | #define R_CKCORE_PLT_IMM18BY4       49        /* disp (G >> 2) */ | 
| 3127 | #define R_CKCORE_PCREL_IMM7BY4      50        /* disp ((S+A-P) >>2) & 0x7f */ | 
| 3128 | #define R_CKCORE_TLS_LE32           51        /* 32 bit offset to TLS block */ | 
| 3129 | #define R_CKCORE_TLS_IE32           52 | 
| 3130 | #define R_CKCORE_TLS_GD32           53 | 
| 3131 | #define R_CKCORE_TLS_LDM32          54 | 
| 3132 | #define R_CKCORE_TLS_LDO32          55 | 
| 3133 | #define R_CKCORE_TLS_DTPMOD32       56 | 
| 3134 | #define R_CKCORE_TLS_DTPOFF32       57 | 
| 3135 | #define R_CKCORE_TLS_TPOFF32        58 | 
| 3136 |  | 
| 3137 | /* C-SKY elf header definition.  */ | 
| 3138 | #define EF_CSKY_ABIMASK                    0XF0000000 | 
| 3139 | #define EF_CSKY_OTHER                    0X0FFF0000 | 
| 3140 | #define EF_CSKY_PROCESSOR            0X0000FFFF | 
| 3141 |  | 
| 3142 | #define EF_CSKY_ABIV1                    0X10000000 | 
| 3143 | #define EF_CSKY_ABIV2                    0X20000000 | 
| 3144 |  | 
| 3145 | /* C-SKY attributes section.  */ | 
| 3146 | #define SHT_CSKY_ATTRIBUTES            (SHT_LOPROC + 1) | 
| 3147 |  | 
| 3148 | /* IA-64 specific declarations.  */ | 
| 3149 |  | 
| 3150 | /* Processor specific flags for the Ehdr e_flags field.  */ | 
| 3151 | #define EF_IA_64_MASKOS                0x0000000f        /* os-specific flags */ | 
| 3152 | #define EF_IA_64_ABI64                0x00000010        /* 64-bit ABI */ | 
| 3153 | #define EF_IA_64_ARCH                0xff000000        /* arch. version mask */ | 
| 3154 |  | 
| 3155 | /* Processor specific values for the Phdr p_type field.  */ | 
| 3156 | #define PT_IA_64_ARCHEXT        (PT_LOPROC + 0)        /* arch extension bits */ | 
| 3157 | #define PT_IA_64_UNWIND                (PT_LOPROC + 1)        /* ia64 unwind bits */ | 
| 3158 | #define PT_IA_64_HP_OPT_ANOT        (PT_LOOS + 0x12) | 
| 3159 | #define PT_IA_64_HP_HSL_ANOT        (PT_LOOS + 0x13) | 
| 3160 | #define PT_IA_64_HP_STACK        (PT_LOOS + 0x14) | 
| 3161 |  | 
| 3162 | /* Processor specific flags for the Phdr p_flags field.  */ | 
| 3163 | #define PF_IA_64_NORECOV        0x80000000        /* spec insns w/o recovery */ | 
| 3164 |  | 
| 3165 | /* Processor specific values for the Shdr sh_type field.  */ | 
| 3166 | #define SHT_IA_64_EXT                (SHT_LOPROC + 0) /* extension bits */ | 
| 3167 | #define SHT_IA_64_UNWIND        (SHT_LOPROC + 1) /* unwind bits */ | 
| 3168 |  | 
| 3169 | /* Processor specific flags for the Shdr sh_flags field.  */ | 
| 3170 | #define SHF_IA_64_SHORT                0x10000000        /* section near gp */ | 
| 3171 | #define SHF_IA_64_NORECOV        0x20000000        /* spec insns w/o recovery */ | 
| 3172 |  | 
| 3173 | /* Processor specific values for the Dyn d_tag field.  */ | 
| 3174 | #define DT_IA_64_PLT_RESERVE        (DT_LOPROC + 0) | 
| 3175 | #define DT_IA_64_NUM                1 | 
| 3176 |  | 
| 3177 | /* IA-64 relocations.  */ | 
| 3178 | #define R_IA64_NONE                0x00        /* none */ | 
| 3179 | #define R_IA64_IMM14                0x21        /* symbol + addend, add imm14 */ | 
| 3180 | #define R_IA64_IMM22                0x22        /* symbol + addend, add imm22 */ | 
| 3181 | #define R_IA64_IMM64                0x23        /* symbol + addend, mov imm64 */ | 
| 3182 | #define R_IA64_DIR32MSB                0x24        /* symbol + addend, data4 MSB */ | 
| 3183 | #define R_IA64_DIR32LSB                0x25        /* symbol + addend, data4 LSB */ | 
| 3184 | #define R_IA64_DIR64MSB                0x26        /* symbol + addend, data8 MSB */ | 
| 3185 | #define R_IA64_DIR64LSB                0x27        /* symbol + addend, data8 LSB */ | 
| 3186 | #define R_IA64_GPREL22                0x2a        /* @gprel(sym + add), add imm22 */ | 
| 3187 | #define R_IA64_GPREL64I                0x2b        /* @gprel(sym + add), mov imm64 */ | 
| 3188 | #define R_IA64_GPREL32MSB        0x2c        /* @gprel(sym + add), data4 MSB */ | 
| 3189 | #define R_IA64_GPREL32LSB        0x2d        /* @gprel(sym + add), data4 LSB */ | 
| 3190 | #define R_IA64_GPREL64MSB        0x2e        /* @gprel(sym + add), data8 MSB */ | 
| 3191 | #define R_IA64_GPREL64LSB        0x2f        /* @gprel(sym + add), data8 LSB */ | 
| 3192 | #define R_IA64_LTOFF22                0x32        /* @ltoff(sym + add), add imm22 */ | 
| 3193 | #define R_IA64_LTOFF64I                0x33        /* @ltoff(sym + add), mov imm64 */ | 
| 3194 | #define R_IA64_PLTOFF22                0x3a        /* @pltoff(sym + add), add imm22 */ | 
| 3195 | #define R_IA64_PLTOFF64I        0x3b        /* @pltoff(sym + add), mov imm64 */ | 
| 3196 | #define R_IA64_PLTOFF64MSB        0x3e        /* @pltoff(sym + add), data8 MSB */ | 
| 3197 | #define R_IA64_PLTOFF64LSB        0x3f        /* @pltoff(sym + add), data8 LSB */ | 
| 3198 | #define R_IA64_FPTR64I                0x43        /* @fptr(sym + add), mov imm64 */ | 
| 3199 | #define R_IA64_FPTR32MSB        0x44        /* @fptr(sym + add), data4 MSB */ | 
| 3200 | #define R_IA64_FPTR32LSB        0x45        /* @fptr(sym + add), data4 LSB */ | 
| 3201 | #define R_IA64_FPTR64MSB        0x46        /* @fptr(sym + add), data8 MSB */ | 
| 3202 | #define R_IA64_FPTR64LSB        0x47        /* @fptr(sym + add), data8 LSB */ | 
| 3203 | #define R_IA64_PCREL60B                0x48        /* @pcrel(sym + add), brl */ | 
| 3204 | #define R_IA64_PCREL21B                0x49        /* @pcrel(sym + add), ptb, call */ | 
| 3205 | #define R_IA64_PCREL21M                0x4a        /* @pcrel(sym + add), chk.s */ | 
| 3206 | #define R_IA64_PCREL21F                0x4b        /* @pcrel(sym + add), fchkf */ | 
| 3207 | #define R_IA64_PCREL32MSB        0x4c        /* @pcrel(sym + add), data4 MSB */ | 
| 3208 | #define R_IA64_PCREL32LSB        0x4d        /* @pcrel(sym + add), data4 LSB */ | 
| 3209 | #define R_IA64_PCREL64MSB        0x4e        /* @pcrel(sym + add), data8 MSB */ | 
| 3210 | #define R_IA64_PCREL64LSB        0x4f        /* @pcrel(sym + add), data8 LSB */ | 
| 3211 | #define R_IA64_LTOFF_FPTR22        0x52        /* @ltoff(@fptr(s+a)), imm22 */ | 
| 3212 | #define R_IA64_LTOFF_FPTR64I        0x53        /* @ltoff(@fptr(s+a)), imm64 */ | 
| 3213 | #define R_IA64_LTOFF_FPTR32MSB        0x54        /* @ltoff(@fptr(s+a)), data4 MSB */ | 
| 3214 | #define R_IA64_LTOFF_FPTR32LSB        0x55        /* @ltoff(@fptr(s+a)), data4 LSB */ | 
| 3215 | #define R_IA64_LTOFF_FPTR64MSB        0x56        /* @ltoff(@fptr(s+a)), data8 MSB */ | 
| 3216 | #define R_IA64_LTOFF_FPTR64LSB        0x57        /* @ltoff(@fptr(s+a)), data8 LSB */ | 
| 3217 | #define R_IA64_SEGREL32MSB        0x5c        /* @segrel(sym + add), data4 MSB */ | 
| 3218 | #define R_IA64_SEGREL32LSB        0x5d        /* @segrel(sym + add), data4 LSB */ | 
| 3219 | #define R_IA64_SEGREL64MSB        0x5e        /* @segrel(sym + add), data8 MSB */ | 
| 3220 | #define R_IA64_SEGREL64LSB        0x5f        /* @segrel(sym + add), data8 LSB */ | 
| 3221 | #define R_IA64_SECREL32MSB        0x64        /* @secrel(sym + add), data4 MSB */ | 
| 3222 | #define R_IA64_SECREL32LSB        0x65        /* @secrel(sym + add), data4 LSB */ | 
| 3223 | #define R_IA64_SECREL64MSB        0x66        /* @secrel(sym + add), data8 MSB */ | 
| 3224 | #define R_IA64_SECREL64LSB        0x67        /* @secrel(sym + add), data8 LSB */ | 
| 3225 | #define R_IA64_REL32MSB                0x6c        /* data 4 + REL */ | 
| 3226 | #define R_IA64_REL32LSB                0x6d        /* data 4 + REL */ | 
| 3227 | #define R_IA64_REL64MSB                0x6e        /* data 8 + REL */ | 
| 3228 | #define R_IA64_REL64LSB                0x6f        /* data 8 + REL */ | 
| 3229 | #define R_IA64_LTV32MSB                0x74        /* symbol + addend, data4 MSB */ | 
| 3230 | #define R_IA64_LTV32LSB                0x75        /* symbol + addend, data4 LSB */ | 
| 3231 | #define R_IA64_LTV64MSB                0x76        /* symbol + addend, data8 MSB */ | 
| 3232 | #define R_IA64_LTV64LSB                0x77        /* symbol + addend, data8 LSB */ | 
| 3233 | #define R_IA64_PCREL21BI        0x79        /* @pcrel(sym + add), 21bit inst */ | 
| 3234 | #define R_IA64_PCREL22                0x7a        /* @pcrel(sym + add), 22bit inst */ | 
| 3235 | #define R_IA64_PCREL64I                0x7b        /* @pcrel(sym + add), 64bit inst */ | 
| 3236 | #define R_IA64_IPLTMSB                0x80        /* dynamic reloc, imported PLT, MSB */ | 
| 3237 | #define R_IA64_IPLTLSB                0x81        /* dynamic reloc, imported PLT, LSB */ | 
| 3238 | #define R_IA64_COPY                0x84        /* copy relocation */ | 
| 3239 | #define R_IA64_SUB                0x85        /* Addend and symbol difference */ | 
| 3240 | #define R_IA64_LTOFF22X                0x86        /* LTOFF22, relaxable.  */ | 
| 3241 | #define R_IA64_LDXMOV                0x87        /* Use of LTOFF22X.  */ | 
| 3242 | #define R_IA64_TPREL14                0x91        /* @tprel(sym + add), imm14 */ | 
| 3243 | #define R_IA64_TPREL22                0x92        /* @tprel(sym + add), imm22 */ | 
| 3244 | #define R_IA64_TPREL64I                0x93        /* @tprel(sym + add), imm64 */ | 
| 3245 | #define R_IA64_TPREL64MSB        0x96        /* @tprel(sym + add), data8 MSB */ | 
| 3246 | #define R_IA64_TPREL64LSB        0x97        /* @tprel(sym + add), data8 LSB */ | 
| 3247 | #define R_IA64_LTOFF_TPREL22        0x9a        /* @ltoff(@tprel(s+a)), imm2 */ | 
| 3248 | #define R_IA64_DTPMOD64MSB        0xa6        /* @dtpmod(sym + add), data8 MSB */ | 
| 3249 | #define R_IA64_DTPMOD64LSB        0xa7        /* @dtpmod(sym + add), data8 LSB */ | 
| 3250 | #define R_IA64_LTOFF_DTPMOD22        0xaa        /* @ltoff(@dtpmod(sym + add)), imm22 */ | 
| 3251 | #define R_IA64_DTPREL14                0xb1        /* @dtprel(sym + add), imm14 */ | 
| 3252 | #define R_IA64_DTPREL22                0xb2        /* @dtprel(sym + add), imm22 */ | 
| 3253 | #define R_IA64_DTPREL64I        0xb3        /* @dtprel(sym + add), imm64 */ | 
| 3254 | #define R_IA64_DTPREL32MSB        0xb4        /* @dtprel(sym + add), data4 MSB */ | 
| 3255 | #define R_IA64_DTPREL32LSB        0xb5        /* @dtprel(sym + add), data4 LSB */ | 
| 3256 | #define R_IA64_DTPREL64MSB        0xb6        /* @dtprel(sym + add), data8 MSB */ | 
| 3257 | #define R_IA64_DTPREL64LSB        0xb7        /* @dtprel(sym + add), data8 LSB */ | 
| 3258 | #define R_IA64_LTOFF_DTPREL22        0xba        /* @ltoff(@dtprel(s+a)), imm22 */ | 
| 3259 |  | 
| 3260 | /* SH specific declarations */ | 
| 3261 |  | 
| 3262 | /* Processor specific flags for the ELF header e_flags field.  */ | 
| 3263 | #define EF_SH_MACH_MASK                0x1f | 
| 3264 | #define EF_SH_UNKNOWN                0x0 | 
| 3265 | #define EF_SH1                        0x1 | 
| 3266 | #define EF_SH2                        0x2 | 
| 3267 | #define EF_SH3                        0x3 | 
| 3268 | #define EF_SH_DSP                0x4 | 
| 3269 | #define EF_SH3_DSP                0x5 | 
| 3270 | #define EF_SH4AL_DSP                0x6 | 
| 3271 | #define EF_SH3E                        0x8 | 
| 3272 | #define EF_SH4                        0x9 | 
| 3273 | #define EF_SH2E                        0xb | 
| 3274 | #define EF_SH4A                        0xc | 
| 3275 | #define EF_SH2A                        0xd | 
| 3276 | #define EF_SH4_NOFPU                0x10 | 
| 3277 | #define EF_SH4A_NOFPU                0x11 | 
| 3278 | #define EF_SH4_NOMMU_NOFPU        0x12 | 
| 3279 | #define EF_SH2A_NOFPU                0x13 | 
| 3280 | #define EF_SH3_NOMMU                0x14 | 
| 3281 | #define EF_SH2A_SH4_NOFPU        0x15 | 
| 3282 | #define EF_SH2A_SH3_NOFPU        0x16 | 
| 3283 | #define EF_SH2A_SH4                0x17 | 
| 3284 | #define EF_SH2A_SH3E                0x18 | 
| 3285 |  | 
| 3286 | /* SH relocs.  */ | 
| 3287 | #define        R_SH_NONE                0 | 
| 3288 | #define        R_SH_DIR32                1 | 
| 3289 | #define        R_SH_REL32                2 | 
| 3290 | #define        R_SH_DIR8WPN                3 | 
| 3291 | #define        R_SH_IND12W                4 | 
| 3292 | #define        R_SH_DIR8WPL                5 | 
| 3293 | #define        R_SH_DIR8WPZ                6 | 
| 3294 | #define        R_SH_DIR8BP                7 | 
| 3295 | #define        R_SH_DIR8W                8 | 
| 3296 | #define        R_SH_DIR8L                9 | 
| 3297 | #define        R_SH_SWITCH16                25 | 
| 3298 | #define        R_SH_SWITCH32                26 | 
| 3299 | #define        R_SH_USES                27 | 
| 3300 | #define        R_SH_COUNT                28 | 
| 3301 | #define        R_SH_ALIGN                29 | 
| 3302 | #define        R_SH_CODE                30 | 
| 3303 | #define        R_SH_DATA                31 | 
| 3304 | #define        R_SH_LABEL                32 | 
| 3305 | #define        R_SH_SWITCH8                33 | 
| 3306 | #define        R_SH_GNU_VTINHERIT        34 | 
| 3307 | #define        R_SH_GNU_VTENTRY        35 | 
| 3308 | #define        R_SH_TLS_GD_32                144 | 
| 3309 | #define        R_SH_TLS_LD_32                145 | 
| 3310 | #define        R_SH_TLS_LDO_32                146 | 
| 3311 | #define        R_SH_TLS_IE_32                147 | 
| 3312 | #define        R_SH_TLS_LE_32                148 | 
| 3313 | #define        R_SH_TLS_DTPMOD32        149 | 
| 3314 | #define        R_SH_TLS_DTPOFF32        150 | 
| 3315 | #define        R_SH_TLS_TPOFF32        151 | 
| 3316 | #define        R_SH_GOT32                160 | 
| 3317 | #define        R_SH_PLT32                161 | 
| 3318 | #define        R_SH_COPY                162 | 
| 3319 | #define        R_SH_GLOB_DAT                163 | 
| 3320 | #define        R_SH_JMP_SLOT                164 | 
| 3321 | #define        R_SH_RELATIVE                165 | 
| 3322 | #define        R_SH_GOTOFF                166 | 
| 3323 | #define        R_SH_GOTPC                167 | 
| 3324 | /* Keep this the last entry.  */ | 
| 3325 | #define        R_SH_NUM                256 | 
| 3326 |  | 
| 3327 | /* S/390 specific definitions.  */ | 
| 3328 |  | 
| 3329 | /* Valid values for the e_flags field.  */ | 
| 3330 |  | 
| 3331 | #define EF_S390_HIGH_GPRS    0x00000001  /* High GPRs kernel facility needed.  */ | 
| 3332 |  | 
| 3333 | /* Additional s390 relocs */ | 
| 3334 |  | 
| 3335 | #define R_390_NONE                0        /* No reloc.  */ | 
| 3336 | #define R_390_8                        1        /* Direct 8 bit.  */ | 
| 3337 | #define R_390_12                2        /* Direct 12 bit.  */ | 
| 3338 | #define R_390_16                3        /* Direct 16 bit.  */ | 
| 3339 | #define R_390_32                4        /* Direct 32 bit.  */ | 
| 3340 | #define R_390_PC32                5        /* PC relative 32 bit.        */ | 
| 3341 | #define R_390_GOT12                6        /* 12 bit GOT offset.  */ | 
| 3342 | #define R_390_GOT32                7        /* 32 bit GOT offset.  */ | 
| 3343 | #define R_390_PLT32                8        /* 32 bit PC relative PLT address.  */ | 
| 3344 | #define R_390_COPY                9        /* Copy symbol at runtime.  */ | 
| 3345 | #define R_390_GLOB_DAT                10        /* Create GOT entry.  */ | 
| 3346 | #define R_390_JMP_SLOT                11        /* Create PLT entry.  */ | 
| 3347 | #define R_390_RELATIVE                12        /* Adjust by program base.  */ | 
| 3348 | #define R_390_GOTOFF32                13        /* 32 bit offset to GOT.         */ | 
| 3349 | #define R_390_GOTPC                14        /* 32 bit PC relative offset to GOT.  */ | 
| 3350 | #define R_390_GOT16                15        /* 16 bit GOT offset.  */ | 
| 3351 | #define R_390_PC16                16        /* PC relative 16 bit.        */ | 
| 3352 | #define R_390_PC16DBL                17        /* PC relative 16 bit shifted by 1.  */ | 
| 3353 | #define R_390_PLT16DBL                18        /* 16 bit PC rel. PLT shifted by 1.  */ | 
| 3354 | #define R_390_PC32DBL                19        /* PC relative 32 bit shifted by 1.  */ | 
| 3355 | #define R_390_PLT32DBL                20        /* 32 bit PC rel. PLT shifted by 1.  */ | 
| 3356 | #define R_390_GOTPCDBL                21        /* 32 bit PC rel. GOT shifted by 1.  */ | 
| 3357 | #define R_390_64                22        /* Direct 64 bit.  */ | 
| 3358 | #define R_390_PC64                23        /* PC relative 64 bit.        */ | 
| 3359 | #define R_390_GOT64                24        /* 64 bit GOT offset.  */ | 
| 3360 | #define R_390_PLT64                25        /* 64 bit PC relative PLT address.  */ | 
| 3361 | #define R_390_GOTENT                26        /* 32 bit PC rel. to GOT entry >> 1. */ | 
| 3362 | #define R_390_GOTOFF16                27        /* 16 bit offset to GOT. */ | 
| 3363 | #define R_390_GOTOFF64                28        /* 64 bit offset to GOT. */ | 
| 3364 | #define R_390_GOTPLT12                29        /* 12 bit offset to jump slot.        */ | 
| 3365 | #define R_390_GOTPLT16                30        /* 16 bit offset to jump slot.        */ | 
| 3366 | #define R_390_GOTPLT32                31        /* 32 bit offset to jump slot.        */ | 
| 3367 | #define R_390_GOTPLT64                32        /* 64 bit offset to jump slot.        */ | 
| 3368 | #define R_390_GOTPLTENT                33        /* 32 bit rel. offset to jump slot.  */ | 
| 3369 | #define R_390_PLTOFF16                34        /* 16 bit offset from GOT to PLT. */ | 
| 3370 | #define R_390_PLTOFF32                35        /* 32 bit offset from GOT to PLT. */ | 
| 3371 | #define R_390_PLTOFF64                36        /* 16 bit offset from GOT to PLT. */ | 
| 3372 | #define R_390_TLS_LOAD                37        /* Tag for load insn in TLS code.  */ | 
| 3373 | #define R_390_TLS_GDCALL        38        /* Tag for function call in general | 
| 3374 |                                            dynamic TLS code. */ | 
| 3375 | #define R_390_TLS_LDCALL        39        /* Tag for function call in local | 
| 3376 |                                            dynamic TLS code. */ | 
| 3377 | #define R_390_TLS_GD32                40        /* Direct 32 bit for general dynamic | 
| 3378 |                                            thread local data.  */ | 
| 3379 | #define R_390_TLS_GD64                41        /* Direct 64 bit for general dynamic | 
| 3380 |                                           thread local data.  */ | 
| 3381 | #define R_390_TLS_GOTIE12        42        /* 12 bit GOT offset for static TLS | 
| 3382 |                                            block offset.  */ | 
| 3383 | #define R_390_TLS_GOTIE32        43        /* 32 bit GOT offset for static TLS | 
| 3384 |                                            block offset.  */ | 
| 3385 | #define R_390_TLS_GOTIE64        44        /* 64 bit GOT offset for static TLS | 
| 3386 |                                            block offset. */ | 
| 3387 | #define R_390_TLS_LDM32                45        /* Direct 32 bit for local dynamic | 
| 3388 |                                            thread local data in LE code.  */ | 
| 3389 | #define R_390_TLS_LDM64                46        /* Direct 64 bit for local dynamic | 
| 3390 |                                            thread local data in LE code.  */ | 
| 3391 | #define R_390_TLS_IE32                47        /* 32 bit address of GOT entry for | 
| 3392 |                                            negated static TLS block offset.  */ | 
| 3393 | #define R_390_TLS_IE64                48        /* 64 bit address of GOT entry for | 
| 3394 |                                            negated static TLS block offset.  */ | 
| 3395 | #define R_390_TLS_IEENT                49        /* 32 bit rel. offset to GOT entry for | 
| 3396 |                                            negated static TLS block offset.  */ | 
| 3397 | #define R_390_TLS_LE32                50        /* 32 bit negated offset relative to | 
| 3398 |                                            static TLS block.  */ | 
| 3399 | #define R_390_TLS_LE64                51        /* 64 bit negated offset relative to | 
| 3400 |                                            static TLS block.  */ | 
| 3401 | #define R_390_TLS_LDO32                52        /* 32 bit offset relative to TLS | 
| 3402 |                                            block.  */ | 
| 3403 | #define R_390_TLS_LDO64                53        /* 64 bit offset relative to TLS | 
| 3404 |                                            block.  */ | 
| 3405 | #define R_390_TLS_DTPMOD        54        /* ID of module containing symbol.  */ | 
| 3406 | #define R_390_TLS_DTPOFF        55        /* Offset in TLS block.         */ | 
| 3407 | #define R_390_TLS_TPOFF                56        /* Negated offset in static TLS | 
| 3408 |                                            block.  */ | 
| 3409 | #define R_390_20                57        /* Direct 20 bit.  */ | 
| 3410 | #define R_390_GOT20                58        /* 20 bit GOT offset.  */ | 
| 3411 | #define R_390_GOTPLT20                59        /* 20 bit offset to jump slot.  */ | 
| 3412 | #define R_390_TLS_GOTIE20        60        /* 20 bit GOT offset for static TLS | 
| 3413 |                                            block offset.  */ | 
| 3414 | #define R_390_IRELATIVE         61      /* STT_GNU_IFUNC relocation.  */ | 
| 3415 | /* Keep this the last entry.  */ | 
| 3416 | #define R_390_NUM                62 | 
| 3417 |  | 
| 3418 |  | 
| 3419 | /* CRIS relocations.  */ | 
| 3420 | #define R_CRIS_NONE                0 | 
| 3421 | #define R_CRIS_8                1 | 
| 3422 | #define R_CRIS_16                2 | 
| 3423 | #define R_CRIS_32                3 | 
| 3424 | #define R_CRIS_8_PCREL                4 | 
| 3425 | #define R_CRIS_16_PCREL                5 | 
| 3426 | #define R_CRIS_32_PCREL                6 | 
| 3427 | #define R_CRIS_GNU_VTINHERIT        7 | 
| 3428 | #define R_CRIS_GNU_VTENTRY        8 | 
| 3429 | #define R_CRIS_COPY                9 | 
| 3430 | #define R_CRIS_GLOB_DAT                10 | 
| 3431 | #define R_CRIS_JUMP_SLOT        11 | 
| 3432 | #define R_CRIS_RELATIVE                12 | 
| 3433 | #define R_CRIS_16_GOT                13 | 
| 3434 | #define R_CRIS_32_GOT                14 | 
| 3435 | #define R_CRIS_16_GOTPLT        15 | 
| 3436 | #define R_CRIS_32_GOTPLT        16 | 
| 3437 | #define R_CRIS_32_GOTREL        17 | 
| 3438 | #define R_CRIS_32_PLT_GOTREL        18 | 
| 3439 | #define R_CRIS_32_PLT_PCREL        19 | 
| 3440 |  | 
| 3441 | #define R_CRIS_NUM                20 | 
| 3442 |  | 
| 3443 |  | 
| 3444 | /* AMD x86-64 relocations.  */ | 
| 3445 | #define R_X86_64_NONE                0        /* No reloc */ | 
| 3446 | #define R_X86_64_64                1        /* Direct 64 bit  */ | 
| 3447 | #define R_X86_64_PC32                2        /* PC relative 32 bit signed */ | 
| 3448 | #define R_X86_64_GOT32                3        /* 32 bit GOT entry */ | 
| 3449 | #define R_X86_64_PLT32                4        /* 32 bit PLT address */ | 
| 3450 | #define R_X86_64_COPY                5        /* Copy symbol at runtime */ | 
| 3451 | #define R_X86_64_GLOB_DAT        6        /* Create GOT entry */ | 
| 3452 | #define R_X86_64_JUMP_SLOT        7        /* Create PLT entry */ | 
| 3453 | #define R_X86_64_RELATIVE        8        /* Adjust by program base */ | 
| 3454 | #define R_X86_64_GOTPCREL        9        /* 32 bit signed PC relative | 
| 3455 |                                            offset to GOT */ | 
| 3456 | #define R_X86_64_32                10        /* Direct 32 bit zero extended */ | 
| 3457 | #define R_X86_64_32S                11        /* Direct 32 bit sign extended */ | 
| 3458 | #define R_X86_64_16                12        /* Direct 16 bit zero extended */ | 
| 3459 | #define R_X86_64_PC16                13        /* 16 bit sign extended pc relative */ | 
| 3460 | #define R_X86_64_8                14        /* Direct 8 bit sign extended  */ | 
| 3461 | #define R_X86_64_PC8                15        /* 8 bit sign extended pc relative */ | 
| 3462 | #define R_X86_64_DTPMOD64        16        /* ID of module containing symbol */ | 
| 3463 | #define R_X86_64_DTPOFF64        17        /* Offset in module's TLS block */ | 
| 3464 | #define R_X86_64_TPOFF64        18        /* Offset in initial TLS block */ | 
| 3465 | #define R_X86_64_TLSGD                19        /* 32 bit signed PC relative offset | 
| 3466 |                                            to two GOT entries for GD symbol */ | 
| 3467 | #define R_X86_64_TLSLD                20        /* 32 bit signed PC relative offset | 
| 3468 |                                            to two GOT entries for LD symbol */ | 
| 3469 | #define R_X86_64_DTPOFF32        21        /* Offset in TLS block */ | 
| 3470 | #define R_X86_64_GOTTPOFF        22        /* 32 bit signed PC relative offset | 
| 3471 |                                            to GOT entry for IE symbol */ | 
| 3472 | #define R_X86_64_TPOFF32        23        /* Offset in initial TLS block */ | 
| 3473 | #define R_X86_64_PC64                24        /* PC relative 64 bit */ | 
| 3474 | #define R_X86_64_GOTOFF64        25        /* 64 bit offset to GOT */ | 
| 3475 | #define R_X86_64_GOTPC32        26        /* 32 bit signed pc relative | 
| 3476 |                                            offset to GOT */ | 
| 3477 | #define R_X86_64_GOT64                27        /* 64-bit GOT entry offset */ | 
| 3478 | #define R_X86_64_GOTPCREL64        28        /* 64-bit PC relative offset | 
| 3479 |                                            to GOT entry */ | 
| 3480 | #define R_X86_64_GOTPC64        29        /* 64-bit PC relative offset to GOT */ | 
| 3481 | #define R_X86_64_GOTPLT64        30         /* like GOT64, says PLT entry needed */ | 
| 3482 | #define R_X86_64_PLTOFF64        31        /* 64-bit GOT relative offset | 
| 3483 |                                            to PLT entry */ | 
| 3484 | #define R_X86_64_SIZE32                32        /* Size of symbol plus 32-bit addend */ | 
| 3485 | #define R_X86_64_SIZE64                33        /* Size of symbol plus 64-bit addend */ | 
| 3486 | #define R_X86_64_GOTPC32_TLSDESC 34        /* GOT offset for TLS descriptor.  */ | 
| 3487 | #define R_X86_64_TLSDESC_CALL   35        /* Marker for call through TLS | 
| 3488 |                                            descriptor.  */ | 
| 3489 | #define R_X86_64_TLSDESC        36        /* TLS descriptor.  */ | 
| 3490 | #define R_X86_64_IRELATIVE        37        /* Adjust indirectly by program base */ | 
| 3491 | #define R_X86_64_RELATIVE64        38        /* 64-bit adjust by program base */ | 
| 3492 |                                         /* 39 Reserved was R_X86_64_PC32_BND */ | 
| 3493 |                                         /* 40 Reserved was R_X86_64_PLT32_BND */ | 
| 3494 | #define R_X86_64_GOTPCRELX        41        /* Load from 32 bit signed pc relative | 
| 3495 |                                            offset to GOT entry without REX | 
| 3496 |                                            prefix, relaxable.  */ | 
| 3497 | #define R_X86_64_REX_GOTPCRELX        42        /* Load from 32 bit signed pc relative | 
| 3498 |                                            offset to GOT entry with REX prefix, | 
| 3499 |                                            relaxable.  */ | 
| 3500 | #define R_X86_64_NUM                43 | 
| 3501 |  | 
| 3502 | /* x86-64 sh_type values.  */ | 
| 3503 | #define SHT_X86_64_UNWIND        0x70000001 /* Unwind information.  */ | 
| 3504 |  | 
| 3505 |  | 
| 3506 | /* AM33 relocations.  */ | 
| 3507 | #define R_MN10300_NONE                0        /* No reloc.  */ | 
| 3508 | #define R_MN10300_32                1        /* Direct 32 bit.  */ | 
| 3509 | #define R_MN10300_16                2        /* Direct 16 bit.  */ | 
| 3510 | #define R_MN10300_8                3        /* Direct 8 bit.  */ | 
| 3511 | #define R_MN10300_PCREL32        4        /* PC-relative 32-bit.  */ | 
| 3512 | #define R_MN10300_PCREL16        5        /* PC-relative 16-bit signed.  */ | 
| 3513 | #define R_MN10300_PCREL8        6        /* PC-relative 8-bit signed.  */ | 
| 3514 | #define R_MN10300_GNU_VTINHERIT        7        /* Ancient C++ vtable garbage... */ | 
| 3515 | #define R_MN10300_GNU_VTENTRY        8        /* ... collection annotation.  */ | 
| 3516 | #define R_MN10300_24                9        /* Direct 24 bit.  */ | 
| 3517 | #define R_MN10300_GOTPC32        10        /* 32-bit PCrel offset to GOT.  */ | 
| 3518 | #define R_MN10300_GOTPC16        11        /* 16-bit PCrel offset to GOT.  */ | 
| 3519 | #define R_MN10300_GOTOFF32        12        /* 32-bit offset from GOT.  */ | 
| 3520 | #define R_MN10300_GOTOFF24        13        /* 24-bit offset from GOT.  */ | 
| 3521 | #define R_MN10300_GOTOFF16        14        /* 16-bit offset from GOT.  */ | 
| 3522 | #define R_MN10300_PLT32                15        /* 32-bit PCrel to PLT entry.  */ | 
| 3523 | #define R_MN10300_PLT16                16        /* 16-bit PCrel to PLT entry.  */ | 
| 3524 | #define R_MN10300_GOT32                17        /* 32-bit offset to GOT entry.  */ | 
| 3525 | #define R_MN10300_GOT24                18        /* 24-bit offset to GOT entry.  */ | 
| 3526 | #define R_MN10300_GOT16                19        /* 16-bit offset to GOT entry.  */ | 
| 3527 | #define R_MN10300_COPY                20        /* Copy symbol at runtime.  */ | 
| 3528 | #define R_MN10300_GLOB_DAT        21        /* Create GOT entry.  */ | 
| 3529 | #define R_MN10300_JMP_SLOT        22        /* Create PLT entry.  */ | 
| 3530 | #define R_MN10300_RELATIVE        23        /* Adjust by program base.  */ | 
| 3531 | #define R_MN10300_TLS_GD        24        /* 32-bit offset for global dynamic.  */ | 
| 3532 | #define R_MN10300_TLS_LD        25        /* 32-bit offset for local dynamic.  */ | 
| 3533 | #define R_MN10300_TLS_LDO        26        /* Module-relative offset.  */ | 
| 3534 | #define R_MN10300_TLS_GOTIE        27        /* GOT offset for static TLS block | 
| 3535 |                                            offset.  */ | 
| 3536 | #define R_MN10300_TLS_IE        28        /* GOT address for static TLS block | 
| 3537 |                                            offset.  */ | 
| 3538 | #define R_MN10300_TLS_LE        29        /* Offset relative to static TLS | 
| 3539 |                                            block.  */ | 
| 3540 | #define R_MN10300_TLS_DTPMOD        30        /* ID of module containing symbol.  */ | 
| 3541 | #define R_MN10300_TLS_DTPOFF        31        /* Offset in module TLS block.  */ | 
| 3542 | #define R_MN10300_TLS_TPOFF        32        /* Offset in static TLS block.  */ | 
| 3543 | #define R_MN10300_SYM_DIFF        33        /* Adjustment for next reloc as needed | 
| 3544 |                                            by linker relaxation.  */ | 
| 3545 | #define R_MN10300_ALIGN                34        /* Alignment requirement for linker | 
| 3546 |                                            relaxation.  */ | 
| 3547 | #define R_MN10300_NUM                35 | 
| 3548 |  | 
| 3549 |  | 
| 3550 | /* M32R relocs.  */ | 
| 3551 | #define R_M32R_NONE                0        /* No reloc. */ | 
| 3552 | #define R_M32R_16                1        /* Direct 16 bit. */ | 
| 3553 | #define R_M32R_32                2        /* Direct 32 bit. */ | 
| 3554 | #define R_M32R_24                3        /* Direct 24 bit. */ | 
| 3555 | #define R_M32R_10_PCREL                4        /* PC relative 10 bit shifted. */ | 
| 3556 | #define R_M32R_18_PCREL                5        /* PC relative 18 bit shifted. */ | 
| 3557 | #define R_M32R_26_PCREL                6        /* PC relative 26 bit shifted. */ | 
| 3558 | #define R_M32R_HI16_ULO                7        /* High 16 bit with unsigned low. */ | 
| 3559 | #define R_M32R_HI16_SLO                8        /* High 16 bit with signed low. */ | 
| 3560 | #define R_M32R_LO16                9        /* Low 16 bit. */ | 
| 3561 | #define R_M32R_SDA16                10        /* 16 bit offset in SDA. */ | 
| 3562 | #define R_M32R_GNU_VTINHERIT        11 | 
| 3563 | #define R_M32R_GNU_VTENTRY        12 | 
| 3564 | /* M32R relocs use SHT_RELA.  */ | 
| 3565 | #define R_M32R_16_RELA                33        /* Direct 16 bit. */ | 
| 3566 | #define R_M32R_32_RELA                34        /* Direct 32 bit. */ | 
| 3567 | #define R_M32R_24_RELA                35        /* Direct 24 bit. */ | 
| 3568 | #define R_M32R_10_PCREL_RELA        36        /* PC relative 10 bit shifted. */ | 
| 3569 | #define R_M32R_18_PCREL_RELA        37        /* PC relative 18 bit shifted. */ | 
| 3570 | #define R_M32R_26_PCREL_RELA        38        /* PC relative 26 bit shifted. */ | 
| 3571 | #define R_M32R_HI16_ULO_RELA        39        /* High 16 bit with unsigned low */ | 
| 3572 | #define R_M32R_HI16_SLO_RELA        40        /* High 16 bit with signed low */ | 
| 3573 | #define R_M32R_LO16_RELA        41        /* Low 16 bit */ | 
| 3574 | #define R_M32R_SDA16_RELA        42        /* 16 bit offset in SDA */ | 
| 3575 | #define R_M32R_RELA_GNU_VTINHERIT        43 | 
| 3576 | #define R_M32R_RELA_GNU_VTENTRY        44 | 
| 3577 | #define R_M32R_REL32                45        /* PC relative 32 bit.  */ | 
| 3578 |  | 
| 3579 | #define R_M32R_GOT24                48        /* 24 bit GOT entry */ | 
| 3580 | #define R_M32R_26_PLTREL        49        /* 26 bit PC relative to PLT shifted */ | 
| 3581 | #define R_M32R_COPY                50        /* Copy symbol at runtime */ | 
| 3582 | #define R_M32R_GLOB_DAT                51        /* Create GOT entry */ | 
| 3583 | #define R_M32R_JMP_SLOT                52        /* Create PLT entry */ | 
| 3584 | #define R_M32R_RELATIVE                53        /* Adjust by program base */ | 
| 3585 | #define R_M32R_GOTOFF                54        /* 24 bit offset to GOT */ | 
| 3586 | #define R_M32R_GOTPC24                55        /* 24 bit PC relative offset to GOT */ | 
| 3587 | #define R_M32R_GOT16_HI_ULO        56        /* High 16 bit GOT entry with unsigned | 
| 3588 |                                            low */ | 
| 3589 | #define R_M32R_GOT16_HI_SLO        57        /* High 16 bit GOT entry with signed | 
| 3590 |                                            low */ | 
| 3591 | #define R_M32R_GOT16_LO                58        /* Low 16 bit GOT entry */ | 
| 3592 | #define R_M32R_GOTPC_HI_ULO        59        /* High 16 bit PC relative offset to | 
| 3593 |                                            GOT with unsigned low */ | 
| 3594 | #define R_M32R_GOTPC_HI_SLO        60        /* High 16 bit PC relative offset to | 
| 3595 |                                            GOT with signed low */ | 
| 3596 | #define R_M32R_GOTPC_LO                61        /* Low 16 bit PC relative offset to | 
| 3597 |                                            GOT */ | 
| 3598 | #define R_M32R_GOTOFF_HI_ULO        62        /* High 16 bit offset to GOT | 
| 3599 |                                            with unsigned low */ | 
| 3600 | #define R_M32R_GOTOFF_HI_SLO        63        /* High 16 bit offset to GOT | 
| 3601 |                                            with signed low */ | 
| 3602 | #define R_M32R_GOTOFF_LO        64        /* Low 16 bit offset to GOT */ | 
| 3603 | #define R_M32R_NUM                256        /* Keep this the last entry. */ | 
| 3604 |  | 
| 3605 | /* MicroBlaze relocations */ | 
| 3606 | #define R_MICROBLAZE_NONE                0        /* No reloc. */ | 
| 3607 | #define R_MICROBLAZE_32                 1        /* Direct 32 bit. */ | 
| 3608 | #define R_MICROBLAZE_32_PCREL                2        /* PC relative 32 bit. */ | 
| 3609 | #define R_MICROBLAZE_64_PCREL                3        /* PC relative 64 bit. */ | 
| 3610 | #define R_MICROBLAZE_32_PCREL_LO        4        /* Low 16 bits of PCREL32. */ | 
| 3611 | #define R_MICROBLAZE_64                 5        /* Direct 64 bit. */ | 
| 3612 | #define R_MICROBLAZE_32_LO                6        /* Low 16 bit. */ | 
| 3613 | #define R_MICROBLAZE_SRO32                7        /* Read-only small data area. */ | 
| 3614 | #define R_MICROBLAZE_SRW32                8        /* Read-write small data area. */ | 
| 3615 | #define R_MICROBLAZE_64_NONE                9        /* No reloc. */ | 
| 3616 | #define R_MICROBLAZE_32_SYM_OP_SYM        10        /* Symbol Op Symbol relocation. */ | 
| 3617 | #define R_MICROBLAZE_GNU_VTINHERIT        11        /* GNU C++ vtable hierarchy. */ | 
| 3618 | #define R_MICROBLAZE_GNU_VTENTRY        12        /* GNU C++ vtable member usage. */ | 
| 3619 | #define R_MICROBLAZE_GOTPC_64                13        /* PC-relative GOT offset.  */ | 
| 3620 | #define R_MICROBLAZE_GOT_64                14        /* GOT entry offset.  */ | 
| 3621 | #define R_MICROBLAZE_PLT_64                15        /* PLT offset (PC-relative).  */ | 
| 3622 | #define R_MICROBLAZE_REL                16        /* Adjust by program base.  */ | 
| 3623 | #define R_MICROBLAZE_JUMP_SLOT                17        /* Create PLT entry.  */ | 
| 3624 | #define R_MICROBLAZE_GLOB_DAT                18        /* Create GOT entry.  */ | 
| 3625 | #define R_MICROBLAZE_GOTOFF_64                19        /* 64 bit offset to GOT. */ | 
| 3626 | #define R_MICROBLAZE_GOTOFF_32                20        /* 32 bit offset to GOT. */ | 
| 3627 | #define R_MICROBLAZE_COPY                21        /* Runtime copy.  */ | 
| 3628 | #define R_MICROBLAZE_TLS                22        /* TLS Reloc. */ | 
| 3629 | #define R_MICROBLAZE_TLSGD                23        /* TLS General Dynamic. */ | 
| 3630 | #define R_MICROBLAZE_TLSLD                24        /* TLS Local Dynamic. */ | 
| 3631 | #define R_MICROBLAZE_TLSDTPMOD32        25        /* TLS Module ID. */ | 
| 3632 | #define R_MICROBLAZE_TLSDTPREL32        26        /* TLS Offset Within TLS Block. */ | 
| 3633 | #define R_MICROBLAZE_TLSDTPREL64        27        /* TLS Offset Within TLS Block. */ | 
| 3634 | #define R_MICROBLAZE_TLSGOTTPREL32        28        /* TLS Offset From Thread Pointer. */ | 
| 3635 | #define R_MICROBLAZE_TLSTPREL32         29        /* TLS Offset From Thread Pointer. */ | 
| 3636 |  | 
| 3637 | /* Legal values for d_tag (dynamic entry type).  */ | 
| 3638 | #define DT_NIOS2_GP             0x70000002 /* Address of _gp.  */ | 
| 3639 |  | 
| 3640 | /* Nios II relocations.  */ | 
| 3641 | #define R_NIOS2_NONE                0        /* No reloc.  */ | 
| 3642 | #define R_NIOS2_S16                1        /* Direct signed 16 bit.  */ | 
| 3643 | #define R_NIOS2_U16                2        /* Direct unsigned 16 bit.  */ | 
| 3644 | #define R_NIOS2_PCREL16                3        /* PC relative 16 bit.  */ | 
| 3645 | #define R_NIOS2_CALL26                4        /* Direct call.  */ | 
| 3646 | #define R_NIOS2_IMM5                5        /* 5 bit constant expression.  */ | 
| 3647 | #define R_NIOS2_CACHE_OPX        6        /* 5 bit expression, shift 22.  */ | 
| 3648 | #define R_NIOS2_IMM6                7        /* 6 bit constant expression.  */ | 
| 3649 | #define R_NIOS2_IMM8                8        /* 8 bit constant expression.  */ | 
| 3650 | #define R_NIOS2_HI16                9        /* High 16 bit.  */ | 
| 3651 | #define R_NIOS2_LO16                10        /* Low 16 bit.  */ | 
| 3652 | #define R_NIOS2_HIADJ16                11        /* High 16 bit, adjusted.  */ | 
| 3653 | #define R_NIOS2_BFD_RELOC_32        12        /* 32 bit symbol value + addend.  */ | 
| 3654 | #define R_NIOS2_BFD_RELOC_16        13        /* 16 bit symbol value + addend.  */ | 
| 3655 | #define R_NIOS2_BFD_RELOC_8        14        /* 8 bit symbol value + addend.  */ | 
| 3656 | #define R_NIOS2_GPREL                15        /* 16 bit GP pointer offset.  */ | 
| 3657 | #define R_NIOS2_GNU_VTINHERIT        16        /* GNU C++ vtable hierarchy.  */ | 
| 3658 | #define R_NIOS2_GNU_VTENTRY        17        /* GNU C++ vtable member usage.  */ | 
| 3659 | #define R_NIOS2_UJMP                18        /* Unconditional branch.  */ | 
| 3660 | #define R_NIOS2_CJMP                19        /* Conditional branch.  */ | 
| 3661 | #define R_NIOS2_CALLR                20        /* Indirect call through register.  */ | 
| 3662 | #define R_NIOS2_ALIGN                21        /* Alignment requirement for | 
| 3663 |                                            linker relaxation.  */ | 
| 3664 | #define R_NIOS2_GOT16                22        /* 16 bit GOT entry.  */ | 
| 3665 | #define R_NIOS2_CALL16                23        /* 16 bit GOT entry for function.  */ | 
| 3666 | #define R_NIOS2_GOTOFF_LO        24        /* %lo of offset to GOT pointer.  */ | 
| 3667 | #define R_NIOS2_GOTOFF_HA        25        /* %hiadj of offset to GOT pointer.  */ | 
| 3668 | #define R_NIOS2_PCREL_LO        26        /* %lo of PC relative offset.  */ | 
| 3669 | #define R_NIOS2_PCREL_HA        27        /* %hiadj of PC relative offset.  */ | 
| 3670 | #define R_NIOS2_TLS_GD16        28        /* 16 bit GOT offset for TLS GD.  */ | 
| 3671 | #define R_NIOS2_TLS_LDM16        29        /* 16 bit GOT offset for TLS LDM.  */ | 
| 3672 | #define R_NIOS2_TLS_LDO16        30        /* 16 bit module relative offset.  */ | 
| 3673 | #define R_NIOS2_TLS_IE16        31        /* 16 bit GOT offset for TLS IE.  */ | 
| 3674 | #define R_NIOS2_TLS_LE16        32        /* 16 bit LE TP-relative offset.  */ | 
| 3675 | #define R_NIOS2_TLS_DTPMOD        33        /* Module number.  */ | 
| 3676 | #define R_NIOS2_TLS_DTPREL        34        /* Module-relative offset.  */ | 
| 3677 | #define R_NIOS2_TLS_TPREL        35        /* TP-relative offset.  */ | 
| 3678 | #define R_NIOS2_COPY                36        /* Copy symbol at runtime.  */ | 
| 3679 | #define R_NIOS2_GLOB_DAT        37        /* Create GOT entry.  */ | 
| 3680 | #define R_NIOS2_JUMP_SLOT        38        /* Create PLT entry.  */ | 
| 3681 | #define R_NIOS2_RELATIVE        39        /* Adjust by program base.  */ | 
| 3682 | #define R_NIOS2_GOTOFF                40        /* 16 bit offset to GOT pointer.  */ | 
| 3683 | #define R_NIOS2_CALL26_NOAT        41        /* Direct call in .noat section.  */ | 
| 3684 | #define R_NIOS2_GOT_LO                42        /* %lo() of GOT entry.  */ | 
| 3685 | #define R_NIOS2_GOT_HA                43        /* %hiadj() of GOT entry.  */ | 
| 3686 | #define R_NIOS2_CALL_LO                44        /* %lo() of function GOT entry.  */ | 
| 3687 | #define R_NIOS2_CALL_HA                45        /* %hiadj() of function GOT entry.  */ | 
| 3688 |  | 
| 3689 | /* TILEPro relocations.  */ | 
| 3690 | #define R_TILEPRO_NONE                0        /* No reloc */ | 
| 3691 | #define R_TILEPRO_32                1        /* Direct 32 bit */ | 
| 3692 | #define R_TILEPRO_16                2        /* Direct 16 bit */ | 
| 3693 | #define R_TILEPRO_8                3        /* Direct 8 bit */ | 
| 3694 | #define R_TILEPRO_32_PCREL        4        /* PC relative 32 bit */ | 
| 3695 | #define R_TILEPRO_16_PCREL        5        /* PC relative 16 bit */ | 
| 3696 | #define R_TILEPRO_8_PCREL        6        /* PC relative 8 bit */ | 
| 3697 | #define R_TILEPRO_LO16                7        /* Low 16 bit */ | 
| 3698 | #define R_TILEPRO_HI16                8        /* High 16 bit */ | 
| 3699 | #define R_TILEPRO_HA16                9        /* High 16 bit, adjusted */ | 
| 3700 | #define R_TILEPRO_COPY                10        /* Copy relocation */ | 
| 3701 | #define R_TILEPRO_GLOB_DAT        11        /* Create GOT entry */ | 
| 3702 | #define R_TILEPRO_JMP_SLOT        12        /* Create PLT entry */ | 
| 3703 | #define R_TILEPRO_RELATIVE        13        /* Adjust by program base */ | 
| 3704 | #define R_TILEPRO_BROFF_X1        14        /* X1 pipe branch offset */ | 
| 3705 | #define R_TILEPRO_JOFFLONG_X1        15        /* X1 pipe jump offset */ | 
| 3706 | #define R_TILEPRO_JOFFLONG_X1_PLT 16        /* X1 pipe jump offset to PLT */ | 
| 3707 | #define R_TILEPRO_IMM8_X0        17        /* X0 pipe 8-bit */ | 
| 3708 | #define R_TILEPRO_IMM8_Y0        18        /* Y0 pipe 8-bit */ | 
| 3709 | #define R_TILEPRO_IMM8_X1        19        /* X1 pipe 8-bit */ | 
| 3710 | #define R_TILEPRO_IMM8_Y1        20        /* Y1 pipe 8-bit */ | 
| 3711 | #define R_TILEPRO_MT_IMM15_X1        21        /* X1 pipe mtspr */ | 
| 3712 | #define R_TILEPRO_MF_IMM15_X1        22        /* X1 pipe mfspr */ | 
| 3713 | #define R_TILEPRO_IMM16_X0        23        /* X0 pipe 16-bit */ | 
| 3714 | #define R_TILEPRO_IMM16_X1        24        /* X1 pipe 16-bit */ | 
| 3715 | #define R_TILEPRO_IMM16_X0_LO        25        /* X0 pipe low 16-bit */ | 
| 3716 | #define R_TILEPRO_IMM16_X1_LO        26        /* X1 pipe low 16-bit */ | 
| 3717 | #define R_TILEPRO_IMM16_X0_HI        27        /* X0 pipe high 16-bit */ | 
| 3718 | #define R_TILEPRO_IMM16_X1_HI        28        /* X1 pipe high 16-bit */ | 
| 3719 | #define R_TILEPRO_IMM16_X0_HA        29        /* X0 pipe high 16-bit, adjusted */ | 
| 3720 | #define R_TILEPRO_IMM16_X1_HA        30        /* X1 pipe high 16-bit, adjusted */ | 
| 3721 | #define R_TILEPRO_IMM16_X0_PCREL 31        /* X0 pipe PC relative 16 bit */ | 
| 3722 | #define R_TILEPRO_IMM16_X1_PCREL 32        /* X1 pipe PC relative 16 bit */ | 
| 3723 | #define R_TILEPRO_IMM16_X0_LO_PCREL 33        /* X0 pipe PC relative low 16 bit */ | 
| 3724 | #define R_TILEPRO_IMM16_X1_LO_PCREL 34        /* X1 pipe PC relative low 16 bit */ | 
| 3725 | #define R_TILEPRO_IMM16_X0_HI_PCREL 35        /* X0 pipe PC relative high 16 bit */ | 
| 3726 | #define R_TILEPRO_IMM16_X1_HI_PCREL 36        /* X1 pipe PC relative high 16 bit */ | 
| 3727 | #define R_TILEPRO_IMM16_X0_HA_PCREL 37        /* X0 pipe PC relative ha() 16 bit */ | 
| 3728 | #define R_TILEPRO_IMM16_X1_HA_PCREL 38        /* X1 pipe PC relative ha() 16 bit */ | 
| 3729 | #define R_TILEPRO_IMM16_X0_GOT        39        /* X0 pipe 16-bit GOT offset */ | 
| 3730 | #define R_TILEPRO_IMM16_X1_GOT        40        /* X1 pipe 16-bit GOT offset */ | 
| 3731 | #define R_TILEPRO_IMM16_X0_GOT_LO 41        /* X0 pipe low 16-bit GOT offset */ | 
| 3732 | #define R_TILEPRO_IMM16_X1_GOT_LO 42        /* X1 pipe low 16-bit GOT offset */ | 
| 3733 | #define R_TILEPRO_IMM16_X0_GOT_HI 43        /* X0 pipe high 16-bit GOT offset */ | 
| 3734 | #define R_TILEPRO_IMM16_X1_GOT_HI 44        /* X1 pipe high 16-bit GOT offset */ | 
| 3735 | #define R_TILEPRO_IMM16_X0_GOT_HA 45        /* X0 pipe ha() 16-bit GOT offset */ | 
| 3736 | #define R_TILEPRO_IMM16_X1_GOT_HA 46        /* X1 pipe ha() 16-bit GOT offset */ | 
| 3737 | #define R_TILEPRO_MMSTART_X0        47        /* X0 pipe mm "start" */ | 
| 3738 | #define R_TILEPRO_MMEND_X0        48        /* X0 pipe mm "end" */ | 
| 3739 | #define R_TILEPRO_MMSTART_X1        49        /* X1 pipe mm "start" */ | 
| 3740 | #define R_TILEPRO_MMEND_X1        50        /* X1 pipe mm "end" */ | 
| 3741 | #define R_TILEPRO_SHAMT_X0        51        /* X0 pipe shift amount */ | 
| 3742 | #define R_TILEPRO_SHAMT_X1        52        /* X1 pipe shift amount */ | 
| 3743 | #define R_TILEPRO_SHAMT_Y0        53        /* Y0 pipe shift amount */ | 
| 3744 | #define R_TILEPRO_SHAMT_Y1        54        /* Y1 pipe shift amount */ | 
| 3745 | #define R_TILEPRO_DEST_IMM8_X1        55        /* X1 pipe destination 8-bit */ | 
| 3746 | /* Relocs 56-59 are currently not defined.  */ | 
| 3747 | #define R_TILEPRO_TLS_GD_CALL        60        /* "jal" for TLS GD */ | 
| 3748 | #define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61        /* X0 pipe "addi" for TLS GD */ | 
| 3749 | #define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62        /* X1 pipe "addi" for TLS GD */ | 
| 3750 | #define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63        /* Y0 pipe "addi" for TLS GD */ | 
| 3751 | #define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64        /* Y1 pipe "addi" for TLS GD */ | 
| 3752 | #define R_TILEPRO_TLS_IE_LOAD        65        /* "lw_tls" for TLS IE */ | 
| 3753 | #define R_TILEPRO_IMM16_X0_TLS_GD 66        /* X0 pipe 16-bit TLS GD offset */ | 
| 3754 | #define R_TILEPRO_IMM16_X1_TLS_GD 67        /* X1 pipe 16-bit TLS GD offset */ | 
| 3755 | #define R_TILEPRO_IMM16_X0_TLS_GD_LO 68        /* X0 pipe low 16-bit TLS GD offset */ | 
| 3756 | #define R_TILEPRO_IMM16_X1_TLS_GD_LO 69        /* X1 pipe low 16-bit TLS GD offset */ | 
| 3757 | #define R_TILEPRO_IMM16_X0_TLS_GD_HI 70        /* X0 pipe high 16-bit TLS GD offset */ | 
| 3758 | #define R_TILEPRO_IMM16_X1_TLS_GD_HI 71        /* X1 pipe high 16-bit TLS GD offset */ | 
| 3759 | #define R_TILEPRO_IMM16_X0_TLS_GD_HA 72        /* X0 pipe ha() 16-bit TLS GD offset */ | 
| 3760 | #define R_TILEPRO_IMM16_X1_TLS_GD_HA 73        /* X1 pipe ha() 16-bit TLS GD offset */ | 
| 3761 | #define R_TILEPRO_IMM16_X0_TLS_IE 74        /* X0 pipe 16-bit TLS IE offset */ | 
| 3762 | #define R_TILEPRO_IMM16_X1_TLS_IE 75        /* X1 pipe 16-bit TLS IE offset */ | 
| 3763 | #define R_TILEPRO_IMM16_X0_TLS_IE_LO 76        /* X0 pipe low 16-bit TLS IE offset */ | 
| 3764 | #define R_TILEPRO_IMM16_X1_TLS_IE_LO 77        /* X1 pipe low 16-bit TLS IE offset */ | 
| 3765 | #define R_TILEPRO_IMM16_X0_TLS_IE_HI 78        /* X0 pipe high 16-bit TLS IE offset */ | 
| 3766 | #define R_TILEPRO_IMM16_X1_TLS_IE_HI 79        /* X1 pipe high 16-bit TLS IE offset */ | 
| 3767 | #define R_TILEPRO_IMM16_X0_TLS_IE_HA 80        /* X0 pipe ha() 16-bit TLS IE offset */ | 
| 3768 | #define R_TILEPRO_IMM16_X1_TLS_IE_HA 81        /* X1 pipe ha() 16-bit TLS IE offset */ | 
| 3769 | #define R_TILEPRO_TLS_DTPMOD32        82        /* ID of module containing symbol */ | 
| 3770 | #define R_TILEPRO_TLS_DTPOFF32        83        /* Offset in TLS block */ | 
| 3771 | #define R_TILEPRO_TLS_TPOFF32        84        /* Offset in static TLS block */ | 
| 3772 | #define R_TILEPRO_IMM16_X0_TLS_LE 85        /* X0 pipe 16-bit TLS LE offset */ | 
| 3773 | #define R_TILEPRO_IMM16_X1_TLS_LE 86        /* X1 pipe 16-bit TLS LE offset */ | 
| 3774 | #define R_TILEPRO_IMM16_X0_TLS_LE_LO 87        /* X0 pipe low 16-bit TLS LE offset */ | 
| 3775 | #define R_TILEPRO_IMM16_X1_TLS_LE_LO 88        /* X1 pipe low 16-bit TLS LE offset */ | 
| 3776 | #define R_TILEPRO_IMM16_X0_TLS_LE_HI 89        /* X0 pipe high 16-bit TLS LE offset */ | 
| 3777 | #define R_TILEPRO_IMM16_X1_TLS_LE_HI 90        /* X1 pipe high 16-bit TLS LE offset */ | 
| 3778 | #define R_TILEPRO_IMM16_X0_TLS_LE_HA 91        /* X0 pipe ha() 16-bit TLS LE offset */ | 
| 3779 | #define R_TILEPRO_IMM16_X1_TLS_LE_HA 92        /* X1 pipe ha() 16-bit TLS LE offset */ | 
| 3780 |  | 
| 3781 | #define R_TILEPRO_GNU_VTINHERIT        128        /* GNU C++ vtable hierarchy */ | 
| 3782 | #define R_TILEPRO_GNU_VTENTRY        129        /* GNU C++ vtable member usage */ | 
| 3783 |  | 
| 3784 | #define R_TILEPRO_NUM                130 | 
| 3785 |  | 
| 3786 |  | 
| 3787 | /* TILE-Gx relocations.  */ | 
| 3788 | #define R_TILEGX_NONE                0        /* No reloc */ | 
| 3789 | #define R_TILEGX_64                1        /* Direct 64 bit */ | 
| 3790 | #define R_TILEGX_32                2        /* Direct 32 bit */ | 
| 3791 | #define R_TILEGX_16                3        /* Direct 16 bit */ | 
| 3792 | #define R_TILEGX_8                4        /* Direct 8 bit */ | 
| 3793 | #define R_TILEGX_64_PCREL        5        /* PC relative 64 bit */ | 
| 3794 | #define R_TILEGX_32_PCREL        6        /* PC relative 32 bit */ | 
| 3795 | #define R_TILEGX_16_PCREL        7        /* PC relative 16 bit */ | 
| 3796 | #define R_TILEGX_8_PCREL        8        /* PC relative 8 bit */ | 
| 3797 | #define R_TILEGX_HW0                9        /* hword 0 16-bit */ | 
| 3798 | #define R_TILEGX_HW1                10        /* hword 1 16-bit */ | 
| 3799 | #define R_TILEGX_HW2                11        /* hword 2 16-bit */ | 
| 3800 | #define R_TILEGX_HW3                12        /* hword 3 16-bit */ | 
| 3801 | #define R_TILEGX_HW0_LAST        13        /* last hword 0 16-bit */ | 
| 3802 | #define R_TILEGX_HW1_LAST        14        /* last hword 1 16-bit */ | 
| 3803 | #define R_TILEGX_HW2_LAST        15        /* last hword 2 16-bit */ | 
| 3804 | #define R_TILEGX_COPY                16        /* Copy relocation */ | 
| 3805 | #define R_TILEGX_GLOB_DAT        17        /* Create GOT entry */ | 
| 3806 | #define R_TILEGX_JMP_SLOT        18        /* Create PLT entry */ | 
| 3807 | #define R_TILEGX_RELATIVE        19        /* Adjust by program base */ | 
| 3808 | #define R_TILEGX_BROFF_X1        20        /* X1 pipe branch offset */ | 
| 3809 | #define R_TILEGX_JUMPOFF_X1        21        /* X1 pipe jump offset */ | 
| 3810 | #define R_TILEGX_JUMPOFF_X1_PLT        22        /* X1 pipe jump offset to PLT */ | 
| 3811 | #define R_TILEGX_IMM8_X0        23        /* X0 pipe 8-bit */ | 
| 3812 | #define R_TILEGX_IMM8_Y0        24        /* Y0 pipe 8-bit */ | 
| 3813 | #define R_TILEGX_IMM8_X1        25        /* X1 pipe 8-bit */ | 
| 3814 | #define R_TILEGX_IMM8_Y1        26        /* Y1 pipe 8-bit */ | 
| 3815 | #define R_TILEGX_DEST_IMM8_X1        27        /* X1 pipe destination 8-bit */ | 
| 3816 | #define R_TILEGX_MT_IMM14_X1        28        /* X1 pipe mtspr */ | 
| 3817 | #define R_TILEGX_MF_IMM14_X1        29        /* X1 pipe mfspr */ | 
| 3818 | #define R_TILEGX_MMSTART_X0        30        /* X0 pipe mm "start" */ | 
| 3819 | #define R_TILEGX_MMEND_X0        31        /* X0 pipe mm "end" */ | 
| 3820 | #define R_TILEGX_SHAMT_X0        32        /* X0 pipe shift amount */ | 
| 3821 | #define R_TILEGX_SHAMT_X1        33        /* X1 pipe shift amount */ | 
| 3822 | #define R_TILEGX_SHAMT_Y0        34        /* Y0 pipe shift amount */ | 
| 3823 | #define R_TILEGX_SHAMT_Y1        35        /* Y1 pipe shift amount */ | 
| 3824 | #define R_TILEGX_IMM16_X0_HW0        36        /* X0 pipe hword 0 */ | 
| 3825 | #define R_TILEGX_IMM16_X1_HW0        37        /* X1 pipe hword 0 */ | 
| 3826 | #define R_TILEGX_IMM16_X0_HW1        38        /* X0 pipe hword 1 */ | 
| 3827 | #define R_TILEGX_IMM16_X1_HW1        39        /* X1 pipe hword 1 */ | 
| 3828 | #define R_TILEGX_IMM16_X0_HW2        40        /* X0 pipe hword 2 */ | 
| 3829 | #define R_TILEGX_IMM16_X1_HW2        41        /* X1 pipe hword 2 */ | 
| 3830 | #define R_TILEGX_IMM16_X0_HW3        42        /* X0 pipe hword 3 */ | 
| 3831 | #define R_TILEGX_IMM16_X1_HW3        43        /* X1 pipe hword 3 */ | 
| 3832 | #define R_TILEGX_IMM16_X0_HW0_LAST 44        /* X0 pipe last hword 0 */ | 
| 3833 | #define R_TILEGX_IMM16_X1_HW0_LAST 45        /* X1 pipe last hword 0 */ | 
| 3834 | #define R_TILEGX_IMM16_X0_HW1_LAST 46        /* X0 pipe last hword 1 */ | 
| 3835 | #define R_TILEGX_IMM16_X1_HW1_LAST 47        /* X1 pipe last hword 1 */ | 
| 3836 | #define R_TILEGX_IMM16_X0_HW2_LAST 48        /* X0 pipe last hword 2 */ | 
| 3837 | #define R_TILEGX_IMM16_X1_HW2_LAST 49        /* X1 pipe last hword 2 */ | 
| 3838 | #define R_TILEGX_IMM16_X0_HW0_PCREL 50        /* X0 pipe PC relative hword 0 */ | 
| 3839 | #define R_TILEGX_IMM16_X1_HW0_PCREL 51        /* X1 pipe PC relative hword 0 */ | 
| 3840 | #define R_TILEGX_IMM16_X0_HW1_PCREL 52        /* X0 pipe PC relative hword 1 */ | 
| 3841 | #define R_TILEGX_IMM16_X1_HW1_PCREL 53        /* X1 pipe PC relative hword 1 */ | 
| 3842 | #define R_TILEGX_IMM16_X0_HW2_PCREL 54        /* X0 pipe PC relative hword 2 */ | 
| 3843 | #define R_TILEGX_IMM16_X1_HW2_PCREL 55        /* X1 pipe PC relative hword 2 */ | 
| 3844 | #define R_TILEGX_IMM16_X0_HW3_PCREL 56        /* X0 pipe PC relative hword 3 */ | 
| 3845 | #define R_TILEGX_IMM16_X1_HW3_PCREL 57        /* X1 pipe PC relative hword 3 */ | 
| 3846 | #define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 /* X0 pipe PC-rel last hword 0 */ | 
| 3847 | #define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 /* X1 pipe PC-rel last hword 0 */ | 
| 3848 | #define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 /* X0 pipe PC-rel last hword 1 */ | 
| 3849 | #define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 /* X1 pipe PC-rel last hword 1 */ | 
| 3850 | #define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 /* X0 pipe PC-rel last hword 2 */ | 
| 3851 | #define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */ | 
| 3852 | #define R_TILEGX_IMM16_X0_HW0_GOT 64        /* X0 pipe hword 0 GOT offset */ | 
| 3853 | #define R_TILEGX_IMM16_X1_HW0_GOT 65        /* X1 pipe hword 0 GOT offset */ | 
| 3854 | #define R_TILEGX_IMM16_X0_HW0_PLT_PCREL 66 /* X0 pipe PC-rel PLT hword 0 */ | 
| 3855 | #define R_TILEGX_IMM16_X1_HW0_PLT_PCREL 67 /* X1 pipe PC-rel PLT hword 0 */ | 
| 3856 | #define R_TILEGX_IMM16_X0_HW1_PLT_PCREL 68 /* X0 pipe PC-rel PLT hword 1 */ | 
| 3857 | #define R_TILEGX_IMM16_X1_HW1_PLT_PCREL 69 /* X1 pipe PC-rel PLT hword 1 */ | 
| 3858 | #define R_TILEGX_IMM16_X0_HW2_PLT_PCREL 70 /* X0 pipe PC-rel PLT hword 2 */ | 
| 3859 | #define R_TILEGX_IMM16_X1_HW2_PLT_PCREL 71 /* X1 pipe PC-rel PLT hword 2 */ | 
| 3860 | #define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */ | 
| 3861 | #define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */ | 
| 3862 | #define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */ | 
| 3863 | #define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */ | 
| 3864 | #define R_TILEGX_IMM16_X0_HW3_PLT_PCREL 76 /* X0 pipe PC-rel PLT hword 3 */ | 
| 3865 | #define R_TILEGX_IMM16_X1_HW3_PLT_PCREL 77 /* X1 pipe PC-rel PLT hword 3 */ | 
| 3866 | #define R_TILEGX_IMM16_X0_HW0_TLS_GD 78        /* X0 pipe hword 0 TLS GD offset */ | 
| 3867 | #define R_TILEGX_IMM16_X1_HW0_TLS_GD 79        /* X1 pipe hword 0 TLS GD offset */ | 
| 3868 | #define R_TILEGX_IMM16_X0_HW0_TLS_LE 80        /* X0 pipe hword 0 TLS LE offset */ | 
| 3869 | #define R_TILEGX_IMM16_X1_HW0_TLS_LE 81        /* X1 pipe hword 0 TLS LE offset */ | 
| 3870 | #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 /* X0 pipe last hword 0 LE off */ | 
| 3871 | #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 /* X1 pipe last hword 0 LE off */ | 
| 3872 | #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 /* X0 pipe last hword 1 LE off */ | 
| 3873 | #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 /* X1 pipe last hword 1 LE off */ | 
| 3874 | #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 /* X0 pipe last hword 0 GD off */ | 
| 3875 | #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 /* X1 pipe last hword 0 GD off */ | 
| 3876 | #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 /* X0 pipe last hword 1 GD off */ | 
| 3877 | #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* X1 pipe last hword 1 GD off */ | 
| 3878 | /* Relocs 90-91 are currently not defined.  */ | 
| 3879 | #define R_TILEGX_IMM16_X0_HW0_TLS_IE 92        /* X0 pipe hword 0 TLS IE offset */ | 
| 3880 | #define R_TILEGX_IMM16_X1_HW0_TLS_IE 93        /* X1 pipe hword 0 TLS IE offset */ | 
| 3881 | #define R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL 94 /* X0 pipe PC-rel PLT last hword 0 */ | 
| 3882 | #define R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL 95 /* X1 pipe PC-rel PLT last hword 0 */ | 
| 3883 | #define R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL 96 /* X0 pipe PC-rel PLT last hword 1 */ | 
| 3884 | #define R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL 97 /* X1 pipe PC-rel PLT last hword 1 */ | 
| 3885 | #define R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL 98 /* X0 pipe PC-rel PLT last hword 2 */ | 
| 3886 | #define R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL 99 /* X1 pipe PC-rel PLT last hword 2 */ | 
| 3887 | #define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */ | 
| 3888 | #define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */ | 
| 3889 | #define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */ | 
| 3890 | #define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* X1 pipe last hword 1 IE off */ | 
| 3891 | /* Relocs 104-105 are currently not defined.  */ | 
| 3892 | #define R_TILEGX_TLS_DTPMOD64        106        /* 64-bit ID of symbol's module */ | 
| 3893 | #define R_TILEGX_TLS_DTPOFF64        107        /* 64-bit offset in TLS block */ | 
| 3894 | #define R_TILEGX_TLS_TPOFF64        108        /* 64-bit offset in static TLS block */ | 
| 3895 | #define R_TILEGX_TLS_DTPMOD32        109        /* 32-bit ID of symbol's module */ | 
| 3896 | #define R_TILEGX_TLS_DTPOFF32        110        /* 32-bit offset in TLS block */ | 
| 3897 | #define R_TILEGX_TLS_TPOFF32        111        /* 32-bit offset in static TLS block */ | 
| 3898 | #define R_TILEGX_TLS_GD_CALL        112        /* "jal" for TLS GD */ | 
| 3899 | #define R_TILEGX_IMM8_X0_TLS_GD_ADD 113        /* X0 pipe "addi" for TLS GD */ | 
| 3900 | #define R_TILEGX_IMM8_X1_TLS_GD_ADD 114        /* X1 pipe "addi" for TLS GD */ | 
| 3901 | #define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115        /* Y0 pipe "addi" for TLS GD */ | 
| 3902 | #define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116        /* Y1 pipe "addi" for TLS GD */ | 
| 3903 | #define R_TILEGX_TLS_IE_LOAD        117        /* "ld_tls" for TLS IE */ | 
| 3904 | #define R_TILEGX_IMM8_X0_TLS_ADD 118        /* X0 pipe "addi" for TLS GD/IE */ | 
| 3905 | #define R_TILEGX_IMM8_X1_TLS_ADD 119        /* X1 pipe "addi" for TLS GD/IE */ | 
| 3906 | #define R_TILEGX_IMM8_Y0_TLS_ADD 120        /* Y0 pipe "addi" for TLS GD/IE */ | 
| 3907 | #define R_TILEGX_IMM8_Y1_TLS_ADD 121        /* Y1 pipe "addi" for TLS GD/IE */ | 
| 3908 |  | 
| 3909 | #define R_TILEGX_GNU_VTINHERIT        128        /* GNU C++ vtable hierarchy */ | 
| 3910 | #define R_TILEGX_GNU_VTENTRY        129        /* GNU C++ vtable member usage */ | 
| 3911 |  | 
| 3912 | #define R_TILEGX_NUM                130 | 
| 3913 |  | 
| 3914 | /* RISC-V ELF Flags */ | 
| 3915 | #define EF_RISCV_RVC                         0x0001 | 
| 3916 | #define EF_RISCV_FLOAT_ABI                 0x0006 | 
| 3917 | #define EF_RISCV_FLOAT_ABI_SOFT         0x0000 | 
| 3918 | #define EF_RISCV_FLOAT_ABI_SINGLE         0x0002 | 
| 3919 | #define EF_RISCV_FLOAT_ABI_DOUBLE         0x0004 | 
| 3920 | #define EF_RISCV_FLOAT_ABI_QUAD         0x0006 | 
| 3921 |  | 
| 3922 | /* RISC-V relocations.  */ | 
| 3923 | #define R_RISCV_NONE                 0 | 
| 3924 | #define R_RISCV_32                 1 | 
| 3925 | #define R_RISCV_64                 2 | 
| 3926 | #define R_RISCV_RELATIVE         3 | 
| 3927 | #define R_RISCV_COPY                 4 | 
| 3928 | #define R_RISCV_JUMP_SLOT         5 | 
| 3929 | #define R_RISCV_TLS_DTPMOD32         6 | 
| 3930 | #define R_RISCV_TLS_DTPMOD64         7 | 
| 3931 | #define R_RISCV_TLS_DTPREL32         8 | 
| 3932 | #define R_RISCV_TLS_DTPREL64         9 | 
| 3933 | #define R_RISCV_TLS_TPREL32        10 | 
| 3934 | #define R_RISCV_TLS_TPREL64        11 | 
| 3935 | #define R_RISCV_BRANCH                16 | 
| 3936 | #define R_RISCV_JAL                17 | 
| 3937 | #define R_RISCV_CALL                18 | 
| 3938 | #define R_RISCV_CALL_PLT        19 | 
| 3939 | #define R_RISCV_GOT_HI20        20 | 
| 3940 | #define R_RISCV_TLS_GOT_HI20        21 | 
| 3941 | #define R_RISCV_TLS_GD_HI20        22 | 
| 3942 | #define R_RISCV_PCREL_HI20        23 | 
| 3943 | #define R_RISCV_PCREL_LO12_I        24 | 
| 3944 | #define R_RISCV_PCREL_LO12_S        25 | 
| 3945 | #define R_RISCV_HI20                26 | 
| 3946 | #define R_RISCV_LO12_I                27 | 
| 3947 | #define R_RISCV_LO12_S                28 | 
| 3948 | #define R_RISCV_TPREL_HI20        29 | 
| 3949 | #define R_RISCV_TPREL_LO12_I        30 | 
| 3950 | #define R_RISCV_TPREL_LO12_S        31 | 
| 3951 | #define R_RISCV_TPREL_ADD        32 | 
| 3952 | #define R_RISCV_ADD8                33 | 
| 3953 | #define R_RISCV_ADD16                34 | 
| 3954 | #define R_RISCV_ADD32                35 | 
| 3955 | #define R_RISCV_ADD64                36 | 
| 3956 | #define R_RISCV_SUB8                37 | 
| 3957 | #define R_RISCV_SUB16                38 | 
| 3958 | #define R_RISCV_SUB32                39 | 
| 3959 | #define R_RISCV_SUB64                40 | 
| 3960 | #define R_RISCV_GNU_VTINHERIT        41 | 
| 3961 | #define R_RISCV_GNU_VTENTRY        42 | 
| 3962 | #define R_RISCV_ALIGN                43 | 
| 3963 | #define R_RISCV_RVC_BRANCH        44 | 
| 3964 | #define R_RISCV_RVC_JUMP        45 | 
| 3965 | #define R_RISCV_RVC_LUI                46 | 
| 3966 | #define R_RISCV_GPREL_I                47 | 
| 3967 | #define R_RISCV_GPREL_S                48 | 
| 3968 | #define R_RISCV_TPREL_I                49 | 
| 3969 | #define R_RISCV_TPREL_S                50 | 
| 3970 | #define R_RISCV_RELAX                51 | 
| 3971 | #define R_RISCV_SUB6                52 | 
| 3972 | #define R_RISCV_SET6                53 | 
| 3973 | #define R_RISCV_SET8                54 | 
| 3974 | #define R_RISCV_SET16                55 | 
| 3975 | #define R_RISCV_SET32                56 | 
| 3976 | #define R_RISCV_32_PCREL        57 | 
| 3977 | #define R_RISCV_IRELATIVE        58 | 
| 3978 |  | 
| 3979 | #define R_RISCV_NUM                59 | 
| 3980 |  | 
| 3981 | /* BPF specific declarations.  */ | 
| 3982 |  | 
| 3983 | #define R_BPF_NONE                0        /* No reloc */ | 
| 3984 | #define R_BPF_64_64                1 | 
| 3985 | #define R_BPF_64_32                10 | 
| 3986 |  | 
| 3987 | /* Imagination Meta specific relocations. */ | 
| 3988 |  | 
| 3989 | #define R_METAG_HIADDR16        0 | 
| 3990 | #define R_METAG_LOADDR16        1 | 
| 3991 | #define R_METAG_ADDR32                2        /* 32bit absolute address */ | 
| 3992 | #define R_METAG_NONE                3        /* No reloc */ | 
| 3993 | #define R_METAG_RELBRANCH        4 | 
| 3994 | #define R_METAG_GETSETOFF        5 | 
| 3995 |  | 
| 3996 | /* Backward compatibility */ | 
| 3997 | #define R_METAG_REG32OP1        6 | 
| 3998 | #define R_METAG_REG32OP2        7 | 
| 3999 | #define R_METAG_REG32OP3        8 | 
| 4000 | #define R_METAG_REG16OP1        9 | 
| 4001 | #define R_METAG_REG16OP2        10 | 
| 4002 | #define R_METAG_REG16OP3        11 | 
| 4003 | #define R_METAG_REG32OP4        12 | 
| 4004 |  | 
| 4005 | #define R_METAG_HIOG                13 | 
| 4006 | #define R_METAG_LOOG                14 | 
| 4007 |  | 
| 4008 | #define R_METAG_REL8                15 | 
| 4009 | #define R_METAG_REL16                16 | 
| 4010 |  | 
| 4011 | /* GNU */ | 
| 4012 | #define R_METAG_GNU_VTINHERIT        30 | 
| 4013 | #define R_METAG_GNU_VTENTRY        31 | 
| 4014 |  | 
| 4015 | /* PIC relocations */ | 
| 4016 | #define R_METAG_HI16_GOTOFF        32 | 
| 4017 | #define R_METAG_LO16_GOTOFF        33 | 
| 4018 | #define R_METAG_GETSET_GOTOFF        34 | 
| 4019 | #define R_METAG_GETSET_GOT        35 | 
| 4020 | #define R_METAG_HI16_GOTPC        36 | 
| 4021 | #define R_METAG_LO16_GOTPC        37 | 
| 4022 | #define R_METAG_HI16_PLT        38 | 
| 4023 | #define R_METAG_LO16_PLT        39 | 
| 4024 | #define R_METAG_RELBRANCH_PLT        40 | 
| 4025 | #define R_METAG_GOTOFF                41 | 
| 4026 | #define R_METAG_PLT                42 | 
| 4027 | #define R_METAG_COPY                43 | 
| 4028 | #define R_METAG_JMP_SLOT        44 | 
| 4029 | #define R_METAG_RELATIVE        45 | 
| 4030 | #define R_METAG_GLOB_DAT        46 | 
| 4031 |  | 
| 4032 | /* TLS relocations */ | 
| 4033 | #define R_METAG_TLS_GD                47 | 
| 4034 | #define R_METAG_TLS_LDM                48 | 
| 4035 | #define R_METAG_TLS_LDO_HI16        49 | 
| 4036 | #define R_METAG_TLS_LDO_LO16        50 | 
| 4037 | #define R_METAG_TLS_LDO                51 | 
| 4038 | #define R_METAG_TLS_IE                52 | 
| 4039 | #define R_METAG_TLS_IENONPIC        53 | 
| 4040 | #define R_METAG_TLS_IENONPIC_HI16 54 | 
| 4041 | #define R_METAG_TLS_IENONPIC_LO16 55 | 
| 4042 | #define R_METAG_TLS_TPOFF        56 | 
| 4043 | #define R_METAG_TLS_DTPMOD        57 | 
| 4044 | #define R_METAG_TLS_DTPOFF        58 | 
| 4045 | #define R_METAG_TLS_LE                59 | 
| 4046 | #define R_METAG_TLS_LE_HI16        60 | 
| 4047 | #define R_METAG_TLS_LE_LO16        61 | 
| 4048 |  | 
| 4049 | /* NDS32 relocations.  */ | 
| 4050 | #define R_NDS32_NONE                0 | 
| 4051 | #define R_NDS32_32_RELA         20 | 
| 4052 | #define R_NDS32_COPY                39 | 
| 4053 | #define R_NDS32_GLOB_DAT        40 | 
| 4054 | #define R_NDS32_JMP_SLOT        41 | 
| 4055 | #define R_NDS32_RELATIVE        42 | 
| 4056 | #define R_NDS32_TLS_TPOFF        102 | 
| 4057 | #define R_NDS32_TLS_DESC        119 | 
| 4058 |  | 
| 4059 | /* ARCompact/ARCv2 specific relocs.  */ | 
| 4060 | #define R_ARC_NONE                0x0 | 
| 4061 | #define R_ARC_8                        0x1 | 
| 4062 | #define R_ARC_16                0x2 | 
| 4063 | #define R_ARC_24                0x3 | 
| 4064 | #define R_ARC_32                0x4 | 
| 4065 | #define R_ARC_B26                0x5 | 
| 4066 | #define R_ARC_B22_PCREL                0x6 | 
| 4067 | #define R_ARC_H30                0x7 | 
| 4068 | #define R_ARC_N8                0x8 | 
| 4069 | #define R_ARC_N16                0x9 | 
| 4070 | #define R_ARC_N24                0xA | 
| 4071 | #define R_ARC_N32                0xB | 
| 4072 | #define R_ARC_SDA                0xC | 
| 4073 | #define R_ARC_SECTOFF                0xD | 
| 4074 | #define R_ARC_S21H_PCREL        0xE | 
| 4075 | #define R_ARC_S21W_PCREL        0xF | 
| 4076 | #define R_ARC_S25H_PCREL        0x10 | 
| 4077 | #define R_ARC_S25W_PCREL        0x11 | 
| 4078 | #define R_ARC_SDA32                0x12 | 
| 4079 | #define R_ARC_SDA_LDST                0x13 | 
| 4080 | #define R_ARC_SDA_LDST1                0x14 | 
| 4081 | #define R_ARC_SDA_LDST2                0x15 | 
| 4082 | #define R_ARC_SDA16_LD                0x16 | 
| 4083 | #define R_ARC_SDA16_LD1                0x17 | 
| 4084 | #define R_ARC_SDA16_LD2                0x18 | 
| 4085 | #define R_ARC_S13_PCREL                0x19 | 
| 4086 | #define R_ARC_W                        0x1A | 
| 4087 | #define R_ARC_32_ME                0x1B | 
| 4088 | #define R_ARC_N32_ME                0x1C | 
| 4089 | #define R_ARC_SECTOFF_ME        0x1D | 
| 4090 | #define R_ARC_SDA32_ME                0x1E | 
| 4091 | #define R_ARC_W_ME                0x1F | 
| 4092 | #define R_ARC_H30_ME                0x20 | 
| 4093 | #define R_ARC_SECTOFF_U8        0x21 | 
| 4094 | #define R_ARC_SECTOFF_S9        0x22 | 
| 4095 | #define R_AC_SECTOFF_U8                0x23 | 
| 4096 | #define R_AC_SECTOFF_U8_1        0x24 | 
| 4097 | #define R_AC_SECTOFF_U8_2        0x25 | 
| 4098 | #define R_AC_SECTOFF_S9                0x26 | 
| 4099 | #define R_AC_SECTOFF_S9_1        0x27 | 
| 4100 | #define R_AC_SECTOFF_S9_2        0x28 | 
| 4101 | #define R_ARC_SECTOFF_ME_1        0x29 | 
| 4102 | #define R_ARC_SECTOFF_ME_2        0x2A | 
| 4103 | #define R_ARC_SECTOFF_1                0x2B | 
| 4104 | #define R_ARC_SECTOFF_2                0x2C | 
| 4105 | #define R_ARC_PC32                0x32 | 
| 4106 | #define R_ARC_GOTPC32                0x33 | 
| 4107 | #define R_ARC_PLT32                0x34 | 
| 4108 | #define R_ARC_COPY                0x35 | 
| 4109 | #define R_ARC_GLOB_DAT                0x36 | 
| 4110 | #define R_ARC_JUMP_SLOT                0x37 | 
| 4111 | #define R_ARC_RELATIVE                0x38 | 
| 4112 | #define R_ARC_GOTOFF                0x39 | 
| 4113 | #define R_ARC_GOTPC                0x3A | 
| 4114 | #define R_ARC_GOT32                0x3B | 
| 4115 |  | 
| 4116 | #define R_ARC_TLS_DTPMOD        0x42 | 
| 4117 | #define R_ARC_TLS_DTPOFF        0x43 | 
| 4118 | #define R_ARC_TLS_TPOFF                0x44 | 
| 4119 | #define R_ARC_TLS_GD_GOT        0x45 | 
| 4120 | #define R_ARC_TLS_GD_LD                0x46 | 
| 4121 | #define R_ARC_TLS_GD_CALL        0x47 | 
| 4122 | #define R_ARC_TLS_IE_GOT        0x48 | 
| 4123 | #define R_ARC_TLS_DTPOFF_S9        0x4a | 
| 4124 | #define R_ARC_TLS_LE_S9                0x4a | 
| 4125 | #define R_ARC_TLS_LE_32                0x4b | 
| 4126 |  | 
| 4127 | /* OpenRISC 1000 specific relocs.  */ | 
| 4128 | #define R_OR1K_NONE                0 | 
| 4129 | #define R_OR1K_32                1 | 
| 4130 | #define R_OR1K_16                2 | 
| 4131 | #define R_OR1K_8                3 | 
| 4132 | #define R_OR1K_LO_16_IN_INSN        4 | 
| 4133 | #define R_OR1K_HI_16_IN_INSN        5 | 
| 4134 | #define R_OR1K_INSN_REL_26        6 | 
| 4135 | #define R_OR1K_GNU_VTENTRY        7 | 
| 4136 | #define R_OR1K_GNU_VTINHERIT        8 | 
| 4137 | #define R_OR1K_32_PCREL                9 | 
| 4138 | #define R_OR1K_16_PCREL                10 | 
| 4139 | #define R_OR1K_8_PCREL                11 | 
| 4140 | #define R_OR1K_GOTPC_HI16        12 | 
| 4141 | #define R_OR1K_GOTPC_LO16        13 | 
| 4142 | #define R_OR1K_GOT16                14 | 
| 4143 | #define R_OR1K_PLT26                15 | 
| 4144 | #define R_OR1K_GOTOFF_HI16        16 | 
| 4145 | #define R_OR1K_GOTOFF_LO16        17 | 
| 4146 | #define R_OR1K_COPY                18 | 
| 4147 | #define R_OR1K_GLOB_DAT                19 | 
| 4148 | #define R_OR1K_JMP_SLOT                20 | 
| 4149 | #define R_OR1K_RELATIVE                21 | 
| 4150 | #define R_OR1K_TLS_GD_HI16        22 | 
| 4151 | #define R_OR1K_TLS_GD_LO16        23 | 
| 4152 | #define R_OR1K_TLS_LDM_HI16        24 | 
| 4153 | #define R_OR1K_TLS_LDM_LO16        25 | 
| 4154 | #define R_OR1K_TLS_LDO_HI16        26 | 
| 4155 | #define R_OR1K_TLS_LDO_LO16        27 | 
| 4156 | #define R_OR1K_TLS_IE_HI16        28 | 
| 4157 | #define R_OR1K_TLS_IE_LO16        29 | 
| 4158 | #define R_OR1K_TLS_LE_HI16        30 | 
| 4159 | #define R_OR1K_TLS_LE_LO16        31 | 
| 4160 | #define R_OR1K_TLS_TPOFF        32 | 
| 4161 | #define R_OR1K_TLS_DTPOFF        33 | 
| 4162 | #define R_OR1K_TLS_DTPMOD        34 | 
| 4163 |  | 
| 4164 | #endif        /* elf.h */ | 
| 4165 |  |