19f84b6f2SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 29f84b6f2SJerome Forissier /*- 39f84b6f2SJerome Forissier * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien 49f84b6f2SJerome Forissier * Copyright (c) 1998 John D. Polstra. 59f84b6f2SJerome Forissier * All rights reserved. 69f84b6f2SJerome Forissier * 79f84b6f2SJerome Forissier * Redistribution and use in source and binary forms, with or without 89f84b6f2SJerome Forissier * modification, are permitted provided that the following conditions 99f84b6f2SJerome Forissier * are met: 109f84b6f2SJerome Forissier * 1. Redistributions of source code must retain the above copyright 119f84b6f2SJerome Forissier * notice, this list of conditions and the following disclaimer. 129f84b6f2SJerome Forissier * 2. Redistributions in binary form must reproduce the above copyright 139f84b6f2SJerome Forissier * notice, this list of conditions and the following disclaimer in the 149f84b6f2SJerome Forissier * documentation and/or other materials provided with the distribution. 159f84b6f2SJerome Forissier * 169f84b6f2SJerome Forissier * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 179f84b6f2SJerome Forissier * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 189f84b6f2SJerome Forissier * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 199f84b6f2SJerome Forissier * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 209f84b6f2SJerome Forissier * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 219f84b6f2SJerome Forissier * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 229f84b6f2SJerome Forissier * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 239f84b6f2SJerome Forissier * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 249f84b6f2SJerome Forissier * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 259f84b6f2SJerome Forissier * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 269f84b6f2SJerome Forissier * SUCH DAMAGE. 279f84b6f2SJerome Forissier * 289f84b6f2SJerome Forissier * $FreeBSD$ 299f84b6f2SJerome Forissier */ 309f84b6f2SJerome Forissier 319f84b6f2SJerome Forissier #ifndef _SYS_ELF_COMMON_H_ 329f84b6f2SJerome Forissier #define _SYS_ELF_COMMON_H_ 1 339f84b6f2SJerome Forissier 349f84b6f2SJerome Forissier #include <stdint.h> 359f84b6f2SJerome Forissier 369f84b6f2SJerome Forissier /* 379f84b6f2SJerome Forissier * ELF definitions that are independent of architecture or word size. 389f84b6f2SJerome Forissier */ 399f84b6f2SJerome Forissier 409f84b6f2SJerome Forissier #ifndef __ASSEMBLER__ 419f84b6f2SJerome Forissier /* 429f84b6f2SJerome Forissier * Note header. The ".note" section contains an array of notes. Each 439f84b6f2SJerome Forissier * begins with this header, aligned to a word boundary. Immediately 449f84b6f2SJerome Forissier * following the note header is n_namesz bytes of name, padded to the 459f84b6f2SJerome Forissier * next word boundary. Then comes n_descsz bytes of descriptor, again 469f84b6f2SJerome Forissier * padded to a word boundary. The values of n_namesz and n_descsz do 479f84b6f2SJerome Forissier * not include the padding. 489f84b6f2SJerome Forissier */ 499f84b6f2SJerome Forissier 509f84b6f2SJerome Forissier typedef struct { 519f84b6f2SJerome Forissier uint32_t n_namesz; /* Length of name. */ 529f84b6f2SJerome Forissier uint32_t n_descsz; /* Length of descriptor. */ 539f84b6f2SJerome Forissier uint32_t n_type; /* Type of this note. */ 549f84b6f2SJerome Forissier } Elf_Note; 559f84b6f2SJerome Forissier 569f84b6f2SJerome Forissier /* 579f84b6f2SJerome Forissier * The header for GNU-style hash sections. 589f84b6f2SJerome Forissier */ 599f84b6f2SJerome Forissier 609f84b6f2SJerome Forissier typedef struct { 619f84b6f2SJerome Forissier uint32_t gh_nbuckets; /* Number of hash buckets. */ 629f84b6f2SJerome Forissier uint32_t gh_symndx; /* First visible symbol in .dynsym. */ 639f84b6f2SJerome Forissier uint32_t gh_maskwords; /* #maskwords used in bloom filter. */ 649f84b6f2SJerome Forissier uint32_t gh_shift2; /* Bloom filter shift count. */ 659f84b6f2SJerome Forissier } Elf_GNU_Hash_Header; 66481a21ddSRuchika Gupta 67481a21ddSRuchika Gupta /* 68481a21ddSRuchika Gupta * Program Property Array 69481a21ddSRuchika Gupta */ 70481a21ddSRuchika Gupta typedef struct { 71481a21ddSRuchika Gupta uint32_t pr_type; 72481a21ddSRuchika Gupta uint32_t pr_datasz; 73481a21ddSRuchika Gupta } Elf_Prop; 749f84b6f2SJerome Forissier #endif /*__ASSEMBLER__*/ 759f84b6f2SJerome Forissier 769f84b6f2SJerome Forissier /* Indexes into the e_ident array. Keep synced with 779f84b6f2SJerome Forissier http://www.sco.com/developers/gabi/latest/ch4.eheader.html */ 789f84b6f2SJerome Forissier #define EI_MAG0 0 /* Magic number, byte 0. */ 799f84b6f2SJerome Forissier #define EI_MAG1 1 /* Magic number, byte 1. */ 809f84b6f2SJerome Forissier #define EI_MAG2 2 /* Magic number, byte 2. */ 819f84b6f2SJerome Forissier #define EI_MAG3 3 /* Magic number, byte 3. */ 829f84b6f2SJerome Forissier #define EI_CLASS 4 /* Class of machine. */ 839f84b6f2SJerome Forissier #define EI_DATA 5 /* Data format. */ 849f84b6f2SJerome Forissier #define EI_VERSION 6 /* ELF format version. */ 859f84b6f2SJerome Forissier #define EI_OSABI 7 /* Operating system / ABI identification */ 869f84b6f2SJerome Forissier #define EI_ABIVERSION 8 /* ABI version */ 879f84b6f2SJerome Forissier #define OLD_EI_BRAND 8 /* Start of architecture identification. */ 889f84b6f2SJerome Forissier #define EI_PAD 9 /* Start of padding (per SVR4 ABI). */ 899f84b6f2SJerome Forissier #define EI_NIDENT 16 /* Size of e_ident array. */ 909f84b6f2SJerome Forissier 919f84b6f2SJerome Forissier /* Values for the magic number bytes. */ 929f84b6f2SJerome Forissier #define ELFMAG0 0x7f 939f84b6f2SJerome Forissier #define ELFMAG1 'E' 949f84b6f2SJerome Forissier #define ELFMAG2 'L' 959f84b6f2SJerome Forissier #define ELFMAG3 'F' 969f84b6f2SJerome Forissier #define ELFMAG "\177ELF" /* magic string */ 979f84b6f2SJerome Forissier #define SELFMAG 4 /* magic string size */ 989f84b6f2SJerome Forissier 999f84b6f2SJerome Forissier /* Values for e_ident[EI_VERSION] and e_version. */ 1009f84b6f2SJerome Forissier #define EV_NONE 0 1019f84b6f2SJerome Forissier #define EV_CURRENT 1 1029f84b6f2SJerome Forissier 1039f84b6f2SJerome Forissier /* Values for e_ident[EI_CLASS]. */ 1049f84b6f2SJerome Forissier #define ELFCLASSNONE 0 /* Unknown class. */ 1059f84b6f2SJerome Forissier #define ELFCLASS32 1 /* 32-bit architecture. */ 1069f84b6f2SJerome Forissier #define ELFCLASS64 2 /* 64-bit architecture. */ 1079f84b6f2SJerome Forissier 1089f84b6f2SJerome Forissier /* Values for e_ident[EI_DATA]. */ 1099f84b6f2SJerome Forissier #define ELFDATANONE 0 /* Unknown data format. */ 1109f84b6f2SJerome Forissier #define ELFDATA2LSB 1 /* 2's complement little-endian. */ 1119f84b6f2SJerome Forissier #define ELFDATA2MSB 2 /* 2's complement big-endian. */ 1129f84b6f2SJerome Forissier 1139f84b6f2SJerome Forissier /* Values for e_ident[EI_OSABI]. */ 1149f84b6f2SJerome Forissier #define ELFOSABI_NONE 0 /* UNIX System V ABI */ 1159f84b6f2SJerome Forissier #define ELFOSABI_HPUX 1 /* HP-UX operating system */ 1169f84b6f2SJerome Forissier #define ELFOSABI_NETBSD 2 /* NetBSD */ 1179f84b6f2SJerome Forissier #define ELFOSABI_LINUX 3 /* GNU/Linux */ 1189f84b6f2SJerome Forissier #define ELFOSABI_HURD 4 /* GNU/Hurd */ 1199f84b6f2SJerome Forissier #define ELFOSABI_86OPEN 5 /* 86Open common IA32 ABI */ 1209f84b6f2SJerome Forissier #define ELFOSABI_SOLARIS 6 /* Solaris */ 1219f84b6f2SJerome Forissier #define ELFOSABI_AIX 7 /* AIX */ 1229f84b6f2SJerome Forissier #define ELFOSABI_IRIX 8 /* IRIX */ 1239f84b6f2SJerome Forissier #define ELFOSABI_FREEBSD 9 /* FreeBSD */ 1249f84b6f2SJerome Forissier #define ELFOSABI_TRU64 10 /* TRU64 UNIX */ 1259f84b6f2SJerome Forissier #define ELFOSABI_MODESTO 11 /* Novell Modesto */ 1269f84b6f2SJerome Forissier #define ELFOSABI_OPENBSD 12 /* OpenBSD */ 1279f84b6f2SJerome Forissier #define ELFOSABI_OPENVMS 13 /* Open VMS */ 1289f84b6f2SJerome Forissier #define ELFOSABI_NSK 14 /* HP Non-Stop Kernel */ 1299f84b6f2SJerome Forissier #define ELFOSABI_AROS 15 /* Amiga Research OS */ 1309f84b6f2SJerome Forissier #define ELFOSABI_ARM 97 /* ARM */ 1319f84b6f2SJerome Forissier #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ 1329f84b6f2SJerome Forissier 1339f84b6f2SJerome Forissier #define ELFOSABI_SYSV ELFOSABI_NONE /* symbol used in old spec */ 1349f84b6f2SJerome Forissier #define ELFOSABI_MONTEREY ELFOSABI_AIX /* Monterey */ 1359f84b6f2SJerome Forissier 1369f84b6f2SJerome Forissier /* e_ident */ 1379f84b6f2SJerome Forissier #define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \ 1389f84b6f2SJerome Forissier (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \ 1399f84b6f2SJerome Forissier (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \ 1409f84b6f2SJerome Forissier (ehdr).e_ident[EI_MAG3] == ELFMAG3) 1419f84b6f2SJerome Forissier 1429f84b6f2SJerome Forissier /* Values for e_type. */ 1439f84b6f2SJerome Forissier #define ET_NONE 0 /* Unknown type. */ 1449f84b6f2SJerome Forissier #define ET_REL 1 /* Relocatable. */ 1459f84b6f2SJerome Forissier #define ET_EXEC 2 /* Executable. */ 1469f84b6f2SJerome Forissier #define ET_DYN 3 /* Shared object. */ 1479f84b6f2SJerome Forissier #define ET_CORE 4 /* Core file. */ 1489f84b6f2SJerome Forissier #define ET_LOOS 0xfe00 /* First operating system specific. */ 1499f84b6f2SJerome Forissier #define ET_HIOS 0xfeff /* Last operating system-specific. */ 1509f84b6f2SJerome Forissier #define ET_LOPROC 0xff00 /* First processor-specific. */ 1519f84b6f2SJerome Forissier #define ET_HIPROC 0xffff /* Last processor-specific. */ 1529f84b6f2SJerome Forissier 1539f84b6f2SJerome Forissier /* Values for e_machine. */ 1549f84b6f2SJerome Forissier #define EM_NONE 0 /* Unknown machine. */ 1559f84b6f2SJerome Forissier #define EM_M32 1 /* AT&T WE32100. */ 1569f84b6f2SJerome Forissier #define EM_SPARC 2 /* Sun SPARC. */ 1579f84b6f2SJerome Forissier #define EM_386 3 /* Intel i386. */ 1589f84b6f2SJerome Forissier #define EM_68K 4 /* Motorola 68000. */ 1599f84b6f2SJerome Forissier #define EM_88K 5 /* Motorola 88000. */ 1609f84b6f2SJerome Forissier #define EM_860 7 /* Intel i860. */ 1619f84b6f2SJerome Forissier #define EM_MIPS 8 /* MIPS R3000 Big-Endian only. */ 1629f84b6f2SJerome Forissier #define EM_S370 9 /* IBM System/370. */ 1639f84b6f2SJerome Forissier #define EM_MIPS_RS3_LE 10 /* MIPS R3000 Little-Endian. */ 1649f84b6f2SJerome Forissier #define EM_PARISC 15 /* HP PA-RISC. */ 1659f84b6f2SJerome Forissier #define EM_VPP500 17 /* Fujitsu VPP500. */ 1669f84b6f2SJerome Forissier #define EM_SPARC32PLUS 18 /* SPARC v8plus. */ 1679f84b6f2SJerome Forissier #define EM_960 19 /* Intel 80960. */ 1689f84b6f2SJerome Forissier #define EM_PPC 20 /* PowerPC 32-bit. */ 1699f84b6f2SJerome Forissier #define EM_PPC64 21 /* PowerPC 64-bit. */ 1709f84b6f2SJerome Forissier #define EM_S390 22 /* IBM System/390. */ 1719f84b6f2SJerome Forissier #define EM_V800 36 /* NEC V800. */ 1729f84b6f2SJerome Forissier #define EM_FR20 37 /* Fujitsu FR20. */ 1739f84b6f2SJerome Forissier #define EM_RH32 38 /* TRW RH-32. */ 1749f84b6f2SJerome Forissier #define EM_RCE 39 /* Motorola RCE. */ 1759f84b6f2SJerome Forissier #define EM_ARM 40 /* ARM. */ 1769f84b6f2SJerome Forissier #define EM_SH 42 /* Hitachi SH. */ 1779f84b6f2SJerome Forissier #define EM_SPARCV9 43 /* SPARC v9 64-bit. */ 1789f84b6f2SJerome Forissier #define EM_TRICORE 44 /* Siemens TriCore embedded processor. */ 1799f84b6f2SJerome Forissier #define EM_ARC 45 /* Argonaut RISC Core. */ 1809f84b6f2SJerome Forissier #define EM_H8_300 46 /* Hitachi H8/300. */ 1819f84b6f2SJerome Forissier #define EM_H8_300H 47 /* Hitachi H8/300H. */ 1829f84b6f2SJerome Forissier #define EM_H8S 48 /* Hitachi H8S. */ 1839f84b6f2SJerome Forissier #define EM_H8_500 49 /* Hitachi H8/500. */ 1849f84b6f2SJerome Forissier #define EM_IA_64 50 /* Intel IA-64 Processor. */ 1859f84b6f2SJerome Forissier #define EM_MIPS_X 51 /* Stanford MIPS-X. */ 1869f84b6f2SJerome Forissier #define EM_COLDFIRE 52 /* Motorola ColdFire. */ 1879f84b6f2SJerome Forissier #define EM_68HC12 53 /* Motorola M68HC12. */ 1889f84b6f2SJerome Forissier #define EM_MMA 54 /* Fujitsu MMA. */ 1899f84b6f2SJerome Forissier #define EM_PCP 55 /* Siemens PCP. */ 1909f84b6f2SJerome Forissier #define EM_NCPU 56 /* Sony nCPU. */ 1919f84b6f2SJerome Forissier #define EM_NDR1 57 /* Denso NDR1 microprocessor. */ 1929f84b6f2SJerome Forissier #define EM_STARCORE 58 /* Motorola Star*Core processor. */ 1939f84b6f2SJerome Forissier #define EM_ME16 59 /* Toyota ME16 processor. */ 1949f84b6f2SJerome Forissier #define EM_ST100 60 /* STMicroelectronics ST100 processor. */ 1959f84b6f2SJerome Forissier #define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ processor. */ 1969f84b6f2SJerome Forissier #define EM_X86_64 62 /* Advanced Micro Devices x86-64 */ 1979f84b6f2SJerome Forissier #define EM_AMD64 EM_X86_64 /* Advanced Micro Devices x86-64 (compat) */ 1989f84b6f2SJerome Forissier #define EM_PDSP 63 /* Sony DSP Processor. */ 1999f84b6f2SJerome Forissier #define EM_FX66 66 /* Siemens FX66 microcontroller. */ 2009f84b6f2SJerome Forissier #define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 2019f84b6f2SJerome Forissier microcontroller. */ 2029f84b6f2SJerome Forissier #define EM_ST7 68 /* STmicroelectronics ST7 8-bit 2039f84b6f2SJerome Forissier microcontroller. */ 2049f84b6f2SJerome Forissier #define EM_68HC16 69 /* Motorola MC68HC16 microcontroller. */ 2059f84b6f2SJerome Forissier #define EM_68HC11 70 /* Motorola MC68HC11 microcontroller. */ 2069f84b6f2SJerome Forissier #define EM_68HC08 71 /* Motorola MC68HC08 microcontroller. */ 2079f84b6f2SJerome Forissier #define EM_68HC05 72 /* Motorola MC68HC05 microcontroller. */ 2089f84b6f2SJerome Forissier #define EM_SVX 73 /* Silicon Graphics SVx. */ 2099f84b6f2SJerome Forissier #define EM_ST19 74 /* STMicroelectronics ST19 8-bit mc. */ 2109f84b6f2SJerome Forissier #define EM_VAX 75 /* Digital VAX. */ 2119f84b6f2SJerome Forissier #define EM_CRIS 76 /* Axis Communications 32-bit embedded 2129f84b6f2SJerome Forissier processor. */ 2139f84b6f2SJerome Forissier #define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded 2149f84b6f2SJerome Forissier processor. */ 2159f84b6f2SJerome Forissier #define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor. */ 2169f84b6f2SJerome Forissier #define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor. */ 2179f84b6f2SJerome Forissier #define EM_MMIX 80 /* Donald Knuth's educational 64-bit proc. */ 2189f84b6f2SJerome Forissier #define EM_HUANY 81 /* Harvard University machine-independent 2199f84b6f2SJerome Forissier object files. */ 2209f84b6f2SJerome Forissier #define EM_PRISM 82 /* SiTera Prism. */ 2219f84b6f2SJerome Forissier #define EM_AVR 83 /* Atmel AVR 8-bit microcontroller. */ 2229f84b6f2SJerome Forissier #define EM_FR30 84 /* Fujitsu FR30. */ 2239f84b6f2SJerome Forissier #define EM_D10V 85 /* Mitsubishi D10V. */ 2249f84b6f2SJerome Forissier #define EM_D30V 86 /* Mitsubishi D30V. */ 2259f84b6f2SJerome Forissier #define EM_V850 87 /* NEC v850. */ 2269f84b6f2SJerome Forissier #define EM_M32R 88 /* Mitsubishi M32R. */ 2279f84b6f2SJerome Forissier #define EM_MN10300 89 /* Matsushita MN10300. */ 2289f84b6f2SJerome Forissier #define EM_MN10200 90 /* Matsushita MN10200. */ 2299f84b6f2SJerome Forissier #define EM_PJ 91 /* picoJava. */ 2309f84b6f2SJerome Forissier #define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor. */ 2319f84b6f2SJerome Forissier #define EM_ARC_A5 93 /* ARC Cores Tangent-A5. */ 2329f84b6f2SJerome Forissier #define EM_XTENSA 94 /* Tensilica Xtensa Architecture. */ 2339f84b6f2SJerome Forissier #define EM_VIDEOCORE 95 /* Alphamosaic VideoCore processor. */ 2349f84b6f2SJerome Forissier #define EM_TMM_GPP 96 /* Thompson Multimedia General Purpose 2359f84b6f2SJerome Forissier Processor. */ 2369f84b6f2SJerome Forissier #define EM_NS32K 97 /* National Semiconductor 32000 series. */ 2379f84b6f2SJerome Forissier #define EM_TPC 98 /* Tenor Network TPC processor. */ 2389f84b6f2SJerome Forissier #define EM_SNP1K 99 /* Trebia SNP 1000 processor. */ 2399f84b6f2SJerome Forissier #define EM_ST200 100 /* STMicroelectronics ST200 microcontroller. */ 2409f84b6f2SJerome Forissier #define EM_IP2K 101 /* Ubicom IP2xxx microcontroller family. */ 2419f84b6f2SJerome Forissier #define EM_MAX 102 /* MAX Processor. */ 2429f84b6f2SJerome Forissier #define EM_CR 103 /* National Semiconductor CompactRISC 2439f84b6f2SJerome Forissier microprocessor. */ 2449f84b6f2SJerome Forissier #define EM_F2MC16 104 /* Fujitsu F2MC16. */ 2459f84b6f2SJerome Forissier #define EM_MSP430 105 /* Texas Instruments embedded microcontroller 2469f84b6f2SJerome Forissier msp430. */ 2479f84b6f2SJerome Forissier #define EM_BLACKFIN 106 /* Analog Devices Blackfin (DSP) processor. */ 2489f84b6f2SJerome Forissier #define EM_SE_C33 107 /* S1C33 Family of Seiko Epson processors. */ 2499f84b6f2SJerome Forissier #define EM_SEP 108 /* Sharp embedded microprocessor. */ 2509f84b6f2SJerome Forissier #define EM_ARCA 109 /* Arca RISC Microprocessor. */ 2519f84b6f2SJerome Forissier #define EM_UNICORE 110 /* Microprocessor series from PKU-Unity Ltd. 2529f84b6f2SJerome Forissier and MPRC of Peking University */ 2539f84b6f2SJerome Forissier #define EM_AARCH64 183 /* AArch64 (64-bit ARM) */ 2548fab4371Sliushiwei #define EM_RISCV 243 /* RISC-V */ 2559f84b6f2SJerome Forissier 2569f84b6f2SJerome Forissier /* Non-standard or deprecated. */ 2579f84b6f2SJerome Forissier #define EM_486 6 /* Intel i486. */ 2589f84b6f2SJerome Forissier #define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ 2599f84b6f2SJerome Forissier #define EM_ALPHA_STD 41 /* Digital Alpha (standard value). */ 2609f84b6f2SJerome Forissier #define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI) */ 2619f84b6f2SJerome Forissier 2629f84b6f2SJerome Forissier /* e_flags for EM_ARM */ 263*5f7f88c6SSumit Garg #define EF_ARM_ABI_UNKNOWN 0x00000000 264*5f7f88c6SSumit Garg #define EF_ARM_ABI_V5 0x05000000 /* ABI version 5 */ 2659f84b6f2SJerome Forissier #define EF_ARM_ABIMASK 0xFF000000 2669f84b6f2SJerome Forissier #define EF_ARM_BE8 0x00800000 2679f84b6f2SJerome Forissier #define EF_ARM_ABI_FLOAT_HARD 0x00000400 /* ABI version 5 and later */ 2689f84b6f2SJerome Forissier #define EF_ARM_ABI_FLOAT_SOFT 0x00000200 /* ABI version 5 and later */ 2699f84b6f2SJerome Forissier 2709f84b6f2SJerome Forissier /* Special section indexes. */ 2719f84b6f2SJerome Forissier #define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */ 2729f84b6f2SJerome Forissier #define SHN_LORESERVE 0xff00 /* First of reserved range. */ 2739f84b6f2SJerome Forissier #define SHN_LOPROC 0xff00 /* First processor-specific. */ 2749f84b6f2SJerome Forissier #define SHN_HIPROC 0xff1f /* Last processor-specific. */ 2759f84b6f2SJerome Forissier #define SHN_LOOS 0xff20 /* First operating system-specific. */ 2769f84b6f2SJerome Forissier #define SHN_HIOS 0xff3f /* Last operating system-specific. */ 2779f84b6f2SJerome Forissier #define SHN_ABS 0xfff1 /* Absolute values. */ 2789f84b6f2SJerome Forissier #define SHN_COMMON 0xfff2 /* Common data. */ 2799f84b6f2SJerome Forissier #define SHN_XINDEX 0xffff /* Escape -- index stored elsewhere. */ 2809f84b6f2SJerome Forissier #define SHN_HIRESERVE 0xffff /* Last of reserved range. */ 2819f84b6f2SJerome Forissier 2829f84b6f2SJerome Forissier /* sh_type */ 2839f84b6f2SJerome Forissier #define SHT_NULL 0 /* inactive */ 2849f84b6f2SJerome Forissier #define SHT_PROGBITS 1 /* program defined information */ 2859f84b6f2SJerome Forissier #define SHT_SYMTAB 2 /* symbol table section */ 2869f84b6f2SJerome Forissier #define SHT_STRTAB 3 /* string table section */ 2879f84b6f2SJerome Forissier #define SHT_RELA 4 /* relocation section with addends */ 2889f84b6f2SJerome Forissier #define SHT_HASH 5 /* symbol hash table section */ 2899f84b6f2SJerome Forissier #define SHT_DYNAMIC 6 /* dynamic section */ 2909f84b6f2SJerome Forissier #define SHT_NOTE 7 /* note section */ 2919f84b6f2SJerome Forissier #define SHT_NOBITS 8 /* no space section */ 2929f84b6f2SJerome Forissier #define SHT_REL 9 /* relocation section - no addends */ 2939f84b6f2SJerome Forissier #define SHT_SHLIB 10 /* reserved - purpose unknown */ 2949f84b6f2SJerome Forissier #define SHT_DYNSYM 11 /* dynamic symbol table section */ 2959f84b6f2SJerome Forissier #define SHT_INIT_ARRAY 14 /* Initialization function pointers. */ 2969f84b6f2SJerome Forissier #define SHT_FINI_ARRAY 15 /* Termination function pointers. */ 2979f84b6f2SJerome Forissier #define SHT_PREINIT_ARRAY 16 /* Pre-initialization function ptrs. */ 2989f84b6f2SJerome Forissier #define SHT_GROUP 17 /* Section group. */ 2999f84b6f2SJerome Forissier #define SHT_SYMTAB_SHNDX 18 /* Section indexes (see SHN_XINDEX). */ 3009f84b6f2SJerome Forissier #define SHT_LOOS 0x60000000 /* First of OS specific semantics */ 3019f84b6f2SJerome Forissier #define SHT_LOSUNW 0x6ffffff4 3029f84b6f2SJerome Forissier #define SHT_SUNW_dof 0x6ffffff4 3039f84b6f2SJerome Forissier #define SHT_SUNW_cap 0x6ffffff5 3049f84b6f2SJerome Forissier #define SHT_SUNW_SIGNATURE 0x6ffffff6 3059f84b6f2SJerome Forissier #define SHT_GNU_HASH 0x6ffffff6 3069f84b6f2SJerome Forissier #define SHT_GNU_LIBLIST 0x6ffffff7 3079f84b6f2SJerome Forissier #define SHT_SUNW_ANNOTATE 0x6ffffff7 3089f84b6f2SJerome Forissier #define SHT_SUNW_DEBUGSTR 0x6ffffff8 3099f84b6f2SJerome Forissier #define SHT_SUNW_DEBUG 0x6ffffff9 3109f84b6f2SJerome Forissier #define SHT_SUNW_move 0x6ffffffa 3119f84b6f2SJerome Forissier #define SHT_SUNW_COMDAT 0x6ffffffb 3129f84b6f2SJerome Forissier #define SHT_SUNW_syminfo 0x6ffffffc 3139f84b6f2SJerome Forissier #define SHT_SUNW_verdef 0x6ffffffd 3149f84b6f2SJerome Forissier #define SHT_GNU_verdef 0x6ffffffd /* Symbol versions provided */ 3159f84b6f2SJerome Forissier #define SHT_SUNW_verneed 0x6ffffffe 3169f84b6f2SJerome Forissier #define SHT_GNU_verneed 0x6ffffffe /* Symbol versions required */ 3179f84b6f2SJerome Forissier #define SHT_SUNW_versym 0x6fffffff 3189f84b6f2SJerome Forissier #define SHT_GNU_versym 0x6fffffff /* Symbol version table */ 3199f84b6f2SJerome Forissier #define SHT_HISUNW 0x6fffffff 3209f84b6f2SJerome Forissier #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ 3219f84b6f2SJerome Forissier #define SHT_LOPROC 0x70000000 /* reserved range for processor */ 3229f84b6f2SJerome Forissier #define SHT_AMD64_UNWIND 0x70000001 /* unwind information */ 3239f84b6f2SJerome Forissier #define SHT_ARM_EXIDX 0x70000001 /* Exception index table. */ 3249f84b6f2SJerome Forissier #define SHT_ARM_PREEMPTMAP 0x70000002 /* BPABI DLL dynamic linking 3259f84b6f2SJerome Forissier pre-emption map. */ 3269f84b6f2SJerome Forissier #define SHT_ARM_ATTRIBUTES 0x70000003 /* Object file compatibility 3279f84b6f2SJerome Forissier attributes. */ 3289f84b6f2SJerome Forissier #define SHT_ARM_DEBUGOVERLAY 0x70000004 /* See DBGOVL for details. */ 3299f84b6f2SJerome Forissier #define SHT_ARM_OVERLAYSECTION 0x70000005 /* See DBGOVL for details. */ 3309f84b6f2SJerome Forissier #define SHT_MIPS_REGINFO 0x70000006 3319f84b6f2SJerome Forissier #define SHT_MIPS_OPTIONS 0x7000000d 3329f84b6f2SJerome Forissier #define SHT_MIPS_DWARF 0x7000001e /* MIPS gcc uses MIPS_DWARF */ 3339f84b6f2SJerome Forissier #define SHT_HIPROC 0x7fffffff /* specific section header types */ 3349f84b6f2SJerome Forissier #define SHT_LOUSER 0x80000000 /* reserved range for application */ 3359f84b6f2SJerome Forissier #define SHT_HIUSER 0xffffffff /* specific indexes */ 3369f84b6f2SJerome Forissier 3379f84b6f2SJerome Forissier /* Flags for sh_flags. */ 3389f84b6f2SJerome Forissier #define SHF_WRITE 0x1 /* Section contains writable data. */ 3399f84b6f2SJerome Forissier #define SHF_ALLOC 0x2 /* Section occupies memory. */ 3409f84b6f2SJerome Forissier #define SHF_EXECINSTR 0x4 /* Section contains instructions. */ 3419f84b6f2SJerome Forissier #define SHF_MERGE 0x10 /* Section may be merged. */ 3429f84b6f2SJerome Forissier #define SHF_STRINGS 0x20 /* Section contains strings. */ 3439f84b6f2SJerome Forissier #define SHF_INFO_LINK 0x40 /* sh_info holds section index. */ 3449f84b6f2SJerome Forissier #define SHF_LINK_ORDER 0x80 /* Special ordering requirements. */ 3459f84b6f2SJerome Forissier #define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required. */ 3469f84b6f2SJerome Forissier #define SHF_GROUP 0x200 /* Member of section group. */ 3479f84b6f2SJerome Forissier #define SHF_TLS 0x400 /* Section contains TLS data. */ 3489f84b6f2SJerome Forissier #define SHF_MASKOS 0x0ff00000 /* OS-specific semantics. */ 3499f84b6f2SJerome Forissier #define SHF_MASKPROC 0xf0000000 /* Processor-specific semantics. */ 3509f84b6f2SJerome Forissier 3519f84b6f2SJerome Forissier /* Values for p_type. */ 3529f84b6f2SJerome Forissier #define PT_NULL 0 /* Unused entry. */ 3539f84b6f2SJerome Forissier #define PT_LOAD 1 /* Loadable segment. */ 3549f84b6f2SJerome Forissier #define PT_DYNAMIC 2 /* Dynamic linking information segment. */ 3559f84b6f2SJerome Forissier #define PT_INTERP 3 /* Pathname of interpreter. */ 3569f84b6f2SJerome Forissier #define PT_NOTE 4 /* Auxiliary information. */ 3579f84b6f2SJerome Forissier #define PT_SHLIB 5 /* Reserved (not used). */ 3589f84b6f2SJerome Forissier #define PT_PHDR 6 /* Location of program header itself. */ 3599f84b6f2SJerome Forissier #define PT_TLS 7 /* Thread local storage segment */ 3609f84b6f2SJerome Forissier #define PT_LOOS 0x60000000 /* First OS-specific. */ 3619f84b6f2SJerome Forissier #define PT_SUNW_UNWIND 0x6464e550 /* amd64 UNWIND program header */ 3629f84b6f2SJerome Forissier #define PT_GNU_EH_FRAME 0x6474e550 3639f84b6f2SJerome Forissier #define PT_GNU_STACK 0x6474e551 3649f84b6f2SJerome Forissier #define PT_GNU_RELRO 0x6474e552 365481a21ddSRuchika Gupta #define PT_GNU_PROPERTY 0x6474e553 3669f84b6f2SJerome Forissier #define PT_LOSUNW 0x6ffffffa 3679f84b6f2SJerome Forissier #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ 3689f84b6f2SJerome Forissier #define PT_SUNWSTACK 0x6ffffffb /* describes the stack segment */ 3699f84b6f2SJerome Forissier #define PT_SUNWDTRACE 0x6ffffffc /* private */ 3709f84b6f2SJerome Forissier #define PT_SUNWCAP 0x6ffffffd /* hard/soft capabilities segment */ 3719f84b6f2SJerome Forissier #define PT_HISUNW 0x6fffffff 3729f84b6f2SJerome Forissier #define PT_HIOS 0x6fffffff /* Last OS-specific. */ 3739f84b6f2SJerome Forissier #define PT_LOPROC 0x70000000 /* First processor-specific type. */ 3749f84b6f2SJerome Forissier #define PT_ARM_EXIDX 0x70000001 /* .ARM.exidx segment */ 3759f84b6f2SJerome Forissier #define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ 3769f84b6f2SJerome Forissier 3779f84b6f2SJerome Forissier /* Values for p_flags. */ 3789f84b6f2SJerome Forissier #define PF_X 0x1 /* Executable. */ 3799f84b6f2SJerome Forissier #define PF_W 0x2 /* Writable. */ 3809f84b6f2SJerome Forissier #define PF_R 0x4 /* Readable. */ 3819f84b6f2SJerome Forissier #define PF_MASKOS 0x0ff00000 /* Operating system-specific. */ 3829f84b6f2SJerome Forissier #define PF_MASKPROC 0xf0000000 /* Processor-specific. */ 3839f84b6f2SJerome Forissier 3849f84b6f2SJerome Forissier /* Extended program header index. */ 3859f84b6f2SJerome Forissier #define PN_XNUM 0xffff 3869f84b6f2SJerome Forissier 3879f84b6f2SJerome Forissier /* Values for d_tag. */ 3889f84b6f2SJerome Forissier #define DT_NULL 0 /* Terminating entry. */ 3899f84b6f2SJerome Forissier #define DT_NEEDED 1 /* String table offset of a needed shared 3909f84b6f2SJerome Forissier library. */ 3919f84b6f2SJerome Forissier #define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */ 3929f84b6f2SJerome Forissier #define DT_PLTGOT 3 /* Processor-dependent address. */ 3939f84b6f2SJerome Forissier #define DT_HASH 4 /* Address of symbol hash table. */ 3949f84b6f2SJerome Forissier #define DT_STRTAB 5 /* Address of string table. */ 3959f84b6f2SJerome Forissier #define DT_SYMTAB 6 /* Address of symbol table. */ 3969f84b6f2SJerome Forissier #define DT_RELA 7 /* Address of ElfNN_Rela relocations. */ 3979f84b6f2SJerome Forissier #define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */ 3989f84b6f2SJerome Forissier #define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */ 3999f84b6f2SJerome Forissier #define DT_STRSZ 10 /* Size of string table. */ 4009f84b6f2SJerome Forissier #define DT_SYMENT 11 /* Size of each symbol table entry. */ 4019f84b6f2SJerome Forissier #define DT_INIT 12 /* Address of initialization function. */ 4029f84b6f2SJerome Forissier #define DT_FINI 13 /* Address of finalization function. */ 4039f84b6f2SJerome Forissier #define DT_SONAME 14 /* String table offset of shared object 4049f84b6f2SJerome Forissier name. */ 4059f84b6f2SJerome Forissier #define DT_RPATH 15 /* String table offset of library path. [sup] */ 4069f84b6f2SJerome Forissier #define DT_SYMBOLIC 16 /* Indicates "symbolic" linking. [sup] */ 4079f84b6f2SJerome Forissier #define DT_REL 17 /* Address of ElfNN_Rel relocations. */ 4089f84b6f2SJerome Forissier #define DT_RELSZ 18 /* Total size of ElfNN_Rel relocations. */ 4099f84b6f2SJerome Forissier #define DT_RELENT 19 /* Size of each ElfNN_Rel relocation. */ 4109f84b6f2SJerome Forissier #define DT_PLTREL 20 /* Type of relocation used for PLT. */ 4119f84b6f2SJerome Forissier #define DT_DEBUG 21 /* Reserved (not used). */ 4129f84b6f2SJerome Forissier #define DT_TEXTREL 22 /* Indicates there may be relocations in 4139f84b6f2SJerome Forissier non-writable segments. [sup] */ 4149f84b6f2SJerome Forissier #define DT_JMPREL 23 /* Address of PLT relocations. */ 4159f84b6f2SJerome Forissier #define DT_BIND_NOW 24 /* [sup] */ 4169f84b6f2SJerome Forissier #define DT_INIT_ARRAY 25 /* Address of the array of pointers to 4179f84b6f2SJerome Forissier initialization functions */ 4189f84b6f2SJerome Forissier #define DT_FINI_ARRAY 26 /* Address of the array of pointers to 4199f84b6f2SJerome Forissier termination functions */ 4209f84b6f2SJerome Forissier #define DT_INIT_ARRAYSZ 27 /* Size in bytes of the array of 4219f84b6f2SJerome Forissier initialization functions. */ 4229f84b6f2SJerome Forissier #define DT_FINI_ARRAYSZ 28 /* Size in bytes of the array of 4239f84b6f2SJerome Forissier termination functions. */ 4249f84b6f2SJerome Forissier #define DT_RUNPATH 29 /* String table offset of a null-terminated 4259f84b6f2SJerome Forissier library search path string. */ 4269f84b6f2SJerome Forissier #define DT_FLAGS 30 /* Object specific flag values. */ 4279f84b6f2SJerome Forissier #define DT_ENCODING 32 /* Values greater than or equal to DT_ENCODING 4289f84b6f2SJerome Forissier and less than DT_LOOS follow the rules for 4299f84b6f2SJerome Forissier the interpretation of the d_un union 4309f84b6f2SJerome Forissier as follows: even == 'd_ptr', odd == 'd_val' 4319f84b6f2SJerome Forissier or none */ 4329f84b6f2SJerome Forissier #define DT_PREINIT_ARRAY 32 /* Address of the array of pointers to 4339f84b6f2SJerome Forissier pre-initialization functions. */ 4349f84b6f2SJerome Forissier #define DT_PREINIT_ARRAYSZ 33 /* Size in bytes of the array of 4359f84b6f2SJerome Forissier pre-initialization functions. */ 4369f84b6f2SJerome Forissier #define DT_MAXPOSTAGS 34 /* number of positive tags */ 4379f84b6f2SJerome Forissier #define DT_LOOS 0x6000000d /* First OS-specific */ 4389f84b6f2SJerome Forissier #define DT_SUNW_AUXILIARY 0x6000000d /* symbol auxiliary name */ 4399f84b6f2SJerome Forissier #define DT_SUNW_RTLDINF 0x6000000e /* ld.so.1 info (private) */ 4409f84b6f2SJerome Forissier #define DT_SUNW_FILTER 0x6000000f /* symbol filter name */ 4419f84b6f2SJerome Forissier #define DT_SUNW_CAP 0x60000010 /* hardware/software */ 4429f84b6f2SJerome Forissier #define DT_HIOS 0x6ffff000 /* Last OS-specific */ 4439f84b6f2SJerome Forissier 4449f84b6f2SJerome Forissier /* 4459f84b6f2SJerome Forissier * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the 4469f84b6f2SJerome Forissier * Dyn.d_un.d_val field of the Elf*_Dyn structure. 4479f84b6f2SJerome Forissier */ 4489f84b6f2SJerome Forissier #define DT_VALRNGLO 0x6ffffd00 4499f84b6f2SJerome Forissier #define DT_CHECKSUM 0x6ffffdf8 /* elf checksum */ 4509f84b6f2SJerome Forissier #define DT_PLTPADSZ 0x6ffffdf9 /* pltpadding size */ 4519f84b6f2SJerome Forissier #define DT_MOVEENT 0x6ffffdfa /* move table entry size */ 4529f84b6f2SJerome Forissier #define DT_MOVESZ 0x6ffffdfb /* move table size */ 4539f84b6f2SJerome Forissier #define DT_FEATURE_1 0x6ffffdfc /* feature holder */ 4549f84b6f2SJerome Forissier #define DT_POSFLAG_1 0x6ffffdfd /* flags for DT_* entries, effecting */ 4559f84b6f2SJerome Forissier /* the following DT_* entry. */ 4569f84b6f2SJerome Forissier /* See DF_P1_* definitions */ 4579f84b6f2SJerome Forissier #define DT_SYMINSZ 0x6ffffdfe /* syminfo table size (in bytes) */ 4589f84b6f2SJerome Forissier #define DT_SYMINENT 0x6ffffdff /* syminfo entry size (in bytes) */ 4599f84b6f2SJerome Forissier #define DT_VALRNGHI 0x6ffffdff 4609f84b6f2SJerome Forissier 4619f84b6f2SJerome Forissier /* 4629f84b6f2SJerome Forissier * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the 4639f84b6f2SJerome Forissier * Dyn.d_un.d_ptr field of the Elf*_Dyn structure. 4649f84b6f2SJerome Forissier * 4659f84b6f2SJerome Forissier * If any adjustment is made to the ELF object after it has been 4669f84b6f2SJerome Forissier * built, these entries will need to be adjusted. 4679f84b6f2SJerome Forissier */ 4689f84b6f2SJerome Forissier #define DT_ADDRRNGLO 0x6ffffe00 4699f84b6f2SJerome Forissier #define DT_GNU_HASH 0x6ffffef5 /* GNU-style hash table */ 4709f84b6f2SJerome Forissier #define DT_CONFIG 0x6ffffefa /* configuration information */ 4719f84b6f2SJerome Forissier #define DT_DEPAUDIT 0x6ffffefb /* dependency auditing */ 4729f84b6f2SJerome Forissier #define DT_AUDIT 0x6ffffefc /* object auditing */ 4739f84b6f2SJerome Forissier #define DT_PLTPAD 0x6ffffefd /* pltpadding (sparcv9) */ 4749f84b6f2SJerome Forissier #define DT_MOVETAB 0x6ffffefe /* move table */ 4759f84b6f2SJerome Forissier #define DT_SYMINFO 0x6ffffeff /* syminfo table */ 4769f84b6f2SJerome Forissier #define DT_ADDRRNGHI 0x6ffffeff 4779f84b6f2SJerome Forissier 4789f84b6f2SJerome Forissier #define DT_VERSYM 0x6ffffff0 /* Address of versym section. */ 4799f84b6f2SJerome Forissier #define DT_RELACOUNT 0x6ffffff9 /* number of RELATIVE relocations */ 4809f84b6f2SJerome Forissier #define DT_RELCOUNT 0x6ffffffa /* number of RELATIVE relocations */ 4819f84b6f2SJerome Forissier #define DT_FLAGS_1 0x6ffffffb /* state flags - see DF_1_* defs */ 4829f84b6f2SJerome Forissier #define DT_VERDEF 0x6ffffffc /* Address of verdef section. */ 4839f84b6f2SJerome Forissier #define DT_VERDEFNUM 0x6ffffffd /* Number of elems in verdef section */ 4849f84b6f2SJerome Forissier #define DT_VERNEED 0x6ffffffe /* Address of verneed section. */ 4859f84b6f2SJerome Forissier #define DT_VERNEEDNUM 0x6fffffff /* Number of elems in verneed section */ 4869f84b6f2SJerome Forissier 4879f84b6f2SJerome Forissier #define DT_LOPROC 0x70000000 /* First processor-specific type. */ 4889f84b6f2SJerome Forissier #define DT_DEPRECATED_SPARC_REGISTER 0x7000001 4899f84b6f2SJerome Forissier #define DT_AUXILIARY 0x7ffffffd /* shared library auxiliary name */ 4909f84b6f2SJerome Forissier #define DT_USED 0x7ffffffe /* ignored - same as needed */ 4919f84b6f2SJerome Forissier #define DT_FILTER 0x7fffffff /* shared library filter name */ 4929f84b6f2SJerome Forissier #define DT_HIPROC 0x7fffffff /* Last processor-specific type. */ 4939f84b6f2SJerome Forissier 4949f84b6f2SJerome Forissier /* Values for DT_FLAGS */ 4959f84b6f2SJerome Forissier #define DF_ORIGIN 0x0001 /* Indicates that the object being loaded may 4969f84b6f2SJerome Forissier make reference to the $ORIGIN substitution 4979f84b6f2SJerome Forissier string */ 4989f84b6f2SJerome Forissier #define DF_SYMBOLIC 0x0002 /* Indicates "symbolic" linking. */ 4999f84b6f2SJerome Forissier #define DF_TEXTREL 0x0004 /* Indicates there may be relocations in 5009f84b6f2SJerome Forissier non-writable segments. */ 5019f84b6f2SJerome Forissier #define DF_BIND_NOW 0x0008 /* Indicates that the dynamic linker should 5029f84b6f2SJerome Forissier process all relocations for the object 5039f84b6f2SJerome Forissier containing this entry before transferring 5049f84b6f2SJerome Forissier control to the program. */ 5059f84b6f2SJerome Forissier #define DF_STATIC_TLS 0x0010 /* Indicates that the shared object or 5069f84b6f2SJerome Forissier executable contains code using a static 5079f84b6f2SJerome Forissier thread-local storage scheme. */ 5089f84b6f2SJerome Forissier 5099f84b6f2SJerome Forissier /* Values for DT_FLAGS_1 */ 5109f84b6f2SJerome Forissier #define DF_1_BIND_NOW 0x00000001 /* Same as DF_BIND_NOW */ 5119f84b6f2SJerome Forissier #define DF_1_GLOBAL 0x00000002 /* Set the RTLD_GLOBAL for object */ 5129f84b6f2SJerome Forissier #define DF_1_NODELETE 0x00000008 /* Set the RTLD_NODELETE for object */ 5139f84b6f2SJerome Forissier #define DF_1_LOADFLTR 0x00000010 /* Immediate loading of filtees */ 5149f84b6f2SJerome Forissier #define DF_1_NOOPEN 0x00000040 /* Do not allow loading on dlopen() */ 5159f84b6f2SJerome Forissier #define DF_1_ORIGIN 0x00000080 /* Process $ORIGIN */ 5169f84b6f2SJerome Forissier #define DF_1_INTERPOSE 0x00000400 /* Interpose all objects but main */ 5179f84b6f2SJerome Forissier #define DF_1_NODEFLIB 0x00000800 /* Do not search default paths */ 5189f84b6f2SJerome Forissier 519481a21ddSRuchika Gupta /* Note section names */ 520481a21ddSRuchika Gupta #define ELF_NOTE_FREEBSD "FreeBSD" 521481a21ddSRuchika Gupta #define ELF_NOTE_NETBSD "NetBSD" 522481a21ddSRuchika Gupta #define ELF_NOTE_SOLARIS "SUNW Solaris" 523481a21ddSRuchika Gupta #define ELF_NOTE_GNU "GNU" 524481a21ddSRuchika Gupta 5259f84b6f2SJerome Forissier /* Values for n_type. Used in core files. */ 5269f84b6f2SJerome Forissier #define NT_PRSTATUS 1 /* Process status. */ 5279f84b6f2SJerome Forissier #define NT_FPREGSET 2 /* Floating point registers. */ 5289f84b6f2SJerome Forissier #define NT_PRPSINFO 3 /* Process state info. */ 5299f84b6f2SJerome Forissier #define NT_THRMISC 7 /* Thread miscellaneous info. */ 5309f84b6f2SJerome Forissier #define NT_PROCSTAT_PROC 8 /* Procstat proc data. */ 5319f84b6f2SJerome Forissier #define NT_PROCSTAT_FILES 9 /* Procstat files data. */ 5329f84b6f2SJerome Forissier #define NT_PROCSTAT_VMMAP 10 /* Procstat vmmap data. */ 5339f84b6f2SJerome Forissier #define NT_PROCSTAT_GROUPS 11 /* Procstat groups data. */ 5349f84b6f2SJerome Forissier #define NT_PROCSTAT_UMASK 12 /* Procstat umask data. */ 5359f84b6f2SJerome Forissier #define NT_PROCSTAT_RLIMIT 13 /* Procstat rlimit data. */ 5369f84b6f2SJerome Forissier #define NT_PROCSTAT_OSREL 14 /* Procstat osreldate data. */ 5379f84b6f2SJerome Forissier #define NT_PROCSTAT_PSSTRINGS 15 /* Procstat ps_strings data. */ 5389f84b6f2SJerome Forissier #define NT_PROCSTAT_AUXV 16 /* Procstat auxv data. */ 5399f84b6f2SJerome Forissier 540481a21ddSRuchika Gupta /* GNU note types. */ 541481a21ddSRuchika Gupta #define NT_GNU_ABI_TAG 1 542481a21ddSRuchika Gupta #define NT_GNU_HWCAP 2 543481a21ddSRuchika Gupta #define NT_GNU_BUILD_ID 3 544481a21ddSRuchika Gupta #define NT_GNU_GOLD_VERSION 4 545481a21ddSRuchika Gupta #define NT_GNU_PROPERTY_TYPE_0 5 546481a21ddSRuchika Gupta 547481a21ddSRuchika Gupta #define GNU_PROPERTY_LOPROC 0xc0000000 548481a21ddSRuchika Gupta #define GNU_PROPERTY_HIPROC 0xdfffffff 549481a21ddSRuchika Gupta 550481a21ddSRuchika Gupta #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 551481a21ddSRuchika Gupta 552481a21ddSRuchika Gupta #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 0x00000001 553481a21ddSRuchika Gupta #define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 0x00000002 554481a21ddSRuchika Gupta 555481a21ddSRuchika Gupta #define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 556481a21ddSRuchika Gupta 5579f84b6f2SJerome Forissier /* Symbol Binding - ELFNN_ST_BIND - st_info */ 5589f84b6f2SJerome Forissier #define STB_LOCAL 0 /* Local symbol */ 5599f84b6f2SJerome Forissier #define STB_GLOBAL 1 /* Global symbol */ 5609f84b6f2SJerome Forissier #define STB_WEAK 2 /* like global - lower precedence */ 5619f84b6f2SJerome Forissier #define STB_LOOS 10 /* Reserved range for operating system */ 5629f84b6f2SJerome Forissier #define STB_HIOS 12 /* specific semantics. */ 5639f84b6f2SJerome Forissier #define STB_LOPROC 13 /* reserved range for processor */ 5649f84b6f2SJerome Forissier #define STB_HIPROC 15 /* specific semantics. */ 5659f84b6f2SJerome Forissier 5669f84b6f2SJerome Forissier /* Symbol type - ELFNN_ST_TYPE - st_info */ 5679f84b6f2SJerome Forissier #define STT_NOTYPE 0 /* Unspecified type. */ 5689f84b6f2SJerome Forissier #define STT_OBJECT 1 /* Data object. */ 5699f84b6f2SJerome Forissier #define STT_FUNC 2 /* Function. */ 5709f84b6f2SJerome Forissier #define STT_SECTION 3 /* Section. */ 5719f84b6f2SJerome Forissier #define STT_FILE 4 /* Source file. */ 5729f84b6f2SJerome Forissier #define STT_COMMON 5 /* Uninitialized common block. */ 5739f84b6f2SJerome Forissier #define STT_TLS 6 /* TLS object. */ 5749f84b6f2SJerome Forissier #define STT_NUM 7 5759f84b6f2SJerome Forissier #define STT_LOOS 10 /* Reserved range for operating system */ 5769f84b6f2SJerome Forissier #define STT_GNU_IFUNC 10 5779f84b6f2SJerome Forissier #define STT_HIOS 12 /* specific semantics. */ 5789f84b6f2SJerome Forissier #define STT_LOPROC 13 /* reserved range for processor */ 5799f84b6f2SJerome Forissier #define STT_HIPROC 15 /* specific semantics. */ 5809f84b6f2SJerome Forissier 5819f84b6f2SJerome Forissier /* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */ 5829f84b6f2SJerome Forissier #define STV_DEFAULT 0x0 /* Default visibility (see binding). */ 5839f84b6f2SJerome Forissier #define STV_INTERNAL 0x1 /* Special meaning in relocatable objects. */ 5849f84b6f2SJerome Forissier #define STV_HIDDEN 0x2 /* Not visible. */ 5859f84b6f2SJerome Forissier #define STV_PROTECTED 0x3 /* Visible but not preemptible. */ 5869f84b6f2SJerome Forissier #define STV_EXPORTED 0x4 5879f84b6f2SJerome Forissier #define STV_SINGLETON 0x5 5889f84b6f2SJerome Forissier #define STV_ELIMINATE 0x6 5899f84b6f2SJerome Forissier 5909f84b6f2SJerome Forissier /* Special symbol table indexes. */ 5919f84b6f2SJerome Forissier #define STN_UNDEF 0 /* Undefined symbol index. */ 5929f84b6f2SJerome Forissier 5939f84b6f2SJerome Forissier /* Symbol versioning flags. */ 5949f84b6f2SJerome Forissier #define VER_DEF_CURRENT 1 5959f84b6f2SJerome Forissier #define VER_DEF_IDX(x) VER_NDX(x) 5969f84b6f2SJerome Forissier 5979f84b6f2SJerome Forissier #define VER_FLG_BASE 0x01 5989f84b6f2SJerome Forissier #define VER_FLG_WEAK 0x02 5999f84b6f2SJerome Forissier 6009f84b6f2SJerome Forissier #define VER_NEED_CURRENT 1 6019f84b6f2SJerome Forissier #define VER_NEED_WEAK (1u << 15) 6029f84b6f2SJerome Forissier #define VER_NEED_HIDDEN VER_NDX_HIDDEN 6039f84b6f2SJerome Forissier #define VER_NEED_IDX(x) VER_NDX(x) 6049f84b6f2SJerome Forissier 6059f84b6f2SJerome Forissier #define VER_NDX_LOCAL 0 6069f84b6f2SJerome Forissier #define VER_NDX_GLOBAL 1 6079f84b6f2SJerome Forissier #define VER_NDX_GIVEN 2 6089f84b6f2SJerome Forissier 6099f84b6f2SJerome Forissier #define VER_NDX_HIDDEN (1u << 15) 6109f84b6f2SJerome Forissier #define VER_NDX(x) ((x) & ~(1u << 15)) 6119f84b6f2SJerome Forissier 6129f84b6f2SJerome Forissier #define CA_SUNW_NULL 0 6139f84b6f2SJerome Forissier #define CA_SUNW_HW_1 1 /* first hardware capabilities entry */ 6149f84b6f2SJerome Forissier #define CA_SUNW_SF_1 2 /* first software capabilities entry */ 6159f84b6f2SJerome Forissier 6169f84b6f2SJerome Forissier /* 6179f84b6f2SJerome Forissier * Syminfo flag values 6189f84b6f2SJerome Forissier */ 6199f84b6f2SJerome Forissier #define SYMINFO_FLG_DIRECT 0x0001 /* symbol ref has direct association */ 6209f84b6f2SJerome Forissier /* to object containing defn. */ 6219f84b6f2SJerome Forissier #define SYMINFO_FLG_PASSTHRU 0x0002 /* ignored - see SYMINFO_FLG_FILTER */ 6229f84b6f2SJerome Forissier #define SYMINFO_FLG_COPY 0x0004 /* symbol is a copy-reloc */ 6239f84b6f2SJerome Forissier #define SYMINFO_FLG_LAZYLOAD 0x0008 /* object containing defn should be */ 6249f84b6f2SJerome Forissier /* lazily-loaded */ 6259f84b6f2SJerome Forissier #define SYMINFO_FLG_DIRECTBIND 0x0010 /* ref should be bound directly to */ 6269f84b6f2SJerome Forissier /* object containing defn. */ 6279f84b6f2SJerome Forissier #define SYMINFO_FLG_NOEXTDIRECT 0x0020 /* don't let an external reference */ 6289f84b6f2SJerome Forissier /* directly bind to this symbol */ 6299f84b6f2SJerome Forissier #define SYMINFO_FLG_FILTER 0x0002 /* symbol ref is associated to a */ 6309f84b6f2SJerome Forissier #define SYMINFO_FLG_AUXILIARY 0x0040 /* standard or auxiliary filter */ 6319f84b6f2SJerome Forissier 6329f84b6f2SJerome Forissier /* 6339f84b6f2SJerome Forissier * Syminfo.si_boundto values. 6349f84b6f2SJerome Forissier */ 6359f84b6f2SJerome Forissier #define SYMINFO_BT_SELF 0xffff /* symbol bound to self */ 6369f84b6f2SJerome Forissier #define SYMINFO_BT_PARENT 0xfffe /* symbol bound to parent */ 6379f84b6f2SJerome Forissier #define SYMINFO_BT_NONE 0xfffd /* no special symbol binding */ 6389f84b6f2SJerome Forissier #define SYMINFO_BT_EXTERN 0xfffc /* symbol defined as external */ 6399f84b6f2SJerome Forissier #define SYMINFO_BT_LOWRESERVE 0xff00 /* beginning of reserved entries */ 6409f84b6f2SJerome Forissier 6419f84b6f2SJerome Forissier /* 6429f84b6f2SJerome Forissier * Syminfo version values. 6439f84b6f2SJerome Forissier */ 6449f84b6f2SJerome Forissier #define SYMINFO_NONE 0 /* Syminfo version */ 6459f84b6f2SJerome Forissier #define SYMINFO_CURRENT 1 6469f84b6f2SJerome Forissier #define SYMINFO_NUM 2 6479f84b6f2SJerome Forissier 6489f84b6f2SJerome Forissier /* 6499f84b6f2SJerome Forissier * Relocation types. 6509f84b6f2SJerome Forissier * 6519f84b6f2SJerome Forissier * All machine architectures are defined here to allow tools on one to 6529f84b6f2SJerome Forissier * handle others. 6539f84b6f2SJerome Forissier */ 6549f84b6f2SJerome Forissier 6559f84b6f2SJerome Forissier #define R_386_NONE 0 /* No relocation. */ 6569f84b6f2SJerome Forissier #define R_386_32 1 /* Add symbol value. */ 6579f84b6f2SJerome Forissier #define R_386_PC32 2 /* Add PC-relative symbol value. */ 6589f84b6f2SJerome Forissier #define R_386_GOT32 3 /* Add PC-relative GOT offset. */ 6599f84b6f2SJerome Forissier #define R_386_PLT32 4 /* Add PC-relative PLT offset. */ 6609f84b6f2SJerome Forissier #define R_386_COPY 5 /* Copy data from shared object. */ 6619f84b6f2SJerome Forissier #define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ 6629f84b6f2SJerome Forissier #define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ 6639f84b6f2SJerome Forissier #define R_386_RELATIVE 8 /* Add load address of shared object. */ 6649f84b6f2SJerome Forissier #define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ 6659f84b6f2SJerome Forissier #define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ 6669f84b6f2SJerome Forissier #define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ 6679f84b6f2SJerome Forissier #define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ 6689f84b6f2SJerome Forissier #define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ 6699f84b6f2SJerome Forissier #define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ 6709f84b6f2SJerome Forissier #define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ 6719f84b6f2SJerome Forissier #define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ 6729f84b6f2SJerome Forissier #define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ 6739f84b6f2SJerome Forissier #define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ 6749f84b6f2SJerome Forissier #define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ 6759f84b6f2SJerome Forissier #define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ 6769f84b6f2SJerome Forissier #define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ 6779f84b6f2SJerome Forissier #define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ 6789f84b6f2SJerome Forissier #define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ 6799f84b6f2SJerome Forissier #define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ 6809f84b6f2SJerome Forissier #define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ 6819f84b6f2SJerome Forissier #define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ 6829f84b6f2SJerome Forissier #define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ 6839f84b6f2SJerome Forissier #define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ 6849f84b6f2SJerome Forissier #define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ 6859f84b6f2SJerome Forissier #define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ 6869f84b6f2SJerome Forissier #define R_386_IRELATIVE 42 /* PLT entry resolved indirectly at runtime */ 6879f84b6f2SJerome Forissier 6888fab4371Sliushiwei #define R_RISCV_NONE 0 /* No relocation. */ 6898fab4371Sliushiwei #define R_RISCV_64 2 /* 64-bit relocation. */ 6908fab4371Sliushiwei #define R_RISCV_RELATIVE 3 /* Adjust a link address (A) to its 6918fab4371Sliushiwei load address (B + A). */ 6928fab4371Sliushiwei #define R_RISCV_JUMP_SLOT 5 /* Indicates the symbol associated 6938fab4371Sliushiwei with a PLT entry. */ 6948fab4371Sliushiwei 6959f84b6f2SJerome Forissier #define R_AARCH64_NONE 0 /* No relocation. */ 6969f84b6f2SJerome Forissier #define R_AARCH64_ABS64 257 6979f84b6f2SJerome Forissier #define R_AARCH64_GLOB_DAT 1025 /* Set GOT entry to data address. */ 6989f84b6f2SJerome Forissier #define R_AARCH64_JUMP_SLOT 1026 /* Set GOT entry to code address. */ 6999f84b6f2SJerome Forissier #define R_AARCH64_RELATIVE 1027 /* Add load address of shared object. */ 7009f84b6f2SJerome Forissier #define R_AARCH64_TLS_TPREL 1030 /* Offset of the TLS block in the TCB */ 7017bc927faSJerome Forissier #define R_AARCH64_TLSDESC 1031 /* TLS descriptor to be filled */ 7029f84b6f2SJerome Forissier 7039f84b6f2SJerome Forissier #define R_ARM_NONE 0 /* No relocation. */ 7049f84b6f2SJerome Forissier #define R_ARM_PC24 1 7059f84b6f2SJerome Forissier #define R_ARM_ABS32 2 7069f84b6f2SJerome Forissier #define R_ARM_REL32 3 7079f84b6f2SJerome Forissier #define R_ARM_PC13 4 7089f84b6f2SJerome Forissier #define R_ARM_ABS16 5 7099f84b6f2SJerome Forissier #define R_ARM_ABS12 6 7109f84b6f2SJerome Forissier #define R_ARM_THM_ABS5 7 7119f84b6f2SJerome Forissier #define R_ARM_ABS8 8 7129f84b6f2SJerome Forissier #define R_ARM_SBREL32 9 7139f84b6f2SJerome Forissier #define R_ARM_THM_PC22 10 7149f84b6f2SJerome Forissier #define R_ARM_THM_PC8 11 7159f84b6f2SJerome Forissier #define R_ARM_AMP_VCALL9 12 7169f84b6f2SJerome Forissier #define R_ARM_SWI24 13 7179f84b6f2SJerome Forissier #define R_ARM_THM_SWI8 14 7189f84b6f2SJerome Forissier #define R_ARM_XPC25 15 7199f84b6f2SJerome Forissier #define R_ARM_THM_XPC22 16 7209f84b6f2SJerome Forissier /* TLS relocations */ 7219f84b6f2SJerome Forissier #define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */ 7229f84b6f2SJerome Forissier #define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */ 7239f84b6f2SJerome Forissier #define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */ 7249f84b6f2SJerome Forissier #define R_ARM_COPY 20 /* Copy data from shared object. */ 7259f84b6f2SJerome Forissier #define R_ARM_GLOB_DAT 21 /* Set GOT entry to data address. */ 7269f84b6f2SJerome Forissier #define R_ARM_JUMP_SLOT 22 /* Set GOT entry to code address. */ 7279f84b6f2SJerome Forissier #define R_ARM_RELATIVE 23 /* Add load address of shared object. */ 7289f84b6f2SJerome Forissier #define R_ARM_GOTOFF 24 /* Add GOT-relative symbol address. */ 7299f84b6f2SJerome Forissier #define R_ARM_GOTPC 25 /* Add PC-relative GOT table address. */ 7309f84b6f2SJerome Forissier #define R_ARM_GOT32 26 /* Add PC-relative GOT offset. */ 7319f84b6f2SJerome Forissier #define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */ 7329f84b6f2SJerome Forissier #define R_ARM_GNU_VTENTRY 100 7339f84b6f2SJerome Forissier #define R_ARM_GNU_VTINHERIT 101 7349f84b6f2SJerome Forissier #define R_ARM_RSBREL32 250 7359f84b6f2SJerome Forissier #define R_ARM_THM_RPC22 251 7369f84b6f2SJerome Forissier #define R_ARM_RREL32 252 7379f84b6f2SJerome Forissier #define R_ARM_RABS32 253 7389f84b6f2SJerome Forissier #define R_ARM_RPC24 254 7399f84b6f2SJerome Forissier #define R_ARM_RBASE 255 7409f84b6f2SJerome Forissier 7419f84b6f2SJerome Forissier /* Name Value Field Calculation */ 7429f84b6f2SJerome Forissier #define R_IA_64_NONE 0 /* None */ 7439f84b6f2SJerome Forissier #define R_IA_64_IMM14 0x21 /* immediate14 S + A */ 7449f84b6f2SJerome Forissier #define R_IA_64_IMM22 0x22 /* immediate22 S + A */ 7459f84b6f2SJerome Forissier #define R_IA_64_IMM64 0x23 /* immediate64 S + A */ 7469f84b6f2SJerome Forissier #define R_IA_64_DIR32MSB 0x24 /* word32 MSB S + A */ 7479f84b6f2SJerome Forissier #define R_IA_64_DIR32LSB 0x25 /* word32 LSB S + A */ 7489f84b6f2SJerome Forissier #define R_IA_64_DIR64MSB 0x26 /* word64 MSB S + A */ 7499f84b6f2SJerome Forissier #define R_IA_64_DIR64LSB 0x27 /* word64 LSB S + A */ 7509f84b6f2SJerome Forissier #define R_IA_64_GPREL22 0x2a /* immediate22 @gprel(S + A) */ 7519f84b6f2SJerome Forissier #define R_IA_64_GPREL64I 0x2b /* immediate64 @gprel(S + A) */ 7529f84b6f2SJerome Forissier #define R_IA_64_GPREL32MSB 0x2c /* word32 MSB @gprel(S + A) */ 7539f84b6f2SJerome Forissier #define R_IA_64_GPREL32LSB 0x2d /* word32 LSB @gprel(S + A) */ 7549f84b6f2SJerome Forissier #define R_IA_64_GPREL64MSB 0x2e /* word64 MSB @gprel(S + A) */ 7559f84b6f2SJerome Forissier #define R_IA_64_GPREL64LSB 0x2f /* word64 LSB @gprel(S + A) */ 7569f84b6f2SJerome Forissier #define R_IA_64_LTOFF22 0x32 /* immediate22 @ltoff(S + A) */ 7579f84b6f2SJerome Forissier #define R_IA_64_LTOFF64I 0x33 /* immediate64 @ltoff(S + A) */ 7589f84b6f2SJerome Forissier #define R_IA_64_PLTOFF22 0x3a /* immediate22 @pltoff(S + A) */ 7599f84b6f2SJerome Forissier #define R_IA_64_PLTOFF64I 0x3b /* immediate64 @pltoff(S + A) */ 7609f84b6f2SJerome Forissier #define R_IA_64_PLTOFF64MSB 0x3e /* word64 MSB @pltoff(S + A) */ 7619f84b6f2SJerome Forissier #define R_IA_64_PLTOFF64LSB 0x3f /* word64 LSB @pltoff(S + A) */ 7629f84b6f2SJerome Forissier #define R_IA_64_FPTR64I 0x43 /* immediate64 @fptr(S + A) */ 7639f84b6f2SJerome Forissier #define R_IA_64_FPTR32MSB 0x44 /* word32 MSB @fptr(S + A) */ 7649f84b6f2SJerome Forissier #define R_IA_64_FPTR32LSB 0x45 /* word32 LSB @fptr(S + A) */ 7659f84b6f2SJerome Forissier #define R_IA_64_FPTR64MSB 0x46 /* word64 MSB @fptr(S + A) */ 7669f84b6f2SJerome Forissier #define R_IA_64_FPTR64LSB 0x47 /* word64 LSB @fptr(S + A) */ 7679f84b6f2SJerome Forissier #define R_IA_64_PCREL60B 0x48 /* immediate60 form1 S + A - P */ 7689f84b6f2SJerome Forissier #define R_IA_64_PCREL21B 0x49 /* immediate21 form1 S + A - P */ 7699f84b6f2SJerome Forissier #define R_IA_64_PCREL21M 0x4a /* immediate21 form2 S + A - P */ 7709f84b6f2SJerome Forissier #define R_IA_64_PCREL21F 0x4b /* immediate21 form3 S + A - P */ 7719f84b6f2SJerome Forissier #define R_IA_64_PCREL32MSB 0x4c /* word32 MSB S + A - P */ 7729f84b6f2SJerome Forissier #define R_IA_64_PCREL32LSB 0x4d /* word32 LSB S + A - P */ 7739f84b6f2SJerome Forissier #define R_IA_64_PCREL64MSB 0x4e /* word64 MSB S + A - P */ 7749f84b6f2SJerome Forissier #define R_IA_64_PCREL64LSB 0x4f /* word64 LSB S + A - P */ 7759f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR22 0x52 /* immediate22 @ltoff(@fptr(S + A)) */ 7769f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR64I 0x53 /* immediate64 @ltoff(@fptr(S + A)) */ 7779f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR32MSB 0x54 /* word32 MSB @ltoff(@fptr(S + A)) */ 7789f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR32LSB 0x55 /* word32 LSB @ltoff(@fptr(S + A)) */ 7799f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR64MSB 0x56 /* word64 MSB @ltoff(@fptr(S + A)) */ 7809f84b6f2SJerome Forissier #define R_IA_64_LTOFF_FPTR64LSB 0x57 /* word64 LSB @ltoff(@fptr(S + A)) */ 7819f84b6f2SJerome Forissier #define R_IA_64_SEGREL32MSB 0x5c /* word32 MSB @segrel(S + A) */ 7829f84b6f2SJerome Forissier #define R_IA_64_SEGREL32LSB 0x5d /* word32 LSB @segrel(S + A) */ 7839f84b6f2SJerome Forissier #define R_IA_64_SEGREL64MSB 0x5e /* word64 MSB @segrel(S + A) */ 7849f84b6f2SJerome Forissier #define R_IA_64_SEGREL64LSB 0x5f /* word64 LSB @segrel(S + A) */ 7859f84b6f2SJerome Forissier #define R_IA_64_SECREL32MSB 0x64 /* word32 MSB @secrel(S + A) */ 7869f84b6f2SJerome Forissier #define R_IA_64_SECREL32LSB 0x65 /* word32 LSB @secrel(S + A) */ 7879f84b6f2SJerome Forissier #define R_IA_64_SECREL64MSB 0x66 /* word64 MSB @secrel(S + A) */ 7889f84b6f2SJerome Forissier #define R_IA_64_SECREL64LSB 0x67 /* word64 LSB @secrel(S + A) */ 7899f84b6f2SJerome Forissier #define R_IA_64_REL32MSB 0x6c /* word32 MSB BD + A */ 7909f84b6f2SJerome Forissier #define R_IA_64_REL32LSB 0x6d /* word32 LSB BD + A */ 7919f84b6f2SJerome Forissier #define R_IA_64_REL64MSB 0x6e /* word64 MSB BD + A */ 7929f84b6f2SJerome Forissier #define R_IA_64_REL64LSB 0x6f /* word64 LSB BD + A */ 7939f84b6f2SJerome Forissier #define R_IA_64_LTV32MSB 0x74 /* word32 MSB S + A */ 7949f84b6f2SJerome Forissier #define R_IA_64_LTV32LSB 0x75 /* word32 LSB S + A */ 7959f84b6f2SJerome Forissier #define R_IA_64_LTV64MSB 0x76 /* word64 MSB S + A */ 7969f84b6f2SJerome Forissier #define R_IA_64_LTV64LSB 0x77 /* word64 LSB S + A */ 7979f84b6f2SJerome Forissier #define R_IA_64_PCREL21BI 0x79 /* immediate21 form1 S + A - P */ 7989f84b6f2SJerome Forissier #define R_IA_64_PCREL22 0x7a /* immediate22 S + A - P */ 7999f84b6f2SJerome Forissier #define R_IA_64_PCREL64I 0x7b /* immediate64 S + A - P */ 8009f84b6f2SJerome Forissier #define R_IA_64_IPLTMSB 0x80 /* function descriptor MSB special */ 8019f84b6f2SJerome Forissier #define R_IA_64_IPLTLSB 0x81 /* function descriptor LSB speciaal */ 8029f84b6f2SJerome Forissier #define R_IA_64_SUB 0x85 /* immediate64 A - S */ 8039f84b6f2SJerome Forissier #define R_IA_64_LTOFF22X 0x86 /* immediate22 special */ 8049f84b6f2SJerome Forissier #define R_IA_64_LDXMOV 0x87 /* immediate22 special */ 8059f84b6f2SJerome Forissier #define R_IA_64_TPREL14 0x91 /* imm14 @tprel(S + A) */ 8069f84b6f2SJerome Forissier #define R_IA_64_TPREL22 0x92 /* imm22 @tprel(S + A) */ 8079f84b6f2SJerome Forissier #define R_IA_64_TPREL64I 0x93 /* imm64 @tprel(S + A) */ 8089f84b6f2SJerome Forissier #define R_IA_64_TPREL64MSB 0x96 /* word64 MSB @tprel(S + A) */ 8099f84b6f2SJerome Forissier #define R_IA_64_TPREL64LSB 0x97 /* word64 LSB @tprel(S + A) */ 8109f84b6f2SJerome Forissier #define R_IA_64_LTOFF_TPREL22 0x9a /* imm22 @ltoff(@tprel(S+A)) */ 8119f84b6f2SJerome Forissier #define R_IA_64_DTPMOD64MSB 0xa6 /* word64 MSB @dtpmod(S + A) */ 8129f84b6f2SJerome Forissier #define R_IA_64_DTPMOD64LSB 0xa7 /* word64 LSB @dtpmod(S + A) */ 8139f84b6f2SJerome Forissier #define R_IA_64_LTOFF_DTPMOD22 0xaa /* imm22 @ltoff(@dtpmod(S+A)) */ 8149f84b6f2SJerome Forissier #define R_IA_64_DTPREL14 0xb1 /* imm14 @dtprel(S + A) */ 8159f84b6f2SJerome Forissier #define R_IA_64_DTPREL22 0xb2 /* imm22 @dtprel(S + A) */ 8169f84b6f2SJerome Forissier #define R_IA_64_DTPREL64I 0xb3 /* imm64 @dtprel(S + A) */ 8179f84b6f2SJerome Forissier #define R_IA_64_DTPREL32MSB 0xb4 /* word32 MSB @dtprel(S + A) */ 8189f84b6f2SJerome Forissier #define R_IA_64_DTPREL32LSB 0xb5 /* word32 LSB @dtprel(S + A) */ 8199f84b6f2SJerome Forissier #define R_IA_64_DTPREL64MSB 0xb6 /* word64 MSB @dtprel(S + A) */ 8209f84b6f2SJerome Forissier #define R_IA_64_DTPREL64LSB 0xb7 /* word64 LSB @dtprel(S + A) */ 8219f84b6f2SJerome Forissier #define R_IA_64_LTOFF_DTPREL22 0xba /* imm22 @ltoff(@dtprel(S+A)) */ 8229f84b6f2SJerome Forissier 8239f84b6f2SJerome Forissier #define R_MIPS_NONE 0 /* No reloc */ 8249f84b6f2SJerome Forissier #define R_MIPS_16 1 /* Direct 16 bit */ 8259f84b6f2SJerome Forissier #define R_MIPS_32 2 /* Direct 32 bit */ 8269f84b6f2SJerome Forissier #define R_MIPS_REL32 3 /* PC relative 32 bit */ 8279f84b6f2SJerome Forissier #define R_MIPS_26 4 /* Direct 26 bit shifted */ 8289f84b6f2SJerome Forissier #define R_MIPS_HI16 5 /* High 16 bit */ 8299f84b6f2SJerome Forissier #define R_MIPS_LO16 6 /* Low 16 bit */ 8309f84b6f2SJerome Forissier #define R_MIPS_GPREL16 7 /* GP relative 16 bit */ 8319f84b6f2SJerome Forissier #define R_MIPS_LITERAL 8 /* 16 bit literal entry */ 8329f84b6f2SJerome Forissier #define R_MIPS_GOT16 9 /* 16 bit GOT entry */ 8339f84b6f2SJerome Forissier #define R_MIPS_PC16 10 /* PC relative 16 bit */ 8349f84b6f2SJerome Forissier #define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */ 8359f84b6f2SJerome Forissier #define R_MIPS_GPREL32 12 /* GP relative 32 bit */ 8369f84b6f2SJerome Forissier #define R_MIPS_64 18 /* Direct 64 bit */ 8379f84b6f2SJerome Forissier #define R_MIPS_GOTHI16 21 /* GOT HI 16 bit */ 8389f84b6f2SJerome Forissier #define R_MIPS_GOTLO16 22 /* GOT LO 16 bit */ 8399f84b6f2SJerome Forissier #define R_MIPS_CALLHI16 30 /* upper 16 bit GOT entry for function */ 8409f84b6f2SJerome Forissier #define R_MIPS_CALLLO16 31 /* lower 16 bit GOT entry for function */ 8419f84b6f2SJerome Forissier 8429f84b6f2SJerome Forissier #define R_PPC_NONE 0 /* No relocation. */ 8439f84b6f2SJerome Forissier #define R_PPC_ADDR32 1 8449f84b6f2SJerome Forissier #define R_PPC_ADDR24 2 8459f84b6f2SJerome Forissier #define R_PPC_ADDR16 3 8469f84b6f2SJerome Forissier #define R_PPC_ADDR16_LO 4 8479f84b6f2SJerome Forissier #define R_PPC_ADDR16_HI 5 8489f84b6f2SJerome Forissier #define R_PPC_ADDR16_HA 6 8499f84b6f2SJerome Forissier #define R_PPC_ADDR14 7 8509f84b6f2SJerome Forissier #define R_PPC_ADDR14_BRTAKEN 8 8519f84b6f2SJerome Forissier #define R_PPC_ADDR14_BRNTAKEN 9 8529f84b6f2SJerome Forissier #define R_PPC_REL24 10 8539f84b6f2SJerome Forissier #define R_PPC_REL14 11 8549f84b6f2SJerome Forissier #define R_PPC_REL14_BRTAKEN 12 8559f84b6f2SJerome Forissier #define R_PPC_REL14_BRNTAKEN 13 8569f84b6f2SJerome Forissier #define R_PPC_GOT16 14 8579f84b6f2SJerome Forissier #define R_PPC_GOT16_LO 15 8589f84b6f2SJerome Forissier #define R_PPC_GOT16_HI 16 8599f84b6f2SJerome Forissier #define R_PPC_GOT16_HA 17 8609f84b6f2SJerome Forissier #define R_PPC_PLTREL24 18 8619f84b6f2SJerome Forissier #define R_PPC_COPY 19 8629f84b6f2SJerome Forissier #define R_PPC_GLOB_DAT 20 8639f84b6f2SJerome Forissier #define R_PPC_JMP_SLOT 21 8649f84b6f2SJerome Forissier #define R_PPC_RELATIVE 22 8659f84b6f2SJerome Forissier #define R_PPC_LOCAL24PC 23 8669f84b6f2SJerome Forissier #define R_PPC_UADDR32 24 8679f84b6f2SJerome Forissier #define R_PPC_UADDR16 25 8689f84b6f2SJerome Forissier #define R_PPC_REL32 26 8699f84b6f2SJerome Forissier #define R_PPC_PLT32 27 8709f84b6f2SJerome Forissier #define R_PPC_PLTREL32 28 8719f84b6f2SJerome Forissier #define R_PPC_PLT16_LO 29 8729f84b6f2SJerome Forissier #define R_PPC_PLT16_HI 30 8739f84b6f2SJerome Forissier #define R_PPC_PLT16_HA 31 8749f84b6f2SJerome Forissier #define R_PPC_SDAREL16 32 8759f84b6f2SJerome Forissier #define R_PPC_SECTOFF 33 8769f84b6f2SJerome Forissier #define R_PPC_SECTOFF_LO 34 8779f84b6f2SJerome Forissier #define R_PPC_SECTOFF_HI 35 8789f84b6f2SJerome Forissier #define R_PPC_SECTOFF_HA 36 8799f84b6f2SJerome Forissier 8809f84b6f2SJerome Forissier /* 8819f84b6f2SJerome Forissier * 64-bit relocations 8829f84b6f2SJerome Forissier */ 8839f84b6f2SJerome Forissier #define R_PPC64_ADDR64 38 8849f84b6f2SJerome Forissier #define R_PPC64_ADDR16_HIGHER 39 8859f84b6f2SJerome Forissier #define R_PPC64_ADDR16_HIGHERA 40 8869f84b6f2SJerome Forissier #define R_PPC64_ADDR16_HIGHEST 41 8879f84b6f2SJerome Forissier #define R_PPC64_ADDR16_HIGHESTA 42 8889f84b6f2SJerome Forissier #define R_PPC64_UADDR64 43 8899f84b6f2SJerome Forissier #define R_PPC64_REL64 44 8909f84b6f2SJerome Forissier #define R_PPC64_PLT64 45 8919f84b6f2SJerome Forissier #define R_PPC64_PLTREL64 46 8929f84b6f2SJerome Forissier #define R_PPC64_TOC16 47 8939f84b6f2SJerome Forissier #define R_PPC64_TOC16_LO 48 8949f84b6f2SJerome Forissier #define R_PPC64_TOC16_HI 49 8959f84b6f2SJerome Forissier #define R_PPC64_TOC16_HA 50 8969f84b6f2SJerome Forissier #define R_PPC64_TOC 51 8979f84b6f2SJerome Forissier #define R_PPC64_DTPMOD64 68 8989f84b6f2SJerome Forissier #define R_PPC64_TPREL64 73 8999f84b6f2SJerome Forissier #define R_PPC64_DTPREL64 78 9009f84b6f2SJerome Forissier 9019f84b6f2SJerome Forissier /* 9029f84b6f2SJerome Forissier * TLS relocations 9039f84b6f2SJerome Forissier */ 9049f84b6f2SJerome Forissier #define R_PPC_TLS 67 9059f84b6f2SJerome Forissier #define R_PPC_DTPMOD32 68 9069f84b6f2SJerome Forissier #define R_PPC_TPREL16 69 9079f84b6f2SJerome Forissier #define R_PPC_TPREL16_LO 70 9089f84b6f2SJerome Forissier #define R_PPC_TPREL16_HI 71 9099f84b6f2SJerome Forissier #define R_PPC_TPREL16_HA 72 9109f84b6f2SJerome Forissier #define R_PPC_TPREL32 73 9119f84b6f2SJerome Forissier #define R_PPC_DTPREL16 74 9129f84b6f2SJerome Forissier #define R_PPC_DTPREL16_LO 75 9139f84b6f2SJerome Forissier #define R_PPC_DTPREL16_HI 76 9149f84b6f2SJerome Forissier #define R_PPC_DTPREL16_HA 77 9159f84b6f2SJerome Forissier #define R_PPC_DTPREL32 78 9169f84b6f2SJerome Forissier #define R_PPC_GOT_TLSGD16 79 9179f84b6f2SJerome Forissier #define R_PPC_GOT_TLSGD16_LO 80 9189f84b6f2SJerome Forissier #define R_PPC_GOT_TLSGD16_HI 81 9199f84b6f2SJerome Forissier #define R_PPC_GOT_TLSGD16_HA 82 9209f84b6f2SJerome Forissier #define R_PPC_GOT_TLSLD16 83 9219f84b6f2SJerome Forissier #define R_PPC_GOT_TLSLD16_LO 84 9229f84b6f2SJerome Forissier #define R_PPC_GOT_TLSLD16_HI 85 9239f84b6f2SJerome Forissier #define R_PPC_GOT_TLSLD16_HA 86 9249f84b6f2SJerome Forissier #define R_PPC_GOT_TPREL16 87 9259f84b6f2SJerome Forissier #define R_PPC_GOT_TPREL16_LO 88 9269f84b6f2SJerome Forissier #define R_PPC_GOT_TPREL16_HI 89 9279f84b6f2SJerome Forissier #define R_PPC_GOT_TPREL16_HA 90 9289f84b6f2SJerome Forissier 9299f84b6f2SJerome Forissier /* 9309f84b6f2SJerome Forissier * The remaining relocs are from the Embedded ELF ABI, and are not in the 9319f84b6f2SJerome Forissier * SVR4 ELF ABI. 9329f84b6f2SJerome Forissier */ 9339f84b6f2SJerome Forissier 9349f84b6f2SJerome Forissier #define R_PPC_EMB_NADDR32 101 9359f84b6f2SJerome Forissier #define R_PPC_EMB_NADDR16 102 9369f84b6f2SJerome Forissier #define R_PPC_EMB_NADDR16_LO 103 9379f84b6f2SJerome Forissier #define R_PPC_EMB_NADDR16_HI 104 9389f84b6f2SJerome Forissier #define R_PPC_EMB_NADDR16_HA 105 9399f84b6f2SJerome Forissier #define R_PPC_EMB_SDAI16 106 9409f84b6f2SJerome Forissier #define R_PPC_EMB_SDA2I16 107 9419f84b6f2SJerome Forissier #define R_PPC_EMB_SDA2REL 108 9429f84b6f2SJerome Forissier #define R_PPC_EMB_SDA21 109 9439f84b6f2SJerome Forissier #define R_PPC_EMB_MRKREF 110 9449f84b6f2SJerome Forissier #define R_PPC_EMB_RELSEC16 111 9459f84b6f2SJerome Forissier #define R_PPC_EMB_RELST_LO 112 9469f84b6f2SJerome Forissier #define R_PPC_EMB_RELST_HI 113 9479f84b6f2SJerome Forissier #define R_PPC_EMB_RELST_HA 114 9489f84b6f2SJerome Forissier #define R_PPC_EMB_BIT_FLD 115 9499f84b6f2SJerome Forissier #define R_PPC_EMB_RELSDA 116 9509f84b6f2SJerome Forissier 9519f84b6f2SJerome Forissier #define R_SPARC_NONE 0 9529f84b6f2SJerome Forissier #define R_SPARC_8 1 9539f84b6f2SJerome Forissier #define R_SPARC_16 2 9549f84b6f2SJerome Forissier #define R_SPARC_32 3 9559f84b6f2SJerome Forissier #define R_SPARC_DISP8 4 9569f84b6f2SJerome Forissier #define R_SPARC_DISP16 5 9579f84b6f2SJerome Forissier #define R_SPARC_DISP32 6 9589f84b6f2SJerome Forissier #define R_SPARC_WDISP30 7 9599f84b6f2SJerome Forissier #define R_SPARC_WDISP22 8 9609f84b6f2SJerome Forissier #define R_SPARC_HI22 9 9619f84b6f2SJerome Forissier #define R_SPARC_22 10 9629f84b6f2SJerome Forissier #define R_SPARC_13 11 9639f84b6f2SJerome Forissier #define R_SPARC_LO10 12 9649f84b6f2SJerome Forissier #define R_SPARC_GOT10 13 9659f84b6f2SJerome Forissier #define R_SPARC_GOT13 14 9669f84b6f2SJerome Forissier #define R_SPARC_GOT22 15 9679f84b6f2SJerome Forissier #define R_SPARC_PC10 16 9689f84b6f2SJerome Forissier #define R_SPARC_PC22 17 9699f84b6f2SJerome Forissier #define R_SPARC_WPLT30 18 9709f84b6f2SJerome Forissier #define R_SPARC_COPY 19 9719f84b6f2SJerome Forissier #define R_SPARC_GLOB_DAT 20 9729f84b6f2SJerome Forissier #define R_SPARC_JMP_SLOT 21 9739f84b6f2SJerome Forissier #define R_SPARC_RELATIVE 22 9749f84b6f2SJerome Forissier #define R_SPARC_UA32 23 9759f84b6f2SJerome Forissier #define R_SPARC_PLT32 24 9769f84b6f2SJerome Forissier #define R_SPARC_HIPLT22 25 9779f84b6f2SJerome Forissier #define R_SPARC_LOPLT10 26 9789f84b6f2SJerome Forissier #define R_SPARC_PCPLT32 27 9799f84b6f2SJerome Forissier #define R_SPARC_PCPLT22 28 9809f84b6f2SJerome Forissier #define R_SPARC_PCPLT10 29 9819f84b6f2SJerome Forissier #define R_SPARC_10 30 9829f84b6f2SJerome Forissier #define R_SPARC_11 31 9839f84b6f2SJerome Forissier #define R_SPARC_64 32 9849f84b6f2SJerome Forissier #define R_SPARC_OLO10 33 9859f84b6f2SJerome Forissier #define R_SPARC_HH22 34 9869f84b6f2SJerome Forissier #define R_SPARC_HM10 35 9879f84b6f2SJerome Forissier #define R_SPARC_LM22 36 9889f84b6f2SJerome Forissier #define R_SPARC_PC_HH22 37 9899f84b6f2SJerome Forissier #define R_SPARC_PC_HM10 38 9909f84b6f2SJerome Forissier #define R_SPARC_PC_LM22 39 9919f84b6f2SJerome Forissier #define R_SPARC_WDISP16 40 9929f84b6f2SJerome Forissier #define R_SPARC_WDISP19 41 9939f84b6f2SJerome Forissier #define R_SPARC_GLOB_JMP 42 9949f84b6f2SJerome Forissier #define R_SPARC_7 43 9959f84b6f2SJerome Forissier #define R_SPARC_5 44 9969f84b6f2SJerome Forissier #define R_SPARC_6 45 9979f84b6f2SJerome Forissier #define R_SPARC_DISP64 46 9989f84b6f2SJerome Forissier #define R_SPARC_PLT64 47 9999f84b6f2SJerome Forissier #define R_SPARC_HIX22 48 10009f84b6f2SJerome Forissier #define R_SPARC_LOX10 49 10019f84b6f2SJerome Forissier #define R_SPARC_H44 50 10029f84b6f2SJerome Forissier #define R_SPARC_M44 51 10039f84b6f2SJerome Forissier #define R_SPARC_L44 52 10049f84b6f2SJerome Forissier #define R_SPARC_REGISTER 53 10059f84b6f2SJerome Forissier #define R_SPARC_UA64 54 10069f84b6f2SJerome Forissier #define R_SPARC_UA16 55 10079f84b6f2SJerome Forissier #define R_SPARC_TLS_GD_HI22 56 10089f84b6f2SJerome Forissier #define R_SPARC_TLS_GD_LO10 57 10099f84b6f2SJerome Forissier #define R_SPARC_TLS_GD_ADD 58 10109f84b6f2SJerome Forissier #define R_SPARC_TLS_GD_CALL 59 10119f84b6f2SJerome Forissier #define R_SPARC_TLS_LDM_HI22 60 10129f84b6f2SJerome Forissier #define R_SPARC_TLS_LDM_LO10 61 10139f84b6f2SJerome Forissier #define R_SPARC_TLS_LDM_ADD 62 10149f84b6f2SJerome Forissier #define R_SPARC_TLS_LDM_CALL 63 10159f84b6f2SJerome Forissier #define R_SPARC_TLS_LDO_HIX22 64 10169f84b6f2SJerome Forissier #define R_SPARC_TLS_LDO_LOX10 65 10179f84b6f2SJerome Forissier #define R_SPARC_TLS_LDO_ADD 66 10189f84b6f2SJerome Forissier #define R_SPARC_TLS_IE_HI22 67 10199f84b6f2SJerome Forissier #define R_SPARC_TLS_IE_LO10 68 10209f84b6f2SJerome Forissier #define R_SPARC_TLS_IE_LD 69 10219f84b6f2SJerome Forissier #define R_SPARC_TLS_IE_LDX 70 10229f84b6f2SJerome Forissier #define R_SPARC_TLS_IE_ADD 71 10239f84b6f2SJerome Forissier #define R_SPARC_TLS_LE_HIX22 72 10249f84b6f2SJerome Forissier #define R_SPARC_TLS_LE_LOX10 73 10259f84b6f2SJerome Forissier #define R_SPARC_TLS_DTPMOD32 74 10269f84b6f2SJerome Forissier #define R_SPARC_TLS_DTPMOD64 75 10279f84b6f2SJerome Forissier #define R_SPARC_TLS_DTPOFF32 76 10289f84b6f2SJerome Forissier #define R_SPARC_TLS_DTPOFF64 77 10299f84b6f2SJerome Forissier #define R_SPARC_TLS_TPOFF32 78 10309f84b6f2SJerome Forissier #define R_SPARC_TLS_TPOFF64 79 10319f84b6f2SJerome Forissier 10329f84b6f2SJerome Forissier #define R_X86_64_NONE 0 /* No relocation. */ 10339f84b6f2SJerome Forissier #define R_X86_64_64 1 /* Add 64 bit symbol value. */ 10349f84b6f2SJerome Forissier #define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ 10359f84b6f2SJerome Forissier #define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ 10369f84b6f2SJerome Forissier #define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ 10379f84b6f2SJerome Forissier #define R_X86_64_COPY 5 /* Copy data from shared object. */ 10389f84b6f2SJerome Forissier #define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ 10399f84b6f2SJerome Forissier #define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ 10409f84b6f2SJerome Forissier #define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ 10419f84b6f2SJerome Forissier #define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ 10429f84b6f2SJerome Forissier #define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ 10439f84b6f2SJerome Forissier #define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ 10449f84b6f2SJerome Forissier #define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ 10459f84b6f2SJerome Forissier #define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ 10469f84b6f2SJerome Forissier #define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ 10479f84b6f2SJerome Forissier #define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ 10489f84b6f2SJerome Forissier #define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ 10499f84b6f2SJerome Forissier #define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ 10509f84b6f2SJerome Forissier #define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ 10519f84b6f2SJerome Forissier #define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ 10529f84b6f2SJerome Forissier #define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ 10539f84b6f2SJerome Forissier #define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ 10549f84b6f2SJerome Forissier #define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ 10559f84b6f2SJerome Forissier #define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ 10569f84b6f2SJerome Forissier #define R_X86_64_IRELATIVE 37 10579f84b6f2SJerome Forissier 10589f84b6f2SJerome Forissier 10599f84b6f2SJerome Forissier #endif /* !_SYS_ELF_COMMON_H_ */ 1060