| 1 | /* ELF support for BFD. | 
|---|
| 2 | Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, | 
|---|
| 3 | 2001, 2002, 2003 | 
|---|
| 4 | Free Software Foundation, Inc. | 
|---|
| 5 |  | 
|---|
| 6 | Written by Fred Fish @ Cygnus Support, from information published | 
|---|
| 7 | in "UNIX System V Release 4, Programmers Guide: ANSI C and | 
|---|
| 8 | Programming Support Tools". | 
|---|
| 9 |  | 
|---|
| 10 | This file is part of BFD, the Binary File Descriptor library. | 
|---|
| 11 |  | 
|---|
| 12 | This program is free software; you can redistribute it and/or modify | 
|---|
| 13 | it under the terms of the GNU General Public License as published by | 
|---|
| 14 | the Free Software Foundation; either version 2 of the License, or | 
|---|
| 15 | (at your option) any later version. | 
|---|
| 16 |  | 
|---|
| 17 | This program is distributed in the hope that it will be useful, | 
|---|
| 18 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 19 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|---|
| 20 | GNU General Public License for more details. | 
|---|
| 21 |  | 
|---|
| 22 | You should have received a copy of the GNU General Public License | 
|---|
| 23 | along with this program; if not, write to the Free Software | 
|---|
| 24 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */ | 
|---|
| 25 |  | 
|---|
| 26 |  | 
|---|
| 27 | /* This file is part of ELF support for BFD, and contains the portions | 
|---|
| 28 | that are common to both the internal and external representations. | 
|---|
| 29 | For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory) | 
|---|
| 30 | and external (in-file) representations.  */ | 
|---|
| 31 |  | 
|---|
| 32 | #ifndef _ELF_COMMON_H | 
|---|
| 33 | #define _ELF_COMMON_H | 
|---|
| 34 |  | 
|---|
| 35 | /* Fields in e_ident[].  */ | 
|---|
| 36 |  | 
|---|
| 37 | #define EI_MAG0         0       /* File identification byte 0 index */ | 
|---|
| 38 | #define ELFMAG0            0x7F /* Magic number byte 0 */ | 
|---|
| 39 |  | 
|---|
| 40 | #define EI_MAG1         1       /* File identification byte 1 index */ | 
|---|
| 41 | #define ELFMAG1             'E' /* Magic number byte 1 */ | 
|---|
| 42 |  | 
|---|
| 43 | #define EI_MAG2         2       /* File identification byte 2 index */ | 
|---|
| 44 | #define ELFMAG2             'L' /* Magic number byte 2 */ | 
|---|
| 45 |  | 
|---|
| 46 | #define EI_MAG3         3       /* File identification byte 3 index */ | 
|---|
| 47 | #define ELFMAG3             'F' /* Magic number byte 3 */ | 
|---|
| 48 |  | 
|---|
| 49 | #define EI_CLASS        4       /* File class */ | 
|---|
| 50 | #define ELFCLASSNONE          0 /* Invalid class */ | 
|---|
| 51 | #define ELFCLASS32            1 /* 32-bit objects */ | 
|---|
| 52 | #define ELFCLASS64            2 /* 64-bit objects */ | 
|---|
| 53 |  | 
|---|
| 54 | #define EI_DATA         5       /* Data encoding */ | 
|---|
| 55 | #define ELFDATANONE           0 /* Invalid data encoding */ | 
|---|
| 56 | #define ELFDATA2LSB           1 /* 2's complement, little endian */ | 
|---|
| 57 | #define ELFDATA2MSB           2 /* 2's complement, big endian */ | 
|---|
| 58 |  | 
|---|
| 59 | #define EI_VERSION      6       /* File version */ | 
|---|
| 60 |  | 
|---|
| 61 | #define EI_OSABI        7       /* Operating System/ABI indication */ | 
|---|
| 62 | #define ELFOSABI_NONE         0 /* UNIX System V ABI */ | 
|---|
| 63 | #define ELFOSABI_HPUX         1 /* HP-UX operating system */ | 
|---|
| 64 | #define ELFOSABI_NETBSD       2 /* NetBSD */ | 
|---|
| 65 | #define ELFOSABI_LINUX        3 /* GNU/Linux */ | 
|---|
| 66 | #define ELFOSABI_HURD         4 /* GNU/Hurd */ | 
|---|
| 67 | #define ELFOSABI_SOLARIS      6 /* Solaris */ | 
|---|
| 68 | #define ELFOSABI_AIX          7 /* AIX */ | 
|---|
| 69 | #define ELFOSABI_IRIX         8 /* IRIX */ | 
|---|
| 70 | #define ELFOSABI_FREEBSD      9 /* FreeBSD */ | 
|---|
| 71 | #define ELFOSABI_TRU64       10 /* TRU64 UNIX */ | 
|---|
| 72 | #define ELFOSABI_MODESTO     11 /* Novell Modesto */ | 
|---|
| 73 | #define ELFOSABI_OPENBSD     12 /* OpenBSD */ | 
|---|
| 74 | #define ELFOSABI_OPENVMS     13 /* OpenVMS */ | 
|---|
| 75 | #define ELFOSABI_NSK         14 /* Hewlett-Packard Non-Stop Kernel */ | 
|---|
| 76 | #define ELFOSABI_AROS        15 /* Amiga Research OS */ | 
|---|
| 77 | #define ELFOSABI_ARM         97 /* ARM */ | 
|---|
| 78 | #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ | 
|---|
| 79 |  | 
|---|
| 80 | #define EI_ABIVERSION   8       /* ABI version */ | 
|---|
| 81 |  | 
|---|
| 82 | #define EI_PAD          9       /* Start of padding bytes */ | 
|---|
| 83 |  | 
|---|
| 84 |  | 
|---|
| 85 | /* Values for e_type, which identifies the object file type.  */ | 
|---|
| 86 |  | 
|---|
| 87 | #define ET_NONE         0       /* No file type */ | 
|---|
| 88 | #define ET_REL          1       /* Relocatable file */ | 
|---|
| 89 | #define ET_EXEC         2       /* Executable file */ | 
|---|
| 90 | #define ET_DYN          3       /* Shared object file */ | 
|---|
| 91 | #define ET_CORE         4       /* Core file */ | 
|---|
| 92 | #define ET_LOOS         0xFE00  /* Operating system-specific */ | 
|---|
| 93 | #define ET_HIOS         0xFEFF  /* Operating system-specific */ | 
|---|
| 94 | #define ET_LOPROC       0xFF00  /* Processor-specific */ | 
|---|
| 95 | #define ET_HIPROC       0xFFFF  /* Processor-specific */ | 
|---|
| 96 |  | 
|---|
| 97 | /* Values for e_machine, which identifies the architecture.  These numbers | 
|---|
| 98 | are officially assigned by registry@caldera.com.  See below for a list of | 
|---|
| 99 | ad-hoc numbers used during initial development.  */ | 
|---|
| 100 |  | 
|---|
| 101 | #define EM_NONE           0     /* No machine */ | 
|---|
| 102 | #define EM_M32            1     /* AT&T WE 32100 */ | 
|---|
| 103 | #define EM_SPARC          2     /* SUN SPARC */ | 
|---|
| 104 | #define EM_386            3     /* Intel 80386 */ | 
|---|
| 105 | #define EM_68K            4     /* Motorola m68k family */ | 
|---|
| 106 | #define EM_88K            5     /* Motorola m88k family */ | 
|---|
| 107 | #define EM_486            6     /* Intel 80486 *//* Reserved for future use */ | 
|---|
| 108 | #define EM_860            7     /* Intel 80860 */ | 
|---|
| 109 | #define EM_MIPS           8     /* MIPS R3000 (officially, big-endian only) */ | 
|---|
| 110 | #define EM_S370           9     /* IBM System/370 */ | 
|---|
| 111 | #define EM_MIPS_RS3_LE   10     /* MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated */ | 
|---|
| 112 |  | 
|---|
| 113 | #define EM_PARISC        15     /* HPPA */ | 
|---|
| 114 |  | 
|---|
| 115 | #define EM_VPP550        17     /* Fujitsu VPP500 */ | 
|---|
| 116 | #define EM_SPARC32PLUS   18     /* Sun's "v8plus" */ | 
|---|
| 117 | #define EM_960           19     /* Intel 80960 */ | 
|---|
| 118 | #define EM_PPC           20     /* PowerPC */ | 
|---|
| 119 | #define EM_PPC64         21     /* 64-bit PowerPC */ | 
|---|
| 120 | #define EM_S390          22     /* IBM S/390 */ | 
|---|
| 121 |  | 
|---|
| 122 | #define EM_V800          36     /* NEC V800 series */ | 
|---|
| 123 | #define EM_FR20          37     /* Fujitsu FR20 */ | 
|---|
| 124 | #define EM_RH32          38     /* TRW RH32 */ | 
|---|
| 125 | #define EM_MCORE         39     /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */ | 
|---|
| 126 | #define EM_RCE           39     /* Old name for MCore */ | 
|---|
| 127 | #define EM_ARM           40     /* ARM */ | 
|---|
| 128 | #define EM_OLD_ALPHA     41     /* Digital Alpha */ | 
|---|
| 129 | #define EM_SH            42     /* Renesas (formerly Hitachi) / SuperH SH */ | 
|---|
| 130 | #define EM_SPARCV9       43     /* SPARC v9 64-bit */ | 
|---|
| 131 | #define EM_TRICORE       44     /* Siemens Tricore embedded processor */ | 
|---|
| 132 | #define EM_ARC           45     /* ARC Cores */ | 
|---|
| 133 | #define EM_H8_300        46     /* Renesas (formerly Hitachi) H8/300 */ | 
|---|
| 134 | #define EM_H8_300H       47     /* Renesas (formerly Hitachi) H8/300H */ | 
|---|
| 135 | #define EM_H8S           48     /* Renesas (formerly Hitachi) H8S */ | 
|---|
| 136 | #define EM_H8_500        49     /* Renesas (formerly Hitachi) H8/500 */ | 
|---|
| 137 | #define EM_IA_64         50     /* Intel IA-64 Processor */ | 
|---|
| 138 | #define EM_MIPS_X        51     /* Stanford MIPS-X */ | 
|---|
| 139 | #define EM_COLDFIRE      52     /* Motorola Coldfire */ | 
|---|
| 140 | #define EM_68HC12        53     /* Motorola M68HC12 */ | 
|---|
| 141 | #define EM_MMA           54     /* Fujitsu Multimedia Accelerator */ | 
|---|
| 142 | #define EM_PCP           55     /* Siemens PCP */ | 
|---|
| 143 | #define EM_NCPU          56     /* Sony nCPU embedded RISC processor */ | 
|---|
| 144 | #define EM_NDR1          57     /* Denso NDR1 microprocesspr */ | 
|---|
| 145 | #define EM_STARCORE      58     /* Motorola Star*Core processor */ | 
|---|
| 146 | #define EM_ME16          59     /* Toyota ME16 processor */ | 
|---|
| 147 | #define EM_ST100         60     /* STMicroelectronics ST100 processor */ | 
|---|
| 148 | #define EM_TINYJ         61     /* Advanced Logic Corp. TinyJ embedded processor */ | 
|---|
| 149 | #define EM_X86_64        62     /* Advanced Micro Devices X86-64 processor */ | 
|---|
| 150 |  | 
|---|
| 151 | #define EM_PDP10         64     /* Digital Equipment Corp. PDP-10 */ | 
|---|
| 152 | #define EM_PDP11         65     /* Digital Equipment Corp. PDP-11 */ | 
|---|
| 153 | #define EM_FX66          66     /* Siemens FX66 microcontroller */ | 
|---|
| 154 | #define EM_ST9PLUS       67     /* STMicroelectronics ST9+ 8/16 bit microcontroller */ | 
|---|
| 155 | #define EM_ST7           68     /* STMicroelectronics ST7 8-bit microcontroller */ | 
|---|
| 156 | #define EM_68HC16        69     /* Motorola MC68HC16 Microcontroller */ | 
|---|
| 157 | #define EM_68HC11        70     /* Motorola MC68HC11 Microcontroller */ | 
|---|
| 158 | #define EM_68HC08        71     /* Motorola MC68HC08 Microcontroller */ | 
|---|
| 159 | #define EM_68HC05        72     /* Motorola MC68HC05 Microcontroller */ | 
|---|
| 160 | #define EM_SVX           73     /* Silicon Graphics SVx */ | 
|---|
| 161 | #define EM_ST19          74     /* STMicroelectronics ST19 8-bit cpu */ | 
|---|
| 162 | #define EM_VAX           75     /* Digital VAX */ | 
|---|
| 163 | #define EM_CRIS          76     /* Axis Communications 32-bit embedded processor */ | 
|---|
| 164 | #define EM_JAVELIN       77     /* Infineon Technologies 32-bit embedded cpu */ | 
|---|
| 165 | #define EM_FIREPATH      78     /* Element 14 64-bit DSP processor */ | 
|---|
| 166 | #define EM_ZSP           79     /* LSI Logic's 16-bit DSP processor */ | 
|---|
| 167 | #define EM_MMIX          80     /* Donald Knuth's educational 64-bit processor */ | 
|---|
| 168 | #define EM_HUANY         81     /* Harvard's machine-independent format */ | 
|---|
| 169 | #define EM_PRISM         82     /* SiTera Prism */ | 
|---|
| 170 | #define EM_AVR           83     /* Atmel AVR 8-bit microcontroller */ | 
|---|
| 171 | #define EM_FR30          84     /* Fujitsu FR30 */ | 
|---|
| 172 | #define EM_D10V          85     /* Mitsubishi D10V */ | 
|---|
| 173 | #define EM_D30V          86     /* Mitsubishi D30V */ | 
|---|
| 174 | #define EM_V850          87     /* NEC v850 */ | 
|---|
| 175 | #define EM_M32R          88     /* Renesas M32R (formerly Mitsubishi M32R) */ | 
|---|
| 176 | #define EM_MN10300       89     /* Matsushita MN10300 */ | 
|---|
| 177 | #define EM_MN10200       90     /* Matsushita MN10200 */ | 
|---|
| 178 | #define EM_PJ            91     /* picoJava */ | 
|---|
| 179 | #define EM_OPENRISC      92     /* OpenRISC 32-bit embedded processor */ | 
|---|
| 180 | #define EM_ARC_A5        93     /* ARC Cores Tangent-A5 */ | 
|---|
| 181 | #define EM_XTENSA        94     /* Tensilica Xtensa Architecture */ | 
|---|
| 182 | #define EM_IP2K         101     /* Ubicom IP2022 micro controller */ | 
|---|
| 183 | #define EM_MSP430       105     /* TI msp430 micro controller */ | 
|---|
| 184 |  | 
|---|
| 185 | /* If it is necessary to assign new unofficial EM_* values, please pick large | 
|---|
| 186 | random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision | 
|---|
| 187 | with official or non-GNU unofficial values. | 
|---|
| 188 |  | 
|---|
| 189 | NOTE: Do not just increment the most recent number by one. | 
|---|
| 190 | Somebody else somewhere will do exactly the same thing, and you | 
|---|
| 191 | will have a collision.  Instead, pick a random number. | 
|---|
| 192 |  | 
|---|
| 193 | Normally, each entity or maintainer responsible for a machine with an | 
|---|
| 194 | unofficial e_machine number should eventually ask registry@caldera.com for | 
|---|
| 195 | an officially blessed number to be added to the list above.  */ | 
|---|
| 196 |  | 
|---|
| 197 | #define EM_PJ_OLD      99       /* picoJava */ | 
|---|
| 198 |  | 
|---|
| 199 | /* Cygnus PowerPC ELF backend.  Written in the absence of an ABI.  */ | 
|---|
| 200 | #define EM_CYGNUS_POWERPC 0x9025 | 
|---|
| 201 |  | 
|---|
| 202 | /* Old version of Sparc v9, from before the ABI; this should be | 
|---|
| 203 | removed shortly.  */ | 
|---|
| 204 | #define EM_OLD_SPARCV9  11 | 
|---|
| 205 |  | 
|---|
| 206 | /* Old version of PowerPC, this should be removed shortly. */ | 
|---|
| 207 | #define EM_PPC_OLD      17 | 
|---|
| 208 |  | 
|---|
| 209 | /* (Deprecated) Temporary number for the OpenRISC processor.  */ | 
|---|
| 210 | #define EM_OR32         0x8472 | 
|---|
| 211 |  | 
|---|
| 212 | /* Cygnus M32R ELF backend.  Written in the absence of an ABI.  */ | 
|---|
| 213 | #define EM_CYGNUS_M32R  0x9041 | 
|---|
| 214 |  | 
|---|
| 215 | /* Alpha backend magic number.  Written in the absence of an ABI.  */ | 
|---|
| 216 | #define EM_ALPHA        0x9026 | 
|---|
| 217 |  | 
|---|
| 218 | /* old S/390 backend magic number. Written in the absence of an ABI.  */ | 
|---|
| 219 | #define EM_S390_OLD     0xa390 | 
|---|
| 220 |  | 
|---|
| 221 | /* D10V backend magic number.  Written in the absence of an ABI.  */ | 
|---|
| 222 | #define EM_CYGNUS_D10V  0x7650 | 
|---|
| 223 |  | 
|---|
| 224 | /* D30V backend magic number.  Written in the absence of an ABI.  */ | 
|---|
| 225 | #define EM_CYGNUS_D30V  0x7676 | 
|---|
| 226 |  | 
|---|
| 227 | /* V850 backend magic number.  Written in the absense of an ABI.  */ | 
|---|
| 228 | #define EM_CYGNUS_V850  0x9080 | 
|---|
| 229 |  | 
|---|
| 230 | /* mn10200 and mn10300 backend magic numbers. | 
|---|
| 231 | Written in the absense of an ABI.  */ | 
|---|
| 232 | #define EM_CYGNUS_MN10200       0xdead | 
|---|
| 233 | #define EM_CYGNUS_MN10300       0xbeef | 
|---|
| 234 |  | 
|---|
| 235 | /* FR30 magic number - no EABI available.  */ | 
|---|
| 236 | #define EM_CYGNUS_FR30          0x3330 | 
|---|
| 237 |  | 
|---|
| 238 | /* AVR magic number | 
|---|
| 239 | Written in the absense of an ABI.  */ | 
|---|
| 240 | #define EM_AVR_OLD              0x1057 | 
|---|
| 241 |  | 
|---|
| 242 | /* OpenRISC magic number | 
|---|
| 243 | Written in the absense of an ABI.  */ | 
|---|
| 244 | #define EM_OPENRISC_OLD         0x3426 | 
|---|
| 245 |  | 
|---|
| 246 | /* DLX magic number | 
|---|
| 247 | Written in the absense of an ABI.  */ | 
|---|
| 248 | #define EM_DLX                  0x5aa5 | 
|---|
| 249 |  | 
|---|
| 250 | #define EM_XSTORMY16            0xad45 | 
|---|
| 251 |  | 
|---|
| 252 | /* FRV magic number - no EABI available??.  */ | 
|---|
| 253 | #define EM_CYGNUS_FRV           0x5441 | 
|---|
| 254 |  | 
|---|
| 255 | /* Ubicom IP2xxx; no ABI */ | 
|---|
| 256 | #define EM_IP2K_OLD             0x8217 | 
|---|
| 257 |  | 
|---|
| 258 | /* MSP430 magic number | 
|---|
| 259 | Written in the absense everything.  */ | 
|---|
| 260 | #define EM_MSP430_OLD           0x1059 | 
|---|
| 261 |  | 
|---|
| 262 | /* Vitesse IQ2000.  */ | 
|---|
| 263 | #define EM_IQ2000               0xFEBA | 
|---|
| 264 |  | 
|---|
| 265 | /* Old, unofficial value for Xtensa.  */ | 
|---|
| 266 | #define EM_XTENSA_OLD           0xabc7 | 
|---|
| 267 |  | 
|---|
| 268 | /* See the above comment before you add a new EM_* value here.  */ | 
|---|
| 269 |  | 
|---|
| 270 | /* Values for e_version.  */ | 
|---|
| 271 |  | 
|---|
| 272 | #define EV_NONE         0               /* Invalid ELF version */ | 
|---|
| 273 | #define EV_CURRENT      1               /* Current version */ | 
|---|
| 274 |  | 
|---|
| 275 | /* Values for program header, p_type field.  */ | 
|---|
| 276 |  | 
|---|
| 277 | #define PT_NULL         0               /* Program header table entry unused */ | 
|---|
| 278 | #define PT_LOAD         1               /* Loadable program segment */ | 
|---|
| 279 | #define PT_DYNAMIC      2               /* Dynamic linking information */ | 
|---|
| 280 | #define PT_INTERP       3               /* Program interpreter */ | 
|---|
| 281 | #define PT_NOTE         4               /* Auxiliary information */ | 
|---|
| 282 | #define PT_SHLIB        5               /* Reserved, unspecified semantics */ | 
|---|
| 283 | #define PT_PHDR         6               /* Entry for header table itself */ | 
|---|
| 284 | #define PT_TLS          7               /* Thread local storage segment */ | 
|---|
| 285 | #define PT_LOOS         0x60000000      /* OS-specific */ | 
|---|
| 286 | #define PT_HIOS         0x6fffffff      /* OS-specific */ | 
|---|
| 287 | #define PT_LOPROC       0x70000000      /* Processor-specific */ | 
|---|
| 288 | #define PT_HIPROC       0x7FFFFFFF      /* Processor-specific */ | 
|---|
| 289 |  | 
|---|
| 290 | #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) | 
|---|
| 291 |  | 
|---|
| 292 | /* Program segment permissions, in program header p_flags field.  */ | 
|---|
| 293 |  | 
|---|
| 294 | #define PF_X            (1 << 0)        /* Segment is executable */ | 
|---|
| 295 | #define PF_W            (1 << 1)        /* Segment is writable */ | 
|---|
| 296 | #define PF_R            (1 << 2)        /* Segment is readable */ | 
|---|
| 297 | /* #define PF_MASKOS    0x0F000000    *//* OS-specific reserved bits */ | 
|---|
| 298 | #define PF_MASKOS       0x0FF00000      /* New value, Oct 4, 1999 Draft */ | 
|---|
| 299 | #define PF_MASKPROC     0xF0000000      /* Processor-specific reserved bits */ | 
|---|
| 300 |  | 
|---|
| 301 | /* Values for section header, sh_type field.  */ | 
|---|
| 302 |  | 
|---|
| 303 | #define SHT_NULL        0               /* Section header table entry unused */ | 
|---|
| 304 | #define SHT_PROGBITS    1               /* Program specific (private) data */ | 
|---|
| 305 | #define SHT_SYMTAB      2               /* Link editing symbol table */ | 
|---|
| 306 | #define SHT_STRTAB      3               /* A string table */ | 
|---|
| 307 | #define SHT_RELA        4               /* Relocation entries with addends */ | 
|---|
| 308 | #define SHT_HASH        5               /* A symbol hash table */ | 
|---|
| 309 | #define SHT_DYNAMIC     6               /* Information for dynamic linking */ | 
|---|
| 310 | #define SHT_NOTE        7               /* Information that marks file */ | 
|---|
| 311 | #define SHT_NOBITS      8               /* Section occupies no space in file */ | 
|---|
| 312 | #define SHT_REL         9               /* Relocation entries, no addends */ | 
|---|
| 313 | #define SHT_SHLIB       10              /* Reserved, unspecified semantics */ | 
|---|
| 314 | #define SHT_DYNSYM      11              /* Dynamic linking symbol table */ | 
|---|
| 315 |  | 
|---|
| 316 | #define SHT_INIT_ARRAY    14            /* Array of ptrs to init functions */ | 
|---|
| 317 | #define SHT_FINI_ARRAY    15            /* Array of ptrs to finish functions */ | 
|---|
| 318 | #define SHT_PREINIT_ARRAY 16            /* Array of ptrs to pre-init funcs */ | 
|---|
| 319 | #define SHT_GROUP         17            /* Section contains a section group */ | 
|---|
| 320 | #define SHT_SYMTAB_SHNDX  18            /* Indicies for SHN_XINDEX entries */ | 
|---|
| 321 |  | 
|---|
| 322 | #define SHT_LOOS        0x60000000      /* First of OS specific semantics */ | 
|---|
| 323 | #define SHT_HIOS        0x6fffffff      /* Last of OS specific semantics */ | 
|---|
| 324 |  | 
|---|
| 325 | #define SHT_GNU_LIBLIST 0x6ffffff7      /* List of prelink dependencies */ | 
|---|
| 326 |  | 
|---|
| 327 | /* The next three section types are defined by Solaris, and are named | 
|---|
| 328 | SHT_SUNW*.  We use them in GNU code, so we also define SHT_GNU* | 
|---|
| 329 | versions.  */ | 
|---|
| 330 | #define SHT_SUNW_verdef 0x6ffffffd      /* Versions defined by file */ | 
|---|
| 331 | #define SHT_SUNW_verneed 0x6ffffffe     /* Versions needed by file */ | 
|---|
| 332 | #define SHT_SUNW_versym 0x6fffffff      /* Symbol versions */ | 
|---|
| 333 |  | 
|---|
| 334 | #define SHT_GNU_verdef  SHT_SUNW_verdef | 
|---|
| 335 | #define SHT_GNU_verneed SHT_SUNW_verneed | 
|---|
| 336 | #define SHT_GNU_versym  SHT_SUNW_versym | 
|---|
| 337 |  | 
|---|
| 338 | #define SHT_LOPROC      0x70000000      /* Processor-specific semantics, lo */ | 
|---|
| 339 | #define SHT_HIPROC      0x7FFFFFFF      /* Processor-specific semantics, hi */ | 
|---|
| 340 | #define SHT_LOUSER      0x80000000      /* Application-specific semantics */ | 
|---|
| 341 | /* #define SHT_HIUSER   0x8FFFFFFF    *//* Application-specific semantics */ | 
|---|
| 342 | #define SHT_HIUSER      0xFFFFFFFF      /* New value, defined in Oct 4, 1999 Draft */ | 
|---|
| 343 |  | 
|---|
| 344 | /* Values for section header, sh_flags field.  */ | 
|---|
| 345 |  | 
|---|
| 346 | #define SHF_WRITE       (1 << 0)        /* Writable data during execution */ | 
|---|
| 347 | #define SHF_ALLOC       (1 << 1)        /* Occupies memory during execution */ | 
|---|
| 348 | #define SHF_EXECINSTR   (1 << 2)        /* Executable machine instructions */ | 
|---|
| 349 | #define SHF_MERGE       (1 << 4)        /* Data in this section can be merged */ | 
|---|
| 350 | #define SHF_STRINGS     (1 << 5)        /* Contains null terminated character strings */ | 
|---|
| 351 | #define SHF_INFO_LINK   (1 << 6)        /* sh_info holds section header table index */ | 
|---|
| 352 | #define SHF_LINK_ORDER  (1 << 7)        /* Preserve section ordering when linking */ | 
|---|
| 353 | #define SHF_OS_NONCONFORMING (1 << 8)   /* OS specific processing required */ | 
|---|
| 354 | #define SHF_GROUP       (1 << 9)        /* Member of a section group */ | 
|---|
| 355 | #define SHF_TLS         (1 << 10)       /* Thread local storage section */ | 
|---|
| 356 |  | 
|---|
| 357 | /* #define SHF_MASKOS   0x0F000000    *//* OS-specific semantics */ | 
|---|
| 358 | #define SHF_MASKOS      0x0FF00000      /* New value, Oct 4, 1999 Draft */ | 
|---|
| 359 | #define SHF_MASKPROC    0xF0000000      /* Processor-specific semantics */ | 
|---|
| 360 |  | 
|---|
| 361 | /* Values of note segment descriptor types for core files.  */ | 
|---|
| 362 |  | 
|---|
| 363 | #define NT_PRSTATUS     1               /* Contains copy of prstatus struct */ | 
|---|
| 364 | #define NT_FPREGSET     2               /* Contains copy of fpregset struct */ | 
|---|
| 365 | #define NT_PRPSINFO     3               /* Contains copy of prpsinfo struct */ | 
|---|
| 366 | #define NT_TASKSTRUCT   4               /* Contains copy of task struct */ | 
|---|
| 367 | #define NT_PRXFPREG     0x46e62b7f      /* Contains a user_xfpregs_struct; */ | 
|---|
| 368 | /*   note name must be "LINUX".  */ | 
|---|
| 369 |  | 
|---|
| 370 | /* Note segments for core files on dir-style procfs systems.  */ | 
|---|
| 371 |  | 
|---|
| 372 | #define NT_PSTATUS      10              /* Has a struct pstatus */ | 
|---|
| 373 | #define NT_FPREGS       12              /* Has a struct fpregset */ | 
|---|
| 374 | #define NT_PSINFO       13              /* Has a struct psinfo */ | 
|---|
| 375 | #define NT_LWPSTATUS    16              /* Has a struct lwpstatus_t */ | 
|---|
| 376 | #define NT_LWPSINFO     17              /* Has a struct lwpsinfo_t */ | 
|---|
| 377 | #define NT_WIN32PSTATUS 18              /* Has a struct win32_pstatus */ | 
|---|
| 378 |  | 
|---|
| 379 |  | 
|---|
| 380 | /* Note segments for core files on NetBSD systems.  Note name | 
|---|
| 381 | must start with "NetBSD-CORE".  */ | 
|---|
| 382 |  | 
|---|
| 383 | #define NT_NETBSDCORE_PROCINFO  1       /* Has a struct procinfo */ | 
|---|
| 384 | #define NT_NETBSDCORE_FIRSTMACH 32      /* start of machdep note types */ | 
|---|
| 385 |  | 
|---|
| 386 |  | 
|---|
| 387 | /* Values of note segment descriptor types for object files.  */ | 
|---|
| 388 |  | 
|---|
| 389 | #define NT_VERSION      1               /* Contains a version string.  */ | 
|---|
| 390 | #define NT_ARCH         2               /* Contains an architecture string.  */ | 
|---|
| 391 |  | 
|---|
| 392 | /* Values for GNU .note.ABI-tag notes.  Note name is "GNU".  */ | 
|---|
| 393 |  | 
|---|
| 394 | #define NT_GNU_ABI_TAG          1 | 
|---|
| 395 | #define GNU_ABI_TAG_LINUX       0 | 
|---|
| 396 | #define GNU_ABI_TAG_HURD        1 | 
|---|
| 397 | #define GNU_ABI_TAG_SOLARIS     2 | 
|---|
| 398 |  | 
|---|
| 399 | /* Values for NetBSD .note.netbsd.ident notes.  Note name is "NetBSD".  */ | 
|---|
| 400 |  | 
|---|
| 401 | #define NT_NETBSD_IDENT         1 | 
|---|
| 402 |  | 
|---|
| 403 | /* Values for FreeBSD .note.ABI-tag notes.  Note name is "FreeBSD".  */ | 
|---|
| 404 |  | 
|---|
| 405 | #define NT_FREEBSD_ABI_TAG      1 | 
|---|
| 406 |  | 
|---|
| 407 | /* These three macros disassemble and assemble a symbol table st_info field, | 
|---|
| 408 | which contains the symbol binding and symbol type.  The STB_ and STT_ | 
|---|
| 409 | defines identify the binding and type.  */ | 
|---|
| 410 |  | 
|---|
| 411 | #define ELF_ST_BIND(val)                (((unsigned int)(val)) >> 4) | 
|---|
| 412 | #define ELF_ST_TYPE(val)                ((val) & 0xF) | 
|---|
| 413 | #define ELF_ST_INFO(bind,type)          (((bind) << 4) + ((type) & 0xF)) | 
|---|
| 414 |  | 
|---|
| 415 | /* The 64bit and 32bit versions of these macros are identical, but | 
|---|
| 416 | the ELF spec defines them, so here they are.  */ | 
|---|
| 417 | #define ELF32_ST_BIND  ELF_ST_BIND | 
|---|
| 418 | #define ELF32_ST_TYPE  ELF_ST_TYPE | 
|---|
| 419 | #define ELF32_ST_INFO  ELF_ST_INFO | 
|---|
| 420 | #define ELF64_ST_BIND  ELF_ST_BIND | 
|---|
| 421 | #define ELF64_ST_TYPE  ELF_ST_TYPE | 
|---|
| 422 | #define ELF64_ST_INFO  ELF_ST_INFO | 
|---|
| 423 |  | 
|---|
| 424 | /* This macro disassembles and assembles a symbol's visibility into | 
|---|
| 425 | the st_other field.  The STV_ defines specificy the actual visibility.  */ | 
|---|
| 426 |  | 
|---|
| 427 | #define ELF_ST_VISIBILITY(v)            ((v) & 0x3) | 
|---|
| 428 | /* The remaining bits in the st_other field are not currently used. | 
|---|
| 429 | They should be set to zero.  */ | 
|---|
| 430 |  | 
|---|
| 431 | #define ELF32_ST_VISIBILITY  ELF_ST_VISIBILITY | 
|---|
| 432 | #define ELF64_ST_VISIBILITY  ELF_ST_VISIBILITY | 
|---|
| 433 |  | 
|---|
| 434 |  | 
|---|
| 435 | #define STN_UNDEF       0               /* Undefined symbol index */ | 
|---|
| 436 |  | 
|---|
| 437 | #define STB_LOCAL       0               /* Symbol not visible outside obj */ | 
|---|
| 438 | #define STB_GLOBAL      1               /* Symbol visible outside obj */ | 
|---|
| 439 | #define STB_WEAK        2               /* Like globals, lower precedence */ | 
|---|
| 440 | #define STB_LOOS        10              /* OS-specific semantics */ | 
|---|
| 441 | #define STB_HIOS        12              /* OS-specific semantics */ | 
|---|
| 442 | #define STB_LOPROC      13              /* Application-specific semantics */ | 
|---|
| 443 | #define STB_HIPROC      15              /* Application-specific semantics */ | 
|---|
| 444 |  | 
|---|
| 445 | #define STT_NOTYPE      0               /* Symbol type is unspecified */ | 
|---|
| 446 | #define STT_OBJECT      1               /* Symbol is a data object */ | 
|---|
| 447 | #define STT_FUNC        2               /* Symbol is a code object */ | 
|---|
| 448 | #define STT_SECTION     3               /* Symbol associated with a section */ | 
|---|
| 449 | #define STT_FILE        4               /* Symbol gives a file name */ | 
|---|
| 450 | #define STT_COMMON      5               /* An uninitialised common block */ | 
|---|
| 451 | #define STT_TLS         6               /* Thread local data object */ | 
|---|
| 452 | #define STT_LOOS        10              /* OS-specific semantics */ | 
|---|
| 453 | #define STT_HIOS        12              /* OS-specific semantics */ | 
|---|
| 454 | #define STT_LOPROC      13              /* Application-specific semantics */ | 
|---|
| 455 | #define STT_HIPROC      15              /* Application-specific semantics */ | 
|---|
| 456 |  | 
|---|
| 457 | /* Special section indices, which may show up in st_shndx fields, among | 
|---|
| 458 | other places.  */ | 
|---|
| 459 |  | 
|---|
| 460 | #define SHN_UNDEF       0               /* Undefined section reference */ | 
|---|
| 461 | #define SHN_LORESERVE   0xFF00          /* Begin range of reserved indices */ | 
|---|
| 462 | #define SHN_LOPROC      0xFF00          /* Begin range of appl-specific */ | 
|---|
| 463 | #define SHN_HIPROC      0xFF1F          /* End range of appl-specific */ | 
|---|
| 464 | #define SHN_LOOS        0xFF20          /* OS specific semantics, lo */ | 
|---|
| 465 | #define SHN_HIOS        0xFF3F          /* OS specific semantics, hi */ | 
|---|
| 466 | #define SHN_ABS         0xFFF1          /* Associated symbol is absolute */ | 
|---|
| 467 | #define SHN_COMMON      0xFFF2          /* Associated symbol is in common */ | 
|---|
| 468 | #define SHN_XINDEX      0xFFFF          /* Section index is held elsewhere */ | 
|---|
| 469 | #define SHN_HIRESERVE   0xFFFF          /* End range of reserved indices */ | 
|---|
| 470 | #define SHN_BAD         ((unsigned) -1) /* Used internally by bfd */ | 
|---|
| 471 |  | 
|---|
| 472 | /* The following constants control how a symbol may be accessed once it has | 
|---|
| 473 | become part of an executable or shared library.  */ | 
|---|
| 474 |  | 
|---|
| 475 | #define STV_DEFAULT     0               /* Visibility is specified by binding type */ | 
|---|
| 476 | #define STV_INTERNAL    1               /* OS specific version of STV_HIDDEN */ | 
|---|
| 477 | #define STV_HIDDEN      2               /* Can only be seen inside currect component */ | 
|---|
| 478 | #define STV_PROTECTED   3               /* Treat as STB_LOCAL inside current component */ | 
|---|
| 479 |  | 
|---|
| 480 | /* Relocation info handling macros.  */ | 
|---|
| 481 |  | 
|---|
| 482 | #define ELF32_R_SYM(i)          ((i) >> 8) | 
|---|
| 483 | #define ELF32_R_TYPE(i)         ((i) & 0xff) | 
|---|
| 484 | #define ELF32_R_INFO(s,t)       (((s) << 8) + ((t) & 0xff)) | 
|---|
| 485 |  | 
|---|
| 486 | #define ELF64_R_SYM(i)          ((i) >> 32) | 
|---|
| 487 | #define ELF64_R_TYPE(i)         ((i) & 0xffffffff) | 
|---|
| 488 | #define ELF64_R_INFO(s,t)       (((bfd_vma) (s) << 32) + (bfd_vma) (t)) | 
|---|
| 489 |  | 
|---|
| 490 | /* Dynamic section tags.  */ | 
|---|
| 491 |  | 
|---|
| 492 | #define DT_NULL         0 | 
|---|
| 493 | #define DT_NEEDED       1 | 
|---|
| 494 | #define DT_PLTRELSZ     2 | 
|---|
| 495 | #define DT_PLTGOT       3 | 
|---|
| 496 | #define DT_HASH         4 | 
|---|
| 497 | #define DT_STRTAB       5 | 
|---|
| 498 | #define DT_SYMTAB       6 | 
|---|
| 499 | #define DT_RELA         7 | 
|---|
| 500 | #define DT_RELASZ       8 | 
|---|
| 501 | #define DT_RELAENT      9 | 
|---|
| 502 | #define DT_STRSZ        10 | 
|---|
| 503 | #define DT_SYMENT       11 | 
|---|
| 504 | #define DT_INIT         12 | 
|---|
| 505 | #define DT_FINI         13 | 
|---|
| 506 | #define DT_SONAME       14 | 
|---|
| 507 | #define DT_RPATH        15 | 
|---|
| 508 | #define DT_SYMBOLIC     16 | 
|---|
| 509 | #define DT_REL          17 | 
|---|
| 510 | #define DT_RELSZ        18 | 
|---|
| 511 | #define DT_RELENT       19 | 
|---|
| 512 | #define DT_PLTREL       20 | 
|---|
| 513 | #define DT_DEBUG        21 | 
|---|
| 514 | #define DT_TEXTREL      22 | 
|---|
| 515 | #define DT_JMPREL       23 | 
|---|
| 516 | #define DT_BIND_NOW     24 | 
|---|
| 517 | #define DT_INIT_ARRAY   25 | 
|---|
| 518 | #define DT_FINI_ARRAY   26 | 
|---|
| 519 | #define DT_INIT_ARRAYSZ 27 | 
|---|
| 520 | #define DT_FINI_ARRAYSZ 28 | 
|---|
| 521 | #define DT_RUNPATH      29 | 
|---|
| 522 | #define DT_FLAGS        30 | 
|---|
| 523 | #define DT_ENCODING     31 | 
|---|
| 524 | #define DT_PREINIT_ARRAY   32 | 
|---|
| 525 | #define DT_PREINIT_ARRAYSZ 33 | 
|---|
| 526 |  | 
|---|
| 527 | /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values | 
|---|
| 528 | for DT_LOOS and DT_HIOS.  Some implementations however, use | 
|---|
| 529 | values outside of the new range (see below).  */ | 
|---|
| 530 | #define OLD_DT_LOOS     0x60000000 | 
|---|
| 531 | #define DT_LOOS         0x6000000d | 
|---|
| 532 | #define DT_HIOS         0x6fff0000 | 
|---|
| 533 | #define OLD_DT_HIOS     0x6fffffff | 
|---|
| 534 |  | 
|---|
| 535 | #define DT_LOPROC       0x70000000 | 
|---|
| 536 | #define DT_HIPROC       0x7fffffff | 
|---|
| 537 |  | 
|---|
| 538 | /* The next four dynamic tags are used on Solaris.  We support them | 
|---|
| 539 | everywhere.  Note these values lie outside of the (new) range for | 
|---|
| 540 | OS specific values.  This is a deliberate special case and we | 
|---|
| 541 | maintain it for backwards compatability.  */ | 
|---|
| 542 | #define DT_VALRNGLO     0x6ffffd00 | 
|---|
| 543 | #define DT_GNU_PRELINKED 0x6ffffdf5 | 
|---|
| 544 | #define DT_GNU_CONFLICTSZ 0x6ffffdf6 | 
|---|
| 545 | #define DT_GNU_LIBLISTSZ 0x6ffffdf7 | 
|---|
| 546 | #define DT_CHECKSUM     0x6ffffdf8 | 
|---|
| 547 | #define DT_PLTPADSZ     0x6ffffdf9 | 
|---|
| 548 | #define DT_MOVEENT      0x6ffffdfa | 
|---|
| 549 | #define DT_MOVESZ       0x6ffffdfb | 
|---|
| 550 | #define DT_FEATURE      0x6ffffdfc | 
|---|
| 551 | #define DT_POSFLAG_1    0x6ffffdfd | 
|---|
| 552 | #define DT_SYMINSZ      0x6ffffdfe | 
|---|
| 553 | #define DT_SYMINENT     0x6ffffdff | 
|---|
| 554 | #define DT_VALRNGHI     0x6ffffdff | 
|---|
| 555 |  | 
|---|
| 556 | #define DT_ADDRRNGLO    0x6ffffe00 | 
|---|
| 557 | #define DT_GNU_CONFLICT 0x6ffffef8 | 
|---|
| 558 | #define DT_GNU_LIBLIST  0x6ffffef9 | 
|---|
| 559 | #define DT_CONFIG       0x6ffffefa | 
|---|
| 560 | #define DT_DEPAUDIT     0x6ffffefb | 
|---|
| 561 | #define DT_AUDIT        0x6ffffefc | 
|---|
| 562 | #define DT_PLTPAD       0x6ffffefd | 
|---|
| 563 | #define DT_MOVETAB      0x6ffffefe | 
|---|
| 564 | #define DT_SYMINFO      0x6ffffeff | 
|---|
| 565 | #define DT_ADDRRNGHI    0x6ffffeff | 
|---|
| 566 |  | 
|---|
| 567 | #define DT_RELACOUNT    0x6ffffff9 | 
|---|
| 568 | #define DT_RELCOUNT     0x6ffffffa | 
|---|
| 569 | #define DT_FLAGS_1      0x6ffffffb | 
|---|
| 570 | #define DT_VERDEF       0x6ffffffc | 
|---|
| 571 | #define DT_VERDEFNUM    0x6ffffffd | 
|---|
| 572 | #define DT_VERNEED      0x6ffffffe | 
|---|
| 573 | #define DT_VERNEEDNUM   0x6fffffff | 
|---|
| 574 |  | 
|---|
| 575 | /* This tag is a GNU extension to the Solaris version scheme.  */ | 
|---|
| 576 | #define DT_VERSYM       0x6ffffff0 | 
|---|
| 577 |  | 
|---|
| 578 | #define DT_LOPROC       0x70000000 | 
|---|
| 579 | #define DT_HIPROC       0x7fffffff | 
|---|
| 580 |  | 
|---|
| 581 | /* These section tags are used on Solaris.  We support them | 
|---|
| 582 | everywhere, and hope they do not conflict.  */ | 
|---|
| 583 |  | 
|---|
| 584 | #define DT_AUXILIARY    0x7ffffffd | 
|---|
| 585 | #define DT_USED         0x7ffffffe | 
|---|
| 586 | #define DT_FILTER       0x7fffffff | 
|---|
| 587 |  | 
|---|
| 588 |  | 
|---|
| 589 | /* Values used in DT_FEATURE .dynamic entry.  */ | 
|---|
| 590 | #define DTF_1_PARINIT   0x00000001 | 
|---|
| 591 | /* From | 
|---|
| 592 |  | 
|---|
| 593 | http://docs.sun.com:80/ab2/coll.45.13/LLM/@Ab2PageView/21165?Ab2Lang=C&Ab2Enc=iso-8859-1 | 
|---|
| 594 |  | 
|---|
| 595 | DTF_1_CONFEXP is the same as DTF_1_PARINIT. It is a typo. The value | 
|---|
| 596 | defined here is the same as the one in <sys/link.h> on Solaris 8.  */ | 
|---|
| 597 | #define DTF_1_CONFEXP   0x00000002 | 
|---|
| 598 |  | 
|---|
| 599 | /* Flag values used in the DT_POSFLAG_1 .dynamic entry.  */ | 
|---|
| 600 | #define DF_P1_LAZYLOAD  0x00000001 | 
|---|
| 601 | #define DF_P1_GROUPPERM 0x00000002 | 
|---|
| 602 |  | 
|---|
| 603 | /* Flag value in in the DT_FLAGS_1 .dynamic entry.  */ | 
|---|
| 604 | #define DF_1_NOW        0x00000001 | 
|---|
| 605 | #define DF_1_GLOBAL     0x00000002 | 
|---|
| 606 | #define DF_1_GROUP      0x00000004 | 
|---|
| 607 | #define DF_1_NODELETE   0x00000008 | 
|---|
| 608 | #define DF_1_LOADFLTR   0x00000010 | 
|---|
| 609 | #define DF_1_INITFIRST  0x00000020 | 
|---|
| 610 | #define DF_1_NOOPEN     0x00000040 | 
|---|
| 611 | #define DF_1_ORIGIN     0x00000080 | 
|---|
| 612 | #define DF_1_DIRECT     0x00000100 | 
|---|
| 613 | #define DF_1_TRANS      0x00000200 | 
|---|
| 614 | #define DF_1_INTERPOSE  0x00000400 | 
|---|
| 615 | #define DF_1_NODEFLIB   0x00000800 | 
|---|
| 616 | #define DF_1_NODUMP     0x00001000 | 
|---|
| 617 | #define DF_1_CONLFAT    0x00002000 | 
|---|
| 618 |  | 
|---|
| 619 | /* Flag values for the DT_FLAGS entry.  */ | 
|---|
| 620 | #define DF_ORIGIN       (1 << 0) | 
|---|
| 621 | #define DF_SYMBOLIC     (1 << 1) | 
|---|
| 622 | #define DF_TEXTREL      (1 << 2) | 
|---|
| 623 | #define DF_BIND_NOW     (1 << 3) | 
|---|
| 624 | #define DF_STATIC_TLS   (1 << 4) | 
|---|
| 625 |  | 
|---|
| 626 | /* These constants are used for the version number of a Elf32_Verdef | 
|---|
| 627 | structure.  */ | 
|---|
| 628 |  | 
|---|
| 629 | #define VER_DEF_NONE            0 | 
|---|
| 630 | #define VER_DEF_CURRENT         1 | 
|---|
| 631 |  | 
|---|
| 632 | /* These constants appear in the vd_flags field of a Elf32_Verdef | 
|---|
| 633 | structure.  */ | 
|---|
| 634 |  | 
|---|
| 635 | #define VER_FLG_BASE            0x1 | 
|---|
| 636 | #define VER_FLG_WEAK            0x2 | 
|---|
| 637 |  | 
|---|
| 638 | /* These special constants can be found in an Elf32_Versym field.  */ | 
|---|
| 639 |  | 
|---|
| 640 | #define VER_NDX_LOCAL           0 | 
|---|
| 641 | #define VER_NDX_GLOBAL          1 | 
|---|
| 642 |  | 
|---|
| 643 | /* These constants are used for the version number of a Elf32_Verneed | 
|---|
| 644 | structure.  */ | 
|---|
| 645 |  | 
|---|
| 646 | #define VER_NEED_NONE           0 | 
|---|
| 647 | #define VER_NEED_CURRENT        1 | 
|---|
| 648 |  | 
|---|
| 649 | /* This flag appears in a Versym structure.  It means that the symbol | 
|---|
| 650 | is hidden, and is only visible with an explicit version number. | 
|---|
| 651 | This is a GNU extension.  */ | 
|---|
| 652 |  | 
|---|
| 653 | #define VERSYM_HIDDEN           0x8000 | 
|---|
| 654 |  | 
|---|
| 655 | /* This is the mask for the rest of the Versym information.  */ | 
|---|
| 656 |  | 
|---|
| 657 | #define VERSYM_VERSION          0x7fff | 
|---|
| 658 |  | 
|---|
| 659 | /* This is a special token which appears as part of a symbol name.  It | 
|---|
| 660 | indictes that the rest of the name is actually the name of a | 
|---|
| 661 | version node, and is not part of the actual name.  This is a GNU | 
|---|
| 662 | extension.  For example, the symbol name `stat@ver2' is taken to | 
|---|
| 663 | mean the symbol `stat' in version `ver2'.  */ | 
|---|
| 664 |  | 
|---|
| 665 | #define ELF_VER_CHR     '@' | 
|---|
| 666 |  | 
|---|
| 667 | /* Possible values for si_boundto.  */ | 
|---|
| 668 |  | 
|---|
| 669 | #define SYMINFO_BT_SELF         0xffff  /* Symbol bound to self */ | 
|---|
| 670 | #define SYMINFO_BT_PARENT       0xfffe  /* Symbol bound to parent */ | 
|---|
| 671 | #define SYMINFO_BT_LOWRESERVE   0xff00  /* Beginning of reserved entries */ | 
|---|
| 672 |  | 
|---|
| 673 | /* Possible bitmasks for si_flags.  */ | 
|---|
| 674 |  | 
|---|
| 675 | #define SYMINFO_FLG_DIRECT      0x0001  /* Direct bound symbol */ | 
|---|
| 676 | #define SYMINFO_FLG_PASSTHRU    0x0002  /* Pass-thru symbol for translator */ | 
|---|
| 677 | #define SYMINFO_FLG_COPY        0x0004  /* Symbol is a copy-reloc */ | 
|---|
| 678 | #define SYMINFO_FLG_LAZYLOAD    0x0008  /* Symbol bound to object to be lazy loaded */ | 
|---|
| 679 |  | 
|---|
| 680 | /* Syminfo version values.  */ | 
|---|
| 681 |  | 
|---|
| 682 | #define SYMINFO_NONE            0 | 
|---|
| 683 | #define SYMINFO_CURRENT         1 | 
|---|
| 684 | #define SYMINFO_NUM             2 | 
|---|
| 685 |  | 
|---|
| 686 | /* Section Group Flags.  */ | 
|---|
| 687 |  | 
|---|
| 688 | #define GRP_COMDAT              0x1     /* A COMDAT group */ | 
|---|
| 689 |  | 
|---|
| 690 | #endif /* _ELF_COMMON_H */ | 
|---|