Changeset 34449


Ignore:
Timestamp:
2012-12-02T16:26:19+01:00 (5 years ago)
Author:
nbd
Message:

kernel: patch in a working copy of elf.h instead of using relative path based hackery in #include statements

Location:
trunk/target/linux/generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/patches-3.3/210-darwin_scripts_include.patch

    r29986 r34449  
    5858 #include <elf.h> 
    5959+#else 
    60 +#include "../../../../../tools/sstrip/include/elf.h" 
     60+#include "elf.h" 
    6161+#endif 
    6262  
     
    7272 #include <elf.h> 
    7373+#else 
    74 +#include "../../../../../tools/sstrip/include/elf.h" 
     74+#include "elf.h" 
    7575+#endif 
    7676  
    7777 #include "elfconfig.h" 
    7878  
     79--- /dev/null 
     80+++ b/scripts/mod/elf.h 
     81@@ -0,0 +1,3007 @@ 
     82+/* This file defines standard ELF types, structures, and macros. 
     83+   Copyright (C) 1995-2012 Free Software Foundation, Inc. 
     84+   This file is part of the GNU C Library. 
     85+ 
     86+   The GNU C Library is free software; you can redistribute it and/or 
     87+   modify it under the terms of the GNU Lesser General Public 
     88+   License as published by the Free Software Foundation; either 
     89+   version 2.1 of the License, or (at your option) any later version. 
     90+ 
     91+   The GNU C Library is distributed in the hope that it will be useful, 
     92+   but WITHOUT ANY WARRANTY; without even the implied warranty of 
     93+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
     94+   Lesser General Public License for more details. 
     95+ 
     96+   You should have received a copy of the GNU Lesser General Public 
     97+   License along with the GNU C Library; if not, see 
     98+   <http://www.gnu.org/licenses/>.  */ 
     99+ 
     100+#ifndef _ELF_H 
     101+#define        _ELF_H 1 
     102+ 
     103+/* Standard ELF types.  */ 
     104+ 
     105+#include <stdint.h> 
     106+ 
     107+/* Type for a 16-bit quantity.  */ 
     108+typedef uint16_t Elf32_Half; 
     109+typedef uint16_t Elf64_Half; 
     110+ 
     111+/* Types for signed and unsigned 32-bit quantities.  */ 
     112+typedef uint32_t Elf32_Word; 
     113+typedef        int32_t  Elf32_Sword; 
     114+typedef uint32_t Elf64_Word; 
     115+typedef        int32_t  Elf64_Sword; 
     116+ 
     117+/* Types for signed and unsigned 64-bit quantities.  */ 
     118+typedef uint64_t Elf32_Xword; 
     119+typedef        int64_t  Elf32_Sxword; 
     120+typedef uint64_t Elf64_Xword; 
     121+typedef        int64_t  Elf64_Sxword; 
     122+ 
     123+/* Type of addresses.  */ 
     124+typedef uint32_t Elf32_Addr; 
     125+typedef uint64_t Elf64_Addr; 
     126+ 
     127+/* Type of file offsets.  */ 
     128+typedef uint32_t Elf32_Off; 
     129+typedef uint64_t Elf64_Off; 
     130+ 
     131+/* Type for section indices, which are 16-bit quantities.  */ 
     132+typedef uint16_t Elf32_Section; 
     133+typedef uint16_t Elf64_Section; 
     134+ 
     135+/* Type for version symbol information.  */ 
     136+typedef Elf32_Half Elf32_Versym; 
     137+typedef Elf64_Half Elf64_Versym; 
     138+ 
     139+ 
     140+/* The ELF file header.  This appears at the start of every ELF file.  */ 
     141+ 
     142+#define EI_NIDENT (16) 
     143+ 
     144+typedef struct 
     145+{ 
     146+  unsigned char        e_ident[EI_NIDENT];     /* Magic number and other info */ 
     147+  Elf32_Half   e_type;                 /* Object file type */ 
     148+  Elf32_Half   e_machine;              /* Architecture */ 
     149+  Elf32_Word   e_version;              /* Object file version */ 
     150+  Elf32_Addr   e_entry;                /* Entry point virtual address */ 
     151+  Elf32_Off    e_phoff;                /* Program header table file offset */ 
     152+  Elf32_Off    e_shoff;                /* Section header table file offset */ 
     153+  Elf32_Word   e_flags;                /* Processor-specific flags */ 
     154+  Elf32_Half   e_ehsize;               /* ELF header size in bytes */ 
     155+  Elf32_Half   e_phentsize;            /* Program header table entry size */ 
     156+  Elf32_Half   e_phnum;                /* Program header table entry count */ 
     157+  Elf32_Half   e_shentsize;            /* Section header table entry size */ 
     158+  Elf32_Half   e_shnum;                /* Section header table entry count */ 
     159+  Elf32_Half   e_shstrndx;             /* Section header string table index */ 
     160+} Elf32_Ehdr; 
     161+ 
     162+typedef struct 
     163+{ 
     164+  unsigned char        e_ident[EI_NIDENT];     /* Magic number and other info */ 
     165+  Elf64_Half   e_type;                 /* Object file type */ 
     166+  Elf64_Half   e_machine;              /* Architecture */ 
     167+  Elf64_Word   e_version;              /* Object file version */ 
     168+  Elf64_Addr   e_entry;                /* Entry point virtual address */ 
     169+  Elf64_Off    e_phoff;                /* Program header table file offset */ 
     170+  Elf64_Off    e_shoff;                /* Section header table file offset */ 
     171+  Elf64_Word   e_flags;                /* Processor-specific flags */ 
     172+  Elf64_Half   e_ehsize;               /* ELF header size in bytes */ 
     173+  Elf64_Half   e_phentsize;            /* Program header table entry size */ 
     174+  Elf64_Half   e_phnum;                /* Program header table entry count */ 
     175+  Elf64_Half   e_shentsize;            /* Section header table entry size */ 
     176+  Elf64_Half   e_shnum;                /* Section header table entry count */ 
     177+  Elf64_Half   e_shstrndx;             /* Section header string table index */ 
     178+} Elf64_Ehdr; 
     179+ 
     180+/* Fields in the e_ident array.  The EI_* macros are indices into the 
     181+   array.  The macros under each EI_* macro are the values the byte 
     182+   may have.  */ 
     183+ 
     184+#define EI_MAG0                0               /* File identification byte 0 index */ 
     185+#define ELFMAG0                0x7f            /* Magic number byte 0 */ 
     186+ 
     187+#define EI_MAG1                1               /* File identification byte 1 index */ 
     188+#define ELFMAG1                'E'             /* Magic number byte 1 */ 
     189+ 
     190+#define EI_MAG2                2               /* File identification byte 2 index */ 
     191+#define ELFMAG2                'L'             /* Magic number byte 2 */ 
     192+ 
     193+#define EI_MAG3                3               /* File identification byte 3 index */ 
     194+#define ELFMAG3                'F'             /* Magic number byte 3 */ 
     195+ 
     196+/* Conglomeration of the identification bytes, for easy testing as a word.  */ 
     197+#define        ELFMAG          "\177ELF" 
     198+#define        SELFMAG         4 
     199+ 
     200+#define EI_CLASS       4               /* File class byte index */ 
     201+#define ELFCLASSNONE   0               /* Invalid class */ 
     202+#define ELFCLASS32     1               /* 32-bit objects */ 
     203+#define ELFCLASS64     2               /* 64-bit objects */ 
     204+#define ELFCLASSNUM    3 
     205+ 
     206+#define EI_DATA                5               /* Data encoding byte index */ 
     207+#define ELFDATANONE    0               /* Invalid data encoding */ 
     208+#define ELFDATA2LSB    1               /* 2's complement, little endian */ 
     209+#define ELFDATA2MSB    2               /* 2's complement, big endian */ 
     210+#define ELFDATANUM     3 
     211+ 
     212+#define EI_VERSION     6               /* File version byte index */ 
     213+                                       /* Value must be EV_CURRENT */ 
     214+ 
     215+#define EI_OSABI       7               /* OS ABI identification */ 
     216+#define ELFOSABI_NONE          0       /* UNIX System V ABI */ 
     217+#define ELFOSABI_SYSV          0       /* Alias.  */ 
     218+#define ELFOSABI_HPUX          1       /* HP-UX */ 
     219+#define ELFOSABI_NETBSD                2       /* NetBSD.  */ 
     220+#define ELFOSABI_GNU           3       /* Object uses GNU ELF extensions.  */ 
     221+#define ELFOSABI_LINUX         ELFOSABI_GNU /* Compatibility alias.  */ 
     222+#define ELFOSABI_SOLARIS       6       /* Sun Solaris.  */ 
     223+#define ELFOSABI_AIX           7       /* IBM AIX.  */ 
     224+#define ELFOSABI_IRIX          8       /* SGI Irix.  */ 
     225+#define ELFOSABI_FREEBSD       9       /* FreeBSD.  */ 
     226+#define ELFOSABI_TRU64         10      /* Compaq TRU64 UNIX.  */ 
     227+#define ELFOSABI_MODESTO       11      /* Novell Modesto.  */ 
     228+#define ELFOSABI_OPENBSD       12      /* OpenBSD.  */ 
     229+#define ELFOSABI_ARM_AEABI     64      /* ARM EABI */ 
     230+#define ELFOSABI_ARM           97      /* ARM */ 
     231+#define ELFOSABI_STANDALONE    255     /* Standalone (embedded) application */ 
     232+ 
     233+#define EI_ABIVERSION  8               /* ABI version */ 
     234+ 
     235+#define EI_PAD         9               /* Byte index of padding bytes */ 
     236+ 
     237+/* Legal values for e_type (object file type).  */ 
     238+ 
     239+#define ET_NONE                0               /* No file type */ 
     240+#define ET_REL         1               /* Relocatable file */ 
     241+#define ET_EXEC                2               /* Executable file */ 
     242+#define ET_DYN         3               /* Shared object file */ 
     243+#define ET_CORE                4               /* Core file */ 
     244+#define        ET_NUM          5               /* Number of defined types */ 
     245+#define ET_LOOS                0xfe00          /* OS-specific range start */ 
     246+#define ET_HIOS                0xfeff          /* OS-specific range end */ 
     247+#define ET_LOPROC      0xff00          /* Processor-specific range start */ 
     248+#define ET_HIPROC      0xffff          /* Processor-specific range end */ 
     249+ 
     250+/* Legal values for e_machine (architecture).  */ 
     251+ 
     252+#define EM_NONE                 0              /* No machine */ 
     253+#define EM_M32          1              /* AT&T WE 32100 */ 
     254+#define EM_SPARC        2              /* SUN SPARC */ 
     255+#define EM_386          3              /* Intel 80386 */ 
     256+#define EM_68K          4              /* Motorola m68k family */ 
     257+#define EM_88K          5              /* Motorola m88k family */ 
     258+#define EM_860          7              /* Intel 80860 */ 
     259+#define EM_MIPS                 8              /* MIPS R3000 big-endian */ 
     260+#define EM_S370                 9              /* IBM System/370 */ 
     261+#define EM_MIPS_RS3_LE 10              /* MIPS R3000 little-endian */ 
     262+ 
     263+#define EM_PARISC      15              /* HPPA */ 
     264+#define EM_VPP500      17              /* Fujitsu VPP500 */ 
     265+#define EM_SPARC32PLUS 18              /* Sun's "v8plus" */ 
     266+#define EM_960         19              /* Intel 80960 */ 
     267+#define EM_PPC         20              /* PowerPC */ 
     268+#define EM_PPC64       21              /* PowerPC 64-bit */ 
     269+#define EM_S390                22              /* IBM S390 */ 
     270+ 
     271+#define EM_V800                36              /* NEC V800 series */ 
     272+#define EM_FR20                37              /* Fujitsu FR20 */ 
     273+#define EM_RH32                38              /* TRW RH-32 */ 
     274+#define EM_RCE         39              /* Motorola RCE */ 
     275+#define EM_ARM         40              /* ARM */ 
     276+#define EM_FAKE_ALPHA  41              /* Digital Alpha */ 
     277+#define EM_SH          42              /* Hitachi SH */ 
     278+#define EM_SPARCV9     43              /* SPARC v9 64-bit */ 
     279+#define EM_TRICORE     44              /* Siemens Tricore */ 
     280+#define EM_ARC         45              /* Argonaut RISC Core */ 
     281+#define EM_H8_300      46              /* Hitachi H8/300 */ 
     282+#define EM_H8_300H     47              /* Hitachi H8/300H */ 
     283+#define EM_H8S         48              /* Hitachi H8S */ 
     284+#define EM_H8_500      49              /* Hitachi H8/500 */ 
     285+#define EM_IA_64       50              /* Intel Merced */ 
     286+#define EM_MIPS_X      51              /* Stanford MIPS-X */ 
     287+#define EM_COLDFIRE    52              /* Motorola Coldfire */ 
     288+#define EM_68HC12      53              /* Motorola M68HC12 */ 
     289+#define EM_MMA         54              /* Fujitsu MMA Multimedia Accelerator*/ 
     290+#define EM_PCP         55              /* Siemens PCP */ 
     291+#define EM_NCPU                56              /* Sony nCPU embeeded RISC */ 
     292+#define EM_NDR1                57              /* Denso NDR1 microprocessor */ 
     293+#define EM_STARCORE    58              /* Motorola Start*Core processor */ 
     294+#define EM_ME16                59              /* Toyota ME16 processor */ 
     295+#define EM_ST100       60              /* STMicroelectronic ST100 processor */ 
     296+#define EM_TINYJ       61              /* Advanced Logic Corp. Tinyj emb.fam*/ 
     297+#define EM_X86_64      62              /* AMD x86-64 architecture */ 
     298+#define EM_PDSP                63              /* Sony DSP Processor */ 
     299+ 
     300+#define EM_FX66                66              /* Siemens FX66 microcontroller */ 
     301+#define EM_ST9PLUS     67              /* STMicroelectronics ST9+ 8/16 mc */ 
     302+#define EM_ST7         68              /* STmicroelectronics ST7 8 bit mc */ 
     303+#define EM_68HC16      69              /* Motorola MC68HC16 microcontroller */ 
     304+#define EM_68HC11      70              /* Motorola MC68HC11 microcontroller */ 
     305+#define EM_68HC08      71              /* Motorola MC68HC08 microcontroller */ 
     306+#define EM_68HC05      72              /* Motorola MC68HC05 microcontroller */ 
     307+#define EM_SVX         73              /* Silicon Graphics SVx */ 
     308+#define EM_ST19                74              /* STMicroelectronics ST19 8 bit mc */ 
     309+#define EM_VAX         75              /* Digital VAX */ 
     310+#define EM_CRIS                76              /* Axis Communications 32-bit embedded processor */ 
     311+#define EM_JAVELIN     77              /* Infineon Technologies 32-bit embedded processor */ 
     312+#define EM_FIREPATH    78              /* Element 14 64-bit DSP Processor */ 
     313+#define EM_ZSP         79              /* LSI Logic 16-bit DSP Processor */ 
     314+#define EM_MMIX                80              /* Donald Knuth's educational 64-bit processor */ 
     315+#define EM_HUANY       81              /* Harvard University machine-independent object files */ 
     316+#define EM_PRISM       82              /* SiTera Prism */ 
     317+#define EM_AVR         83              /* Atmel AVR 8-bit microcontroller */ 
     318+#define EM_FR30                84              /* Fujitsu FR30 */ 
     319+#define EM_D10V                85              /* Mitsubishi D10V */ 
     320+#define EM_D30V                86              /* Mitsubishi D30V */ 
     321+#define EM_V850                87              /* NEC v850 */ 
     322+#define EM_M32R                88              /* Mitsubishi M32R */ 
     323+#define EM_MN10300     89              /* Matsushita MN10300 */ 
     324+#define EM_MN10200     90              /* Matsushita MN10200 */ 
     325+#define EM_PJ          91              /* picoJava */ 
     326+#define EM_OPENRISC    92              /* OpenRISC 32-bit embedded processor */ 
     327+#define EM_ARC_A5      93              /* ARC Cores Tangent-A5 */ 
     328+#define EM_XTENSA      94              /* Tensilica Xtensa Architecture */ 
     329+#define EM_TILEPRO     188             /* Tilera TILEPro */ 
     330+#define EM_TILEGX      191             /* Tilera TILE-Gx */ 
     331+#define EM_NUM         192 
     332+ 
     333+/* If it is necessary to assign new unofficial EM_* values, please 
     334+   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the 
     335+   chances of collision with official or non-GNU unofficial values.  */ 
     336+ 
     337+#define EM_ALPHA       0x9026 
     338+ 
     339+/* Legal values for e_version (version).  */ 
     340+ 
     341+#define EV_NONE                0               /* Invalid ELF version */ 
     342+#define EV_CURRENT     1               /* Current version */ 
     343+#define EV_NUM         2 
     344+ 
     345+/* Section header.  */ 
     346+ 
     347+typedef struct 
     348+{ 
     349+  Elf32_Word   sh_name;                /* Section name (string tbl index) */ 
     350+  Elf32_Word   sh_type;                /* Section type */ 
     351+  Elf32_Word   sh_flags;               /* Section flags */ 
     352+  Elf32_Addr   sh_addr;                /* Section virtual addr at execution */ 
     353+  Elf32_Off    sh_offset;              /* Section file offset */ 
     354+  Elf32_Word   sh_size;                /* Section size in bytes */ 
     355+  Elf32_Word   sh_link;                /* Link to another section */ 
     356+  Elf32_Word   sh_info;                /* Additional section information */ 
     357+  Elf32_Word   sh_addralign;           /* Section alignment */ 
     358+  Elf32_Word   sh_entsize;             /* Entry size if section holds table */ 
     359+} Elf32_Shdr; 
     360+ 
     361+typedef struct 
     362+{ 
     363+  Elf64_Word   sh_name;                /* Section name (string tbl index) */ 
     364+  Elf64_Word   sh_type;                /* Section type */ 
     365+  Elf64_Xword  sh_flags;               /* Section flags */ 
     366+  Elf64_Addr   sh_addr;                /* Section virtual addr at execution */ 
     367+  Elf64_Off    sh_offset;              /* Section file offset */ 
     368+  Elf64_Xword  sh_size;                /* Section size in bytes */ 
     369+  Elf64_Word   sh_link;                /* Link to another section */ 
     370+  Elf64_Word   sh_info;                /* Additional section information */ 
     371+  Elf64_Xword  sh_addralign;           /* Section alignment */ 
     372+  Elf64_Xword  sh_entsize;             /* Entry size if section holds table */ 
     373+} Elf64_Shdr; 
     374+ 
     375+/* Special section indices.  */ 
     376+ 
     377+#define SHN_UNDEF      0               /* Undefined section */ 
     378+#define SHN_LORESERVE  0xff00          /* Start of reserved indices */ 
     379+#define SHN_LOPROC     0xff00          /* Start of processor-specific */ 
     380+#define SHN_BEFORE     0xff00          /* Order section before all others 
     381+                                          (Solaris).  */ 
     382+#define SHN_AFTER      0xff01          /* Order section after all others 
     383+                                          (Solaris).  */ 
     384+#define SHN_HIPROC     0xff1f          /* End of processor-specific */ 
     385+#define SHN_LOOS       0xff20          /* Start of OS-specific */ 
     386+#define SHN_HIOS       0xff3f          /* End of OS-specific */ 
     387+#define SHN_ABS                0xfff1          /* Associated symbol is absolute */ 
     388+#define SHN_COMMON     0xfff2          /* Associated symbol is common */ 
     389+#define SHN_XINDEX     0xffff          /* Index is in extra table.  */ 
     390+#define SHN_HIRESERVE  0xffff          /* End of reserved indices */ 
     391+ 
     392+/* Legal values for sh_type (section type).  */ 
     393+ 
     394+#define SHT_NULL         0             /* Section header table entry unused */ 
     395+#define SHT_PROGBITS     1             /* Program data */ 
     396+#define SHT_SYMTAB       2             /* Symbol table */ 
     397+#define SHT_STRTAB       3             /* String table */ 
     398+#define SHT_RELA         4             /* Relocation entries with addends */ 
     399+#define SHT_HASH         5             /* Symbol hash table */ 
     400+#define SHT_DYNAMIC      6             /* Dynamic linking information */ 
     401+#define SHT_NOTE         7             /* Notes */ 
     402+#define SHT_NOBITS       8             /* Program space with no data (bss) */ 
     403+#define SHT_REL                  9             /* Relocation entries, no addends */ 
     404+#define SHT_SHLIB        10            /* Reserved */ 
     405+#define SHT_DYNSYM       11            /* Dynamic linker symbol table */ 
     406+#define SHT_INIT_ARRAY   14            /* Array of constructors */ 
     407+#define SHT_FINI_ARRAY   15            /* Array of destructors */ 
     408+#define SHT_PREINIT_ARRAY 16           /* Array of pre-constructors */ 
     409+#define SHT_GROUP        17            /* Section group */ 
     410+#define SHT_SYMTAB_SHNDX  18           /* Extended section indeces */ 
     411+#define        SHT_NUM           19            /* Number of defined types.  */ 
     412+#define SHT_LOOS         0x60000000    /* Start OS-specific.  */ 
     413+#define SHT_GNU_ATTRIBUTES 0x6ffffff5  /* Object attributes.  */ 
     414+#define SHT_GNU_HASH     0x6ffffff6    /* GNU-style hash table.  */ 
     415+#define SHT_GNU_LIBLIST          0x6ffffff7    /* Prelink library list */ 
     416+#define SHT_CHECKSUM     0x6ffffff8    /* Checksum for DSO content.  */ 
     417+#define SHT_LOSUNW       0x6ffffffa    /* Sun-specific low bound.  */ 
     418+#define SHT_SUNW_move    0x6ffffffa 
     419+#define SHT_SUNW_COMDAT   0x6ffffffb 
     420+#define SHT_SUNW_syminfo  0x6ffffffc 
     421+#define SHT_GNU_verdef   0x6ffffffd    /* Version definition section.  */ 
     422+#define SHT_GNU_verneed          0x6ffffffe    /* Version needs section.  */ 
     423+#define SHT_GNU_versym   0x6fffffff    /* Version symbol table.  */ 
     424+#define SHT_HISUNW       0x6fffffff    /* Sun-specific high bound.  */ 
     425+#define SHT_HIOS         0x6fffffff    /* End OS-specific type */ 
     426+#define SHT_LOPROC       0x70000000    /* Start of processor-specific */ 
     427+#define SHT_HIPROC       0x7fffffff    /* End of processor-specific */ 
     428+#define SHT_LOUSER       0x80000000    /* Start of application-specific */ 
     429+#define SHT_HIUSER       0x8fffffff    /* End of application-specific */ 
     430+ 
     431+/* Legal values for sh_flags (section flags).  */ 
     432+ 
     433+#define SHF_WRITE           (1 << 0)   /* Writable */ 
     434+#define SHF_ALLOC           (1 << 1)   /* Occupies memory during execution */ 
     435+#define SHF_EXECINSTR       (1 << 2)   /* Executable */ 
     436+#define SHF_MERGE           (1 << 4)   /* Might be merged */ 
     437+#define SHF_STRINGS         (1 << 5)   /* Contains nul-terminated strings */ 
     438+#define SHF_INFO_LINK       (1 << 6)   /* `sh_info' contains SHT index */ 
     439+#define SHF_LINK_ORDER      (1 << 7)   /* Preserve order after combining */ 
     440+#define SHF_OS_NONCONFORMING (1 << 8)  /* Non-standard OS specific handling 
     441+                                          required */ 
     442+#define SHF_GROUP           (1 << 9)   /* Section is member of a group.  */ 
     443+#define SHF_TLS                     (1 << 10)  /* Section hold thread-local data.  */ 
     444+#define SHF_MASKOS          0x0ff00000 /* OS-specific.  */ 
     445+#define SHF_MASKPROC        0xf0000000 /* Processor-specific */ 
     446+#define SHF_ORDERED         (1 << 30)  /* Special ordering requirement 
     447+                                          (Solaris).  */ 
     448+#define SHF_EXCLUDE         (1 << 31)  /* Section is excluded unless 
     449+                                          referenced or allocated (Solaris).*/ 
     450+ 
     451+/* Section group handling.  */ 
     452+#define GRP_COMDAT     0x1             /* Mark group as COMDAT.  */ 
     453+ 
     454+/* Symbol table entry.  */ 
     455+ 
     456+typedef struct 
     457+{ 
     458+  Elf32_Word   st_name;                /* Symbol name (string tbl index) */ 
     459+  Elf32_Addr   st_value;               /* Symbol value */ 
     460+  Elf32_Word   st_size;                /* Symbol size */ 
     461+  unsigned char        st_info;                /* Symbol type and binding */ 
     462+  unsigned char        st_other;               /* Symbol visibility */ 
     463+  Elf32_Section        st_shndx;               /* Section index */ 
     464+} Elf32_Sym; 
     465+ 
     466+typedef struct 
     467+{ 
     468+  Elf64_Word   st_name;                /* Symbol name (string tbl index) */ 
     469+  unsigned char        st_info;                /* Symbol type and binding */ 
     470+  unsigned char st_other;              /* Symbol visibility */ 
     471+  Elf64_Section        st_shndx;               /* Section index */ 
     472+  Elf64_Addr   st_value;               /* Symbol value */ 
     473+  Elf64_Xword  st_size;                /* Symbol size */ 
     474+} Elf64_Sym; 
     475+ 
     476+/* The syminfo section if available contains additional information about 
     477+   every dynamic symbol.  */ 
     478+ 
     479+typedef struct 
     480+{ 
     481+  Elf32_Half si_boundto;               /* Direct bindings, symbol bound to */ 
     482+  Elf32_Half si_flags;                 /* Per symbol flags */ 
     483+} Elf32_Syminfo; 
     484+ 
     485+typedef struct 
     486+{ 
     487+  Elf64_Half si_boundto;               /* Direct bindings, symbol bound to */ 
     488+  Elf64_Half si_flags;                 /* Per symbol flags */ 
     489+} Elf64_Syminfo; 
     490+ 
     491+/* Possible values for si_boundto.  */ 
     492+#define SYMINFO_BT_SELF                0xffff  /* Symbol bound to self */ 
     493+#define SYMINFO_BT_PARENT      0xfffe  /* Symbol bound to parent */ 
     494+#define SYMINFO_BT_LOWRESERVE  0xff00  /* Beginning of reserved entries */ 
     495+ 
     496+/* Possible bitmasks for si_flags.  */ 
     497+#define SYMINFO_FLG_DIRECT     0x0001  /* Direct bound symbol */ 
     498+#define SYMINFO_FLG_PASSTHRU   0x0002  /* Pass-thru symbol for translator */ 
     499+#define SYMINFO_FLG_COPY       0x0004  /* Symbol is a copy-reloc */ 
     500+#define SYMINFO_FLG_LAZYLOAD   0x0008  /* Symbol bound to object to be lazy 
     501+                                          loaded */ 
     502+/* Syminfo version values.  */ 
     503+#define SYMINFO_NONE           0 
     504+#define SYMINFO_CURRENT                1 
     505+#define SYMINFO_NUM            2 
     506+ 
     507+ 
     508+/* How to extract and insert information held in the st_info field.  */ 
     509+ 
     510+#define ELF32_ST_BIND(val)             (((unsigned char) (val)) >> 4) 
     511+#define ELF32_ST_TYPE(val)             ((val) & 0xf) 
     512+#define ELF32_ST_INFO(bind, type)      (((bind) << 4) + ((type) & 0xf)) 
     513+ 
     514+/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ 
     515+#define ELF64_ST_BIND(val)             ELF32_ST_BIND (val) 
     516+#define ELF64_ST_TYPE(val)             ELF32_ST_TYPE (val) 
     517+#define ELF64_ST_INFO(bind, type)      ELF32_ST_INFO ((bind), (type)) 
     518+ 
     519+/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ 
     520+ 
     521+#define STB_LOCAL      0               /* Local symbol */ 
     522+#define STB_GLOBAL     1               /* Global symbol */ 
     523+#define STB_WEAK       2               /* Weak symbol */ 
     524+#define        STB_NUM         3               /* Number of defined types.  */ 
     525+#define STB_LOOS       10              /* Start of OS-specific */ 
     526+#define STB_GNU_UNIQUE 10              /* Unique symbol.  */ 
     527+#define STB_HIOS       12              /* End of OS-specific */ 
     528+#define STB_LOPROC     13              /* Start of processor-specific */ 
     529+#define STB_HIPROC     15              /* End of processor-specific */ 
     530+ 
     531+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     532+ 
     533+#define STT_NOTYPE     0               /* Symbol type is unspecified */ 
     534+#define STT_OBJECT     1               /* Symbol is a data object */ 
     535+#define STT_FUNC       2               /* Symbol is a code object */ 
     536+#define STT_SECTION    3               /* Symbol associated with a section */ 
     537+#define STT_FILE       4               /* Symbol's name is file name */ 
     538+#define STT_COMMON     5               /* Symbol is a common data object */ 
     539+#define STT_TLS                6               /* Symbol is thread-local data object*/ 
     540+#define        STT_NUM         7               /* Number of defined types.  */ 
     541+#define STT_LOOS       10              /* Start of OS-specific */ 
     542+#define STT_GNU_IFUNC  10              /* Symbol is indirect code object */ 
     543+#define STT_HIOS       12              /* End of OS-specific */ 
     544+#define STT_LOPROC     13              /* Start of processor-specific */ 
     545+#define STT_HIPROC     15              /* End of processor-specific */ 
     546+ 
     547+ 
     548+/* Symbol table indices are found in the hash buckets and chain table 
     549+   of a symbol hash table section.  This special index value indicates 
     550+   the end of a chain, meaning no further symbols are found in that bucket.  */ 
     551+ 
     552+#define STN_UNDEF      0               /* End of a chain.  */ 
     553+ 
     554+ 
     555+/* How to extract and insert information held in the st_other field.  */ 
     556+ 
     557+#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) 
     558+ 
     559+/* For ELF64 the definitions are the same.  */ 
     560+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) 
     561+ 
     562+/* Symbol visibility specification encoded in the st_other field.  */ 
     563+#define STV_DEFAULT    0               /* Default symbol visibility rules */ 
     564+#define STV_INTERNAL   1               /* Processor specific hidden class */ 
     565+#define STV_HIDDEN     2               /* Sym unavailable in other modules */ 
     566+#define STV_PROTECTED  3               /* Not preemptible, not exported */ 
     567+ 
     568+ 
     569+/* Relocation table entry without addend (in section of type SHT_REL).  */ 
     570+ 
     571+typedef struct 
     572+{ 
     573+  Elf32_Addr   r_offset;               /* Address */ 
     574+  Elf32_Word   r_info;                 /* Relocation type and symbol index */ 
     575+} Elf32_Rel; 
     576+ 
     577+/* I have seen two different definitions of the Elf64_Rel and 
     578+   Elf64_Rela structures, so we'll leave them out until Novell (or 
     579+   whoever) gets their act together.  */ 
     580+/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ 
     581+ 
     582+typedef struct 
     583+{ 
     584+  Elf64_Addr   r_offset;               /* Address */ 
     585+  Elf64_Xword  r_info;                 /* Relocation type and symbol index */ 
     586+} Elf64_Rel; 
     587+ 
     588+/* Relocation table entry with addend (in section of type SHT_RELA).  */ 
     589+ 
     590+typedef struct 
     591+{ 
     592+  Elf32_Addr   r_offset;               /* Address */ 
     593+  Elf32_Word   r_info;                 /* Relocation type and symbol index */ 
     594+  Elf32_Sword  r_addend;               /* Addend */ 
     595+} Elf32_Rela; 
     596+ 
     597+typedef struct 
     598+{ 
     599+  Elf64_Addr   r_offset;               /* Address */ 
     600+  Elf64_Xword  r_info;                 /* Relocation type and symbol index */ 
     601+  Elf64_Sxword r_addend;               /* Addend */ 
     602+} Elf64_Rela; 
     603+ 
     604+/* How to extract and insert information held in the r_info field.  */ 
     605+ 
     606+#define ELF32_R_SYM(val)               ((val) >> 8) 
     607+#define ELF32_R_TYPE(val)              ((val) & 0xff) 
     608+#define ELF32_R_INFO(sym, type)                (((sym) << 8) + ((type) & 0xff)) 
     609+ 
     610+#define ELF64_R_SYM(i)                 ((i) >> 32) 
     611+#define ELF64_R_TYPE(i)                        ((i) & 0xffffffff) 
     612+#define ELF64_R_INFO(sym,type)         ((((Elf64_Xword) (sym)) << 32) + (type)) 
     613+ 
     614+/* Program segment header.  */ 
     615+ 
     616+typedef struct 
     617+{ 
     618+  Elf32_Word   p_type;                 /* Segment type */ 
     619+  Elf32_Off    p_offset;               /* Segment file offset */ 
     620+  Elf32_Addr   p_vaddr;                /* Segment virtual address */ 
     621+  Elf32_Addr   p_paddr;                /* Segment physical address */ 
     622+  Elf32_Word   p_filesz;               /* Segment size in file */ 
     623+  Elf32_Word   p_memsz;                /* Segment size in memory */ 
     624+  Elf32_Word   p_flags;                /* Segment flags */ 
     625+  Elf32_Word   p_align;                /* Segment alignment */ 
     626+} Elf32_Phdr; 
     627+ 
     628+typedef struct 
     629+{ 
     630+  Elf64_Word   p_type;                 /* Segment type */ 
     631+  Elf64_Word   p_flags;                /* Segment flags */ 
     632+  Elf64_Off    p_offset;               /* Segment file offset */ 
     633+  Elf64_Addr   p_vaddr;                /* Segment virtual address */ 
     634+  Elf64_Addr   p_paddr;                /* Segment physical address */ 
     635+  Elf64_Xword  p_filesz;               /* Segment size in file */ 
     636+  Elf64_Xword  p_memsz;                /* Segment size in memory */ 
     637+  Elf64_Xword  p_align;                /* Segment alignment */ 
     638+} Elf64_Phdr; 
     639+ 
     640+/* Special value for e_phnum.  This indicates that the real number of 
     641+   program headers is too large to fit into e_phnum.  Instead the real 
     642+   value is in the field sh_info of section 0.  */ 
     643+ 
     644+#define PN_XNUM                0xffff 
     645+ 
     646+/* Legal values for p_type (segment type).  */ 
     647+ 
     648+#define        PT_NULL         0               /* Program header table entry unused */ 
     649+#define PT_LOAD                1               /* Loadable program segment */ 
     650+#define PT_DYNAMIC     2               /* Dynamic linking information */ 
     651+#define PT_INTERP      3               /* Program interpreter */ 
     652+#define PT_NOTE                4               /* Auxiliary information */ 
     653+#define PT_SHLIB       5               /* Reserved */ 
     654+#define PT_PHDR                6               /* Entry for header table itself */ 
     655+#define PT_TLS         7               /* Thread-local storage segment */ 
     656+#define        PT_NUM          8               /* Number of defined types */ 
     657+#define PT_LOOS                0x60000000      /* Start of OS-specific */ 
     658+#define PT_GNU_EH_FRAME        0x6474e550      /* GCC .eh_frame_hdr segment */ 
     659+#define PT_GNU_STACK   0x6474e551      /* Indicates stack executability */ 
     660+#define PT_GNU_RELRO   0x6474e552      /* Read-only after relocation */ 
     661+#define PT_LOSUNW      0x6ffffffa 
     662+#define PT_SUNWBSS     0x6ffffffa      /* Sun Specific segment */ 
     663+#define PT_SUNWSTACK   0x6ffffffb      /* Stack segment */ 
     664+#define PT_HISUNW      0x6fffffff 
     665+#define PT_HIOS                0x6fffffff      /* End of OS-specific */ 
     666+#define PT_LOPROC      0x70000000      /* Start of processor-specific */ 
     667+#define PT_HIPROC      0x7fffffff      /* End of processor-specific */ 
     668+ 
     669+/* Legal values for p_flags (segment flags).  */ 
     670+ 
     671+#define PF_X           (1 << 0)        /* Segment is executable */ 
     672+#define PF_W           (1 << 1)        /* Segment is writable */ 
     673+#define PF_R           (1 << 2)        /* Segment is readable */ 
     674+#define PF_MASKOS      0x0ff00000      /* OS-specific */ 
     675+#define PF_MASKPROC    0xf0000000      /* Processor-specific */ 
     676+ 
     677+/* Legal values for note segment descriptor types for core files. */ 
     678+ 
     679+#define NT_PRSTATUS    1               /* Contains copy of prstatus struct */ 
     680+#define NT_FPREGSET    2               /* Contains copy of fpregset struct */ 
     681+#define NT_PRPSINFO    3               /* Contains copy of prpsinfo struct */ 
     682+#define NT_PRXREG      4               /* Contains copy of prxregset struct */ 
     683+#define NT_TASKSTRUCT  4               /* Contains copy of task structure */ 
     684+#define NT_PLATFORM    5               /* String from sysinfo(SI_PLATFORM) */ 
     685+#define NT_AUXV                6               /* Contains copy of auxv array */ 
     686+#define NT_GWINDOWS    7               /* Contains copy of gwindows struct */ 
     687+#define NT_ASRS                8               /* Contains copy of asrset struct */ 
     688+#define NT_PSTATUS     10              /* Contains copy of pstatus struct */ 
     689+#define NT_PSINFO      13              /* Contains copy of psinfo struct */ 
     690+#define NT_PRCRED      14              /* Contains copy of prcred struct */ 
     691+#define NT_UTSNAME     15              /* Contains copy of utsname struct */ 
     692+#define NT_LWPSTATUS   16              /* Contains copy of lwpstatus struct */ 
     693+#define NT_LWPSINFO    17              /* Contains copy of lwpinfo struct */ 
     694+#define NT_PRFPXREG    20              /* Contains copy of fprxregset struct */ 
     695+#define NT_PRXFPREG    0x46e62b7f      /* Contains copy of user_fxsr_struct */ 
     696+#define NT_PPC_VMX     0x100           /* PowerPC Altivec/VMX registers */ 
     697+#define NT_PPC_SPE     0x101           /* PowerPC SPE/EVR registers */ 
     698+#define NT_PPC_VSX     0x102           /* PowerPC VSX registers */ 
     699+#define NT_386_TLS     0x200           /* i386 TLS slots (struct user_desc) */ 
     700+#define NT_386_IOPERM  0x201           /* x86 io permission bitmap (1=deny) */ 
     701+#define NT_X86_XSTATE  0x202           /* x86 extended state using xsave */ 
     702+ 
     703+/* Legal values for the note segment descriptor types for object files.  */ 
     704+ 
     705+#define NT_VERSION     1               /* Contains a version string.  */ 
     706+ 
     707+ 
     708+/* Dynamic section entry.  */ 
     709+ 
     710+typedef struct 
     711+{ 
     712+  Elf32_Sword  d_tag;                  /* Dynamic entry type */ 
     713+  union 
     714+    { 
     715+      Elf32_Word d_val;                        /* Integer value */ 
     716+      Elf32_Addr d_ptr;                        /* Address value */ 
     717+    } d_un; 
     718+} Elf32_Dyn; 
     719+ 
     720+typedef struct 
     721+{ 
     722+  Elf64_Sxword d_tag;                  /* Dynamic entry type */ 
     723+  union 
     724+    { 
     725+      Elf64_Xword d_val;               /* Integer value */ 
     726+      Elf64_Addr d_ptr;                        /* Address value */ 
     727+    } d_un; 
     728+} Elf64_Dyn; 
     729+ 
     730+/* Legal values for d_tag (dynamic entry type).  */ 
     731+ 
     732+#define DT_NULL                0               /* Marks end of dynamic section */ 
     733+#define DT_NEEDED      1               /* Name of needed library */ 
     734+#define DT_PLTRELSZ    2               /* Size in bytes of PLT relocs */ 
     735+#define DT_PLTGOT      3               /* Processor defined value */ 
     736+#define DT_HASH                4               /* Address of symbol hash table */ 
     737+#define DT_STRTAB      5               /* Address of string table */ 
     738+#define DT_SYMTAB      6               /* Address of symbol table */ 
     739+#define DT_RELA                7               /* Address of Rela relocs */ 
     740+#define DT_RELASZ      8               /* Total size of Rela relocs */ 
     741+#define DT_RELAENT     9               /* Size of one Rela reloc */ 
     742+#define DT_STRSZ       10              /* Size of string table */ 
     743+#define DT_SYMENT      11              /* Size of one symbol table entry */ 
     744+#define DT_INIT                12              /* Address of init function */ 
     745+#define DT_FINI                13              /* Address of termination function */ 
     746+#define DT_SONAME      14              /* Name of shared object */ 
     747+#define DT_RPATH       15              /* Library search path (deprecated) */ 
     748+#define DT_SYMBOLIC    16              /* Start symbol search here */ 
     749+#define DT_REL         17              /* Address of Rel relocs */ 
     750+#define DT_RELSZ       18              /* Total size of Rel relocs */ 
     751+#define DT_RELENT      19              /* Size of one Rel reloc */ 
     752+#define DT_PLTREL      20              /* Type of reloc in PLT */ 
     753+#define DT_DEBUG       21              /* For debugging; unspecified */ 
     754+#define DT_TEXTREL     22              /* Reloc might modify .text */ 
     755+#define DT_JMPREL      23              /* Address of PLT relocs */ 
     756+#define        DT_BIND_NOW     24              /* Process relocations of object */ 
     757+#define        DT_INIT_ARRAY   25              /* Array with addresses of init fct */ 
     758+#define        DT_FINI_ARRAY   26              /* Array with addresses of fini fct */ 
     759+#define        DT_INIT_ARRAYSZ 27              /* Size in bytes of DT_INIT_ARRAY */ 
     760+#define        DT_FINI_ARRAYSZ 28              /* Size in bytes of DT_FINI_ARRAY */ 
     761+#define DT_RUNPATH     29              /* Library search path */ 
     762+#define DT_FLAGS       30              /* Flags for the object being loaded */ 
     763+#define DT_ENCODING    32              /* Start of encoded range */ 
     764+#define DT_PREINIT_ARRAY 32            /* Array with addresses of preinit fct*/ 
     765+#define DT_PREINIT_ARRAYSZ 33          /* size in bytes of DT_PREINIT_ARRAY */ 
     766+#define        DT_NUM          34              /* Number used */ 
     767+#define DT_LOOS                0x6000000d      /* Start of OS-specific */ 
     768+#define DT_HIOS                0x6ffff000      /* End of OS-specific */ 
     769+#define DT_LOPROC      0x70000000      /* Start of processor-specific */ 
     770+#define DT_HIPROC      0x7fffffff      /* End of processor-specific */ 
     771+#define        DT_PROCNUM      DT_MIPS_NUM     /* Most used by any processor */ 
     772+ 
     773+/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the 
     774+   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's 
     775+   approach.  */ 
     776+#define DT_VALRNGLO    0x6ffffd00 
     777+#define DT_GNU_PRELINKED 0x6ffffdf5    /* Prelinking timestamp */ 
     778+#define DT_GNU_CONFLICTSZ 0x6ffffdf6   /* Size of conflict section */ 
     779+#define DT_GNU_LIBLISTSZ 0x6ffffdf7    /* Size of library list */ 
     780+#define DT_CHECKSUM    0x6ffffdf8 
     781+#define DT_PLTPADSZ    0x6ffffdf9 
     782+#define DT_MOVEENT     0x6ffffdfa 
     783+#define DT_MOVESZ      0x6ffffdfb 
     784+#define DT_FEATURE_1   0x6ffffdfc      /* Feature selection (DTF_*).  */ 
     785+#define DT_POSFLAG_1   0x6ffffdfd      /* Flags for DT_* entries, effecting 
     786+                                          the following DT_* entry.  */ 
     787+#define DT_SYMINSZ     0x6ffffdfe      /* Size of syminfo table (in bytes) */ 
     788+#define DT_SYMINENT    0x6ffffdff      /* Entry size of syminfo */ 
     789+#define DT_VALRNGHI    0x6ffffdff 
     790+#define DT_VALTAGIDX(tag)      (DT_VALRNGHI - (tag))   /* Reverse order! */ 
     791+#define DT_VALNUM 12 
     792+ 
     793+/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the 
     794+   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. 
     795+ 
     796+   If any adjustment is made to the ELF object after it has been 
     797+   built these entries will need to be adjusted.  */ 
     798+#define DT_ADDRRNGLO   0x6ffffe00 
     799+#define DT_GNU_HASH    0x6ffffef5      /* GNU-style hash table.  */ 
     800+#define DT_TLSDESC_PLT 0x6ffffef6 
     801+#define DT_TLSDESC_GOT 0x6ffffef7 
     802+#define DT_GNU_CONFLICT        0x6ffffef8      /* Start of conflict section */ 
     803+#define DT_GNU_LIBLIST 0x6ffffef9      /* Library list */ 
     804+#define DT_CONFIG      0x6ffffefa      /* Configuration information.  */ 
     805+#define DT_DEPAUDIT    0x6ffffefb      /* Dependency auditing.  */ 
     806+#define DT_AUDIT       0x6ffffefc      /* Object auditing.  */ 
     807+#define        DT_PLTPAD       0x6ffffefd      /* PLT padding.  */ 
     808+#define        DT_MOVETAB      0x6ffffefe      /* Move table.  */ 
     809+#define DT_SYMINFO     0x6ffffeff      /* Syminfo table.  */ 
     810+#define DT_ADDRRNGHI   0x6ffffeff 
     811+#define DT_ADDRTAGIDX(tag)     (DT_ADDRRNGHI - (tag))  /* Reverse order! */ 
     812+#define DT_ADDRNUM 11 
     813+ 
     814+/* The versioning entry types.  The next are defined as part of the 
     815+   GNU extension.  */ 
     816+#define DT_VERSYM      0x6ffffff0 
     817+ 
     818+#define DT_RELACOUNT   0x6ffffff9 
     819+#define DT_RELCOUNT    0x6ffffffa 
     820+ 
     821+/* These were chosen by Sun.  */ 
     822+#define DT_FLAGS_1     0x6ffffffb      /* State flags, see DF_1_* below.  */ 
     823+#define        DT_VERDEF       0x6ffffffc      /* Address of version definition 
     824+                                          table */ 
     825+#define        DT_VERDEFNUM    0x6ffffffd      /* Number of version definitions */ 
     826+#define        DT_VERNEED      0x6ffffffe      /* Address of table with needed 
     827+                                          versions */ 
     828+#define        DT_VERNEEDNUM   0x6fffffff      /* Number of needed versions */ 
     829+#define DT_VERSIONTAGIDX(tag)  (DT_VERNEEDNUM - (tag)) /* Reverse order! */ 
     830+#define DT_VERSIONTAGNUM 16 
     831+ 
     832+/* Sun added these machine-independent extensions in the "processor-specific" 
     833+   range.  Be compatible.  */ 
     834+#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ 
     835+#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ 
     836+#define DT_EXTRATAGIDX(tag)    ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) 
     837+#define DT_EXTRANUM    3 
     838+ 
     839+/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ 
     840+#define DF_ORIGIN      0x00000001      /* Object may use DF_ORIGIN */ 
     841+#define DF_SYMBOLIC    0x00000002      /* Symbol resolutions starts here */ 
     842+#define DF_TEXTREL     0x00000004      /* Object contains text relocations */ 
     843+#define DF_BIND_NOW    0x00000008      /* No lazy binding for this object */ 
     844+#define DF_STATIC_TLS  0x00000010      /* Module uses the static TLS model */ 
     845+ 
     846+/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 
     847+   entry in the dynamic section.  */ 
     848+#define DF_1_NOW       0x00000001      /* Set RTLD_NOW for this object.  */ 
     849+#define DF_1_GLOBAL    0x00000002      /* Set RTLD_GLOBAL for this object.  */ 
     850+#define DF_1_GROUP     0x00000004      /* Set RTLD_GROUP for this object.  */ 
     851+#define DF_1_NODELETE  0x00000008      /* Set RTLD_NODELETE for this object.*/ 
     852+#define DF_1_LOADFLTR  0x00000010      /* Trigger filtee loading at runtime.*/ 
     853+#define DF_1_INITFIRST 0x00000020      /* Set RTLD_INITFIRST for this object*/ 
     854+#define DF_1_NOOPEN    0x00000040      /* Set RTLD_NOOPEN for this object.  */ 
     855+#define DF_1_ORIGIN    0x00000080      /* $ORIGIN must be handled.  */ 
     856+#define DF_1_DIRECT    0x00000100      /* Direct binding enabled.  */ 
     857+#define DF_1_TRANS     0x00000200 
     858+#define DF_1_INTERPOSE 0x00000400      /* Object is used to interpose.  */ 
     859+#define DF_1_NODEFLIB  0x00000800      /* Ignore default lib search path.  */ 
     860+#define DF_1_NODUMP    0x00001000      /* Object can't be dldump'ed.  */ 
     861+#define DF_1_CONFALT   0x00002000      /* Configuration alternative created.*/ 
     862+#define DF_1_ENDFILTEE 0x00004000      /* Filtee terminates filters search. */ 
     863+#define        DF_1_DISPRELDNE 0x00008000      /* Disp reloc applied at build time. */ 
     864+#define        DF_1_DISPRELPND 0x00010000      /* Disp reloc applied at run-time.  */ 
     865+ 
     866+/* Flags for the feature selection in DT_FEATURE_1.  */ 
     867+#define DTF_1_PARINIT  0x00000001 
     868+#define DTF_1_CONFEXP  0x00000002 
     869+ 
     870+/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ 
     871+#define DF_P1_LAZYLOAD 0x00000001      /* Lazyload following object.  */ 
     872+#define DF_P1_GROUPPERM        0x00000002      /* Symbols from next object are not 
     873+                                          generally available.  */ 
     874+ 
     875+/* Version definition sections.  */ 
     876+ 
     877+typedef struct 
     878+{ 
     879+  Elf32_Half   vd_version;             /* Version revision */ 
     880+  Elf32_Half   vd_flags;               /* Version information */ 
     881+  Elf32_Half   vd_ndx;                 /* Version Index */ 
     882+  Elf32_Half   vd_cnt;                 /* Number of associated aux entries */ 
     883+  Elf32_Word   vd_hash;                /* Version name hash value */ 
     884+  Elf32_Word   vd_aux;                 /* Offset in bytes to verdaux array */ 
     885+  Elf32_Word   vd_next;                /* Offset in bytes to next verdef 
     886+                                          entry */ 
     887+} Elf32_Verdef; 
     888+ 
     889+typedef struct 
     890+{ 
     891+  Elf64_Half   vd_version;             /* Version revision */ 
     892+  Elf64_Half   vd_flags;               /* Version information */ 
     893+  Elf64_Half   vd_ndx;                 /* Version Index */ 
     894+  Elf64_Half   vd_cnt;                 /* Number of associated aux entries */ 
     895+  Elf64_Word   vd_hash;                /* Version name hash value */ 
     896+  Elf64_Word   vd_aux;                 /* Offset in bytes to verdaux array */ 
     897+  Elf64_Word   vd_next;                /* Offset in bytes to next verdef 
     898+                                          entry */ 
     899+} Elf64_Verdef; 
     900+ 
     901+ 
     902+/* Legal values for vd_version (version revision).  */ 
     903+#define VER_DEF_NONE   0               /* No version */ 
     904+#define VER_DEF_CURRENT        1               /* Current version */ 
     905+#define VER_DEF_NUM    2               /* Given version number */ 
     906+ 
     907+/* Legal values for vd_flags (version information flags).  */ 
     908+#define VER_FLG_BASE   0x1             /* Version definition of file itself */ 
     909+#define VER_FLG_WEAK   0x2             /* Weak version identifier */ 
     910+ 
     911+/* Versym symbol index values.  */ 
     912+#define        VER_NDX_LOCAL           0       /* Symbol is local.  */ 
     913+#define        VER_NDX_GLOBAL          1       /* Symbol is global.  */ 
     914+#define        VER_NDX_LORESERVE       0xff00  /* Beginning of reserved entries.  */ 
     915+#define        VER_NDX_ELIMINATE       0xff01  /* Symbol is to be eliminated.  */ 
     916+ 
     917+/* Auxialiary version information.  */ 
     918+ 
     919+typedef struct 
     920+{ 
     921+  Elf32_Word   vda_name;               /* Version or dependency names */ 
     922+  Elf32_Word   vda_next;               /* Offset in bytes to next verdaux 
     923+                                          entry */ 
     924+} Elf32_Verdaux; 
     925+ 
     926+typedef struct 
     927+{ 
     928+  Elf64_Word   vda_name;               /* Version or dependency names */ 
     929+  Elf64_Word   vda_next;               /* Offset in bytes to next verdaux 
     930+                                          entry */ 
     931+} Elf64_Verdaux; 
     932+ 
     933+ 
     934+/* Version dependency section.  */ 
     935+ 
     936+typedef struct 
     937+{ 
     938+  Elf32_Half   vn_version;             /* Version of structure */ 
     939+  Elf32_Half   vn_cnt;                 /* Number of associated aux entries */ 
     940+  Elf32_Word   vn_file;                /* Offset of filename for this 
     941+                                          dependency */ 
     942+  Elf32_Word   vn_aux;                 /* Offset in bytes to vernaux array */ 
     943+  Elf32_Word   vn_next;                /* Offset in bytes to next verneed 
     944+                                          entry */ 
     945+} Elf32_Verneed; 
     946+ 
     947+typedef struct 
     948+{ 
     949+  Elf64_Half   vn_version;             /* Version of structure */ 
     950+  Elf64_Half   vn_cnt;                 /* Number of associated aux entries */ 
     951+  Elf64_Word   vn_file;                /* Offset of filename for this 
     952+                                          dependency */ 
     953+  Elf64_Word   vn_aux;                 /* Offset in bytes to vernaux array */ 
     954+  Elf64_Word   vn_next;                /* Offset in bytes to next verneed 
     955+                                          entry */ 
     956+} Elf64_Verneed; 
     957+ 
     958+ 
     959+/* Legal values for vn_version (version revision).  */ 
     960+#define VER_NEED_NONE   0              /* No version */ 
     961+#define VER_NEED_CURRENT 1             /* Current version */ 
     962+#define VER_NEED_NUM    2              /* Given version number */ 
     963+ 
     964+/* Auxiliary needed version information.  */ 
     965+ 
     966+typedef struct 
     967+{ 
     968+  Elf32_Word   vna_hash;               /* Hash value of dependency name */ 
     969+  Elf32_Half   vna_flags;              /* Dependency specific information */ 
     970+  Elf32_Half   vna_other;              /* Unused */ 
     971+  Elf32_Word   vna_name;               /* Dependency name string offset */ 
     972+  Elf32_Word   vna_next;               /* Offset in bytes to next vernaux 
     973+                                          entry */ 
     974+} Elf32_Vernaux; 
     975+ 
     976+typedef struct 
     977+{ 
     978+  Elf64_Word   vna_hash;               /* Hash value of dependency name */ 
     979+  Elf64_Half   vna_flags;              /* Dependency specific information */ 
     980+  Elf64_Half   vna_other;              /* Unused */ 
     981+  Elf64_Word   vna_name;               /* Dependency name string offset */ 
     982+  Elf64_Word   vna_next;               /* Offset in bytes to next vernaux 
     983+                                          entry */ 
     984+} Elf64_Vernaux; 
     985+ 
     986+ 
     987+/* Legal values for vna_flags.  */ 
     988+#define VER_FLG_WEAK   0x2             /* Weak version identifier */ 
     989+ 
     990+ 
     991+/* Auxiliary vector.  */ 
     992+ 
     993+/* This vector is normally only used by the program interpreter.  The 
     994+   usual definition in an ABI supplement uses the name auxv_t.  The 
     995+   vector is not usually defined in a standard <elf.h> file, but it 
     996+   can't hurt.  We rename it to avoid conflicts.  The sizes of these 
     997+   types are an arrangement between the exec server and the program 
     998+   interpreter, so we don't fully specify them here.  */ 
     999+ 
     1000+typedef struct 
     1001+{ 
     1002+  uint32_t a_type;             /* Entry type */ 
     1003+  union 
     1004+    { 
     1005+      uint32_t a_val;          /* Integer value */ 
     1006+      /* We use to have pointer elements added here.  We cannot do that, 
     1007+        though, since it does not work when using 32-bit definitions 
     1008+        on 64-bit platforms and vice versa.  */ 
     1009+    } a_un; 
     1010+} Elf32_auxv_t; 
     1011+ 
     1012+typedef struct 
     1013+{ 
     1014+  uint64_t a_type;             /* Entry type */ 
     1015+  union 
     1016+    { 
     1017+      uint64_t a_val;          /* Integer value */ 
     1018+      /* We use to have pointer elements added here.  We cannot do that, 
     1019+        though, since it does not work when using 32-bit definitions 
     1020+        on 64-bit platforms and vice versa.  */ 
     1021+    } a_un; 
     1022+} Elf64_auxv_t; 
     1023+ 
     1024+/* Legal values for a_type (entry type).  */ 
     1025+ 
     1026+#define AT_NULL                0               /* End of vector */ 
     1027+#define AT_IGNORE      1               /* Entry should be ignored */ 
     1028+#define AT_EXECFD      2               /* File descriptor of program */ 
     1029+#define AT_PHDR                3               /* Program headers for program */ 
     1030+#define AT_PHENT       4               /* Size of program header entry */ 
     1031+#define AT_PHNUM       5               /* Number of program headers */ 
     1032+#define AT_PAGESZ      6               /* System page size */ 
     1033+#define AT_BASE                7               /* Base address of interpreter */ 
     1034+#define AT_FLAGS       8               /* Flags */ 
     1035+#define AT_ENTRY       9               /* Entry point of program */ 
     1036+#define AT_NOTELF      10              /* Program is not ELF */ 
     1037+#define AT_UID         11              /* Real uid */ 
     1038+#define AT_EUID                12              /* Effective uid */ 
     1039+#define AT_GID         13              /* Real gid */ 
     1040+#define AT_EGID                14              /* Effective gid */ 
     1041+#define AT_CLKTCK      17              /* Frequency of times() */ 
     1042+ 
     1043+/* Some more special a_type values describing the hardware.  */ 
     1044+#define AT_PLATFORM    15              /* String identifying platform.  */ 
     1045+#define AT_HWCAP       16              /* Machine dependent hints about 
     1046+                                          processor capabilities.  */ 
     1047+ 
     1048+/* This entry gives some information about the FPU initialization 
     1049+   performed by the kernel.  */ 
     1050+#define AT_FPUCW       18              /* Used FPU control word.  */ 
     1051+ 
     1052+/* Cache block sizes.  */ 
     1053+#define AT_DCACHEBSIZE 19              /* Data cache block size.  */ 
     1054+#define AT_ICACHEBSIZE 20              /* Instruction cache block size.  */ 
     1055+#define AT_UCACHEBSIZE 21              /* Unified cache block size.  */ 
     1056+ 
     1057+/* A special ignored value for PPC, used by the kernel to control the 
     1058+   interpretation of the AUXV. Must be > 16.  */ 
     1059+#define AT_IGNOREPPC   22              /* Entry should be ignored.  */ 
     1060+ 
     1061+#define        AT_SECURE       23              /* Boolean, was exec setuid-like?  */ 
     1062+ 
     1063+#define AT_BASE_PLATFORM 24            /* String identifying real platforms.*/ 
     1064+ 
     1065+#define AT_RANDOM      25              /* Address of 16 random bytes.  */ 
     1066+ 
     1067+#define AT_EXECFN      31              /* Filename of executable.  */ 
     1068+ 
     1069+/* Pointer to the global system page used for system calls and other 
     1070+   nice things.  */ 
     1071+#define AT_SYSINFO     32 
     1072+#define AT_SYSINFO_EHDR        33 
     1073+ 
     1074+/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains 
     1075+   log2 of line size; mask those to get cache size.  */ 
     1076+#define AT_L1I_CACHESHAPE      34 
     1077+#define AT_L1D_CACHESHAPE      35 
     1078+#define AT_L2_CACHESHAPE       36 
     1079+#define AT_L3_CACHESHAPE       37 
     1080+ 
     1081+/* Note section contents.  Each entry in the note section begins with 
     1082+   a header of a fixed form.  */ 
     1083+ 
     1084+typedef struct 
     1085+{ 
     1086+  Elf32_Word n_namesz;                 /* Length of the note's name.  */ 
     1087+  Elf32_Word n_descsz;                 /* Length of the note's descriptor.  */ 
     1088+  Elf32_Word n_type;                   /* Type of the note.  */ 
     1089+} Elf32_Nhdr; 
     1090+ 
     1091+typedef struct 
     1092+{ 
     1093+  Elf64_Word n_namesz;                 /* Length of the note's name.  */ 
     1094+  Elf64_Word n_descsz;                 /* Length of the note's descriptor.  */ 
     1095+  Elf64_Word n_type;                   /* Type of the note.  */ 
     1096+} Elf64_Nhdr; 
     1097+ 
     1098+/* Known names of notes.  */ 
     1099+ 
     1100+/* Solaris entries in the note section have this name.  */ 
     1101+#define ELF_NOTE_SOLARIS       "SUNW Solaris" 
     1102+ 
     1103+/* Note entries for GNU systems have this name.  */ 
     1104+#define ELF_NOTE_GNU           "GNU" 
     1105+ 
     1106+ 
     1107+/* Defined types of notes for Solaris.  */ 
     1108+ 
     1109+/* Value of descriptor (one word) is desired pagesize for the binary.  */ 
     1110+#define ELF_NOTE_PAGESIZE_HINT 1 
     1111+ 
     1112+ 
     1113+/* Defined note types for GNU systems.  */ 
     1114+ 
     1115+/* ABI information.  The descriptor consists of words: 
     1116+   word 0: OS descriptor 
     1117+   word 1: major version of the ABI 
     1118+   word 2: minor version of the ABI 
     1119+   word 3: subminor version of the ABI 
     1120+*/ 
     1121+#define NT_GNU_ABI_TAG 1 
     1122+#define ELF_NOTE_ABI   NT_GNU_ABI_TAG /* Old name.  */ 
     1123+ 
     1124+/* Known OSes.  These values can appear in word 0 of an 
     1125+   NT_GNU_ABI_TAG note section entry.  */ 
     1126+#define ELF_NOTE_OS_LINUX      0 
     1127+#define ELF_NOTE_OS_GNU                1 
     1128+#define ELF_NOTE_OS_SOLARIS2   2 
     1129+#define ELF_NOTE_OS_FREEBSD    3 
     1130+ 
     1131+/* Synthetic hwcap information.  The descriptor begins with two words: 
     1132+   word 0: number of entries 
     1133+   word 1: bitmask of enabled entries 
     1134+   Then follow variable-length entries, one byte followed by a 
     1135+   '\0'-terminated hwcap name string.  The byte gives the bit 
     1136+   number to test if enabled, (1U << bit) & bitmask.  */ 
     1137+#define NT_GNU_HWCAP   2 
     1138+ 
     1139+/* Build ID bits as generated by ld --build-id. 
     1140+   The descriptor consists of any nonzero number of bytes.  */ 
     1141+#define NT_GNU_BUILD_ID        3 
     1142+ 
     1143+/* Version note generated by GNU gold containing a version string.  */ 
     1144+#define NT_GNU_GOLD_VERSION    4 
     1145+ 
     1146+ 
     1147+/* Move records.  */ 
     1148+typedef struct 
     1149+{ 
     1150+  Elf32_Xword m_value;         /* Symbol value.  */ 
     1151+  Elf32_Word m_info;           /* Size and index.  */ 
     1152+  Elf32_Word m_poffset;                /* Symbol offset.  */ 
     1153+  Elf32_Half m_repeat;         /* Repeat count.  */ 
     1154+  Elf32_Half m_stride;         /* Stride info.  */ 
     1155+} Elf32_Move; 
     1156+ 
     1157+typedef struct 
     1158+{ 
     1159+  Elf64_Xword m_value;         /* Symbol value.  */ 
     1160+  Elf64_Xword m_info;          /* Size and index.  */ 
     1161+  Elf64_Xword m_poffset;       /* Symbol offset.  */ 
     1162+  Elf64_Half m_repeat;         /* Repeat count.  */ 
     1163+  Elf64_Half m_stride;         /* Stride info.  */ 
     1164+} Elf64_Move; 
     1165+ 
     1166+/* Macro to construct move records.  */ 
     1167+#define ELF32_M_SYM(info)      ((info) >> 8) 
     1168+#define ELF32_M_SIZE(info)     ((unsigned char) (info)) 
     1169+#define ELF32_M_INFO(sym, size)        (((sym) << 8) + (unsigned char) (size)) 
     1170+ 
     1171+#define ELF64_M_SYM(info)      ELF32_M_SYM (info) 
     1172+#define ELF64_M_SIZE(info)     ELF32_M_SIZE (info) 
     1173+#define ELF64_M_INFO(sym, size)        ELF32_M_INFO (sym, size) 
     1174+ 
     1175+ 
     1176+/* Motorola 68k specific definitions.  */ 
     1177+ 
     1178+/* Values for Elf32_Ehdr.e_flags.  */ 
     1179+#define EF_CPU32       0x00810000 
     1180+ 
     1181+/* m68k relocs.  */ 
     1182+ 
     1183+#define R_68K_NONE     0               /* No reloc */ 
     1184+#define R_68K_32       1               /* Direct 32 bit  */ 
     1185+#define R_68K_16       2               /* Direct 16 bit  */ 
     1186+#define R_68K_8                3               /* Direct 8 bit  */ 
     1187+#define R_68K_PC32     4               /* PC relative 32 bit */ 
     1188+#define R_68K_PC16     5               /* PC relative 16 bit */ 
     1189+#define R_68K_PC8      6               /* PC relative 8 bit */ 
     1190+#define R_68K_GOT32    7               /* 32 bit PC relative GOT entry */ 
     1191+#define R_68K_GOT16    8               /* 16 bit PC relative GOT entry */ 
     1192+#define R_68K_GOT8     9               /* 8 bit PC relative GOT entry */ 
     1193+#define R_68K_GOT32O   10              /* 32 bit GOT offset */ 
     1194+#define R_68K_GOT16O   11              /* 16 bit GOT offset */ 
     1195+#define R_68K_GOT8O    12              /* 8 bit GOT offset */ 
     1196+#define R_68K_PLT32    13              /* 32 bit PC relative PLT address */ 
     1197+#define R_68K_PLT16    14              /* 16 bit PC relative PLT address */ 
     1198+#define R_68K_PLT8     15              /* 8 bit PC relative PLT address */ 
     1199+#define R_68K_PLT32O   16              /* 32 bit PLT offset */ 
     1200+#define R_68K_PLT16O   17              /* 16 bit PLT offset */ 
     1201+#define R_68K_PLT8O    18              /* 8 bit PLT offset */ 
     1202+#define R_68K_COPY     19              /* Copy symbol at runtime */ 
     1203+#define R_68K_GLOB_DAT 20              /* Create GOT entry */ 
     1204+#define R_68K_JMP_SLOT 21              /* Create PLT entry */ 
     1205+#define R_68K_RELATIVE 22              /* Adjust by program base */ 
     1206+#define R_68K_TLS_GD32      25          /* 32 bit GOT offset for GD */ 
     1207+#define R_68K_TLS_GD16      26          /* 16 bit GOT offset for GD */ 
     1208+#define R_68K_TLS_GD8       27          /* 8 bit GOT offset for GD */ 
     1209+#define R_68K_TLS_LDM32     28          /* 32 bit GOT offset for LDM */ 
     1210+#define R_68K_TLS_LDM16     29          /* 16 bit GOT offset for LDM */ 
     1211+#define R_68K_TLS_LDM8      30          /* 8 bit GOT offset for LDM */ 
     1212+#define R_68K_TLS_LDO32     31          /* 32 bit module-relative offset */ 
     1213+#define R_68K_TLS_LDO16     32          /* 16 bit module-relative offset */ 
     1214+#define R_68K_TLS_LDO8      33          /* 8 bit module-relative offset */ 
     1215+#define R_68K_TLS_IE32      34          /* 32 bit GOT offset for IE */ 
     1216+#define R_68K_TLS_IE16      35          /* 16 bit GOT offset for IE */ 
     1217+#define R_68K_TLS_IE8       36          /* 8 bit GOT offset for IE */ 
     1218+#define R_68K_TLS_LE32      37          /* 32 bit offset relative to 
     1219+                                          static TLS block */ 
     1220+#define R_68K_TLS_LE16      38          /* 16 bit offset relative to 
     1221+                                          static TLS block */ 
     1222+#define R_68K_TLS_LE8       39          /* 8 bit offset relative to 
     1223+                                          static TLS block */ 
     1224+#define R_68K_TLS_DTPMOD32  40          /* 32 bit module number */ 
     1225+#define R_68K_TLS_DTPREL32  41          /* 32 bit module-relative offset */ 
     1226+#define R_68K_TLS_TPREL32   42          /* 32 bit TP-relative offset */ 
     1227+/* Keep this the last entry.  */ 
     1228+#define R_68K_NUM      43 
     1229+ 
     1230+/* Intel 80386 specific definitions.  */ 
     1231+ 
     1232+/* i386 relocs.  */ 
     1233+ 
     1234+#define R_386_NONE        0            /* No reloc */ 
     1235+#define R_386_32          1            /* Direct 32 bit  */ 
     1236+#define R_386_PC32        2            /* PC relative 32 bit */ 
     1237+#define R_386_GOT32       3            /* 32 bit GOT entry */ 
     1238+#define R_386_PLT32       4            /* 32 bit PLT address */ 
     1239+#define R_386_COPY        5            /* Copy symbol at runtime */ 
     1240+#define R_386_GLOB_DAT    6            /* Create GOT entry */ 
     1241+#define R_386_JMP_SLOT    7            /* Create PLT entry */ 
     1242+#define R_386_RELATIVE    8            /* Adjust by program base */ 
     1243+#define R_386_GOTOFF      9            /* 32 bit offset to GOT */ 
     1244+#define R_386_GOTPC       10           /* 32 bit PC relative offset to GOT */ 
     1245+#define R_386_32PLT       11 
     1246+#define R_386_TLS_TPOFF           14           /* Offset in static TLS block */ 
     1247+#define R_386_TLS_IE      15           /* Address of GOT entry for static TLS 
     1248+                                          block offset */ 
     1249+#define R_386_TLS_GOTIE           16           /* GOT entry for static TLS block 
     1250+                                          offset */ 
     1251+#define R_386_TLS_LE      17           /* Offset relative to static TLS 
     1252+                                          block */ 
     1253+#define R_386_TLS_GD      18           /* Direct 32 bit for GNU version of 
     1254+                                          general dynamic thread local data */ 
     1255+#define R_386_TLS_LDM     19           /* Direct 32 bit for GNU version of 
     1256+                                          local dynamic thread local data 
     1257+                                          in LE code */ 
     1258+#define R_386_16          20 
     1259+#define R_386_PC16        21 
     1260+#define R_386_8                   22 
     1261+#define R_386_PC8         23 
     1262+#define R_386_TLS_GD_32           24           /* Direct 32 bit for general dynamic 
     1263+                                          thread local data */ 
     1264+#define R_386_TLS_GD_PUSH  25          /* Tag for pushl in GD TLS code */ 
     1265+#define R_386_TLS_GD_CALL  26          /* Relocation for call to 
     1266+                                          __tls_get_addr() */ 
     1267+#define R_386_TLS_GD_POP   27          /* Tag for popl in GD TLS code */ 
     1268+#define R_386_TLS_LDM_32   28          /* Direct 32 bit for local dynamic 
     1269+                                          thread local data in LE code */ 
     1270+#define R_386_TLS_LDM_PUSH 29          /* Tag for pushl in LDM TLS code */ 
     1271+#define R_386_TLS_LDM_CALL 30          /* Relocation for call to 
     1272+                                          __tls_get_addr() in LDM code */ 
     1273+#define R_386_TLS_LDM_POP  31          /* Tag for popl in LDM TLS code */ 
     1274+#define R_386_TLS_LDO_32   32          /* Offset relative to TLS block */ 
     1275+#define R_386_TLS_IE_32           33           /* GOT entry for negated static TLS 
     1276+                                          block offset */ 
     1277+#define R_386_TLS_LE_32           34           /* Negated offset relative to static 
     1278+                                          TLS block */ 
     1279+#define R_386_TLS_DTPMOD32 35          /* ID of module containing symbol */ 
     1280+#define R_386_TLS_DTPOFF32 36          /* Offset in TLS block */ 
     1281+#define R_386_TLS_TPOFF32  37          /* Negated offset in static TLS block */ 
     1282+/* 38? */ 
     1283+#define R_386_TLS_GOTDESC  39          /* GOT offset for TLS descriptor.  */ 
     1284+#define R_386_TLS_DESC_CALL 40         /* Marker of call through TLS 
     1285+                                          descriptor for 
     1286+                                          relaxation.  */ 
     1287+#define R_386_TLS_DESC     41          /* TLS descriptor containing 
     1288+                                          pointer to code and to 
     1289+                                          argument, returning the TLS 
     1290+                                          offset for the symbol.  */ 
     1291+#define R_386_IRELATIVE           42           /* Adjust indirectly by program base */ 
     1292+/* Keep this the last entry.  */ 
     1293+#define R_386_NUM         43 
     1294+ 
     1295+/* SUN SPARC specific definitions.  */ 
     1296+ 
     1297+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     1298+ 
     1299+#define STT_SPARC_REGISTER     13      /* Global register reserved to app. */ 
     1300+ 
     1301+/* Values for Elf64_Ehdr.e_flags.  */ 
     1302+ 
     1303+#define EF_SPARCV9_MM          3 
     1304+#define EF_SPARCV9_TSO         0 
     1305+#define EF_SPARCV9_PSO         1 
     1306+#define EF_SPARCV9_RMO         2 
     1307+#define EF_SPARC_LEDATA                0x800000 /* little endian data */ 
     1308+#define EF_SPARC_EXT_MASK      0xFFFF00 
     1309+#define EF_SPARC_32PLUS                0x000100 /* generic V8+ features */ 
     1310+#define EF_SPARC_SUN_US1       0x000200 /* Sun UltraSPARC1 extensions */ 
     1311+#define EF_SPARC_HAL_R1                0x000400 /* HAL R1 extensions */ 
     1312+#define EF_SPARC_SUN_US3       0x000800 /* Sun UltraSPARCIII extensions */ 
     1313+ 
     1314+/* SPARC relocs.  */ 
     1315+ 
     1316+#define R_SPARC_NONE           0       /* No reloc */ 
     1317+#define R_SPARC_8              1       /* Direct 8 bit */ 
     1318+#define R_SPARC_16             2       /* Direct 16 bit */ 
     1319+#define R_SPARC_32             3       /* Direct 32 bit */ 
     1320+#define R_SPARC_DISP8          4       /* PC relative 8 bit */ 
     1321+#define R_SPARC_DISP16         5       /* PC relative 16 bit */ 
     1322+#define R_SPARC_DISP32         6       /* PC relative 32 bit */ 
     1323+#define R_SPARC_WDISP30                7       /* PC relative 30 bit shifted */ 
     1324+#define R_SPARC_WDISP22                8       /* PC relative 22 bit shifted */ 
     1325+#define R_SPARC_HI22           9       /* High 22 bit */ 
     1326+#define R_SPARC_22             10      /* Direct 22 bit */ 
     1327+#define R_SPARC_13             11      /* Direct 13 bit */ 
     1328+#define R_SPARC_LO10           12      /* Truncated 10 bit */ 
     1329+#define R_SPARC_GOT10          13      /* Truncated 10 bit GOT entry */ 
     1330+#define R_SPARC_GOT13          14      /* 13 bit GOT entry */ 
     1331+#define R_SPARC_GOT22          15      /* 22 bit GOT entry shifted */ 
     1332+#define R_SPARC_PC10           16      /* PC relative 10 bit truncated */ 
     1333+#define R_SPARC_PC22           17      /* PC relative 22 bit shifted */ 
     1334+#define R_SPARC_WPLT30         18      /* 30 bit PC relative PLT address */ 
     1335+#define R_SPARC_COPY           19      /* Copy symbol at runtime */ 
     1336+#define R_SPARC_GLOB_DAT       20      /* Create GOT entry */ 
     1337+#define R_SPARC_JMP_SLOT       21      /* Create PLT entry */ 
     1338+#define R_SPARC_RELATIVE       22      /* Adjust by program base */ 
     1339+#define R_SPARC_UA32           23      /* Direct 32 bit unaligned */ 
     1340+ 
     1341+/* Additional Sparc64 relocs.  */ 
     1342+ 
     1343+#define R_SPARC_PLT32          24      /* Direct 32 bit ref to PLT entry */ 
     1344+#define R_SPARC_HIPLT22                25      /* High 22 bit PLT entry */ 
     1345+#define R_SPARC_LOPLT10                26      /* Truncated 10 bit PLT entry */ 
     1346+#define R_SPARC_PCPLT32                27      /* PC rel 32 bit ref to PLT entry */ 
     1347+#define R_SPARC_PCPLT22                28      /* PC rel high 22 bit PLT entry */ 
     1348+#define R_SPARC_PCPLT10                29      /* PC rel trunc 10 bit PLT entry */ 
     1349+#define R_SPARC_10             30      /* Direct 10 bit */ 
     1350+#define R_SPARC_11             31      /* Direct 11 bit */ 
     1351+#define R_SPARC_64             32      /* Direct 64 bit */ 
     1352+#define R_SPARC_OLO10          33      /* 10bit with secondary 13bit addend */ 
     1353+#define R_SPARC_HH22           34      /* Top 22 bits of direct 64 bit */ 
     1354+#define R_SPARC_HM10           35      /* High middle 10 bits of ... */ 
     1355+#define R_SPARC_LM22           36      /* Low middle 22 bits of ... */ 
     1356+#define R_SPARC_PC_HH22                37      /* Top 22 bits of pc rel 64 bit */ 
     1357+#define R_SPARC_PC_HM10                38      /* High middle 10 bit of ... */ 
     1358+#define R_SPARC_PC_LM22                39      /* Low miggle 22 bits of ... */ 
     1359+#define R_SPARC_WDISP16                40      /* PC relative 16 bit shifted */ 
     1360+#define R_SPARC_WDISP19                41      /* PC relative 19 bit shifted */ 
     1361+#define R_SPARC_GLOB_JMP       42      /* was part of v9 ABI but was removed */ 
     1362+#define R_SPARC_7              43      /* Direct 7 bit */ 
     1363+#define R_SPARC_5              44      /* Direct 5 bit */ 
     1364+#define R_SPARC_6              45      /* Direct 6 bit */ 
     1365+#define R_SPARC_DISP64         46      /* PC relative 64 bit */ 
     1366+#define R_SPARC_PLT64          47      /* Direct 64 bit ref to PLT entry */ 
     1367+#define R_SPARC_HIX22          48      /* High 22 bit complemented */ 
     1368+#define R_SPARC_LOX10          49      /* Truncated 11 bit complemented */ 
     1369+#define R_SPARC_H44            50      /* Direct high 12 of 44 bit */ 
     1370+#define R_SPARC_M44            51      /* Direct mid 22 of 44 bit */ 
     1371+#define R_SPARC_L44            52      /* Direct low 10 of 44 bit */ 
     1372+#define R_SPARC_REGISTER       53      /* Global register usage */ 
     1373+#define R_SPARC_UA64           54      /* Direct 64 bit unaligned */ 
     1374+#define R_SPARC_UA16           55      /* Direct 16 bit unaligned */ 
     1375+#define R_SPARC_TLS_GD_HI22    56 
     1376+#define R_SPARC_TLS_GD_LO10    57 
     1377+#define R_SPARC_TLS_GD_ADD     58 
     1378+#define R_SPARC_TLS_GD_CALL    59 
     1379+#define R_SPARC_TLS_LDM_HI22   60 
     1380+#define R_SPARC_TLS_LDM_LO10   61 
     1381+#define R_SPARC_TLS_LDM_ADD    62 
     1382+#define R_SPARC_TLS_LDM_CALL   63 
     1383+#define R_SPARC_TLS_LDO_HIX22  64 
     1384+#define R_SPARC_TLS_LDO_LOX10  65 
     1385+#define R_SPARC_TLS_LDO_ADD    66 
     1386+#define R_SPARC_TLS_IE_HI22    67 
     1387+#define R_SPARC_TLS_IE_LO10    68 
     1388+#define R_SPARC_TLS_IE_LD      69 
     1389+#define R_SPARC_TLS_IE_LDX     70 
     1390+#define R_SPARC_TLS_IE_ADD     71 
     1391+#define R_SPARC_TLS_LE_HIX22   72 
     1392+#define R_SPARC_TLS_LE_LOX10   73 
     1393+#define R_SPARC_TLS_DTPMOD32   74 
     1394+#define R_SPARC_TLS_DTPMOD64   75 
     1395+#define R_SPARC_TLS_DTPOFF32   76 
     1396+#define R_SPARC_TLS_DTPOFF64   77 
     1397+#define R_SPARC_TLS_TPOFF32    78 
     1398+#define R_SPARC_TLS_TPOFF64    79 
     1399+#define R_SPARC_GOTDATA_HIX22  80 
     1400+#define R_SPARC_GOTDATA_LOX10  81 
     1401+#define R_SPARC_GOTDATA_OP_HIX22       82 
     1402+#define R_SPARC_GOTDATA_OP_LOX10       83 
     1403+#define R_SPARC_GOTDATA_OP     84 
     1404+#define R_SPARC_H34            85 
     1405+#define R_SPARC_SIZE32         86 
     1406+#define R_SPARC_SIZE64         87 
     1407+#define R_SPARC_WDISP10                88 
     1408+#define R_SPARC_JMP_IREL       248 
     1409+#define R_SPARC_IRELATIVE      249 
     1410+#define R_SPARC_GNU_VTINHERIT  250 
     1411+#define R_SPARC_GNU_VTENTRY    251 
     1412+#define R_SPARC_REV32          252 
     1413+/* Keep this the last entry.  */ 
     1414+#define R_SPARC_NUM            253 
     1415+ 
     1416+/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ 
     1417+ 
     1418+#define DT_SPARC_REGISTER 0x70000001 
     1419+#define DT_SPARC_NUM   2 
     1420+ 
     1421+/* MIPS R3000 specific definitions.  */ 
     1422+ 
     1423+/* Legal values for e_flags field of Elf32_Ehdr.  */ 
     1424+ 
     1425+#define EF_MIPS_NOREORDER   1          /* A .noreorder directive was used */ 
     1426+#define EF_MIPS_PIC        2           /* Contains PIC code */ 
     1427+#define EF_MIPS_CPIC       4           /* Uses PIC calling sequence */ 
     1428+#define EF_MIPS_XGOT       8 
     1429+#define EF_MIPS_64BIT_WHIRL 16 
     1430+#define EF_MIPS_ABI2       32 
     1431+#define EF_MIPS_ABI_ON32    64 
     1432+#define EF_MIPS_ARCH       0xf0000000  /* MIPS architecture level */ 
     1433+ 
     1434+/* Legal values for MIPS architecture level.  */ 
     1435+ 
     1436+#define EF_MIPS_ARCH_1     0x00000000  /* -mips1 code.  */ 
     1437+#define EF_MIPS_ARCH_2     0x10000000  /* -mips2 code.  */ 
     1438+#define EF_MIPS_ARCH_3     0x20000000  /* -mips3 code.  */ 
     1439+#define EF_MIPS_ARCH_4     0x30000000  /* -mips4 code.  */ 
     1440+#define EF_MIPS_ARCH_5     0x40000000  /* -mips5 code.  */ 
     1441+#define EF_MIPS_ARCH_32            0x60000000  /* MIPS32 code.  */ 
     1442+#define EF_MIPS_ARCH_64            0x70000000  /* MIPS64 code.  */ 
     1443+ 
     1444+/* The following are non-official names and should not be used.  */ 
     1445+ 
     1446+#define E_MIPS_ARCH_1    0x00000000    /* -mips1 code.  */ 
     1447+#define E_MIPS_ARCH_2    0x10000000    /* -mips2 code.  */ 
     1448+#define E_MIPS_ARCH_3    0x20000000    /* -mips3 code.  */ 
     1449+#define E_MIPS_ARCH_4    0x30000000    /* -mips4 code.  */ 
     1450+#define E_MIPS_ARCH_5    0x40000000    /* -mips5 code.  */ 
     1451+#define E_MIPS_ARCH_32   0x60000000    /* MIPS32 code.  */ 
     1452+#define E_MIPS_ARCH_64   0x70000000    /* MIPS64 code.  */ 
     1453+ 
     1454+/* Special section indices.  */ 
     1455+ 
     1456+#define SHN_MIPS_ACOMMON    0xff00     /* Allocated common symbols */ 
     1457+#define SHN_MIPS_TEXT      0xff01      /* Allocated test symbols.  */ 
     1458+#define SHN_MIPS_DATA      0xff02      /* Allocated data symbols.  */ 
     1459+#define SHN_MIPS_SCOMMON    0xff03     /* Small common symbols */ 
     1460+#define SHN_MIPS_SUNDEFINED 0xff04     /* Small undefined symbols */ 
     1461+ 
     1462+/* Legal values for sh_type field of Elf32_Shdr.  */ 
     1463+ 
     1464+#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ 
     1465+#define SHT_MIPS_MSYM         0x70000001 
     1466+#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ 
     1467+#define SHT_MIPS_GPTAB        0x70000003 /* Global data area sizes */ 
     1468+#define SHT_MIPS_UCODE        0x70000004 /* Reserved for SGI/MIPS compilers */ 
     1469+#define SHT_MIPS_DEBUG        0x70000005 /* MIPS ECOFF debugging information*/ 
     1470+#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ 
     1471+#define SHT_MIPS_PACKAGE       0x70000007 
     1472+#define SHT_MIPS_PACKSYM       0x70000008 
     1473+#define SHT_MIPS_RELD         0x70000009 
     1474+#define SHT_MIPS_IFACE         0x7000000b 
     1475+#define SHT_MIPS_CONTENT       0x7000000c 
     1476+#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ 
     1477+#define SHT_MIPS_SHDR         0x70000010 
     1478+#define SHT_MIPS_FDESC        0x70000011 
     1479+#define SHT_MIPS_EXTSYM               0x70000012 
     1480+#define SHT_MIPS_DENSE        0x70000013 
     1481+#define SHT_MIPS_PDESC        0x70000014 
     1482+#define SHT_MIPS_LOCSYM               0x70000015 
     1483+#define SHT_MIPS_AUXSYM               0x70000016 
     1484+#define SHT_MIPS_OPTSYM               0x70000017 
     1485+#define SHT_MIPS_LOCSTR               0x70000018 
     1486+#define SHT_MIPS_LINE         0x70000019 
     1487+#define SHT_MIPS_RFDESC               0x7000001a 
     1488+#define SHT_MIPS_DELTASYM      0x7000001b 
     1489+#define SHT_MIPS_DELTAINST     0x7000001c 
     1490+#define SHT_MIPS_DELTACLASS    0x7000001d 
     1491+#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ 
     1492+#define SHT_MIPS_DELTADECL     0x7000001f 
     1493+#define SHT_MIPS_SYMBOL_LIB    0x70000020 
     1494+#define SHT_MIPS_EVENTS               0x70000021 /* Event section.  */ 
     1495+#define SHT_MIPS_TRANSLATE     0x70000022 
     1496+#define SHT_MIPS_PIXIE        0x70000023 
     1497+#define SHT_MIPS_XLATE        0x70000024 
     1498+#define SHT_MIPS_XLATE_DEBUG   0x70000025 
     1499+#define SHT_MIPS_WHIRL        0x70000026 
     1500+#define SHT_MIPS_EH_REGION     0x70000027 
     1501+#define SHT_MIPS_XLATE_OLD     0x70000028 
     1502+#define SHT_MIPS_PDR_EXCEPTION 0x70000029 
     1503+ 
     1504+/* Legal values for sh_flags field of Elf32_Shdr.  */ 
     1505+ 
     1506+#define SHF_MIPS_GPREL  0x10000000     /* Must be part of global data area */ 
     1507+#define SHF_MIPS_MERGE  0x20000000 
     1508+#define SHF_MIPS_ADDR   0x40000000 
     1509+#define SHF_MIPS_STRINGS 0x80000000 
     1510+#define SHF_MIPS_NOSTRIP 0x08000000 
     1511+#define SHF_MIPS_LOCAL  0x04000000 
     1512+#define SHF_MIPS_NAMES  0x02000000 
     1513+#define SHF_MIPS_NODUPE         0x01000000 
     1514+ 
     1515+ 
     1516+/* Symbol tables.  */ 
     1517+ 
     1518+/* MIPS specific values for `st_other'.  */ 
     1519+#define STO_MIPS_DEFAULT               0x0 
     1520+#define STO_MIPS_INTERNAL              0x1 
     1521+#define STO_MIPS_HIDDEN                        0x2 
     1522+#define STO_MIPS_PROTECTED             0x3 
     1523+#define STO_MIPS_PLT                   0x8 
     1524+#define STO_MIPS_SC_ALIGN_UNUSED       0xff 
     1525+ 
     1526+/* MIPS specific values for `st_info'.  */ 
     1527+#define STB_MIPS_SPLIT_COMMON          13 
     1528+ 
     1529+/* Entries found in sections of type SHT_MIPS_GPTAB.  */ 
     1530+ 
     1531+typedef union 
     1532+{ 
     1533+  struct 
     1534+    { 
     1535+      Elf32_Word gt_current_g_value;   /* -G value used for compilation */ 
     1536+      Elf32_Word gt_unused;            /* Not used */ 
     1537+    } gt_header;                       /* First entry in section */ 
     1538+  struct 
     1539+    { 
     1540+      Elf32_Word gt_g_value;           /* If this value were used for -G */ 
     1541+      Elf32_Word gt_bytes;             /* This many bytes would be used */ 
     1542+    } gt_entry;                                /* Subsequent entries in section */ 
     1543+} Elf32_gptab; 
     1544+ 
     1545+/* Entry found in sections of type SHT_MIPS_REGINFO.  */ 
     1546+ 
     1547+typedef struct 
     1548+{ 
     1549+  Elf32_Word   ri_gprmask;             /* General registers used */ 
     1550+  Elf32_Word   ri_cprmask[4];          /* Coprocessor registers used */ 
     1551+  Elf32_Sword  ri_gp_value;            /* $gp register value */ 
     1552+} Elf32_RegInfo; 
     1553+ 
     1554+/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ 
     1555+ 
     1556+typedef struct 
     1557+{ 
     1558+  unsigned char kind;          /* Determines interpretation of the 
     1559+                                  variable part of descriptor.  */ 
     1560+  unsigned char size;          /* Size of descriptor, including header.  */ 
     1561+  Elf32_Section section;       /* Section header index of section affected, 
     1562+                                  0 for global options.  */ 
     1563+  Elf32_Word info;             /* Kind-specific information.  */ 
     1564+} Elf_Options; 
     1565+ 
     1566+/* Values for `kind' field in Elf_Options.  */ 
     1567+ 
     1568+#define ODK_NULL       0       /* Undefined.  */ 
     1569+#define ODK_REGINFO    1       /* Register usage information.  */ 
     1570+#define ODK_EXCEPTIONS 2       /* Exception processing options.  */ 
     1571+#define ODK_PAD                3       /* Section padding options.  */ 
     1572+#define ODK_HWPATCH    4       /* Hardware workarounds performed */ 
     1573+#define ODK_FILL       5       /* record the fill value used by the linker. */ 
     1574+#define ODK_TAGS       6       /* reserve space for desktop tools to write. */ 
     1575+#define ODK_HWAND      7       /* HW workarounds.  'AND' bits when merging. */ 
     1576+#define ODK_HWOR       8       /* HW workarounds.  'OR' bits when merging.  */ 
     1577+ 
     1578+/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ 
     1579+ 
     1580+#define OEX_FPU_MIN    0x1f    /* FPE's which MUST be enabled.  */ 
     1581+#define OEX_FPU_MAX    0x1f00  /* FPE's which MAY be enabled.  */ 
     1582+#define OEX_PAGE0      0x10000 /* page zero must be mapped.  */ 
     1583+#define OEX_SMM                0x20000 /* Force sequential memory mode?  */ 
     1584+#define OEX_FPDBUG     0x40000 /* Force floating point debug mode?  */ 
     1585+#define OEX_PRECISEFP  OEX_FPDBUG 
     1586+#define OEX_DISMISS    0x80000 /* Dismiss invalid address faults?  */ 
     1587+ 
     1588+#define OEX_FPU_INVAL  0x10 
     1589+#define OEX_FPU_DIV0   0x08 
     1590+#define OEX_FPU_OFLO   0x04 
     1591+#define OEX_FPU_UFLO   0x02 
     1592+#define OEX_FPU_INEX   0x01 
     1593+ 
     1594+/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ 
     1595+ 
     1596+#define OHW_R4KEOP     0x1     /* R4000 end-of-page patch.  */ 
     1597+#define OHW_R8KPFETCH  0x2     /* may need R8000 prefetch patch.  */ 
     1598+#define OHW_R5KEOP     0x4     /* R5000 end-of-page patch.  */ 
     1599+#define OHW_R5KCVTL    0x8     /* R5000 cvt.[ds].l bug.  clean=1.  */ 
     1600+ 
     1601+#define OPAD_PREFIX    0x1 
     1602+#define OPAD_POSTFIX   0x2 
     1603+#define OPAD_SYMBOL    0x4 
     1604+ 
     1605+/* Entry found in `.options' section.  */ 
     1606+ 
     1607+typedef struct 
     1608+{ 
     1609+  Elf32_Word hwp_flags1;       /* Extra flags.  */ 
     1610+  Elf32_Word hwp_flags2;       /* Extra flags.  */ 
     1611+} Elf_Options_Hw; 
     1612+ 
     1613+/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ 
     1614+ 
     1615+#define OHWA0_R4KEOP_CHECKED   0x00000001 
     1616+#define OHWA1_R4KEOP_CLEAN     0x00000002 
     1617+ 
     1618+/* MIPS relocs.  */ 
     1619+ 
     1620+#define R_MIPS_NONE            0       /* No reloc */ 
     1621+#define R_MIPS_16              1       /* Direct 16 bit */ 
     1622+#define R_MIPS_32              2       /* Direct 32 bit */ 
     1623+#define R_MIPS_REL32           3       /* PC relative 32 bit */ 
     1624+#define R_MIPS_26              4       /* Direct 26 bit shifted */ 
     1625+#define R_MIPS_HI16            5       /* High 16 bit */ 
     1626+#define R_MIPS_LO16            6       /* Low 16 bit */ 
     1627+#define R_MIPS_GPREL16         7       /* GP relative 16 bit */ 
     1628+#define R_MIPS_LITERAL         8       /* 16 bit literal entry */ 
     1629+#define R_MIPS_GOT16           9       /* 16 bit GOT entry */ 
     1630+#define R_MIPS_PC16            10      /* PC relative 16 bit */ 
     1631+#define R_MIPS_CALL16          11      /* 16 bit GOT entry for function */ 
     1632+#define R_MIPS_GPREL32         12      /* GP relative 32 bit */ 
     1633+ 
     1634+#define R_MIPS_SHIFT5          16 
     1635+#define R_MIPS_SHIFT6          17 
     1636+#define R_MIPS_64              18 
     1637+#define R_MIPS_GOT_DISP                19 
     1638+#define R_MIPS_GOT_PAGE                20 
     1639+#define R_MIPS_GOT_OFST                21 
     1640+#define R_MIPS_GOT_HI16                22 
     1641+#define R_MIPS_GOT_LO16                23 
     1642+#define R_MIPS_SUB             24 
     1643+#define R_MIPS_INSERT_A                25 
     1644+#define R_MIPS_INSERT_B                26 
     1645+#define R_MIPS_DELETE          27 
     1646+#define R_MIPS_HIGHER          28 
     1647+#define R_MIPS_HIGHEST         29 
     1648+#define R_MIPS_CALL_HI16       30 
     1649+#define R_MIPS_CALL_LO16       31 
     1650+#define R_MIPS_SCN_DISP                32 
     1651+#define R_MIPS_REL16           33 
     1652+#define R_MIPS_ADD_IMMEDIATE   34 
     1653+#define R_MIPS_PJUMP           35 
     1654+#define R_MIPS_RELGOT          36 
     1655+#define R_MIPS_JALR            37 
     1656+#define R_MIPS_TLS_DTPMOD32    38      /* Module number 32 bit */ 
     1657+#define R_MIPS_TLS_DTPREL32    39      /* Module-relative offset 32 bit */ 
     1658+#define R_MIPS_TLS_DTPMOD64    40      /* Module number 64 bit */ 
     1659+#define R_MIPS_TLS_DTPREL64    41      /* Module-relative offset 64 bit */ 
     1660+#define R_MIPS_TLS_GD          42      /* 16 bit GOT offset for GD */ 
     1661+#define R_MIPS_TLS_LDM         43      /* 16 bit GOT offset for LDM */ 
     1662+#define R_MIPS_TLS_DTPREL_HI16 44      /* Module-relative offset, high 16 bits */ 
     1663+#define R_MIPS_TLS_DTPREL_LO16 45      /* Module-relative offset, low 16 bits */ 
     1664+#define R_MIPS_TLS_GOTTPREL    46      /* 16 bit GOT offset for IE */ 
     1665+#define R_MIPS_TLS_TPREL32     47      /* TP-relative offset, 32 bit */ 
     1666+#define R_MIPS_TLS_TPREL64     48      /* TP-relative offset, 64 bit */ 
     1667+#define R_MIPS_TLS_TPREL_HI16  49      /* TP-relative offset, high 16 bits */ 
     1668+#define R_MIPS_TLS_TPREL_LO16  50      /* TP-relative offset, low 16 bits */ 
     1669+#define R_MIPS_GLOB_DAT                51 
     1670+#define R_MIPS_COPY            126 
     1671+#define R_MIPS_JUMP_SLOT        127 
     1672+/* Keep this the last entry.  */ 
     1673+#define R_MIPS_NUM             128 
     1674+ 
     1675+/* Legal values for p_type field of Elf32_Phdr.  */ 
     1676+ 
     1677+#define PT_MIPS_REGINFO        0x70000000      /* Register usage information */ 
     1678+#define PT_MIPS_RTPROC  0x70000001     /* Runtime procedure table. */ 
     1679+#define PT_MIPS_OPTIONS 0x70000002 
     1680+ 
     1681+/* Special program header types.  */ 
     1682+ 
     1683+#define PF_MIPS_LOCAL  0x10000000 
     1684+ 
     1685+/* Legal values for d_tag field of Elf32_Dyn.  */ 
     1686+ 
     1687+#define DT_MIPS_RLD_VERSION  0x70000001        /* Runtime linker interface version */ 
     1688+#define DT_MIPS_TIME_STAMP   0x70000002        /* Timestamp */ 
     1689+#define DT_MIPS_ICHECKSUM    0x70000003        /* Checksum */ 
     1690+#define DT_MIPS_IVERSION     0x70000004        /* Version string (string tbl index) */ 
     1691+#define DT_MIPS_FLAGS       0x70000005 /* Flags */ 
     1692+#define DT_MIPS_BASE_ADDRESS 0x70000006        /* Base address */ 
     1693+#define DT_MIPS_MSYM        0x70000007 
     1694+#define DT_MIPS_CONFLICT     0x70000008        /* Address of CONFLICT section */ 
     1695+#define DT_MIPS_LIBLIST             0x70000009 /* Address of LIBLIST section */ 
     1696+#define DT_MIPS_LOCAL_GOTNO  0x7000000a        /* Number of local GOT entries */ 
     1697+#define DT_MIPS_CONFLICTNO   0x7000000b        /* Number of CONFLICT entries */ 
     1698+#define DT_MIPS_LIBLISTNO    0x70000010        /* Number of LIBLIST entries */ 
     1699+#define DT_MIPS_SYMTABNO     0x70000011        /* Number of DYNSYM entries */ 
     1700+#define DT_MIPS_UNREFEXTNO   0x70000012        /* First external DYNSYM */ 
     1701+#define DT_MIPS_GOTSYM      0x70000013 /* First GOT entry in DYNSYM */ 
     1702+#define DT_MIPS_HIPAGENO     0x70000014        /* Number of GOT page table entries */ 
     1703+#define DT_MIPS_RLD_MAP             0x70000016 /* Address of run time loader map.  */ 
     1704+#define DT_MIPS_DELTA_CLASS  0x70000017        /* Delta C++ class definition.  */ 
     1705+#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in 
     1706+                                               DT_MIPS_DELTA_CLASS.  */ 
     1707+#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ 
     1708+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in 
     1709+                                               DT_MIPS_DELTA_INSTANCE.  */ 
     1710+#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ 
     1711+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in 
     1712+                                            DT_MIPS_DELTA_RELOC.  */ 
     1713+#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta 
     1714+                                          relocations refer to.  */ 
     1715+#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in 
     1716+                                          DT_MIPS_DELTA_SYM.  */ 
     1717+#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the 
     1718+                                            class declaration.  */ 
     1719+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in 
     1720+                                               DT_MIPS_DELTA_CLASSSYM.  */ 
     1721+#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ 
     1722+#define DT_MIPS_PIXIE_INIT   0x70000023 
     1723+#define DT_MIPS_SYMBOL_LIB   0x70000024 
     1724+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 
     1725+#define DT_MIPS_LOCAL_GOTIDX 0x70000026 
     1726+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 
     1727+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 
     1728+#define DT_MIPS_OPTIONS             0x70000029 /* Address of .options.  */ 
     1729+#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ 
     1730+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b 
     1731+#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ 
     1732+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve 
     1733+                                                   function stored in GOT.  */ 
     1734+#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added 
     1735+                                          by rld on dlopen() calls.  */ 
     1736+#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ 
     1737+#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ 
     1738+#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ 
     1739+/* The address of .got.plt in an executable using the new non-PIC ABI.  */ 
     1740+#define DT_MIPS_PLTGOT      0x70000032 
     1741+/* The base of the PLT in an executable using the new non-PIC ABI if that 
     1742+   PLT is writable.  For a non-writable PLT, this is omitted or has a zero 
     1743+   value.  */ 
     1744+#define DT_MIPS_RWPLT        0x70000034 
     1745+#define DT_MIPS_NUM         0x35 
     1746+ 
     1747+/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ 
     1748+ 
     1749+#define RHF_NONE                  0            /* No flags */ 
     1750+#define RHF_QUICKSTART            (1 << 0)     /* Use quickstart */ 
     1751+#define RHF_NOTPOT                (1 << 1)     /* Hash size not power of 2 */ 
     1752+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)    /* Ignore LD_LIBRARY_PATH */ 
     1753+#define RHF_NO_MOVE               (1 << 3) 
     1754+#define RHF_SGI_ONLY              (1 << 4) 
     1755+#define RHF_GUARANTEE_INIT        (1 << 5) 
     1756+#define RHF_DELTA_C_PLUS_PLUS     (1 << 6) 
     1757+#define RHF_GUARANTEE_START_INIT   (1 << 7) 
     1758+#define RHF_PIXIE                 (1 << 8) 
     1759+#define RHF_DEFAULT_DELAY_LOAD    (1 << 9) 
     1760+#define RHF_REQUICKSTART          (1 << 10) 
     1761+#define RHF_REQUICKSTARTED        (1 << 11) 
     1762+#define RHF_CORD                  (1 << 12) 
     1763+#define RHF_NO_UNRES_UNDEF        (1 << 13) 
     1764+#define RHF_RLD_ORDER_SAFE        (1 << 14) 
     1765+ 
     1766+/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ 
     1767+ 
     1768+typedef struct 
     1769+{ 
     1770+  Elf32_Word l_name;           /* Name (string table index) */ 
     1771+  Elf32_Word l_time_stamp;     /* Timestamp */ 
     1772+  Elf32_Word l_checksum;       /* Checksum */ 
     1773+  Elf32_Word l_version;                /* Interface version */ 
     1774+  Elf32_Word l_flags;          /* Flags */ 
     1775+} Elf32_Lib; 
     1776+ 
     1777+typedef struct 
     1778+{ 
     1779+  Elf64_Word l_name;           /* Name (string table index) */ 
     1780+  Elf64_Word l_time_stamp;     /* Timestamp */ 
     1781+  Elf64_Word l_checksum;       /* Checksum */ 
     1782+  Elf64_Word l_version;                /* Interface version */ 
     1783+  Elf64_Word l_flags;          /* Flags */ 
     1784+} Elf64_Lib; 
     1785+ 
     1786+ 
     1787+/* Legal values for l_flags.  */ 
     1788+ 
     1789+#define LL_NONE                  0 
     1790+#define LL_EXACT_MATCH   (1 << 0)      /* Require exact match */ 
     1791+#define LL_IGNORE_INT_VER (1 << 1)     /* Ignore interface version */ 
     1792+#define LL_REQUIRE_MINOR  (1 << 2) 
     1793+#define LL_EXPORTS       (1 << 3) 
     1794+#define LL_DELAY_LOAD    (1 << 4) 
     1795+#define LL_DELTA         (1 << 5) 
     1796+ 
     1797+/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ 
     1798+ 
     1799+typedef Elf32_Addr Elf32_Conflict; 
     1800+ 
     1801+ 
     1802+/* HPPA specific definitions.  */ 
     1803+ 
     1804+/* Legal values for e_flags field of Elf32_Ehdr.  */ 
     1805+ 
     1806+#define EF_PARISC_TRAPNIL      0x00010000 /* Trap nil pointer dereference.  */ 
     1807+#define EF_PARISC_EXT          0x00020000 /* Program uses arch. extensions. */ 
     1808+#define EF_PARISC_LSB          0x00040000 /* Program expects little endian. */ 
     1809+#define EF_PARISC_WIDE         0x00080000 /* Program expects wide mode.  */ 
     1810+#define EF_PARISC_NO_KABP      0x00100000 /* No kernel assisted branch 
     1811+                                             prediction.  */ 
     1812+#define EF_PARISC_LAZYSWAP     0x00400000 /* Allow lazy swapping.  */ 
     1813+#define EF_PARISC_ARCH         0x0000ffff /* Architecture version.  */ 
     1814+ 
     1815+/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ 
     1816+ 
     1817+#define EFA_PARISC_1_0             0x020b /* PA-RISC 1.0 big-endian.  */ 
     1818+#define EFA_PARISC_1_1             0x0210 /* PA-RISC 1.1 big-endian.  */ 
     1819+#define EFA_PARISC_2_0             0x0214 /* PA-RISC 2.0 big-endian.  */ 
     1820+ 
     1821+/* Additional section indeces.  */ 
     1822+ 
     1823+#define SHN_PARISC_ANSI_COMMON 0xff00     /* Section for tenatively declared 
     1824+                                             symbols in ANSI C.  */ 
     1825+#define SHN_PARISC_HUGE_COMMON 0xff01     /* Common blocks in huge model.  */ 
     1826+ 
     1827+/* Legal values for sh_type field of Elf32_Shdr.  */ 
     1828+ 
     1829+#define SHT_PARISC_EXT         0x70000000 /* Contains product specific ext. */ 
     1830+#define SHT_PARISC_UNWIND      0x70000001 /* Unwind information.  */ 
     1831+#define SHT_PARISC_DOC         0x70000002 /* Debug info for optimized code. */ 
     1832+ 
     1833+/* Legal values for sh_flags field of Elf32_Shdr.  */ 
     1834+ 
     1835+#define SHF_PARISC_SHORT       0x20000000 /* Section with short addressing. */ 
     1836+#define SHF_PARISC_HUGE                0x40000000 /* Section far from gp.  */ 
     1837+#define SHF_PARISC_SBP         0x80000000 /* Static branch prediction code. */ 
     1838+ 
     1839+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     1840+ 
     1841+#define STT_PARISC_MILLICODE   13      /* Millicode function entry point.  */ 
     1842+ 
     1843+#define STT_HP_OPAQUE          (STT_LOOS + 0x1) 
     1844+#define STT_HP_STUB            (STT_LOOS + 0x2) 
     1845+ 
     1846+/* HPPA relocs.  */ 
     1847+ 
     1848+#define R_PARISC_NONE          0       /* No reloc.  */ 
     1849+#define R_PARISC_DIR32         1       /* Direct 32-bit reference.  */ 
     1850+#define R_PARISC_DIR21L                2       /* Left 21 bits of eff. address.  */ 
     1851+#define R_PARISC_DIR17R                3       /* Right 17 bits of eff. address.  */ 
     1852+#define R_PARISC_DIR17F                4       /* 17 bits of eff. address.  */ 
     1853+#define R_PARISC_DIR14R                6       /* Right 14 bits of eff. address.  */ 
     1854+#define R_PARISC_PCREL32       9       /* 32-bit rel. address.  */ 
     1855+#define R_PARISC_PCREL21L      10      /* Left 21 bits of rel. address.  */ 
     1856+#define R_PARISC_PCREL17R      11      /* Right 17 bits of rel. address.  */ 
     1857+#define R_PARISC_PCREL17F      12      /* 17 bits of rel. address.  */ 
     1858+#define R_PARISC_PCREL14R      14      /* Right 14 bits of rel. address.  */ 
     1859+#define R_PARISC_DPREL21L      18      /* Left 21 bits of rel. address.  */ 
     1860+#define R_PARISC_DPREL14R      22      /* Right 14 bits of rel. address.  */ 
     1861+#define R_PARISC_GPREL21L      26      /* GP-relative, left 21 bits.  */ 
     1862+#define R_PARISC_GPREL14R      30      /* GP-relative, right 14 bits.  */ 
     1863+#define R_PARISC_LTOFF21L      34      /* LT-relative, left 21 bits.  */ 
     1864+#define R_PARISC_LTOFF14R      38      /* LT-relative, right 14 bits.  */ 
     1865+#define R_PARISC_SECREL32      41      /* 32 bits section rel. address.  */ 
     1866+#define R_PARISC_SEGBASE       48      /* No relocation, set segment base.  */ 
     1867+#define R_PARISC_SEGREL32      49      /* 32 bits segment rel. address.  */ 
     1868+#define R_PARISC_PLTOFF21L     50      /* PLT rel. address, left 21 bits.  */ 
     1869+#define R_PARISC_PLTOFF14R     54      /* PLT rel. address, right 14 bits.  */ 
     1870+#define R_PARISC_LTOFF_FPTR32  57      /* 32 bits LT-rel. function pointer. */ 
     1871+#define R_PARISC_LTOFF_FPTR21L 58      /* LT-rel. fct ptr, left 21 bits. */ 
     1872+#define R_PARISC_LTOFF_FPTR14R 62      /* LT-rel. fct ptr, right 14 bits. */ 
     1873+#define R_PARISC_FPTR64                64      /* 64 bits function address.  */ 
     1874+#define R_PARISC_PLABEL32      65      /* 32 bits function address.  */ 
     1875+#define R_PARISC_PLABEL21L     66      /* Left 21 bits of fdesc address.  */ 
     1876+#define R_PARISC_PLABEL14R     70      /* Right 14 bits of fdesc address.  */ 
     1877+#define R_PARISC_PCREL64       72      /* 64 bits PC-rel. address.  */ 
     1878+#define R_PARISC_PCREL22F      74      /* 22 bits PC-rel. address.  */ 
     1879+#define R_PARISC_PCREL14WR     75      /* PC-rel. address, right 14 bits.  */ 
     1880+#define R_PARISC_PCREL14DR     76      /* PC rel. address, right 14 bits.  */ 
     1881+#define R_PARISC_PCREL16F      77      /* 16 bits PC-rel. address.  */ 
     1882+#define R_PARISC_PCREL16WF     78      /* 16 bits PC-rel. address.  */ 
     1883+#define R_PARISC_PCREL16DF     79      /* 16 bits PC-rel. address.  */ 
     1884+#define R_PARISC_DIR64         80      /* 64 bits of eff. address.  */ 
     1885+#define R_PARISC_DIR14WR       83      /* 14 bits of eff. address.  */ 
     1886+#define R_PARISC_DIR14DR       84      /* 14 bits of eff. address.  */ 
     1887+#define R_PARISC_DIR16F                85      /* 16 bits of eff. address.  */ 
     1888+#define R_PARISC_DIR16WF       86      /* 16 bits of eff. address.  */ 
     1889+#define R_PARISC_DIR16DF       87      /* 16 bits of eff. address.  */ 
     1890+#define R_PARISC_GPREL64       88      /* 64 bits of GP-rel. address.  */ 
     1891+#define R_PARISC_GPREL14WR     91      /* GP-rel. address, right 14 bits.  */ 
     1892+#define R_PARISC_GPREL14DR     92      /* GP-rel. address, right 14 bits.  */ 
     1893+#define R_PARISC_GPREL16F      93      /* 16 bits GP-rel. address.  */ 
     1894+#define R_PARISC_GPREL16WF     94      /* 16 bits GP-rel. address.  */ 
     1895+#define R_PARISC_GPREL16DF     95      /* 16 bits GP-rel. address.  */ 
     1896+#define R_PARISC_LTOFF64       96      /* 64 bits LT-rel. address.  */ 
     1897+#define R_PARISC_LTOFF14WR     99      /* LT-rel. address, right 14 bits.  */ 
     1898+#define R_PARISC_LTOFF14DR     100     /* LT-rel. address, right 14 bits.  */ 
     1899+#define R_PARISC_LTOFF16F      101     /* 16 bits LT-rel. address.  */ 
     1900+#define R_PARISC_LTOFF16WF     102     /* 16 bits LT-rel. address.  */ 
     1901+#define R_PARISC_LTOFF16DF     103     /* 16 bits LT-rel. address.  */ 
     1902+#define R_PARISC_SECREL64      104     /* 64 bits section rel. address.  */ 
     1903+#define R_PARISC_SEGREL64      112     /* 64 bits segment rel. address.  */ 
     1904+#define R_PARISC_PLTOFF14WR    115     /* PLT-rel. address, right 14 bits.  */ 
     1905+#define R_PARISC_PLTOFF14DR    116     /* PLT-rel. address, right 14 bits.  */ 
     1906+#define R_PARISC_PLTOFF16F     117     /* 16 bits LT-rel. address.  */ 
     1907+#define R_PARISC_PLTOFF16WF    118     /* 16 bits PLT-rel. address.  */ 
     1908+#define R_PARISC_PLTOFF16DF    119     /* 16 bits PLT-rel. address.  */ 
     1909+#define R_PARISC_LTOFF_FPTR64  120     /* 64 bits LT-rel. function ptr.  */ 
     1910+#define R_PARISC_LTOFF_FPTR14WR        123     /* LT-rel. fct. ptr., right 14 bits. */ 
     1911+#define R_PARISC_LTOFF_FPTR14DR        124     /* LT-rel. fct. ptr., right 14 bits. */ 
     1912+#define R_PARISC_LTOFF_FPTR16F 125     /* 16 bits LT-rel. function ptr.  */ 
     1913+#define R_PARISC_LTOFF_FPTR16WF        126     /* 16 bits LT-rel. function ptr.  */ 
     1914+#define R_PARISC_LTOFF_FPTR16DF        127     /* 16 bits LT-rel. function ptr.  */ 
     1915+#define R_PARISC_LORESERVE     128 
     1916+#define R_PARISC_COPY          128     /* Copy relocation.  */ 
     1917+#define R_PARISC_IPLT          129     /* Dynamic reloc, imported PLT */ 
     1918+#define R_PARISC_EPLT          130     /* Dynamic reloc, exported PLT */ 
     1919+#define R_PARISC_TPREL32       153     /* 32 bits TP-rel. address.  */ 
     1920+#define R_PARISC_TPREL21L      154     /* TP-rel. address, left 21 bits.  */ 
     1921+#define R_PARISC_TPREL14R      158     /* TP-rel. address, right 14 bits.  */ 
     1922+#define R_PARISC_LTOFF_TP21L   162     /* LT-TP-rel. address, left 21 bits. */ 
     1923+#define R_PARISC_LTOFF_TP14R   166     /* LT-TP-rel. address, right 14 bits.*/ 
     1924+#define R_PARISC_LTOFF_TP14F   167     /* 14 bits LT-TP-rel. address.  */ 
     1925+#define R_PARISC_TPREL64       216     /* 64 bits TP-rel. address.  */ 
     1926+#define R_PARISC_TPREL14WR     219     /* TP-rel. address, right 14 bits.  */ 
     1927+#define R_PARISC_TPREL14DR     220     /* TP-rel. address, right 14 bits.  */ 
     1928+#define R_PARISC_TPREL16F      221     /* 16 bits TP-rel. address.  */ 
     1929+#define R_PARISC_TPREL16WF     222     /* 16 bits TP-rel. address.  */ 
     1930+#define R_PARISC_TPREL16DF     223     /* 16 bits TP-rel. address.  */ 
     1931+#define R_PARISC_LTOFF_TP64    224     /* 64 bits LT-TP-rel. address.  */ 
     1932+#define R_PARISC_LTOFF_TP14WR  227     /* LT-TP-rel. address, right 14 bits.*/ 
     1933+#define R_PARISC_LTOFF_TP14DR  228     /* LT-TP-rel. address, right 14 bits.*/ 
     1934+#define R_PARISC_LTOFF_TP16F   229     /* 16 bits LT-TP-rel. address.  */ 
     1935+#define R_PARISC_LTOFF_TP16WF  230     /* 16 bits LT-TP-rel. address.  */ 
     1936+#define R_PARISC_LTOFF_TP16DF  231     /* 16 bits LT-TP-rel. address.  */ 
     1937+#define R_PARISC_GNU_VTENTRY   232 
     1938+#define R_PARISC_GNU_VTINHERIT 233 
     1939+#define R_PARISC_TLS_GD21L     234     /* GD 21-bit left.  */ 
     1940+#define R_PARISC_TLS_GD14R     235     /* GD 14-bit right.  */ 
     1941+#define R_PARISC_TLS_GDCALL    236     /* GD call to __t_g_a.  */ 
     1942+#define R_PARISC_TLS_LDM21L    237     /* LD module 21-bit left.  */ 
     1943+#define R_PARISC_TLS_LDM14R    238     /* LD module 14-bit right.  */ 
     1944+#define R_PARISC_TLS_LDMCALL   239     /* LD module call to __t_g_a.  */ 
     1945+#define R_PARISC_TLS_LDO21L    240     /* LD offset 21-bit left.  */ 
     1946+#define R_PARISC_TLS_LDO14R    241     /* LD offset 14-bit right.  */ 
     1947+#define R_PARISC_TLS_DTPMOD32  242     /* DTP module 32-bit.  */ 
     1948+#define R_PARISC_TLS_DTPMOD64  243     /* DTP module 64-bit.  */ 
     1949+#define R_PARISC_TLS_DTPOFF32  244     /* DTP offset 32-bit.  */ 
     1950+#define R_PARISC_TLS_DTPOFF64  245     /* DTP offset 32-bit.  */ 
     1951+#define R_PARISC_TLS_LE21L     R_PARISC_TPREL21L 
     1952+#define R_PARISC_TLS_LE14R     R_PARISC_TPREL14R 
     1953+#define R_PARISC_TLS_IE21L     R_PARISC_LTOFF_TP21L 
     1954+#define R_PARISC_TLS_IE14R     R_PARISC_LTOFF_TP14R 
     1955+#define R_PARISC_TLS_TPREL32   R_PARISC_TPREL32 
     1956+#define R_PARISC_TLS_TPREL64   R_PARISC_TPREL64 
     1957+#define R_PARISC_HIRESERVE     255 
     1958+ 
     1959+/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ 
     1960+ 
     1961+#define PT_HP_TLS              (PT_LOOS + 0x0) 
     1962+#define PT_HP_CORE_NONE                (PT_LOOS + 0x1) 
     1963+#define PT_HP_CORE_VERSION     (PT_LOOS + 0x2) 
     1964+#define PT_HP_CORE_KERNEL      (PT_LOOS + 0x3) 
     1965+#define PT_HP_CORE_COMM                (PT_LOOS + 0x4) 
     1966+#define PT_HP_CORE_PROC                (PT_LOOS + 0x5) 
     1967+#define PT_HP_CORE_LOADABLE    (PT_LOOS + 0x6) 
     1968+#define PT_HP_CORE_STACK       (PT_LOOS + 0x7) 
     1969+#define PT_HP_CORE_SHM         (PT_LOOS + 0x8) 
     1970+#define PT_HP_CORE_MMF         (PT_LOOS + 0x9) 
     1971+#define PT_HP_PARALLEL         (PT_LOOS + 0x10) 
     1972+#define PT_HP_FASTBIND         (PT_LOOS + 0x11) 
     1973+#define PT_HP_OPT_ANNOT                (PT_LOOS + 0x12) 
     1974+#define PT_HP_HSL_ANNOT                (PT_LOOS + 0x13) 
     1975+#define PT_HP_STACK            (PT_LOOS + 0x14) 
     1976+ 
     1977+#define PT_PARISC_ARCHEXT      0x70000000 
     1978+#define PT_PARISC_UNWIND       0x70000001 
     1979+ 
     1980+/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ 
     1981+ 
     1982+#define PF_PARISC_SBP          0x08000000 
     1983+ 
     1984+#define PF_HP_PAGE_SIZE                0x00100000 
     1985+#define PF_HP_FAR_SHARED       0x00200000 
     1986+#define PF_HP_NEAR_SHARED      0x00400000 
     1987+#define PF_HP_CODE             0x01000000 
     1988+#define PF_HP_MODIFY           0x02000000 
     1989+#define PF_HP_LAZYSWAP         0x04000000 
     1990+#define PF_HP_SBP              0x08000000 
     1991+ 
     1992+ 
     1993+/* Alpha specific definitions.  */ 
     1994+ 
     1995+/* Legal values for e_flags field of Elf64_Ehdr.  */ 
     1996+ 
     1997+#define EF_ALPHA_32BIT         1       /* All addresses must be < 2GB.  */ 
     1998+#define EF_ALPHA_CANRELAX      2       /* Relocations for relaxing exist.  */ 
     1999+ 
     2000+/* Legal values for sh_type field of Elf64_Shdr.  */ 
     2001+ 
     2002+/* These two are primerily concerned with ECOFF debugging info.  */ 
     2003+#define SHT_ALPHA_DEBUG                0x70000001 
     2004+#define SHT_ALPHA_REGINFO      0x70000002 
     2005+ 
     2006+/* Legal values for sh_flags field of Elf64_Shdr.  */ 
     2007+ 
     2008+#define SHF_ALPHA_GPREL                0x10000000 
     2009+ 
     2010+/* Legal values for st_other field of Elf64_Sym.  */ 
     2011+#define STO_ALPHA_NOPV         0x80    /* No PV required.  */ 
     2012+#define STO_ALPHA_STD_GPLOAD   0x88    /* PV only used for initial ldgp.  */ 
     2013+ 
     2014+/* Alpha relocs.  */ 
     2015+ 
     2016+#define R_ALPHA_NONE           0       /* No reloc */ 
     2017+#define R_ALPHA_REFLONG                1       /* Direct 32 bit */ 
     2018+#define R_ALPHA_REFQUAD                2       /* Direct 64 bit */ 
     2019+#define R_ALPHA_GPREL32                3       /* GP relative 32 bit */ 
     2020+#define R_ALPHA_LITERAL                4       /* GP relative 16 bit w/optimization */ 
     2021+#define R_ALPHA_LITUSE         5       /* Optimization hint for LITERAL */ 
     2022+#define R_ALPHA_GPDISP         6       /* Add displacement to GP */ 
     2023+#define R_ALPHA_BRADDR         7       /* PC+4 relative 23 bit shifted */ 
     2024+#define R_ALPHA_HINT           8       /* PC+4 relative 16 bit shifted */ 
     2025+#define R_ALPHA_SREL16         9       /* PC relative 16 bit */ 
     2026+#define R_ALPHA_SREL32         10      /* PC relative 32 bit */ 
     2027+#define R_ALPHA_SREL64         11      /* PC relative 64 bit */ 
     2028+#define R_ALPHA_GPRELHIGH      17      /* GP relative 32 bit, high 16 bits */ 
     2029+#define R_ALPHA_GPRELLOW       18      /* GP relative 32 bit, low 16 bits */ 
     2030+#define R_ALPHA_GPREL16                19      /* GP relative 16 bit */ 
     2031+#define R_ALPHA_COPY           24      /* Copy symbol at runtime */ 
     2032+#define R_ALPHA_GLOB_DAT       25      /* Create GOT entry */ 
     2033+#define R_ALPHA_JMP_SLOT       26      /* Create PLT entry */ 
     2034+#define R_ALPHA_RELATIVE       27      /* Adjust by program base */ 
     2035+#define R_ALPHA_TLS_GD_HI      28 
     2036+#define R_ALPHA_TLSGD          29 
     2037+#define R_ALPHA_TLS_LDM                30 
     2038+#define R_ALPHA_DTPMOD64       31 
     2039+#define R_ALPHA_GOTDTPREL      32 
     2040+#define R_ALPHA_DTPREL64       33 
     2041+#define R_ALPHA_DTPRELHI       34 
     2042+#define R_ALPHA_DTPRELLO       35 
     2043+#define R_ALPHA_DTPREL16       36 
     2044+#define R_ALPHA_GOTTPREL       37 
     2045+#define R_ALPHA_TPREL64                38 
     2046+#define R_ALPHA_TPRELHI                39 
     2047+#define R_ALPHA_TPRELLO                40 
     2048+#define R_ALPHA_TPREL16                41 
     2049+/* Keep this the last entry.  */ 
     2050+#define R_ALPHA_NUM            46 
     2051+ 
     2052+/* Magic values of the LITUSE relocation addend.  */ 
     2053+#define LITUSE_ALPHA_ADDR      0 
     2054+#define LITUSE_ALPHA_BASE      1 
     2055+#define LITUSE_ALPHA_BYTOFF    2 
     2056+#define LITUSE_ALPHA_JSR       3 
     2057+#define LITUSE_ALPHA_TLS_GD    4 
     2058+#define LITUSE_ALPHA_TLS_LDM   5 
     2059+ 
     2060+/* Legal values for d_tag of Elf64_Dyn.  */ 
     2061+#define DT_ALPHA_PLTRO         (DT_LOPROC + 0) 
     2062+#define DT_ALPHA_NUM           1 
     2063+ 
     2064+/* PowerPC specific declarations */ 
     2065+ 
     2066+/* Values for Elf32/64_Ehdr.e_flags.  */ 
     2067+#define EF_PPC_EMB             0x80000000      /* PowerPC embedded flag */ 
     2068+ 
     2069+/* Cygnus local bits below */ 
     2070+#define EF_PPC_RELOCATABLE     0x00010000      /* PowerPC -mrelocatable flag*/ 
     2071+#define EF_PPC_RELOCATABLE_LIB 0x00008000      /* PowerPC -mrelocatable-lib 
     2072+                                                  flag */ 
     2073+ 
     2074+/* PowerPC relocations defined by the ABIs */ 
     2075+#define R_PPC_NONE             0 
     2076+#define R_PPC_ADDR32           1       /* 32bit absolute address */ 
     2077+#define R_PPC_ADDR24           2       /* 26bit address, 2 bits ignored.  */ 
     2078+#define R_PPC_ADDR16           3       /* 16bit absolute address */ 
     2079+#define R_PPC_ADDR16_LO                4       /* lower 16bit of absolute address */ 
     2080+#define R_PPC_ADDR16_HI                5       /* high 16bit of absolute address */ 
     2081+#define R_PPC_ADDR16_HA                6       /* adjusted high 16bit */ 
     2082+#define R_PPC_ADDR14           7       /* 16bit address, 2 bits ignored */ 
     2083+#define R_PPC_ADDR14_BRTAKEN   8 
     2084+#define R_PPC_ADDR14_BRNTAKEN  9 
     2085+#define R_PPC_REL24            10      /* PC relative 26 bit */ 
     2086+#define R_PPC_REL14            11      /* PC relative 16 bit */ 
     2087+#define R_PPC_REL14_BRTAKEN    12 
     2088+#define R_PPC_REL14_BRNTAKEN   13 
     2089+#define R_PPC_GOT16            14 
     2090+#define R_PPC_GOT16_LO         15 
     2091+#define R_PPC_GOT16_HI         16 
     2092+#define R_PPC_GOT16_HA         17 
     2093+#define R_PPC_PLTREL24         18 
     2094+#define R_PPC_COPY             19 
     2095+#define R_PPC_GLOB_DAT         20 
     2096+#define R_PPC_JMP_SLOT         21 
     2097+#define R_PPC_RELATIVE         22 
     2098+#define R_PPC_LOCAL24PC                23 
     2099+#define R_PPC_UADDR32          24 
     2100+#define R_PPC_UADDR16          25 
     2101+#define R_PPC_REL32            26 
     2102+#define R_PPC_PLT32            27 
     2103+#define R_PPC_PLTREL32         28 
     2104+#define R_PPC_PLT16_LO         29 
     2105+#define R_PPC_PLT16_HI         30 
     2106+#define R_PPC_PLT16_HA         31 
     2107+#define R_PPC_SDAREL16         32 
     2108+#define R_PPC_SECTOFF          33 
     2109+#define R_PPC_SECTOFF_LO       34 
     2110+#define R_PPC_SECTOFF_HI       35 
     2111+#define R_PPC_SECTOFF_HA       36 
     2112+ 
     2113+/* PowerPC relocations defined for the TLS access ABI.  */ 
     2114+#define R_PPC_TLS              67 /* none      (sym+add)@tls */ 
     2115+#define R_PPC_DTPMOD32         68 /* word32    (sym+add)@dtpmod */ 
     2116+#define R_PPC_TPREL16          69 /* half16*   (sym+add)@tprel */ 
     2117+#define R_PPC_TPREL16_LO       70 /* half16    (sym+add)@tprel@l */ 
     2118+#define R_PPC_TPREL16_HI       71 /* half16    (sym+add)@tprel@h */ 
     2119+#define R_PPC_TPREL16_HA       72 /* half16    (sym+add)@tprel@ha */ 
     2120+#define R_PPC_TPREL32          73 /* word32    (sym+add)@tprel */ 
     2121+#define R_PPC_DTPREL16         74 /* half16*   (sym+add)@dtprel */ 
     2122+#define R_PPC_DTPREL16_LO      75 /* half16    (sym+add)@dtprel@l */ 
     2123+#define R_PPC_DTPREL16_HI      76 /* half16    (sym+add)@dtprel@h */ 
     2124+#define R_PPC_DTPREL16_HA      77 /* half16    (sym+add)@dtprel@ha */ 
     2125+#define R_PPC_DTPREL32         78 /* word32    (sym+add)@dtprel */ 
     2126+#define R_PPC_GOT_TLSGD16      79 /* half16*   (sym+add)@got@tlsgd */ 
     2127+#define R_PPC_GOT_TLSGD16_LO   80 /* half16    (sym+add)@got@tlsgd@l */ 
     2128+#define R_PPC_GOT_TLSGD16_HI   81 /* half16    (sym+add)@got@tlsgd@h */ 
     2129+#define R_PPC_GOT_TLSGD16_HA   82 /* half16    (sym+add)@got@tlsgd@ha */ 
     2130+#define R_PPC_GOT_TLSLD16      83 /* half16*   (sym+add)@got@tlsld */ 
     2131+#define R_PPC_GOT_TLSLD16_LO   84 /* half16    (sym+add)@got@tlsld@l */ 
     2132+#define R_PPC_GOT_TLSLD16_HI   85 /* half16    (sym+add)@got@tlsld@h */ 
     2133+#define R_PPC_GOT_TLSLD16_HA   86 /* half16    (sym+add)@got@tlsld@ha */ 
     2134+#define R_PPC_GOT_TPREL16      87 /* half16*   (sym+add)@got@tprel */ 
     2135+#define R_PPC_GOT_TPREL16_LO   88 /* half16    (sym+add)@got@tprel@l */ 
     2136+#define R_PPC_GOT_TPREL16_HI   89 /* half16    (sym+add)@got@tprel@h */ 
     2137+#define R_PPC_GOT_TPREL16_HA   90 /* half16    (sym+add)@got@tprel@ha */ 
     2138+#define R_PPC_GOT_DTPREL16     91 /* half16*   (sym+add)@got@dtprel */ 
     2139+#define R_PPC_GOT_DTPREL16_LO  92 /* half16*   (sym+add)@got@dtprel@l */ 
     2140+#define R_PPC_GOT_DTPREL16_HI  93 /* half16*   (sym+add)@got@dtprel@h */ 
     2141+#define R_PPC_GOT_DTPREL16_HA  94 /* half16*   (sym+add)@got@dtprel@ha */ 
     2142+ 
     2143+/* The remaining relocs are from the Embedded ELF ABI, and are not 
     2144+   in the SVR4 ELF ABI.  */ 
     2145+#define R_PPC_EMB_NADDR32      101 
     2146+#define R_PPC_EMB_NADDR16      102 
     2147+#define R_PPC_EMB_NADDR16_LO   103 
     2148+#define R_PPC_EMB_NADDR16_HI   104 
     2149+#define R_PPC_EMB_NADDR16_HA   105 
     2150+#define R_PPC_EMB_SDAI16       106 
     2151+#define R_PPC_EMB_SDA2I16      107 
     2152+#define R_PPC_EMB_SDA2REL      108 
     2153+#define R_PPC_EMB_SDA21                109     /* 16 bit offset in SDA */ 
     2154+#define R_PPC_EMB_MRKREF       110 
     2155+#define R_PPC_EMB_RELSEC16     111 
     2156+#define R_PPC_EMB_RELST_LO     112 
     2157+#define R_PPC_EMB_RELST_HI     113 
     2158+#define R_PPC_EMB_RELST_HA     114 
     2159+#define R_PPC_EMB_BIT_FLD      115 
     2160+#define R_PPC_EMB_RELSDA       116     /* 16 bit relative offset in SDA */ 
     2161+ 
     2162+/* Diab tool relocations.  */ 
     2163+#define R_PPC_DIAB_SDA21_LO    180     /* like EMB_SDA21, but lower 16 bit */ 
     2164+#define R_PPC_DIAB_SDA21_HI    181     /* like EMB_SDA21, but high 16 bit */ 
     2165+#define R_PPC_DIAB_SDA21_HA    182     /* like EMB_SDA21, adjusted high 16 */ 
     2166+#define R_PPC_DIAB_RELSDA_LO   183     /* like EMB_RELSDA, but lower 16 bit */ 
     2167+#define R_PPC_DIAB_RELSDA_HI   184     /* like EMB_RELSDA, but high 16 bit */ 
     2168+#define R_PPC_DIAB_RELSDA_HA   185     /* like EMB_RELSDA, adjusted high 16 */ 
     2169+ 
     2170+/* GNU extension to support local ifunc.  */ 
     2171+#define R_PPC_IRELATIVE                248 
     2172+ 
     2173+/* GNU relocs used in PIC code sequences.  */ 
     2174+#define R_PPC_REL16            249     /* half16   (sym+add-.) */ 
     2175+#define R_PPC_REL16_LO         250     /* half16   (sym+add-.)@l */ 
     2176+#define R_PPC_REL16_HI         251     /* half16   (sym+add-.)@h */ 
     2177+#define R_PPC_REL16_HA         252     /* half16   (sym+add-.)@ha */ 
     2178+ 
     2179+/* This is a phony reloc to handle any old fashioned TOC16 references 
     2180+   that may still be in object files.  */ 
     2181+#define R_PPC_TOC16            255 
     2182+ 
     2183+/* PowerPC specific values for the Dyn d_tag field.  */ 
     2184+#define DT_PPC_GOT             (DT_LOPROC + 0) 
     2185+#define DT_PPC_NUM             1 
     2186+ 
     2187+/* PowerPC64 relocations defined by the ABIs */ 
     2188+#define R_PPC64_NONE           R_PPC_NONE 
     2189+#define R_PPC64_ADDR32         R_PPC_ADDR32 /* 32bit absolute address */ 
     2190+#define R_PPC64_ADDR24         R_PPC_ADDR24 /* 26bit address, word aligned */ 
     2191+#define R_PPC64_ADDR16         R_PPC_ADDR16 /* 16bit absolute address */ 
     2192+#define R_PPC64_ADDR16_LO      R_PPC_ADDR16_LO /* lower 16bits of address */ 
     2193+#define R_PPC64_ADDR16_HI      R_PPC_ADDR16_HI /* high 16bits of address. */ 
     2194+#define R_PPC64_ADDR16_HA      R_PPC_ADDR16_HA /* adjusted high 16bits.  */ 
     2195+#define R_PPC64_ADDR14         R_PPC_ADDR14 /* 16bit address, word aligned */ 
     2196+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN 
     2197+#define R_PPC64_ADDR14_BRNTAKEN        R_PPC_ADDR14_BRNTAKEN 
     2198+#define R_PPC64_REL24          R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ 
     2199+#define R_PPC64_REL14          R_PPC_REL14 /* PC relative 16 bit */ 
     2200+#define R_PPC64_REL14_BRTAKEN  R_PPC_REL14_BRTAKEN 
     2201+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN 
     2202+#define R_PPC64_GOT16          R_PPC_GOT16 
     2203+#define R_PPC64_GOT16_LO       R_PPC_GOT16_LO 
     2204+#define R_PPC64_GOT16_HI       R_PPC_GOT16_HI 
     2205+#define R_PPC64_GOT16_HA       R_PPC_GOT16_HA 
     2206+ 
     2207+#define R_PPC64_COPY           R_PPC_COPY 
     2208+#define R_PPC64_GLOB_DAT       R_PPC_GLOB_DAT 
     2209+#define R_PPC64_JMP_SLOT       R_PPC_JMP_SLOT 
     2210+#define R_PPC64_RELATIVE       R_PPC_RELATIVE 
     2211+ 
     2212+#define R_PPC64_UADDR32                R_PPC_UADDR32 
     2213+#define R_PPC64_UADDR16                R_PPC_UADDR16 
     2214+#define R_PPC64_REL32          R_PPC_REL32 
     2215+#define R_PPC64_PLT32          R_PPC_PLT32 
     2216+#define R_PPC64_PLTREL32       R_PPC_PLTREL32 
     2217+#define R_PPC64_PLT16_LO       R_PPC_PLT16_LO 
     2218+#define R_PPC64_PLT16_HI       R_PPC_PLT16_HI 
     2219+#define R_PPC64_PLT16_HA       R_PPC_PLT16_HA 
     2220+ 
     2221+#define R_PPC64_SECTOFF                R_PPC_SECTOFF 
     2222+#define R_PPC64_SECTOFF_LO     R_PPC_SECTOFF_LO 
     2223+#define R_PPC64_SECTOFF_HI     R_PPC_SECTOFF_HI 
     2224+#define R_PPC64_SECTOFF_HA     R_PPC_SECTOFF_HA 
     2225+#define R_PPC64_ADDR30         37 /* word30 (S + A - P) >> 2 */ 
     2226+#define R_PPC64_ADDR64         38 /* doubleword64 S + A */ 
     2227+#define R_PPC64_ADDR16_HIGHER  39 /* half16 #higher(S + A) */ 
     2228+#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ 
     2229+#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ 
     2230+#define R_PPC64_ADDR16_HIGHESTA        42 /* half16 #highesta(S + A) */ 
     2231+#define R_PPC64_UADDR64                43 /* doubleword64 S + A */ 
     2232+#define R_PPC64_REL64          44 /* doubleword64 S + A - P */ 
     2233+#define R_PPC64_PLT64          45 /* doubleword64 L + A */ 
     2234+#define R_PPC64_PLTREL64       46 /* doubleword64 L + A - P */ 
     2235+#define R_PPC64_TOC16          47 /* half16* S + A - .TOC */ 
     2236+#define R_PPC64_TOC16_LO       48 /* half16 #lo(S + A - .TOC.) */ 
     2237+#define R_PPC64_TOC16_HI       49 /* half16 #hi(S + A - .TOC.) */ 
     2238+#define R_PPC64_TOC16_HA       50 /* half16 #ha(S + A - .TOC.) */ 
     2239+#define R_PPC64_TOC            51 /* doubleword64 .TOC */ 
     2240+#define R_PPC64_PLTGOT16       52 /* half16* M + A */ 
     2241+#define R_PPC64_PLTGOT16_LO    53 /* half16 #lo(M + A) */ 
     2242+#define R_PPC64_PLTGOT16_HI    54 /* half16 #hi(M + A) */ 
     2243+#define R_PPC64_PLTGOT16_HA    55 /* half16 #ha(M + A) */ 
     2244+ 
     2245+#define R_PPC64_ADDR16_DS      56 /* half16ds* (S + A) >> 2 */ 
     2246+#define R_PPC64_ADDR16_LO_DS   57 /* half16ds  #lo(S + A) >> 2 */ 
     2247+#define R_PPC64_GOT16_DS       58 /* half16ds* (G + A) >> 2 */ 
     2248+#define R_PPC64_GOT16_LO_DS    59 /* half16ds  #lo(G + A) >> 2 */ 
     2249+#define R_PPC64_PLT16_LO_DS    60 /* half16ds  #lo(L + A) >> 2 */ 
     2250+#define R_PPC64_SECTOFF_DS     61 /* half16ds* (R + A) >> 2 */ 
     2251+#define R_PPC64_SECTOFF_LO_DS  62 /* half16ds  #lo(R + A) >> 2 */ 
     2252+#define R_PPC64_TOC16_DS       63 /* half16ds* (S + A - .TOC.) >> 2 */ 
     2253+#define R_PPC64_TOC16_LO_DS    64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ 
     2254+#define R_PPC64_PLTGOT16_DS    65 /* half16ds* (M + A) >> 2 */ 
     2255+#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds  #lo(M + A) >> 2 */ 
     2256+ 
     2257+/* PowerPC64 relocations defined for the TLS access ABI.  */ 
     2258+#define R_PPC64_TLS            67 /* none      (sym+add)@tls */ 
     2259+#define R_PPC64_DTPMOD64       68 /* doubleword64 (sym+add)@dtpmod */ 
     2260+#define R_PPC64_TPREL16                69 /* half16*   (sym+add)@tprel */ 
     2261+#define R_PPC64_TPREL16_LO     70 /* half16    (sym+add)@tprel@l */ 
     2262+#define R_PPC64_TPREL16_HI     71 /* half16    (sym+add)@tprel@h */ 
     2263+#define R_PPC64_TPREL16_HA     72 /* half16    (sym+add)@tprel@ha */ 
     2264+#define R_PPC64_TPREL64                73 /* doubleword64 (sym+add)@tprel */ 
     2265+#define R_PPC64_DTPREL16       74 /* half16*   (sym+add)@dtprel */ 
     2266+#define R_PPC64_DTPREL16_LO    75 /* half16    (sym+add)@dtprel@l */ 
     2267+#define R_PPC64_DTPREL16_HI    76 /* half16    (sym+add)@dtprel@h */ 
     2268+#define R_PPC64_DTPREL16_HA    77 /* half16    (sym+add)@dtprel@ha */ 
     2269+#define R_PPC64_DTPREL64       78 /* doubleword64 (sym+add)@dtprel */ 
     2270+#define R_PPC64_GOT_TLSGD16    79 /* half16*   (sym+add)@got@tlsgd */ 
     2271+#define R_PPC64_GOT_TLSGD16_LO 80 /* half16    (sym+add)@got@tlsgd@l */ 
     2272+#define R_PPC64_GOT_TLSGD16_HI 81 /* half16    (sym+add)@got@tlsgd@h */ 
     2273+#define R_PPC64_GOT_TLSGD16_HA 82 /* half16    (sym+add)@got@tlsgd@ha */ 
     2274+#define R_PPC64_GOT_TLSLD16    83 /* half16*   (sym+add)@got@tlsld */ 
     2275+#define R_PPC64_GOT_TLSLD16_LO 84 /* half16    (sym+add)@got@tlsld@l */ 
     2276+#define R_PPC64_GOT_TLSLD16_HI 85 /* half16    (sym+add)@got@tlsld@h */ 
     2277+#define R_PPC64_GOT_TLSLD16_HA 86 /* half16    (sym+add)@got@tlsld@ha */ 
     2278+#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ 
     2279+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ 
     2280+#define R_PPC64_GOT_TPREL16_HI 89 /* half16    (sym+add)@got@tprel@h */ 
     2281+#define R_PPC64_GOT_TPREL16_HA 90 /* half16    (sym+add)@got@tprel@ha */ 
     2282+#define R_PPC64_GOT_DTPREL16_DS        91 /* half16ds* (sym+add)@got@dtprel */ 
     2283+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ 
     2284+#define R_PPC64_GOT_DTPREL16_HI        93 /* half16    (sym+add)@got@dtprel@h */ 
     2285+#define R_PPC64_GOT_DTPREL16_HA        94 /* half16    (sym+add)@got@dtprel@ha */ 
     2286+#define R_PPC64_TPREL16_DS     95 /* half16ds* (sym+add)@tprel */ 
     2287+#define R_PPC64_TPREL16_LO_DS  96 /* half16ds  (sym+add)@tprel@l */ 
     2288+#define R_PPC64_TPREL16_HIGHER 97 /* half16    (sym+add)@tprel@higher */ 
     2289+#define R_PPC64_TPREL16_HIGHERA        98 /* half16    (sym+add)@tprel@highera */ 
     2290+#define R_PPC64_TPREL16_HIGHEST        99 /* half16    (sym+add)@tprel@highest */ 
     2291+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ 
     2292+#define R_PPC64_DTPREL16_DS    101 /* half16ds* (sym+add)@dtprel */ 
     2293+#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ 
     2294+#define R_PPC64_DTPREL16_HIGHER        103 /* half16   (sym+add)@dtprel@higher */ 
     2295+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ 
     2296+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ 
     2297+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16        (sym+add)@dtprel@highesta */ 
     2298+ 
     2299+/* GNU extension to support local ifunc.  */ 
     2300+#define R_PPC64_JMP_IREL       247 
     2301+#define R_PPC64_IRELATIVE      248 
     2302+#define R_PPC64_REL16          249     /* half16   (sym+add-.) */ 
     2303+#define R_PPC64_REL16_LO       250     /* half16   (sym+add-.)@l */ 
     2304+#define R_PPC64_REL16_HI       251     /* half16   (sym+add-.)@h */ 
     2305+#define R_PPC64_REL16_HA       252     /* half16   (sym+add-.)@ha */ 
     2306+ 
     2307+/* PowerPC64 specific values for the Dyn d_tag field.  */ 
     2308+#define DT_PPC64_GLINK  (DT_LOPROC + 0) 
     2309+#define DT_PPC64_OPD   (DT_LOPROC + 1) 
     2310+#define DT_PPC64_OPDSZ (DT_LOPROC + 2) 
     2311+#define DT_PPC64_NUM    3 
     2312+ 
     2313+ 
     2314+/* ARM specific declarations */ 
     2315+ 
     2316+/* Processor specific flags for the ELF header e_flags field.  */ 
     2317+#define EF_ARM_RELEXEC         0x01 
     2318+#define EF_ARM_HASENTRY                0x02 
     2319+#define EF_ARM_INTERWORK       0x04 
     2320+#define EF_ARM_APCS_26         0x08 
     2321+#define EF_ARM_APCS_FLOAT      0x10 
     2322+#define EF_ARM_PIC             0x20 
     2323+#define EF_ARM_ALIGN8          0x40 /* 8-bit structure alignment is in use */ 
     2324+#define EF_ARM_NEW_ABI         0x80 
     2325+#define EF_ARM_OLD_ABI         0x100 
     2326+#define EF_ARM_SOFT_FLOAT      0x200 
     2327+#define EF_ARM_VFP_FLOAT       0x400 
     2328+#define EF_ARM_MAVERICK_FLOAT  0x800 
     2329+ 
     2330+ 
     2331+/* Other constants defined in the ARM ELF spec. version B-01.  */ 
     2332+/* NB. These conflict with values defined above.  */ 
     2333+#define EF_ARM_SYMSARESORTED   0x04 
     2334+#define EF_ARM_DYNSYMSUSESEGIDX        0x08 
     2335+#define EF_ARM_MAPSYMSFIRST    0x10 
     2336+#define EF_ARM_EABIMASK                0XFF000000 
     2337+ 
     2338+/* Constants defined in AAELF.  */ 
     2339+#define EF_ARM_BE8         0x00800000 
     2340+#define EF_ARM_LE8         0x00400000 
     2341+ 
     2342+#define EF_ARM_EABI_VERSION(flags)     ((flags) & EF_ARM_EABIMASK) 
     2343+#define EF_ARM_EABI_UNKNOWN    0x00000000 
     2344+#define EF_ARM_EABI_VER1       0x01000000 
     2345+#define EF_ARM_EABI_VER2       0x02000000 
     2346+#define EF_ARM_EABI_VER3       0x03000000 
     2347+#define EF_ARM_EABI_VER4       0x04000000 
     2348+#define EF_ARM_EABI_VER5       0x05000000 
     2349+ 
     2350+/* Additional symbol types for Thumb.  */ 
     2351+#define STT_ARM_TFUNC          STT_LOPROC /* A Thumb function.  */ 
     2352+#define STT_ARM_16BIT          STT_HIPROC /* A Thumb label.  */ 
     2353+ 
     2354+/* ARM-specific values for sh_flags */ 
     2355+#define SHF_ARM_ENTRYSECT      0x10000000 /* Section contains an entry point */ 
     2356+#define SHF_ARM_COMDEF         0x80000000 /* Section may be multiply defined 
     2357+                                             in the input to a link step.  */ 
     2358+ 
     2359+/* ARM-specific program header flags */ 
     2360+#define PF_ARM_SB              0x10000000 /* Segment contains the location 
     2361+                                             addressed by the static base. */ 
     2362+#define PF_ARM_PI              0x20000000 /* Position-independent segment.  */ 
     2363+#define PF_ARM_ABS             0x40000000 /* Absolute segment.  */ 
     2364+ 
     2365+/* Processor specific values for the Phdr p_type field.  */ 
     2366+#define PT_ARM_EXIDX           (PT_LOPROC + 1) /* ARM unwind segment.  */ 
     2367+ 
     2368+/* Processor specific values for the Shdr sh_type field.  */ 
     2369+#define SHT_ARM_EXIDX          (SHT_LOPROC + 1) /* ARM unwind section.  */ 
     2370+#define SHT_ARM_PREEMPTMAP     (SHT_LOPROC + 2) /* Preemption details.  */ 
     2371+#define SHT_ARM_ATTRIBUTES     (SHT_LOPROC + 3) /* ARM attributes section.  */ 
     2372+ 
     2373+ 
     2374+/* ARM relocs.  */ 
     2375+ 
     2376+#define R_ARM_NONE             0       /* No reloc */ 
     2377+#define R_ARM_PC24             1       /* PC relative 26 bit branch */ 
     2378+#define R_ARM_ABS32            2       /* Direct 32 bit  */ 
     2379+#define R_ARM_REL32            3       /* PC relative 32 bit */ 
     2380+#define R_ARM_PC13             4 
     2381+#define R_ARM_ABS16            5       /* Direct 16 bit */ 
     2382+#define R_ARM_ABS12            6       /* Direct 12 bit */ 
     2383+#define R_ARM_THM_ABS5         7 
     2384+#define R_ARM_ABS8             8       /* Direct 8 bit */ 
     2385+#define R_ARM_SBREL32          9 
     2386+#define R_ARM_THM_PC22         10 
     2387+#define R_ARM_THM_PC8          11 
     2388+#define R_ARM_AMP_VCALL9       12 
     2389+#define R_ARM_SWI24            13      /* Obsolete static relocation.  */ 
     2390+#define R_ARM_TLS_DESC         13      /* Dynamic relocation.  */ 
     2391+#define R_ARM_THM_SWI8         14 
     2392+#define R_ARM_XPC25            15 
     2393+#define R_ARM_THM_XPC22                16 
     2394+#define R_ARM_TLS_DTPMOD32     17      /* ID of module containing symbol */ 
     2395+#define R_ARM_TLS_DTPOFF32     18      /* Offset in TLS block */ 
     2396+#define R_ARM_TLS_TPOFF32      19      /* Offset in static TLS block */ 
     2397+#define R_ARM_COPY             20      /* Copy symbol at runtime */ 
     2398+#define R_ARM_GLOB_DAT         21      /* Create GOT entry */ 
     2399+#define R_ARM_JUMP_SLOT                22      /* Create PLT entry */ 
     2400+#define R_ARM_RELATIVE         23      /* Adjust by program base */ 
     2401+#define R_ARM_GOTOFF           24      /* 32 bit offset to GOT */ 
     2402+#define R_ARM_GOTPC            25      /* 32 bit PC relative offset to GOT */ 
     2403+#define R_ARM_GOT32            26      /* 32 bit GOT entry */ 
     2404+#define R_ARM_PLT32            27      /* 32 bit PLT address */ 
     2405+#define R_ARM_ALU_PCREL_7_0    32 
     2406+#define R_ARM_ALU_PCREL_15_8   33 
     2407+#define R_ARM_ALU_PCREL_23_15  34 
     2408+#define R_ARM_LDR_SBREL_11_0   35 
     2409+#define R_ARM_ALU_SBREL_19_12  36 
     2410+#define R_ARM_ALU_SBREL_27_20  37 
     2411+#define R_ARM_TLS_GOTDESC      90 
     2412+#define R_ARM_TLS_CALL         91 
     2413+#define R_ARM_TLS_DESCSEQ      92 
     2414+#define R_ARM_THM_TLS_CALL     93 
     2415+#define R_ARM_GNU_VTENTRY      100 
     2416+#define R_ARM_GNU_VTINHERIT    101 
     2417+#define R_ARM_THM_PC11         102     /* thumb unconditional branch */ 
     2418+#define R_ARM_THM_PC9          103     /* thumb conditional branch */ 
     2419+#define R_ARM_TLS_GD32         104     /* PC-rel 32 bit for global dynamic 
     2420+                                          thread local data */ 
     2421+#define R_ARM_TLS_LDM32                105     /* PC-rel 32 bit for local dynamic 
     2422+                                          thread local data */ 
     2423+#define R_ARM_TLS_LDO32                106     /* 32 bit offset relative to TLS 
     2424+                                          block */ 
     2425+#define R_ARM_TLS_IE32         107     /* PC-rel 32 bit for GOT entry of 
     2426+                                          static TLS block offset */ 
     2427+#define R_ARM_TLS_LE32         108     /* 32 bit offset relative to static 
     2428+                                          TLS block */ 
     2429+#define        R_ARM_THM_TLS_DESCSEQ   129 
     2430+#define R_ARM_IRELATIVE                160 
     2431+#define R_ARM_RXPC25           249 
     2432+#define R_ARM_RSBREL32         250 
     2433+#define R_ARM_THM_RPC22                251 
     2434+#define R_ARM_RREL32           252 
     2435+#define R_ARM_RABS22           253 
     2436+#define R_ARM_RPC24            254 
     2437+#define R_ARM_RBASE            255 
     2438+/* Keep this the last entry.  */ 
     2439+#define R_ARM_NUM              256 
     2440+ 
     2441+/* IA-64 specific declarations.  */ 
     2442+ 
     2443+/* Processor specific flags for the Ehdr e_flags field.  */ 
     2444+#define EF_IA_64_MASKOS                0x0000000f      /* os-specific flags */ 
     2445+#define EF_IA_64_ABI64         0x00000010      /* 64-bit ABI */ 
     2446+#define EF_IA_64_ARCH          0xff000000      /* arch. version mask */ 
     2447+ 
     2448+/* Processor specific values for the Phdr p_type field.  */ 
     2449+#define PT_IA_64_ARCHEXT       (PT_LOPROC + 0) /* arch extension bits */ 
     2450+#define PT_IA_64_UNWIND                (PT_LOPROC + 1) /* ia64 unwind bits */ 
     2451+#define PT_IA_64_HP_OPT_ANOT   (PT_LOOS + 0x12) 
     2452+#define PT_IA_64_HP_HSL_ANOT   (PT_LOOS + 0x13) 
     2453+#define PT_IA_64_HP_STACK      (PT_LOOS + 0x14) 
     2454+ 
     2455+/* Processor specific flags for the Phdr p_flags field.  */ 
     2456+#define PF_IA_64_NORECOV       0x80000000      /* spec insns w/o recovery */ 
     2457+ 
     2458+/* Processor specific values for the Shdr sh_type field.  */ 
     2459+#define SHT_IA_64_EXT          (SHT_LOPROC + 0) /* extension bits */ 
     2460+#define SHT_IA_64_UNWIND       (SHT_LOPROC + 1) /* unwind bits */ 
     2461+ 
     2462+/* Processor specific flags for the Shdr sh_flags field.  */ 
     2463+#define SHF_IA_64_SHORT                0x10000000      /* section near gp */ 
     2464+#define SHF_IA_64_NORECOV      0x20000000      /* spec insns w/o recovery */ 
     2465+ 
     2466+/* Processor specific values for the Dyn d_tag field.  */ 
     2467+#define DT_IA_64_PLT_RESERVE   (DT_LOPROC + 0) 
     2468+#define DT_IA_64_NUM           1 
     2469+ 
     2470+/* IA-64 relocations.  */ 
     2471+#define R_IA64_NONE            0x00    /* none */ 
     2472+#define R_IA64_IMM14           0x21    /* symbol + addend, add imm14 */ 
     2473+#define R_IA64_IMM22           0x22    /* symbol + addend, add imm22 */ 
     2474+#define R_IA64_IMM64           0x23    /* symbol + addend, mov imm64 */ 
     2475+#define R_IA64_DIR32MSB                0x24    /* symbol + addend, data4 MSB */ 
     2476+#define R_IA64_DIR32LSB                0x25    /* symbol + addend, data4 LSB */ 
     2477+#define R_IA64_DIR64MSB                0x26    /* symbol + addend, data8 MSB */ 
     2478+#define R_IA64_DIR64LSB                0x27    /* symbol + addend, data8 LSB */ 
     2479+#define R_IA64_GPREL22         0x2a    /* @gprel(sym + add), add imm22 */ 
     2480+#define R_IA64_GPREL64I                0x2b    /* @gprel(sym + add), mov imm64 */ 
     2481+#define R_IA64_GPREL32MSB      0x2c    /* @gprel(sym + add), data4 MSB */ 
     2482+#define R_IA64_GPREL32LSB      0x2d    /* @gprel(sym + add), data4 LSB */ 
     2483+#define R_IA64_GPREL64MSB      0x2e    /* @gprel(sym + add), data8 MSB */ 
     2484+#define R_IA64_GPREL64LSB      0x2f    /* @gprel(sym + add), data8 LSB */ 
     2485+#define R_IA64_LTOFF22         0x32    /* @ltoff(sym + add), add imm22 */ 
     2486+#define R_IA64_LTOFF64I                0x33    /* @ltoff(sym + add), mov imm64 */ 
     2487+#define R_IA64_PLTOFF22                0x3a    /* @pltoff(sym + add), add imm22 */ 
     2488+#define R_IA64_PLTOFF64I       0x3b    /* @pltoff(sym + add), mov imm64 */ 
     2489+#define R_IA64_PLTOFF64MSB     0x3e    /* @pltoff(sym + add), data8 MSB */ 
     2490+#define R_IA64_PLTOFF64LSB     0x3f    /* @pltoff(sym + add), data8 LSB */ 
     2491+#define R_IA64_FPTR64I         0x43    /* @fptr(sym + add), mov imm64 */ 
     2492+#define R_IA64_FPTR32MSB       0x44    /* @fptr(sym + add), data4 MSB */ 
     2493+#define R_IA64_FPTR32LSB       0x45    /* @fptr(sym + add), data4 LSB */ 
     2494+#define R_IA64_FPTR64MSB       0x46    /* @fptr(sym + add), data8 MSB */ 
     2495+#define R_IA64_FPTR64LSB       0x47    /* @fptr(sym + add), data8 LSB */ 
     2496+#define R_IA64_PCREL60B                0x48    /* @pcrel(sym + add), brl */ 
     2497+#define R_IA64_PCREL21B                0x49    /* @pcrel(sym + add), ptb, call */ 
     2498+#define R_IA64_PCREL21M                0x4a    /* @pcrel(sym + add), chk.s */ 
     2499+#define R_IA64_PCREL21F                0x4b    /* @pcrel(sym + add), fchkf */ 
     2500+#define R_IA64_PCREL32MSB      0x4c    /* @pcrel(sym + add), data4 MSB */ 
     2501+#define R_IA64_PCREL32LSB      0x4d    /* @pcrel(sym + add), data4 LSB */ 
     2502+#define R_IA64_PCREL64MSB      0x4e    /* @pcrel(sym + add), data8 MSB */ 
     2503+#define R_IA64_PCREL64LSB      0x4f    /* @pcrel(sym + add), data8 LSB */ 
     2504+#define R_IA64_LTOFF_FPTR22    0x52    /* @ltoff(@fptr(s+a)), imm22 */ 
     2505+#define R_IA64_LTOFF_FPTR64I   0x53    /* @ltoff(@fptr(s+a)), imm64 */ 
     2506+#define R_IA64_LTOFF_FPTR32MSB 0x54    /* @ltoff(@fptr(s+a)), data4 MSB */ 
     2507+#define R_IA64_LTOFF_FPTR32LSB 0x55    /* @ltoff(@fptr(s+a)), data4 LSB */ 
     2508+#define R_IA64_LTOFF_FPTR64MSB 0x56    /* @ltoff(@fptr(s+a)), data8 MSB */ 
     2509+#define R_IA64_LTOFF_FPTR64LSB 0x57    /* @ltoff(@fptr(s+a)), data8 LSB */ 
     2510+#define R_IA64_SEGREL32MSB     0x5c    /* @segrel(sym + add), data4 MSB */ 
     2511+#define R_IA64_SEGREL32LSB     0x5d    /* @segrel(sym + add), data4 LSB */ 
     2512+#define R_IA64_SEGREL64MSB     0x5e    /* @segrel(sym + add), data8 MSB */ 
     2513+#define R_IA64_SEGREL64LSB     0x5f    /* @segrel(sym + add), data8 LSB */ 
     2514+#define R_IA64_SECREL32MSB     0x64    /* @secrel(sym + add), data4 MSB */ 
     2515+#define R_IA64_SECREL32LSB     0x65    /* @secrel(sym + add), data4 LSB */ 
     2516+#define R_IA64_SECREL64MSB     0x66    /* @secrel(sym + add), data8 MSB */ 
     2517+#define R_IA64_SECREL64LSB     0x67    /* @secrel(sym + add), data8 LSB */ 
     2518+#define R_IA64_REL32MSB                0x6c    /* data 4 + REL */ 
     2519+#define R_IA64_REL32LSB                0x6d    /* data 4 + REL */ 
     2520+#define R_IA64_REL64MSB                0x6e    /* data 8 + REL */ 
     2521+#define R_IA64_REL64LSB                0x6f    /* data 8 + REL */ 
     2522+#define R_IA64_LTV32MSB                0x74    /* symbol + addend, data4 MSB */ 
     2523+#define R_IA64_LTV32LSB                0x75    /* symbol + addend, data4 LSB */ 
     2524+#define R_IA64_LTV64MSB                0x76    /* symbol + addend, data8 MSB */ 
     2525+#define R_IA64_LTV64LSB                0x77    /* symbol + addend, data8 LSB */ 
     2526+#define R_IA64_PCREL21BI       0x79    /* @pcrel(sym + add), 21bit inst */ 
     2527+#define R_IA64_PCREL22         0x7a    /* @pcrel(sym + add), 22bit inst */ 
     2528+#define R_IA64_PCREL64I                0x7b    /* @pcrel(sym + add), 64bit inst */ 
     2529+#define R_IA64_IPLTMSB         0x80    /* dynamic reloc, imported PLT, MSB */ 
     2530+#define R_IA64_IPLTLSB         0x81    /* dynamic reloc, imported PLT, LSB */ 
     2531+#define R_IA64_COPY            0x84    /* copy relocation */ 
     2532+#define R_IA64_SUB             0x85    /* Addend and symbol difference */ 
     2533+#define R_IA64_LTOFF22X                0x86    /* LTOFF22, relaxable.  */ 
     2534+#define R_IA64_LDXMOV          0x87    /* Use of LTOFF22X.  */ 
     2535+#define R_IA64_TPREL14         0x91    /* @tprel(sym + add), imm14 */ 
     2536+#define R_IA64_TPREL22         0x92    /* @tprel(sym + add), imm22 */ 
     2537+#define R_IA64_TPREL64I                0x93    /* @tprel(sym + add), imm64 */ 
     2538+#define R_IA64_TPREL64MSB      0x96    /* @tprel(sym + add), data8 MSB */ 
     2539+#define R_IA64_TPREL64LSB      0x97    /* @tprel(sym + add), data8 LSB */ 
     2540+#define R_IA64_LTOFF_TPREL22   0x9a    /* @ltoff(@tprel(s+a)), imm2 */ 
     2541+#define R_IA64_DTPMOD64MSB     0xa6    /* @dtpmod(sym + add), data8 MSB */ 
     2542+#define R_IA64_DTPMOD64LSB     0xa7    /* @dtpmod(sym + add), data8 LSB */ 
     2543+#define R_IA64_LTOFF_DTPMOD22  0xaa    /* @ltoff(@dtpmod(sym + add)), imm22 */ 
     2544+#define R_IA64_DTPREL14                0xb1    /* @dtprel(sym + add), imm14 */ 
     2545+#define R_IA64_DTPREL22                0xb2    /* @dtprel(sym + add), imm22 */ 
     2546+#define R_IA64_DTPREL64I       0xb3    /* @dtprel(sym + add), imm64 */ 
     2547+#define R_IA64_DTPREL32MSB     0xb4    /* @dtprel(sym + add), data4 MSB */ 
     2548+#define R_IA64_DTPREL32LSB     0xb5    /* @dtprel(sym + add), data4 LSB */ 
     2549+#define R_IA64_DTPREL64MSB     0xb6    /* @dtprel(sym + add), data8 MSB */ 
     2550+#define R_IA64_DTPREL64LSB     0xb7    /* @dtprel(sym + add), data8 LSB */ 
     2551+#define R_IA64_LTOFF_DTPREL22  0xba    /* @ltoff(@dtprel(s+a)), imm22 */ 
     2552+ 
     2553+/* SH specific declarations */ 
     2554+ 
     2555+/* Processor specific flags for the ELF header e_flags field.  */ 
     2556+#define EF_SH_MACH_MASK                0x1f 
     2557+#define EF_SH_UNKNOWN          0x0 
     2558+#define EF_SH1                 0x1 
     2559+#define EF_SH2                 0x2 
     2560+#define EF_SH3                 0x3 
     2561+#define EF_SH_DSP              0x4 
     2562+#define EF_SH3_DSP             0x5 
     2563+#define EF_SH4AL_DSP           0x6 
     2564+#define EF_SH3E                        0x8 
     2565+#define EF_SH4                 0x9 
     2566+#define EF_SH2E                        0xb 
     2567+#define EF_SH4A                        0xc 
     2568+#define EF_SH2A                        0xd 
     2569+#define EF_SH4_NOFPU           0x10 
     2570+#define EF_SH4A_NOFPU          0x11 
     2571+#define EF_SH4_NOMMU_NOFPU     0x12 
     2572+#define EF_SH2A_NOFPU          0x13 
     2573+#define EF_SH3_NOMMU           0x14 
     2574+#define EF_SH2A_SH4_NOFPU      0x15 
     2575+#define EF_SH2A_SH3_NOFPU      0x16 
     2576+#define EF_SH2A_SH4            0x17 
     2577+#define EF_SH2A_SH3E           0x18 
     2578+ 
     2579+/* SH relocs.  */ 
     2580+#define        R_SH_NONE               0 
     2581+#define        R_SH_DIR32              1 
     2582+#define        R_SH_REL32              2 
     2583+#define        R_SH_DIR8WPN            3 
     2584+#define        R_SH_IND12W             4 
     2585+#define        R_SH_DIR8WPL            5 
     2586+#define        R_SH_DIR8WPZ            6 
     2587+#define        R_SH_DIR8BP             7 
     2588+#define        R_SH_DIR8W              8 
     2589+#define        R_SH_DIR8L              9 
     2590+#define        R_SH_SWITCH16           25 
     2591+#define        R_SH_SWITCH32           26 
     2592+#define        R_SH_USES               27 
     2593+#define        R_SH_COUNT              28 
     2594+#define        R_SH_ALIGN              29 
     2595+#define        R_SH_CODE               30 
     2596+#define        R_SH_DATA               31 
     2597+#define        R_SH_LABEL              32 
     2598+#define        R_SH_SWITCH8            33 
     2599+#define        R_SH_GNU_VTINHERIT      34 
     2600+#define        R_SH_GNU_VTENTRY        35 
     2601+#define        R_SH_TLS_GD_32          144 
     2602+#define        R_SH_TLS_LD_32          145 
     2603+#define        R_SH_TLS_LDO_32         146 
     2604+#define        R_SH_TLS_IE_32          147 
     2605+#define        R_SH_TLS_LE_32          148 
     2606+#define        R_SH_TLS_DTPMOD32       149 
     2607+#define        R_SH_TLS_DTPOFF32       150 
     2608+#define        R_SH_TLS_TPOFF32        151 
     2609+#define        R_SH_GOT32              160 
     2610+#define        R_SH_PLT32              161 
     2611+#define        R_SH_COPY               162 
     2612+#define        R_SH_GLOB_DAT           163 
     2613+#define        R_SH_JMP_SLOT           164 
     2614+#define        R_SH_RELATIVE           165 
     2615+#define        R_SH_GOTOFF             166 
     2616+#define        R_SH_GOTPC              167 
     2617+/* Keep this the last entry.  */ 
     2618+#define        R_SH_NUM                256 
     2619+ 
     2620+/* S/390 specific definitions.  */ 
     2621+ 
     2622+/* Valid values for the e_flags field.  */ 
     2623+ 
     2624+#define EF_S390_HIGH_GPRS    0x00000001  /* High GPRs kernel facility needed.  */ 
     2625+ 
     2626+/* Additional s390 relocs */ 
     2627+ 
     2628+#define R_390_NONE             0       /* No reloc.  */ 
     2629+#define R_390_8                        1       /* Direct 8 bit.  */ 
     2630+#define R_390_12               2       /* Direct 12 bit.  */ 
     2631+#define R_390_16               3       /* Direct 16 bit.  */ 
     2632+#define R_390_32               4       /* Direct 32 bit.  */ 
     2633+#define R_390_PC32             5       /* PC relative 32 bit.  */ 
     2634+#define R_390_GOT12            6       /* 12 bit GOT offset.  */ 
     2635+#define R_390_GOT32            7       /* 32 bit GOT offset.  */ 
     2636+#define R_390_PLT32            8       /* 32 bit PC relative PLT address.  */ 
     2637+#define R_390_COPY             9       /* Copy symbol at runtime.  */ 
     2638+#define R_390_GLOB_DAT         10      /* Create GOT entry.  */ 
     2639+#define R_390_JMP_SLOT         11      /* Create PLT entry.  */ 
     2640+#define R_390_RELATIVE         12      /* Adjust by program base.  */ 
     2641+#define R_390_GOTOFF32         13      /* 32 bit offset to GOT.         */ 
     2642+#define R_390_GOTPC            14      /* 32 bit PC relative offset to GOT.  */ 
     2643+#define R_390_GOT16            15      /* 16 bit GOT offset.  */ 
     2644+#define R_390_PC16             16      /* PC relative 16 bit.  */ 
     2645+#define R_390_PC16DBL          17      /* PC relative 16 bit shifted by 1.  */ 
     2646+#define R_390_PLT16DBL         18      /* 16 bit PC rel. PLT shifted by 1.  */ 
     2647+#define R_390_PC32DBL          19      /* PC relative 32 bit shifted by 1.  */ 
     2648+#define R_390_PLT32DBL         20      /* 32 bit PC rel. PLT shifted by 1.  */ 
     2649+#define R_390_GOTPCDBL         21      /* 32 bit PC rel. GOT shifted by 1.  */ 
     2650+#define R_390_64               22      /* Direct 64 bit.  */ 
     2651+#define R_390_PC64             23      /* PC relative 64 bit.  */ 
     2652+#define R_390_GOT64            24      /* 64 bit GOT offset.  */ 
     2653+#define R_390_PLT64            25      /* 64 bit PC relative PLT address.  */ 
     2654+#define R_390_GOTENT           26      /* 32 bit PC rel. to GOT entry >> 1. */ 
     2655+#define R_390_GOTOFF16         27      /* 16 bit offset to GOT. */ 
     2656+#define R_390_GOTOFF64         28      /* 64 bit offset to GOT. */ 
     2657+#define R_390_GOTPLT12         29      /* 12 bit offset to jump slot.  */ 
     2658+#define R_390_GOTPLT16         30      /* 16 bit offset to jump slot.  */ 
     2659+#define R_390_GOTPLT32         31      /* 32 bit offset to jump slot.  */ 
     2660+#define R_390_GOTPLT64         32      /* 64 bit offset to jump slot.  */ 
     2661+#define R_390_GOTPLTENT                33      /* 32 bit rel. offset to jump slot.  */ 
     2662+#define R_390_PLTOFF16         34      /* 16 bit offset from GOT to PLT. */ 
     2663+#define R_390_PLTOFF32         35      /* 32 bit offset from GOT to PLT. */ 
     2664+#define R_390_PLTOFF64         36      /* 16 bit offset from GOT to PLT. */ 
     2665+#define R_390_TLS_LOAD         37      /* Tag for load insn in TLS code.  */ 
     2666+#define R_390_TLS_GDCALL       38      /* Tag for function call in general 
     2667+                                          dynamic TLS code. */ 
     2668+#define R_390_TLS_LDCALL       39      /* Tag for function call in local 
     2669+                                          dynamic TLS code. */ 
     2670+#define R_390_TLS_GD32         40      /* Direct 32 bit for general dynamic 
     2671+                                          thread local data.  */ 
     2672+#define R_390_TLS_GD64         41      /* Direct 64 bit for general dynamic 
     2673+                                         thread local data.  */ 
     2674+#define R_390_TLS_GOTIE12      42      /* 12 bit GOT offset for static TLS 
     2675+                                          block offset.  */ 
     2676+#define R_390_TLS_GOTIE32      43      /* 32 bit GOT offset for static TLS 
     2677+                                          block offset.  */ 
     2678+#define R_390_TLS_GOTIE64      44      /* 64 bit GOT offset for static TLS 
     2679+                                          block offset. */ 
     2680+#define R_390_TLS_LDM32                45      /* Direct 32 bit for local dynamic 
     2681+                                          thread local data in LE code.  */ 
     2682+#define R_390_TLS_LDM64                46      /* Direct 64 bit for local dynamic 
     2683+                                          thread local data in LE code.  */ 
     2684+#define R_390_TLS_IE32         47      /* 32 bit address of GOT entry for 
     2685+                                          negated static TLS block offset.  */ 
     2686+#define R_390_TLS_IE64         48      /* 64 bit address of GOT entry for 
     2687+                                          negated static TLS block offset.  */ 
     2688+#define R_390_TLS_IEENT                49      /* 32 bit rel. offset to GOT entry for 
     2689+                                          negated static TLS block offset.  */ 
     2690+#define R_390_TLS_LE32         50      /* 32 bit negated offset relative to 
     2691+                                          static TLS block.  */ 
     2692+#define R_390_TLS_LE64         51      /* 64 bit negated offset relative to 
     2693+                                          static TLS block.  */ 
     2694+#define R_390_TLS_LDO32                52      /* 32 bit offset relative to TLS 
     2695+                                          block.  */ 
     2696+#define R_390_TLS_LDO64                53      /* 64 bit offset relative to TLS 
     2697+                                          block.  */ 
     2698+#define R_390_TLS_DTPMOD       54      /* ID of module containing symbol.  */ 
     2699+#define R_390_TLS_DTPOFF       55      /* Offset in TLS block.  */ 
     2700+#define R_390_TLS_TPOFF                56      /* Negated offset in static TLS 
     2701+                                          block.  */ 
     2702+#define R_390_20               57      /* Direct 20 bit.  */ 
     2703+#define R_390_GOT20            58      /* 20 bit GOT offset.  */ 
     2704+#define R_390_GOTPLT20         59      /* 20 bit offset to jump slot.  */ 
     2705+#define R_390_TLS_GOTIE20      60      /* 20 bit GOT offset for static TLS 
     2706+                                          block offset.  */ 
     2707+#define R_390_IRELATIVE         61      /* STT_GNU_IFUNC relocation.  */ 
     2708+/* Keep this the last entry.  */ 
     2709+#define R_390_NUM              62 
     2710+ 
     2711+ 
     2712+/* CRIS relocations.  */ 
     2713+#define R_CRIS_NONE            0 
     2714+#define R_CRIS_8               1 
     2715+#define R_CRIS_16              2 
     2716+#define R_CRIS_32              3 
     2717+#define R_CRIS_8_PCREL         4 
     2718+#define R_CRIS_16_PCREL                5 
     2719+#define R_CRIS_32_PCREL                6 
     2720+#define R_CRIS_GNU_VTINHERIT   7 
     2721+#define R_CRIS_GNU_VTENTRY     8 
     2722+#define R_CRIS_COPY            9 
     2723+#define R_CRIS_GLOB_DAT                10 
     2724+#define R_CRIS_JUMP_SLOT       11 
     2725+#define R_CRIS_RELATIVE                12 
     2726+#define R_CRIS_16_GOT          13 
     2727+#define R_CRIS_32_GOT          14 
     2728+#define R_CRIS_16_GOTPLT       15 
     2729+#define R_CRIS_32_GOTPLT       16 
     2730+#define R_CRIS_32_GOTREL       17 
     2731+#define R_CRIS_32_PLT_GOTREL   18 
     2732+#define R_CRIS_32_PLT_PCREL    19 
     2733+ 
     2734+#define R_CRIS_NUM             20 
     2735+ 
     2736+ 
     2737+/* AMD x86-64 relocations.  */ 
     2738+#define R_X86_64_NONE          0       /* No reloc */ 
     2739+#define R_X86_64_64            1       /* Direct 64 bit  */ 
     2740+#define R_X86_64_PC32          2       /* PC relative 32 bit signed */ 
     2741+#define R_X86_64_GOT32         3       /* 32 bit GOT entry */ 
     2742+#define R_X86_64_PLT32         4       /* 32 bit PLT address */ 
     2743+#define R_X86_64_COPY          5       /* Copy symbol at runtime */ 
     2744+#define R_X86_64_GLOB_DAT      6       /* Create GOT entry */ 
     2745+#define R_X86_64_JUMP_SLOT     7       /* Create PLT entry */ 
     2746+#define R_X86_64_RELATIVE      8       /* Adjust by program base */ 
     2747+#define R_X86_64_GOTPCREL      9       /* 32 bit signed PC relative 
     2748+                                          offset to GOT */ 
     2749+#define R_X86_64_32            10      /* Direct 32 bit zero extended */ 
     2750+#define R_X86_64_32S           11      /* Direct 32 bit sign extended */ 
     2751+#define R_X86_64_16            12      /* Direct 16 bit zero extended */ 
     2752+#define R_X86_64_PC16          13      /* 16 bit sign extended pc relative */ 
     2753+#define R_X86_64_8             14      /* Direct 8 bit sign extended  */ 
     2754+#define R_X86_64_PC8           15      /* 8 bit sign extended pc relative */ 
     2755+#define R_X86_64_DTPMOD64      16      /* ID of module containing symbol */ 
     2756+#define R_X86_64_DTPOFF64      17      /* Offset in module's TLS block */ 
     2757+#define R_X86_64_TPOFF64       18      /* Offset in initial TLS block */ 
     2758+#define R_X86_64_TLSGD         19      /* 32 bit signed PC relative offset 
     2759+                                          to two GOT entries for GD symbol */ 
     2760+#define R_X86_64_TLSLD         20      /* 32 bit signed PC relative offset 
     2761+                                          to two GOT entries for LD symbol */ 
     2762+#define R_X86_64_DTPOFF32      21      /* Offset in TLS block */ 
     2763+#define R_X86_64_GOTTPOFF      22      /* 32 bit signed PC relative offset 
     2764+                                          to GOT entry for IE symbol */ 
     2765+#define R_X86_64_TPOFF32       23      /* Offset in initial TLS block */ 
     2766+#define R_X86_64_PC64          24      /* PC relative 64 bit */ 
     2767+#define R_X86_64_GOTOFF64      25      /* 64 bit offset to GOT */ 
     2768+#define R_X86_64_GOTPC32       26      /* 32 bit signed pc relative 
     2769+                                          offset to GOT */ 
     2770+#define R_X86_64_GOT64         27      /* 64-bit GOT entry offset */ 
     2771+#define R_X86_64_GOTPCREL64    28      /* 64-bit PC relative offset 
     2772+                                          to GOT entry */ 
     2773+#define R_X86_64_GOTPC64       29      /* 64-bit PC relative offset to GOT */ 
     2774+#define R_X86_64_GOTPLT64      30      /* like GOT64, says PLT entry needed */ 
     2775+#define R_X86_64_PLTOFF64      31      /* 64-bit GOT relative offset 
     2776+                                          to PLT entry */ 
     2777+#define R_X86_64_SIZE32                32      /* Size of symbol plus 32-bit addend */ 
     2778+#define R_X86_64_SIZE64                33      /* Size of symbol plus 64-bit addend */ 
     2779+#define R_X86_64_GOTPC32_TLSDESC 34    /* GOT offset for TLS descriptor.  */ 
     2780+#define R_X86_64_TLSDESC_CALL   35     /* Marker for call through TLS 
     2781+                                          descriptor.  */ 
     2782+#define R_X86_64_TLSDESC        36     /* TLS descriptor.  */ 
     2783+#define R_X86_64_IRELATIVE     37      /* Adjust indirectly by program base */ 
     2784+#define R_X86_64_RELATIVE64    38      /* 64-bit adjust by program base */ 
     2785+ 
     2786+#define R_X86_64_NUM           39 
     2787+ 
     2788+ 
     2789+/* AM33 relocations.  */ 
     2790+#define R_MN10300_NONE         0       /* No reloc.  */ 
     2791+#define R_MN10300_32           1       /* Direct 32 bit.  */ 
     2792+#define R_MN10300_16           2       /* Direct 16 bit.  */ 
     2793+#define R_MN10300_8            3       /* Direct 8 bit.  */ 
     2794+#define R_MN10300_PCREL32      4       /* PC-relative 32-bit.  */ 
     2795+#define R_MN10300_PCREL16      5       /* PC-relative 16-bit signed.  */ 
     2796+#define R_MN10300_PCREL8       6       /* PC-relative 8-bit signed.  */ 
     2797+#define R_MN10300_GNU_VTINHERIT        7       /* Ancient C++ vtable garbage... */ 
     2798+#define R_MN10300_GNU_VTENTRY  8       /* ... collection annotation.  */ 
     2799+#define R_MN10300_24           9       /* Direct 24 bit.  */ 
     2800+#define R_MN10300_GOTPC32      10      /* 32-bit PCrel offset to GOT.  */ 
     2801+#define R_MN10300_GOTPC16      11      /* 16-bit PCrel offset to GOT.  */ 
     2802+#define R_MN10300_GOTOFF32     12      /* 32-bit offset from GOT.  */ 
     2803+#define R_MN10300_GOTOFF24     13      /* 24-bit offset from GOT.  */ 
     2804+#define R_MN10300_GOTOFF16     14      /* 16-bit offset from GOT.  */ 
     2805+#define R_MN10300_PLT32                15      /* 32-bit PCrel to PLT entry.  */ 
     2806+#define R_MN10300_PLT16                16      /* 16-bit PCrel to PLT entry.  */ 
     2807+#define R_MN10300_GOT32                17      /* 32-bit offset to GOT entry.  */ 
     2808+#define R_MN10300_GOT24                18      /* 24-bit offset to GOT entry.  */ 
     2809+#define R_MN10300_GOT16                19      /* 16-bit offset to GOT entry.  */ 
     2810+#define R_MN10300_COPY         20      /* Copy symbol at runtime.  */ 
     2811+#define R_MN10300_GLOB_DAT     21      /* Create GOT entry.  */ 
     2812+#define R_MN10300_JMP_SLOT     22      /* Create PLT entry.  */ 
     2813+#define R_MN10300_RELATIVE     23      /* Adjust by program base.  */ 
     2814+ 
     2815+#define R_MN10300_NUM          24 
     2816+ 
     2817+ 
     2818+/* M32R relocs.  */ 
     2819+#define R_M32R_NONE            0       /* No reloc. */ 
     2820+#define R_M32R_16              1       /* Direct 16 bit. */ 
     2821+#define R_M32R_32              2       /* Direct 32 bit. */ 
     2822+#define R_M32R_24              3       /* Direct 24 bit. */ 
     2823+#define R_M32R_10_PCREL                4       /* PC relative 10 bit shifted. */ 
     2824+#define R_M32R_18_PCREL                5       /* PC relative 18 bit shifted. */ 
     2825+#define R_M32R_26_PCREL                6       /* PC relative 26 bit shifted. */ 
     2826+#define R_M32R_HI16_ULO                7       /* High 16 bit with unsigned low. */ 
     2827+#define R_M32R_HI16_SLO                8       /* High 16 bit with signed low. */ 
     2828+#define R_M32R_LO16            9       /* Low 16 bit. */ 
     2829+#define R_M32R_SDA16           10      /* 16 bit offset in SDA. */ 
     2830+#define R_M32R_GNU_VTINHERIT   11 
     2831+#define R_M32R_GNU_VTENTRY     12 
     2832+/* M32R relocs use SHT_RELA.  */ 
     2833+#define R_M32R_16_RELA         33      /* Direct 16 bit. */ 
     2834+#define R_M32R_32_RELA         34      /* Direct 32 bit. */ 
     2835+#define R_M32R_24_RELA         35      /* Direct 24 bit. */ 
     2836+#define R_M32R_10_PCREL_RELA   36      /* PC relative 10 bit shifted. */ 
     2837+#define R_M32R_18_PCREL_RELA   37      /* PC relative 18 bit shifted. */ 
     2838+#define R_M32R_26_PCREL_RELA   38      /* PC relative 26 bit shifted. */ 
     2839+#define R_M32R_HI16_ULO_RELA   39      /* High 16 bit with unsigned low */ 
     2840+#define R_M32R_HI16_SLO_RELA   40      /* High 16 bit with signed low */ 
     2841+#define R_M32R_LO16_RELA       41      /* Low 16 bit */ 
     2842+#define R_M32R_SDA16_RELA      42      /* 16 bit offset in SDA */ 
     2843+#define R_M32R_RELA_GNU_VTINHERIT      43 
     2844+#define R_M32R_RELA_GNU_VTENTRY        44 
     2845+#define R_M32R_REL32           45      /* PC relative 32 bit.  */ 
     2846+ 
     2847+#define R_M32R_GOT24           48      /* 24 bit GOT entry */ 
     2848+#define R_M32R_26_PLTREL       49      /* 26 bit PC relative to PLT shifted */ 
     2849+#define R_M32R_COPY            50      /* Copy symbol at runtime */ 
     2850+#define R_M32R_GLOB_DAT                51      /* Create GOT entry */ 
     2851+#define R_M32R_JMP_SLOT                52      /* Create PLT entry */ 
     2852+#define R_M32R_RELATIVE                53      /* Adjust by program base */ 
     2853+#define R_M32R_GOTOFF          54      /* 24 bit offset to GOT */ 
     2854+#define R_M32R_GOTPC24         55      /* 24 bit PC relative offset to GOT */ 
     2855+#define R_M32R_GOT16_HI_ULO    56      /* High 16 bit GOT entry with unsigned 
     2856+                                          low */ 
     2857+#define R_M32R_GOT16_HI_SLO    57      /* High 16 bit GOT entry with signed 
     2858+                                          low */ 
     2859+#define R_M32R_GOT16_LO                58      /* Low 16 bit GOT entry */ 
     2860+#define R_M32R_GOTPC_HI_ULO    59      /* High 16 bit PC relative offset to 
     2861+                                          GOT with unsigned low */ 
     2862+#define R_M32R_GOTPC_HI_SLO    60      /* High 16 bit PC relative offset to 
     2863+                                          GOT with signed low */ 
     2864+#define R_M32R_GOTPC_LO                61      /* Low 16 bit PC relative offset to 
     2865+                                          GOT */ 
     2866+#define R_M32R_GOTOFF_HI_ULO   62      /* High 16 bit offset to GOT 
     2867+                                          with unsigned low */ 
     2868+#define R_M32R_GOTOFF_HI_SLO   63      /* High 16 bit offset to GOT 
     2869+                                          with signed low */ 
     2870+#define R_M32R_GOTOFF_LO       64      /* Low 16 bit offset to GOT */ 
     2871+#define R_M32R_NUM             256     /* Keep this the last entry. */ 
     2872+ 
     2873+ 
     2874+/* TILEPro relocations.  */ 
     2875+#define R_TILEPRO_NONE         0       /* No reloc */ 
     2876+#define R_TILEPRO_32           1       /* Direct 32 bit */ 
     2877+#define R_TILEPRO_16           2       /* Direct 16 bit */ 
     2878+#define R_TILEPRO_8            3       /* Direct 8 bit */ 
     2879+#define R_TILEPRO_32_PCREL     4       /* PC relative 32 bit */ 
     2880+#define R_TILEPRO_16_PCREL     5       /* PC relative 16 bit */ 
     2881+#define R_TILEPRO_8_PCREL      6       /* PC relative 8 bit */ 
     2882+#define R_TILEPRO_LO16         7       /* Low 16 bit */ 
     2883+#define R_TILEPRO_HI16         8       /* High 16 bit */ 
     2884+#define R_TILEPRO_HA16         9       /* High 16 bit, adjusted */ 
     2885+#define R_TILEPRO_COPY         10      /* Copy relocation */ 
     2886+#define R_TILEPRO_GLOB_DAT     11      /* Create GOT entry */ 
     2887+#define R_TILEPRO_JMP_SLOT     12      /* Create PLT entry */ 
     2888+#define R_TILEPRO_RELATIVE     13      /* Adjust by program base */ 
     2889+#define R_TILEPRO_BROFF_X1     14      /* X1 pipe branch offset */ 
     2890+#define R_TILEPRO_JOFFLONG_X1  15      /* X1 pipe jump offset */ 
     2891+#define R_TILEPRO_JOFFLONG_X1_PLT 16   /* X1 pipe jump offset to PLT */ 
     2892+#define R_TILEPRO_IMM8_X0      17      /* X0 pipe 8-bit */ 
     2893+#define R_TILEPRO_IMM8_Y0      18      /* Y0 pipe 8-bit */ 
     2894+#define R_TILEPRO_IMM8_X1      19      /* X1 pipe 8-bit */ 
     2895+#define R_TILEPRO_IMM8_Y1      20      /* Y1 pipe 8-bit */ 
     2896+#define R_TILEPRO_MT_IMM15_X1  21      /* X1 pipe mtspr */ 
     2897+#define R_TILEPRO_MF_IMM15_X1  22      /* X1 pipe mfspr */ 
     2898+#define R_TILEPRO_IMM16_X0     23      /* X0 pipe 16-bit */ 
     2899+#define R_TILEPRO_IMM16_X1     24      /* X1 pipe 16-bit */ 
     2900+#define R_TILEPRO_IMM16_X0_LO  25      /* X0 pipe low 16-bit */ 
     2901+#define R_TILEPRO_IMM16_X1_LO  26      /* X1 pipe low 16-bit */ 
     2902+#define R_TILEPRO_IMM16_X0_HI  27      /* X0 pipe high 16-bit */ 
     2903+#define R_TILEPRO_IMM16_X1_HI  28      /* X1 pipe high 16-bit */ 
     2904+#define R_TILEPRO_IMM16_X0_HA  29      /* X0 pipe high 16-bit, adjusted */ 
     2905+#define R_TILEPRO_IMM16_X1_HA  30      /* X1 pipe high 16-bit, adjusted */ 
     2906+#define R_TILEPRO_IMM16_X0_PCREL 31    /* X0 pipe PC relative 16 bit */ 
     2907+#define R_TILEPRO_IMM16_X1_PCREL 32    /* X1 pipe PC relative 16 bit */ 
     2908+#define R_TILEPRO_IMM16_X0_LO_PCREL 33 /* X0 pipe PC relative low 16 bit */ 
     2909+#define R_TILEPRO_IMM16_X1_LO_PCREL 34 /* X1 pipe PC relative low 16 bit */ 
     2910+#define R_TILEPRO_IMM16_X0_HI_PCREL 35 /* X0 pipe PC relative high 16 bit */ 
     2911+#define R_TILEPRO_IMM16_X1_HI_PCREL 36 /* X1 pipe PC relative high 16 bit */ 
     2912+#define R_TILEPRO_IMM16_X0_HA_PCREL 37 /* X0 pipe PC relative ha() 16 bit */ 
     2913+#define R_TILEPRO_IMM16_X1_HA_PCREL 38 /* X1 pipe PC relative ha() 16 bit */ 
     2914+#define R_TILEPRO_IMM16_X0_GOT 39      /* X0 pipe 16-bit GOT offset */ 
     2915+#define R_TILEPRO_IMM16_X1_GOT 40      /* X1 pipe 16-bit GOT offset */ 
     2916+#define R_TILEPRO_IMM16_X0_GOT_LO 41   /* X0 pipe low 16-bit GOT offset */ 
     2917+#define R_TILEPRO_IMM16_X1_GOT_LO 42   /* X1 pipe low 16-bit GOT offset */ 
     2918+#define R_TILEPRO_IMM16_X0_GOT_HI 43   /* X0 pipe high 16-bit GOT offset */ 
     2919+#define R_TILEPRO_IMM16_X1_GOT_HI 44   /* X1 pipe high 16-bit GOT offset */ 
     2920+#define R_TILEPRO_IMM16_X0_GOT_HA 45   /* X0 pipe ha() 16-bit GOT offset */ 
     2921+#define R_TILEPRO_IMM16_X1_GOT_HA 46   /* X1 pipe ha() 16-bit GOT offset */ 
     2922+#define R_TILEPRO_MMSTART_X0   47      /* X0 pipe mm "start" */ 
     2923+#define R_TILEPRO_MMEND_X0     48      /* X0 pipe mm "end" */ 
     2924+#define R_TILEPRO_MMSTART_X1   49      /* X1 pipe mm "start" */ 
     2925+#define R_TILEPRO_MMEND_X1     50      /* X1 pipe mm "end" */ 
     2926+#define R_TILEPRO_SHAMT_X0     51      /* X0 pipe shift amount */ 
     2927+#define R_TILEPRO_SHAMT_X1     52      /* X1 pipe shift amount */ 
     2928+#define R_TILEPRO_SHAMT_Y0     53      /* Y0 pipe shift amount */ 
     2929+#define R_TILEPRO_SHAMT_Y1     54      /* Y1 pipe shift amount */ 
     2930+#define R_TILEPRO_DEST_IMM8_X1 55      /* X1 pipe destination 8-bit */ 
     2931+/* Relocs 56-59 are currently not defined.  */ 
     2932+#define R_TILEPRO_TLS_GD_CALL  60      /* "jal" for TLS GD */ 
     2933+#define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61        /* X0 pipe "addi" for TLS GD */ 
     2934+#define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62        /* X1 pipe "addi" for TLS GD */ 
     2935+#define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63        /* Y0 pipe "addi" for TLS GD */ 
     2936+#define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64        /* Y1 pipe "addi" for TLS GD */ 
     2937+#define R_TILEPRO_TLS_IE_LOAD  65      /* "lw_tls" for TLS IE */ 
     2938+#define R_TILEPRO_IMM16_X0_TLS_GD 66   /* X0 pipe 16-bit TLS GD offset */ 
     2939+#define R_TILEPRO_IMM16_X1_TLS_GD 67   /* X1 pipe 16-bit TLS GD offset */ 
     2940+#define R_TILEPRO_IMM16_X0_TLS_GD_LO 68        /* X0 pipe low 16-bit TLS GD offset */ 
     2941+#define R_TILEPRO_IMM16_X1_TLS_GD_LO 69        /* X1 pipe low 16-bit TLS GD offset */ 
     2942+#define R_TILEPRO_IMM16_X0_TLS_GD_HI 70        /* X0 pipe high 16-bit TLS GD offset */ 
     2943+#define R_TILEPRO_IMM16_X1_TLS_GD_HI 71        /* X1 pipe high 16-bit TLS GD offset */ 
     2944+#define R_TILEPRO_IMM16_X0_TLS_GD_HA 72        /* X0 pipe ha() 16-bit TLS GD offset */ 
     2945+#define R_TILEPRO_IMM16_X1_TLS_GD_HA 73        /* X1 pipe ha() 16-bit TLS GD offset */ 
     2946+#define R_TILEPRO_IMM16_X0_TLS_IE 74   /* X0 pipe 16-bit TLS IE offset */ 
     2947+#define R_TILEPRO_IMM16_X1_TLS_IE 75   /* X1 pipe 16-bit TLS IE offset */ 
     2948+#define R_TILEPRO_IMM16_X0_TLS_IE_LO 76        /* X0 pipe low 16-bit TLS IE offset */ 
     2949+#define R_TILEPRO_IMM16_X1_TLS_IE_LO 77        /* X1 pipe low 16-bit TLS IE offset */ 
     2950+#define R_TILEPRO_IMM16_X0_TLS_IE_HI 78        /* X0 pipe high 16-bit TLS IE offset */ 
     2951+#define R_TILEPRO_IMM16_X1_TLS_IE_HI 79        /* X1 pipe high 16-bit TLS IE offset */ 
     2952+#define R_TILEPRO_IMM16_X0_TLS_IE_HA 80        /* X0 pipe ha() 16-bit TLS IE offset */ 
     2953+#define R_TILEPRO_IMM16_X1_TLS_IE_HA 81        /* X1 pipe ha() 16-bit TLS IE offset */ 
     2954+#define R_TILEPRO_TLS_DTPMOD32 82      /* ID of module containing symbol */ 
     2955+#define R_TILEPRO_TLS_DTPOFF32 83      /* Offset in TLS block */ 
     2956+#define R_TILEPRO_TLS_TPOFF32  84      /* Offset in static TLS block */ 
     2957+#define R_TILEPRO_IMM16_X0_TLS_LE 85   /* X0 pipe 16-bit TLS LE offset */ 
     2958+#define R_TILEPRO_IMM16_X1_TLS_LE 86   /* X1 pipe 16-bit TLS LE offset */ 
     2959+#define R_TILEPRO_IMM16_X0_TLS_LE_LO 87        /* X0 pipe low 16-bit TLS LE offset */ 
     2960+#define R_TILEPRO_IMM16_X1_TLS_LE_LO 88        /* X1 pipe low 16-bit TLS LE offset */ 
     2961+#define R_TILEPRO_IMM16_X0_TLS_LE_HI 89        /* X0 pipe high 16-bit TLS LE offset */ 
     2962+#define R_TILEPRO_IMM16_X1_TLS_LE_HI 90        /* X1 pipe high 16-bit TLS LE offset */ 
     2963+#define R_TILEPRO_IMM16_X0_TLS_LE_HA 91        /* X0 pipe ha() 16-bit TLS LE offset */ 
     2964+#define R_TILEPRO_IMM16_X1_TLS_LE_HA 92        /* X1 pipe ha() 16-bit TLS LE offset */ 
     2965+ 
     2966+#define R_TILEPRO_GNU_VTINHERIT        128     /* GNU C++ vtable hierarchy */ 
     2967+#define R_TILEPRO_GNU_VTENTRY  129     /* GNU C++ vtable member usage */ 
     2968+ 
     2969+#define R_TILEPRO_NUM          130 
     2970+ 
     2971+ 
     2972+/* TILE-Gx relocations.  */ 
     2973+#define R_TILEGX_NONE          0       /* No reloc */ 
     2974+#define R_TILEGX_64            1       /* Direct 64 bit */ 
     2975+#define R_TILEGX_32            2       /* Direct 32 bit */ 
     2976+#define R_TILEGX_16            3       /* Direct 16 bit */ 
     2977+#define R_TILEGX_8             4       /* Direct 8 bit */ 
     2978+#define R_TILEGX_64_PCREL      5       /* PC relative 64 bit */ 
     2979+#define R_TILEGX_32_PCREL      6       /* PC relative 32 bit */ 
     2980+#define R_TILEGX_16_PCREL      7       /* PC relative 16 bit */ 
     2981+#define R_TILEGX_8_PCREL       8       /* PC relative 8 bit */ 
     2982+#define R_TILEGX_HW0           9       /* hword 0 16-bit */ 
     2983+#define R_TILEGX_HW1           10      /* hword 1 16-bit */ 
     2984+#define R_TILEGX_HW2           11      /* hword 2 16-bit */ 
     2985+#define R_TILEGX_HW3           12      /* hword 3 16-bit */ 
     2986+#define R_TILEGX_HW0_LAST      13      /* last hword 0 16-bit */ 
     2987+#define R_TILEGX_HW1_LAST      14      /* last hword 1 16-bit */ 
     2988+#define R_TILEGX_HW2_LAST      15      /* last hword 2 16-bit */ 
     2989+#define R_TILEGX_COPY          16      /* Copy relocation */ 
     2990+#define R_TILEGX_GLOB_DAT      17      /* Create GOT entry */ 
     2991+#define R_TILEGX_JMP_SLOT      18      /* Create PLT entry */ 
     2992+#define R_TILEGX_RELATIVE      19      /* Adjust by program base */ 
     2993+#define R_TILEGX_BROFF_X1      20      /* X1 pipe branch offset */ 
     2994+#define R_TILEGX_JUMPOFF_X1    21      /* X1 pipe jump offset */ 
     2995+#define R_TILEGX_JUMPOFF_X1_PLT        22      /* X1 pipe jump offset to PLT */ 
     2996+#define R_TILEGX_IMM8_X0       23      /* X0 pipe 8-bit */ 
     2997+#define R_TILEGX_IMM8_Y0       24      /* Y0 pipe 8-bit */ 
     2998+#define R_TILEGX_IMM8_X1       25      /* X1 pipe 8-bit */ 
     2999+#define R_TILEGX_IMM8_Y1       26      /* Y1 pipe 8-bit */ 
     3000+#define R_TILEGX_DEST_IMM8_X1  27      /* X1 pipe destination 8-bit */ 
     3001+#define R_TILEGX_MT_IMM14_X1   28      /* X1 pipe mtspr */ 
     3002+#define R_TILEGX_MF_IMM14_X1   29      /* X1 pipe mfspr */ 
     3003+#define R_TILEGX_MMSTART_X0    30      /* X0 pipe mm "start" */ 
     3004+#define R_TILEGX_MMEND_X0      31      /* X0 pipe mm "end" */ 
     3005+#define R_TILEGX_SHAMT_X0      32      /* X0 pipe shift amount */ 
     3006+#define R_TILEGX_SHAMT_X1      33      /* X1 pipe shift amount */ 
     3007+#define R_TILEGX_SHAMT_Y0      34      /* Y0 pipe shift amount */ 
     3008+#define R_TILEGX_SHAMT_Y1      35      /* Y1 pipe shift amount */ 
     3009+#define R_TILEGX_IMM16_X0_HW0  36      /* X0 pipe hword 0 */ 
     3010+#define R_TILEGX_IMM16_X1_HW0  37      /* X1 pipe hword 0 */ 
     3011+#define R_TILEGX_IMM16_X0_HW1  38      /* X0 pipe hword 1 */ 
     3012+#define R_TILEGX_IMM16_X1_HW1  39      /* X1 pipe hword 1 */ 
     3013+#define R_TILEGX_IMM16_X0_HW2  40      /* X0 pipe hword 2 */ 
     3014+#define R_TILEGX_IMM16_X1_HW2  41      /* X1 pipe hword 2 */ 
     3015+#define R_TILEGX_IMM16_X0_HW3  42      /* X0 pipe hword 3 */ 
     3016+#define R_TILEGX_IMM16_X1_HW3  43      /* X1 pipe hword 3 */ 
     3017+#define R_TILEGX_IMM16_X0_HW0_LAST 44  /* X0 pipe last hword 0 */ 
     3018+#define R_TILEGX_IMM16_X1_HW0_LAST 45  /* X1 pipe last hword 0 */ 
     3019+#define R_TILEGX_IMM16_X0_HW1_LAST 46  /* X0 pipe last hword 1 */ 
     3020+#define R_TILEGX_IMM16_X1_HW1_LAST 47  /* X1 pipe last hword 1 */ 
     3021+#define R_TILEGX_IMM16_X0_HW2_LAST 48  /* X0 pipe last hword 2 */ 
     3022+#define R_TILEGX_IMM16_X1_HW2_LAST 49  /* X1 pipe last hword 2 */ 
     3023+#define R_TILEGX_IMM16_X0_HW0_PCREL 50 /* X0 pipe PC relative hword 0 */ 
     3024+#define R_TILEGX_IMM16_X1_HW0_PCREL 51 /* X1 pipe PC relative hword 0 */ 
     3025+#define R_TILEGX_IMM16_X0_HW1_PCREL 52 /* X0 pipe PC relative hword 1 */ 
     3026+#define R_TILEGX_IMM16_X1_HW1_PCREL 53 /* X1 pipe PC relative hword 1 */ 
     3027+#define R_TILEGX_IMM16_X0_HW2_PCREL 54 /* X0 pipe PC relative hword 2 */ 
     3028+#define R_TILEGX_IMM16_X1_HW2_PCREL 55 /* X1 pipe PC relative hword 2 */ 
     3029+#define R_TILEGX_IMM16_X0_HW3_PCREL 56 /* X0 pipe PC relative hword 3 */ 
     3030+#define R_TILEGX_IMM16_X1_HW3_PCREL 57 /* X1 pipe PC relative hword 3 */ 
     3031+#define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 /* X0 pipe PC-rel last hword 0 */ 
     3032+#define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 /* X1 pipe PC-rel last hword 0 */ 
     3033+#define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 /* X0 pipe PC-rel last hword 1 */ 
     3034+#define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 /* X1 pipe PC-rel last hword 1 */ 
     3035+#define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 /* X0 pipe PC-rel last hword 2 */ 
     3036+#define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */ 
     3037+#define R_TILEGX_IMM16_X0_HW0_GOT 64   /* X0 pipe hword 0 GOT offset */ 
     3038+#define R_TILEGX_IMM16_X1_HW0_GOT 65   /* X1 pipe hword 0 GOT offset */ 
     3039+/* Relocs 66-71 are currently not defined.  */ 
     3040+#define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */ 
     3041+#define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */ 
     3042+#define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */ 
     3043+#define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */ 
     3044+/* Relocs 76-77 are currently not defined.  */ 
     3045+#define R_TILEGX_IMM16_X0_HW0_TLS_GD 78        /* X0 pipe hword 0 TLS GD offset */ 
     3046+#define R_TILEGX_IMM16_X1_HW0_TLS_GD 79        /* X1 pipe hword 0 TLS GD offset */ 
     3047+#define R_TILEGX_IMM16_X0_HW0_TLS_LE 80        /* X0 pipe hword 0 TLS LE offset */ 
     3048+#define R_TILEGX_IMM16_X1_HW0_TLS_LE 81        /* X1 pipe hword 0 TLS LE offset */ 
     3049+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 /* X0 pipe last hword 0 LE off */ 
     3050+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 /* X1 pipe last hword 0 LE off */ 
     3051+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 /* X0 pipe last hword 1 LE off */ 
     3052+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 /* X1 pipe last hword 1 LE off */ 
     3053+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 /* X0 pipe last hword 0 GD off */ 
     3054+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 /* X1 pipe last hword 0 GD off */ 
     3055+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 /* X0 pipe last hword 1 GD off */ 
     3056+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* X1 pipe last hword 1 GD off */ 
     3057+/* Relocs 90-91 are currently not defined.  */ 
     3058+#define R_TILEGX_IMM16_X0_HW0_TLS_IE 92        /* X0 pipe hword 0 TLS IE offset */ 
     3059+#define R_TILEGX_IMM16_X1_HW0_TLS_IE 93        /* X1 pipe hword 0 TLS IE offset */ 
     3060+/* Relocs 94-99 are currently not defined.  */ 
     3061+#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */ 
     3062+#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */ 
     3063+#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */ 
     3064+#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* X1 pipe last hword 1 IE off */ 
     3065+/* Relocs 104-105 are currently not defined.  */ 
     3066+#define R_TILEGX_TLS_DTPMOD64  106     /* 64-bit ID of symbol's module */ 
     3067+#define R_TILEGX_TLS_DTPOFF64  107     /* 64-bit offset in TLS block */ 
     3068+#define R_TILEGX_TLS_TPOFF64   108     /* 64-bit offset in static TLS block */ 
     3069+#define R_TILEGX_TLS_DTPMOD32  109     /* 32-bit ID of symbol's module */ 
     3070+#define R_TILEGX_TLS_DTPOFF32  110     /* 32-bit offset in TLS block */ 
     3071+#define R_TILEGX_TLS_TPOFF32   111     /* 32-bit offset in static TLS block */ 
     3072+#define R_TILEGX_TLS_GD_CALL   112     /* "jal" for TLS GD */ 
     3073+#define R_TILEGX_IMM8_X0_TLS_GD_ADD 113        /* X0 pipe "addi" for TLS GD */ 
     3074+#define R_TILEGX_IMM8_X1_TLS_GD_ADD 114        /* X1 pipe "addi" for TLS GD */ 
     3075+#define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115        /* Y0 pipe "addi" for TLS GD */ 
     3076+#define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116        /* Y1 pipe "addi" for TLS GD */ 
     3077+#define R_TILEGX_TLS_IE_LOAD   117     /* "ld_tls" for TLS IE */ 
     3078+#define R_TILEGX_IMM8_X0_TLS_ADD 118   /* X0 pipe "addi" for TLS GD/IE */ 
     3079+#define R_TILEGX_IMM8_X1_TLS_ADD 119   /* X1 pipe "addi" for TLS GD/IE */ 
     3080+#define R_TILEGX_IMM8_Y0_TLS_ADD 120   /* Y0 pipe "addi" for TLS GD/IE */ 
     3081+#define R_TILEGX_IMM8_Y1_TLS_ADD 121   /* Y1 pipe "addi" for TLS GD/IE */ 
     3082+ 
     3083+#define R_TILEGX_GNU_VTINHERIT 128     /* GNU C++ vtable hierarchy */ 
     3084+#define R_TILEGX_GNU_VTENTRY   129     /* GNU C++ vtable member usage */ 
     3085+ 
     3086+#define R_TILEGX_NUM           130 
     3087+ 
     3088+#endif /* elf.h */ 
  • trunk/target/linux/generic/patches-3.6/210-darwin_scripts_include.patch

    r29986 r34449  
    5858 #include <elf.h> 
    5959+#else 
    60 +#include "../../../../../tools/sstrip/include/elf.h" 
     60+#include "elf.h" 
    6161+#endif 
    6262  
     
    7272 #include <elf.h> 
    7373+#else 
    74 +#include "../../../../../tools/sstrip/include/elf.h" 
     74+#include "elf.h" 
    7575+#endif 
    7676  
    7777 #include "elfconfig.h" 
    7878  
     79--- /dev/null 
     80+++ b/scripts/mod/elf.h 
     81@@ -0,0 +1,3007 @@ 
     82+/* This file defines standard ELF types, structures, and macros. 
     83+   Copyright (C) 1995-2012 Free Software Foundation, Inc. 
     84+   This file is part of the GNU C Library. 
     85+ 
     86+   The GNU C Library is free software; you can redistribute it and/or 
     87+   modify it under the terms of the GNU Lesser General Public 
     88+   License as published by the Free Software Foundation; either 
     89+   version 2.1 of the License, or (at your option) any later version. 
     90+ 
     91+   The GNU C Library is distributed in the hope that it will be useful, 
     92+   but WITHOUT ANY WARRANTY; without even the implied warranty of 
     93+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
     94+   Lesser General Public License for more details. 
     95+ 
     96+   You should have received a copy of the GNU Lesser General Public 
     97+   License along with the GNU C Library; if not, see 
     98+   <http://www.gnu.org/licenses/>.  */ 
     99+ 
     100+#ifndef _ELF_H 
     101+#define        _ELF_H 1 
     102+ 
     103+/* Standard ELF types.  */ 
     104+ 
     105+#include <stdint.h> 
     106+ 
     107+/* Type for a 16-bit quantity.  */ 
     108+typedef uint16_t Elf32_Half; 
     109+typedef uint16_t Elf64_Half; 
     110+ 
     111+/* Types for signed and unsigned 32-bit quantities.  */ 
     112+typedef uint32_t Elf32_Word; 
     113+typedef        int32_t  Elf32_Sword; 
     114+typedef uint32_t Elf64_Word; 
     115+typedef        int32_t  Elf64_Sword; 
     116+ 
     117+/* Types for signed and unsigned 64-bit quantities.  */ 
     118+typedef uint64_t Elf32_Xword; 
     119+typedef        int64_t  Elf32_Sxword; 
     120+typedef uint64_t Elf64_Xword; 
     121+typedef        int64_t  Elf64_Sxword; 
     122+ 
     123+/* Type of addresses.  */ 
     124+typedef uint32_t Elf32_Addr; 
     125+typedef uint64_t Elf64_Addr; 
     126+ 
     127+/* Type of file offsets.  */ 
     128+typedef uint32_t Elf32_Off; 
     129+typedef uint64_t Elf64_Off; 
     130+ 
     131+/* Type for section indices, which are 16-bit quantities.  */ 
     132+typedef uint16_t Elf32_Section; 
     133+typedef uint16_t Elf64_Section; 
     134+ 
     135+/* Type for version symbol information.  */ 
     136+typedef Elf32_Half Elf32_Versym; 
     137+typedef Elf64_Half Elf64_Versym; 
     138+ 
     139+ 
     140+/* The ELF file header.  This appears at the start of every ELF file.  */ 
     141+ 
     142+#define EI_NIDENT (16) 
     143+ 
     144+typedef struct 
     145+{ 
     146+  unsigned char        e_ident[EI_NIDENT];     /* Magic number and other info */ 
     147+  Elf32_Half   e_type;                 /* Object file type */ 
     148+  Elf32_Half   e_machine;              /* Architecture */ 
     149+  Elf32_Word   e_version;              /* Object file version */ 
     150+  Elf32_Addr   e_entry;                /* Entry point virtual address */ 
     151+  Elf32_Off    e_phoff;                /* Program header table file offset */ 
     152+  Elf32_Off    e_shoff;                /* Section header table file offset */ 
     153+  Elf32_Word   e_flags;                /* Processor-specific flags */ 
     154+  Elf32_Half   e_ehsize;               /* ELF header size in bytes */ 
     155+  Elf32_Half   e_phentsize;            /* Program header table entry size */ 
     156+  Elf32_Half   e_phnum;                /* Program header table entry count */ 
     157+  Elf32_Half   e_shentsize;            /* Section header table entry size */ 
     158+  Elf32_Half   e_shnum;                /* Section header table entry count */ 
     159+  Elf32_Half   e_shstrndx;             /* Section header string table index */ 
     160+} Elf32_Ehdr; 
     161+ 
     162+typedef struct 
     163+{ 
     164+  unsigned char        e_ident[EI_NIDENT];     /* Magic number and other info */ 
     165+  Elf64_Half   e_type;                 /* Object file type */ 
     166+  Elf64_Half   e_machine;              /* Architecture */ 
     167+  Elf64_Word   e_version;              /* Object file version */ 
     168+  Elf64_Addr   e_entry;                /* Entry point virtual address */ 
     169+  Elf64_Off    e_phoff;                /* Program header table file offset */ 
     170+  Elf64_Off    e_shoff;                /* Section header table file offset */ 
     171+  Elf64_Word   e_flags;                /* Processor-specific flags */ 
     172+  Elf64_Half   e_ehsize;               /* ELF header size in bytes */ 
     173+  Elf64_Half   e_phentsize;            /* Program header table entry size */ 
     174+  Elf64_Half   e_phnum;                /* Program header table entry count */ 
     175+  Elf64_Half   e_shentsize;            /* Section header table entry size */ 
     176+  Elf64_Half   e_shnum;                /* Section header table entry count */ 
     177+  Elf64_Half   e_shstrndx;             /* Section header string table index */ 
     178+} Elf64_Ehdr; 
     179+ 
     180+/* Fields in the e_ident array.  The EI_* macros are indices into the 
     181+   array.  The macros under each EI_* macro are the values the byte 
     182+   may have.  */ 
     183+ 
     184+#define EI_MAG0                0               /* File identification byte 0 index */ 
     185+#define ELFMAG0                0x7f            /* Magic number byte 0 */ 
     186+ 
     187+#define EI_MAG1                1               /* File identification byte 1 index */ 
     188+#define ELFMAG1                'E'             /* Magic number byte 1 */ 
     189+ 
     190+#define EI_MAG2                2               /* File identification byte 2 index */ 
     191+#define ELFMAG2                'L'             /* Magic number byte 2 */ 
     192+ 
     193+#define EI_MAG3                3               /* File identification byte 3 index */ 
     194+#define ELFMAG3                'F'             /* Magic number byte 3 */ 
     195+ 
     196+/* Conglomeration of the identification bytes, for easy testing as a word.  */ 
     197+#define        ELFMAG          "\177ELF" 
     198+#define        SELFMAG         4 
     199+ 
     200+#define EI_CLASS       4               /* File class byte index */ 
     201+#define ELFCLASSNONE   0               /* Invalid class */ 
     202+#define ELFCLASS32     1               /* 32-bit objects */ 
     203+#define ELFCLASS64     2               /* 64-bit objects */ 
     204+#define ELFCLASSNUM    3 
     205+ 
     206+#define EI_DATA                5               /* Data encoding byte index */ 
     207+#define ELFDATANONE    0               /* Invalid data encoding */ 
     208+#define ELFDATA2LSB    1               /* 2's complement, little endian */ 
     209+#define ELFDATA2MSB    2               /* 2's complement, big endian */ 
     210+#define ELFDATANUM     3 
     211+ 
     212+#define EI_VERSION     6               /* File version byte index */ 
     213+                                       /* Value must be EV_CURRENT */ 
     214+ 
     215+#define EI_OSABI       7               /* OS ABI identification */ 
     216+#define ELFOSABI_NONE          0       /* UNIX System V ABI */ 
     217+#define ELFOSABI_SYSV          0       /* Alias.  */ 
     218+#define ELFOSABI_HPUX          1       /* HP-UX */ 
     219+#define ELFOSABI_NETBSD                2       /* NetBSD.  */ 
     220+#define ELFOSABI_GNU           3       /* Object uses GNU ELF extensions.  */ 
     221+#define ELFOSABI_LINUX         ELFOSABI_GNU /* Compatibility alias.  */ 
     222+#define ELFOSABI_SOLARIS       6       /* Sun Solaris.  */ 
     223+#define ELFOSABI_AIX           7       /* IBM AIX.  */ 
     224+#define ELFOSABI_IRIX          8       /* SGI Irix.  */ 
     225+#define ELFOSABI_FREEBSD       9       /* FreeBSD.  */ 
     226+#define ELFOSABI_TRU64         10      /* Compaq TRU64 UNIX.  */ 
     227+#define ELFOSABI_MODESTO       11      /* Novell Modesto.  */ 
     228+#define ELFOSABI_OPENBSD       12      /* OpenBSD.  */ 
     229+#define ELFOSABI_ARM_AEABI     64      /* ARM EABI */ 
     230+#define ELFOSABI_ARM           97      /* ARM */ 
     231+#define ELFOSABI_STANDALONE    255     /* Standalone (embedded) application */ 
     232+ 
     233+#define EI_ABIVERSION  8               /* ABI version */ 
     234+ 
     235+#define EI_PAD         9               /* Byte index of padding bytes */ 
     236+ 
     237+/* Legal values for e_type (object file type).  */ 
     238+ 
     239+#define ET_NONE                0               /* No file type */ 
     240+#define ET_REL         1               /* Relocatable file */ 
     241+#define ET_EXEC                2               /* Executable file */ 
     242+#define ET_DYN         3               /* Shared object file */ 
     243+#define ET_CORE                4               /* Core file */ 
     244+#define        ET_NUM          5               /* Number of defined types */ 
     245+#define ET_LOOS                0xfe00          /* OS-specific range start */ 
     246+#define ET_HIOS                0xfeff          /* OS-specific range end */ 
     247+#define ET_LOPROC      0xff00          /* Processor-specific range start */ 
     248+#define ET_HIPROC      0xffff          /* Processor-specific range end */ 
     249+ 
     250+/* Legal values for e_machine (architecture).  */ 
     251+ 
     252+#define EM_NONE                 0              /* No machine */ 
     253+#define EM_M32          1              /* AT&T WE 32100 */ 
     254+#define EM_SPARC        2              /* SUN SPARC */ 
     255+#define EM_386          3              /* Intel 80386 */ 
     256+#define EM_68K          4              /* Motorola m68k family */ 
     257+#define EM_88K          5              /* Motorola m88k family */ 
     258+#define EM_860          7              /* Intel 80860 */ 
     259+#define EM_MIPS                 8              /* MIPS R3000 big-endian */ 
     260+#define EM_S370                 9              /* IBM System/370 */ 
     261+#define EM_MIPS_RS3_LE 10              /* MIPS R3000 little-endian */ 
     262+ 
     263+#define EM_PARISC      15              /* HPPA */ 
     264+#define EM_VPP500      17              /* Fujitsu VPP500 */ 
     265+#define EM_SPARC32PLUS 18              /* Sun's "v8plus" */ 
     266+#define EM_960         19              /* Intel 80960 */ 
     267+#define EM_PPC         20              /* PowerPC */ 
     268+#define EM_PPC64       21              /* PowerPC 64-bit */ 
     269+#define EM_S390                22              /* IBM S390 */ 
     270+ 
     271+#define EM_V800                36              /* NEC V800 series */ 
     272+#define EM_FR20                37              /* Fujitsu FR20 */ 
     273+#define EM_RH32                38              /* TRW RH-32 */ 
     274+#define EM_RCE         39              /* Motorola RCE */ 
     275+#define EM_ARM         40              /* ARM */ 
     276+#define EM_FAKE_ALPHA  41              /* Digital Alpha */ 
     277+#define EM_SH          42              /* Hitachi SH */ 
     278+#define EM_SPARCV9     43              /* SPARC v9 64-bit */ 
     279+#define EM_TRICORE     44              /* Siemens Tricore */ 
     280+#define EM_ARC         45              /* Argonaut RISC Core */ 
     281+#define EM_H8_300      46              /* Hitachi H8/300 */ 
     282+#define EM_H8_300H     47              /* Hitachi H8/300H */ 
     283+#define EM_H8S         48              /* Hitachi H8S */ 
     284+#define EM_H8_500      49              /* Hitachi H8/500 */ 
     285+#define EM_IA_64       50              /* Intel Merced */ 
     286+#define EM_MIPS_X      51              /* Stanford MIPS-X */ 
     287+#define EM_COLDFIRE    52              /* Motorola Coldfire */ 
     288+#define EM_68HC12      53              /* Motorola M68HC12 */ 
     289+#define EM_MMA         54              /* Fujitsu MMA Multimedia Accelerator*/ 
     290+#define EM_PCP         55              /* Siemens PCP */ 
     291+#define EM_NCPU                56              /* Sony nCPU embeeded RISC */ 
     292+#define EM_NDR1                57              /* Denso NDR1 microprocessor */ 
     293+#define EM_STARCORE    58              /* Motorola Start*Core processor */ 
     294+#define EM_ME16                59              /* Toyota ME16 processor */ 
     295+#define EM_ST100       60              /* STMicroelectronic ST100 processor */ 
     296+#define EM_TINYJ       61              /* Advanced Logic Corp. Tinyj emb.fam*/ 
     297+#define EM_X86_64      62              /* AMD x86-64 architecture */ 
     298+#define EM_PDSP                63              /* Sony DSP Processor */ 
     299+ 
     300+#define EM_FX66                66              /* Siemens FX66 microcontroller */ 
     301+#define EM_ST9PLUS     67              /* STMicroelectronics ST9+ 8/16 mc */ 
     302+#define EM_ST7         68              /* STmicroelectronics ST7 8 bit mc */ 
     303+#define EM_68HC16      69              /* Motorola MC68HC16 microcontroller */ 
     304+#define EM_68HC11      70              /* Motorola MC68HC11 microcontroller */ 
     305+#define EM_68HC08      71              /* Motorola MC68HC08 microcontroller */ 
     306+#define EM_68HC05      72              /* Motorola MC68HC05 microcontroller */ 
     307+#define EM_SVX         73              /* Silicon Graphics SVx */ 
     308+#define EM_ST19                74              /* STMicroelectronics ST19 8 bit mc */ 
     309+#define EM_VAX         75              /* Digital VAX */ 
     310+#define EM_CRIS                76              /* Axis Communications 32-bit embedded processor */ 
     311+#define EM_JAVELIN     77              /* Infineon Technologies 32-bit embedded processor */ 
     312+#define EM_FIREPATH    78              /* Element 14 64-bit DSP Processor */ 
     313+#define EM_ZSP         79              /* LSI Logic 16-bit DSP Processor */ 
     314+#define EM_MMIX                80              /* Donald Knuth's educational 64-bit processor */ 
     315+#define EM_HUANY       81              /* Harvard University machine-independent object files */ 
     316+#define EM_PRISM       82              /* SiTera Prism */ 
     317+#define EM_AVR         83              /* Atmel AVR 8-bit microcontroller */ 
     318+#define EM_FR30                84              /* Fujitsu FR30 */ 
     319+#define EM_D10V                85              /* Mitsubishi D10V */ 
     320+#define EM_D30V                86              /* Mitsubishi D30V */ 
     321+#define EM_V850                87              /* NEC v850 */ 
     322+#define EM_M32R                88              /* Mitsubishi M32R */ 
     323+#define EM_MN10300     89              /* Matsushita MN10300 */ 
     324+#define EM_MN10200     90              /* Matsushita MN10200 */ 
     325+#define EM_PJ          91              /* picoJava */ 
     326+#define EM_OPENRISC    92              /* OpenRISC 32-bit embedded processor */ 
     327+#define EM_ARC_A5      93              /* ARC Cores Tangent-A5 */ 
     328+#define EM_XTENSA      94              /* Tensilica Xtensa Architecture */ 
     329+#define EM_TILEPRO     188             /* Tilera TILEPro */ 
     330+#define EM_TILEGX      191             /* Tilera TILE-Gx */ 
     331+#define EM_NUM         192 
     332+ 
     333+/* If it is necessary to assign new unofficial EM_* values, please 
     334+   pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the 
     335+   chances of collision with official or non-GNU unofficial values.  */ 
     336+ 
     337+#define EM_ALPHA       0x9026 
     338+ 
     339+/* Legal values for e_version (version).  */ 
     340+ 
     341+#define EV_NONE                0               /* Invalid ELF version */ 
     342+#define EV_CURRENT     1               /* Current version */ 
     343+#define EV_NUM         2 
     344+ 
     345+/* Section header.  */ 
     346+ 
     347+typedef struct 
     348+{ 
     349+  Elf32_Word   sh_name;                /* Section name (string tbl index) */ 
     350+  Elf32_Word   sh_type;                /* Section type */ 
     351+  Elf32_Word   sh_flags;               /* Section flags */ 
     352+  Elf32_Addr   sh_addr;                /* Section virtual addr at execution */ 
     353+  Elf32_Off    sh_offset;              /* Section file offset */ 
     354+  Elf32_Word   sh_size;                /* Section size in bytes */ 
     355+  Elf32_Word   sh_link;                /* Link to another section */ 
     356+  Elf32_Word   sh_info;                /* Additional section information */ 
     357+  Elf32_Word   sh_addralign;           /* Section alignment */ 
     358+  Elf32_Word   sh_entsize;             /* Entry size if section holds table */ 
     359+} Elf32_Shdr; 
     360+ 
     361+typedef struct 
     362+{ 
     363+  Elf64_Word   sh_name;                /* Section name (string tbl index) */ 
     364+  Elf64_Word   sh_type;                /* Section type */ 
     365+  Elf64_Xword  sh_flags;               /* Section flags */ 
     366+  Elf64_Addr   sh_addr;                /* Section virtual addr at execution */ 
     367+  Elf64_Off    sh_offset;              /* Section file offset */ 
     368+  Elf64_Xword  sh_size;                /* Section size in bytes */ 
     369+  Elf64_Word   sh_link;                /* Link to another section */ 
     370+  Elf64_Word   sh_info;                /* Additional section information */ 
     371+  Elf64_Xword  sh_addralign;           /* Section alignment */ 
     372+  Elf64_Xword  sh_entsize;             /* Entry size if section holds table */ 
     373+} Elf64_Shdr; 
     374+ 
     375+/* Special section indices.  */ 
     376+ 
     377+#define SHN_UNDEF      0               /* Undefined section */ 
     378+#define SHN_LORESERVE  0xff00          /* Start of reserved indices */ 
     379+#define SHN_LOPROC     0xff00          /* Start of processor-specific */ 
     380+#define SHN_BEFORE     0xff00          /* Order section before all others 
     381+                                          (Solaris).  */ 
     382+#define SHN_AFTER      0xff01          /* Order section after all others 
     383+                                          (Solaris).  */ 
     384+#define SHN_HIPROC     0xff1f          /* End of processor-specific */ 
     385+#define SHN_LOOS       0xff20          /* Start of OS-specific */ 
     386+#define SHN_HIOS       0xff3f          /* End of OS-specific */ 
     387+#define SHN_ABS                0xfff1          /* Associated symbol is absolute */ 
     388+#define SHN_COMMON     0xfff2          /* Associated symbol is common */ 
     389+#define SHN_XINDEX     0xffff          /* Index is in extra table.  */ 
     390+#define SHN_HIRESERVE  0xffff          /* End of reserved indices */ 
     391+ 
     392+/* Legal values for sh_type (section type).  */ 
     393+ 
     394+#define SHT_NULL         0             /* Section header table entry unused */ 
     395+#define SHT_PROGBITS     1             /* Program data */ 
     396+#define SHT_SYMTAB       2             /* Symbol table */ 
     397+#define SHT_STRTAB       3             /* String table */ 
     398+#define SHT_RELA         4             /* Relocation entries with addends */ 
     399+#define SHT_HASH         5             /* Symbol hash table */ 
     400+#define SHT_DYNAMIC      6             /* Dynamic linking information */ 
     401+#define SHT_NOTE         7             /* Notes */ 
     402+#define SHT_NOBITS       8             /* Program space with no data (bss) */ 
     403+#define SHT_REL                  9             /* Relocation entries, no addends */ 
     404+#define SHT_SHLIB        10            /* Reserved */ 
     405+#define SHT_DYNSYM       11            /* Dynamic linker symbol table */ 
     406+#define SHT_INIT_ARRAY   14            /* Array of constructors */ 
     407+#define SHT_FINI_ARRAY   15            /* Array of destructors */ 
     408+#define SHT_PREINIT_ARRAY 16           /* Array of pre-constructors */ 
     409+#define SHT_GROUP        17            /* Section group */ 
     410+#define SHT_SYMTAB_SHNDX  18           /* Extended section indeces */ 
     411+#define        SHT_NUM           19            /* Number of defined types.  */ 
     412+#define SHT_LOOS         0x60000000    /* Start OS-specific.  */ 
     413+#define SHT_GNU_ATTRIBUTES 0x6ffffff5  /* Object attributes.  */ 
     414+#define SHT_GNU_HASH     0x6ffffff6    /* GNU-style hash table.  */ 
     415+#define SHT_GNU_LIBLIST          0x6ffffff7    /* Prelink library list */ 
     416+#define SHT_CHECKSUM     0x6ffffff8    /* Checksum for DSO content.  */ 
     417+#define SHT_LOSUNW       0x6ffffffa    /* Sun-specific low bound.  */ 
     418+#define SHT_SUNW_move    0x6ffffffa 
     419+#define SHT_SUNW_COMDAT   0x6ffffffb 
     420+#define SHT_SUNW_syminfo  0x6ffffffc 
     421+#define SHT_GNU_verdef   0x6ffffffd    /* Version definition section.  */ 
     422+#define SHT_GNU_verneed          0x6ffffffe    /* Version needs section.  */ 
     423+#define SHT_GNU_versym   0x6fffffff    /* Version symbol table.  */ 
     424+#define SHT_HISUNW       0x6fffffff    /* Sun-specific high bound.  */ 
     425+#define SHT_HIOS         0x6fffffff    /* End OS-specific type */ 
     426+#define SHT_LOPROC       0x70000000    /* Start of processor-specific */ 
     427+#define SHT_HIPROC       0x7fffffff    /* End of processor-specific */ 
     428+#define SHT_LOUSER       0x80000000    /* Start of application-specific */ 
     429+#define SHT_HIUSER       0x8fffffff    /* End of application-specific */ 
     430+ 
     431+/* Legal values for sh_flags (section flags).  */ 
     432+ 
     433+#define SHF_WRITE           (1 << 0)   /* Writable */ 
     434+#define SHF_ALLOC           (1 << 1)   /* Occupies memory during execution */ 
     435+#define SHF_EXECINSTR       (1 << 2)   /* Executable */ 
     436+#define SHF_MERGE           (1 << 4)   /* Might be merged */ 
     437+#define SHF_STRINGS         (1 << 5)   /* Contains nul-terminated strings */ 
     438+#define SHF_INFO_LINK       (1 << 6)   /* `sh_info' contains SHT index */ 
     439+#define SHF_LINK_ORDER      (1 << 7)   /* Preserve order after combining */ 
     440+#define SHF_OS_NONCONFORMING (1 << 8)  /* Non-standard OS specific handling 
     441+                                          required */ 
     442+#define SHF_GROUP           (1 << 9)   /* Section is member of a group.  */ 
     443+#define SHF_TLS                     (1 << 10)  /* Section hold thread-local data.  */ 
     444+#define SHF_MASKOS          0x0ff00000 /* OS-specific.  */ 
     445+#define SHF_MASKPROC        0xf0000000 /* Processor-specific */ 
     446+#define SHF_ORDERED         (1 << 30)  /* Special ordering requirement 
     447+                                          (Solaris).  */ 
     448+#define SHF_EXCLUDE         (1 << 31)  /* Section is excluded unless 
     449+                                          referenced or allocated (Solaris).*/ 
     450+ 
     451+/* Section group handling.  */ 
     452+#define GRP_COMDAT     0x1             /* Mark group as COMDAT.  */ 
     453+ 
     454+/* Symbol table entry.  */ 
     455+ 
     456+typedef struct 
     457+{ 
     458+  Elf32_Word   st_name;                /* Symbol name (string tbl index) */ 
     459+  Elf32_Addr   st_value;               /* Symbol value */ 
     460+  Elf32_Word   st_size;                /* Symbol size */ 
     461+  unsigned char        st_info;                /* Symbol type and binding */ 
     462+  unsigned char        st_other;               /* Symbol visibility */ 
     463+  Elf32_Section        st_shndx;               /* Section index */ 
     464+} Elf32_Sym; 
     465+ 
     466+typedef struct 
     467+{ 
     468+  Elf64_Word   st_name;                /* Symbol name (string tbl index) */ 
     469+  unsigned char        st_info;                /* Symbol type and binding */ 
     470+  unsigned char st_other;              /* Symbol visibility */ 
     471+  Elf64_Section        st_shndx;               /* Section index */ 
     472+  Elf64_Addr   st_value;               /* Symbol value */ 
     473+  Elf64_Xword  st_size;                /* Symbol size */ 
     474+} Elf64_Sym; 
     475+ 
     476+/* The syminfo section if available contains additional information about 
     477+   every dynamic symbol.  */ 
     478+ 
     479+typedef struct 
     480+{ 
     481+  Elf32_Half si_boundto;               /* Direct bindings, symbol bound to */ 
     482+  Elf32_Half si_flags;                 /* Per symbol flags */ 
     483+} Elf32_Syminfo; 
     484+ 
     485+typedef struct 
     486+{ 
     487+  Elf64_Half si_boundto;               /* Direct bindings, symbol bound to */ 
     488+  Elf64_Half si_flags;                 /* Per symbol flags */ 
     489+} Elf64_Syminfo; 
     490+ 
     491+/* Possible values for si_boundto.  */ 
     492+#define SYMINFO_BT_SELF                0xffff  /* Symbol bound to self */ 
     493+#define SYMINFO_BT_PARENT      0xfffe  /* Symbol bound to parent */ 
     494+#define SYMINFO_BT_LOWRESERVE  0xff00  /* Beginning of reserved entries */ 
     495+ 
     496+/* Possible bitmasks for si_flags.  */ 
     497+#define SYMINFO_FLG_DIRECT     0x0001  /* Direct bound symbol */ 
     498+#define SYMINFO_FLG_PASSTHRU   0x0002  /* Pass-thru symbol for translator */ 
     499+#define SYMINFO_FLG_COPY       0x0004  /* Symbol is a copy-reloc */ 
     500+#define SYMINFO_FLG_LAZYLOAD   0x0008  /* Symbol bound to object to be lazy 
     501+                                          loaded */ 
     502+/* Syminfo version values.  */ 
     503+#define SYMINFO_NONE           0 
     504+#define SYMINFO_CURRENT                1 
     505+#define SYMINFO_NUM            2 
     506+ 
     507+ 
     508+/* How to extract and insert information held in the st_info field.  */ 
     509+ 
     510+#define ELF32_ST_BIND(val)             (((unsigned char) (val)) >> 4) 
     511+#define ELF32_ST_TYPE(val)             ((val) & 0xf) 
     512+#define ELF32_ST_INFO(bind, type)      (((bind) << 4) + ((type) & 0xf)) 
     513+ 
     514+/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field.  */ 
     515+#define ELF64_ST_BIND(val)             ELF32_ST_BIND (val) 
     516+#define ELF64_ST_TYPE(val)             ELF32_ST_TYPE (val) 
     517+#define ELF64_ST_INFO(bind, type)      ELF32_ST_INFO ((bind), (type)) 
     518+ 
     519+/* Legal values for ST_BIND subfield of st_info (symbol binding).  */ 
     520+ 
     521+#define STB_LOCAL      0               /* Local symbol */ 
     522+#define STB_GLOBAL     1               /* Global symbol */ 
     523+#define STB_WEAK       2               /* Weak symbol */ 
     524+#define        STB_NUM         3               /* Number of defined types.  */ 
     525+#define STB_LOOS       10              /* Start of OS-specific */ 
     526+#define STB_GNU_UNIQUE 10              /* Unique symbol.  */ 
     527+#define STB_HIOS       12              /* End of OS-specific */ 
     528+#define STB_LOPROC     13              /* Start of processor-specific */ 
     529+#define STB_HIPROC     15              /* End of processor-specific */ 
     530+ 
     531+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     532+ 
     533+#define STT_NOTYPE     0               /* Symbol type is unspecified */ 
     534+#define STT_OBJECT     1               /* Symbol is a data object */ 
     535+#define STT_FUNC       2               /* Symbol is a code object */ 
     536+#define STT_SECTION    3               /* Symbol associated with a section */ 
     537+#define STT_FILE       4               /* Symbol's name is file name */ 
     538+#define STT_COMMON     5               /* Symbol is a common data object */ 
     539+#define STT_TLS                6               /* Symbol is thread-local data object*/ 
     540+#define        STT_NUM         7               /* Number of defined types.  */ 
     541+#define STT_LOOS       10              /* Start of OS-specific */ 
     542+#define STT_GNU_IFUNC  10              /* Symbol is indirect code object */ 
     543+#define STT_HIOS       12              /* End of OS-specific */ 
     544+#define STT_LOPROC     13              /* Start of processor-specific */ 
     545+#define STT_HIPROC     15              /* End of processor-specific */ 
     546+ 
     547+ 
     548+/* Symbol table indices are found in the hash buckets and chain table 
     549+   of a symbol hash table section.  This special index value indicates 
     550+   the end of a chain, meaning no further symbols are found in that bucket.  */ 
     551+ 
     552+#define STN_UNDEF      0               /* End of a chain.  */ 
     553+ 
     554+ 
     555+/* How to extract and insert information held in the st_other field.  */ 
     556+ 
     557+#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) 
     558+ 
     559+/* For ELF64 the definitions are the same.  */ 
     560+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) 
     561+ 
     562+/* Symbol visibility specification encoded in the st_other field.  */ 
     563+#define STV_DEFAULT    0               /* Default symbol visibility rules */ 
     564+#define STV_INTERNAL   1               /* Processor specific hidden class */ 
     565+#define STV_HIDDEN     2               /* Sym unavailable in other modules */ 
     566+#define STV_PROTECTED  3               /* Not preemptible, not exported */ 
     567+ 
     568+ 
     569+/* Relocation table entry without addend (in section of type SHT_REL).  */ 
     570+ 
     571+typedef struct 
     572+{ 
     573+  Elf32_Addr   r_offset;               /* Address */ 
     574+  Elf32_Word   r_info;                 /* Relocation type and symbol index */ 
     575+} Elf32_Rel; 
     576+ 
     577+/* I have seen two different definitions of the Elf64_Rel and 
     578+   Elf64_Rela structures, so we'll leave them out until Novell (or 
     579+   whoever) gets their act together.  */ 
     580+/* The following, at least, is used on Sparc v9, MIPS, and Alpha.  */ 
     581+ 
     582+typedef struct 
     583+{ 
     584+  Elf64_Addr   r_offset;               /* Address */ 
     585+  Elf64_Xword  r_info;                 /* Relocation type and symbol index */ 
     586+} Elf64_Rel; 
     587+ 
     588+/* Relocation table entry with addend (in section of type SHT_RELA).  */ 
     589+ 
     590+typedef struct 
     591+{ 
     592+  Elf32_Addr   r_offset;               /* Address */ 
     593+  Elf32_Word   r_info;                 /* Relocation type and symbol index */ 
     594+  Elf32_Sword  r_addend;               /* Addend */ 
     595+} Elf32_Rela; 
     596+ 
     597+typedef struct 
     598+{ 
     599+  Elf64_Addr   r_offset;               /* Address */ 
     600+  Elf64_Xword  r_info;                 /* Relocation type and symbol index */ 
     601+  Elf64_Sxword r_addend;               /* Addend */ 
     602+} Elf64_Rela; 
     603+ 
     604+/* How to extract and insert information held in the r_info field.  */ 
     605+ 
     606+#define ELF32_R_SYM(val)               ((val) >> 8) 
     607+#define ELF32_R_TYPE(val)              ((val) & 0xff) 
     608+#define ELF32_R_INFO(sym, type)                (((sym) << 8) + ((type) & 0xff)) 
     609+ 
     610+#define ELF64_R_SYM(i)                 ((i) >> 32) 
     611+#define ELF64_R_TYPE(i)                        ((i) & 0xffffffff) 
     612+#define ELF64_R_INFO(sym,type)         ((((Elf64_Xword) (sym)) << 32) + (type)) 
     613+ 
     614+/* Program segment header.  */ 
     615+ 
     616+typedef struct 
     617+{ 
     618+  Elf32_Word   p_type;                 /* Segment type */ 
     619+  Elf32_Off    p_offset;               /* Segment file offset */ 
     620+  Elf32_Addr   p_vaddr;                /* Segment virtual address */ 
     621+  Elf32_Addr   p_paddr;                /* Segment physical address */ 
     622+  Elf32_Word   p_filesz;               /* Segment size in file */ 
     623+  Elf32_Word   p_memsz;                /* Segment size in memory */ 
     624+  Elf32_Word   p_flags;                /* Segment flags */ 
     625+  Elf32_Word   p_align;                /* Segment alignment */ 
     626+} Elf32_Phdr; 
     627+ 
     628+typedef struct 
     629+{ 
     630+  Elf64_Word   p_type;                 /* Segment type */ 
     631+  Elf64_Word   p_flags;                /* Segment flags */ 
     632+  Elf64_Off    p_offset;               /* Segment file offset */ 
     633+  Elf64_Addr   p_vaddr;                /* Segment virtual address */ 
     634+  Elf64_Addr   p_paddr;                /* Segment physical address */ 
     635+  Elf64_Xword  p_filesz;               /* Segment size in file */ 
     636+  Elf64_Xword  p_memsz;                /* Segment size in memory */ 
     637+  Elf64_Xword  p_align;                /* Segment alignment */ 
     638+} Elf64_Phdr; 
     639+ 
     640+/* Special value for e_phnum.  This indicates that the real number of 
     641+   program headers is too large to fit into e_phnum.  Instead the real 
     642+   value is in the field sh_info of section 0.  */ 
     643+ 
     644+#define PN_XNUM                0xffff 
     645+ 
     646+/* Legal values for p_type (segment type).  */ 
     647+ 
     648+#define        PT_NULL         0               /* Program header table entry unused */ 
     649+#define PT_LOAD                1               /* Loadable program segment */ 
     650+#define PT_DYNAMIC     2               /* Dynamic linking information */ 
     651+#define PT_INTERP      3               /* Program interpreter */ 
     652+#define PT_NOTE                4               /* Auxiliary information */ 
     653+#define PT_SHLIB       5               /* Reserved */ 
     654+#define PT_PHDR                6               /* Entry for header table itself */ 
     655+#define PT_TLS         7               /* Thread-local storage segment */ 
     656+#define        PT_NUM          8               /* Number of defined types */ 
     657+#define PT_LOOS                0x60000000      /* Start of OS-specific */ 
     658+#define PT_GNU_EH_FRAME        0x6474e550      /* GCC .eh_frame_hdr segment */ 
     659+#define PT_GNU_STACK   0x6474e551      /* Indicates stack executability */ 
     660+#define PT_GNU_RELRO   0x6474e552      /* Read-only after relocation */ 
     661+#define PT_LOSUNW      0x6ffffffa 
     662+#define PT_SUNWBSS     0x6ffffffa      /* Sun Specific segment */ 
     663+#define PT_SUNWSTACK   0x6ffffffb      /* Stack segment */ 
     664+#define PT_HISUNW      0x6fffffff 
     665+#define PT_HIOS                0x6fffffff      /* End of OS-specific */ 
     666+#define PT_LOPROC      0x70000000      /* Start of processor-specific */ 
     667+#define PT_HIPROC      0x7fffffff      /* End of processor-specific */ 
     668+ 
     669+/* Legal values for p_flags (segment flags).  */ 
     670+ 
     671+#define PF_X           (1 << 0)        /* Segment is executable */ 
     672+#define PF_W           (1 << 1)        /* Segment is writable */ 
     673+#define PF_R           (1 << 2)        /* Segment is readable */ 
     674+#define PF_MASKOS      0x0ff00000      /* OS-specific */ 
     675+#define PF_MASKPROC    0xf0000000      /* Processor-specific */ 
     676+ 
     677+/* Legal values for note segment descriptor types for core files. */ 
     678+ 
     679+#define NT_PRSTATUS    1               /* Contains copy of prstatus struct */ 
     680+#define NT_FPREGSET    2               /* Contains copy of fpregset struct */ 
     681+#define NT_PRPSINFO    3               /* Contains copy of prpsinfo struct */ 
     682+#define NT_PRXREG      4               /* Contains copy of prxregset struct */ 
     683+#define NT_TASKSTRUCT  4               /* Contains copy of task structure */ 
     684+#define NT_PLATFORM    5               /* String from sysinfo(SI_PLATFORM) */ 
     685+#define NT_AUXV                6               /* Contains copy of auxv array */ 
     686+#define NT_GWINDOWS    7               /* Contains copy of gwindows struct */ 
     687+#define NT_ASRS                8               /* Contains copy of asrset struct */ 
     688+#define NT_PSTATUS     10              /* Contains copy of pstatus struct */ 
     689+#define NT_PSINFO      13              /* Contains copy of psinfo struct */ 
     690+#define NT_PRCRED      14              /* Contains copy of prcred struct */ 
     691+#define NT_UTSNAME     15              /* Contains copy of utsname struct */ 
     692+#define NT_LWPSTATUS   16              /* Contains copy of lwpstatus struct */ 
     693+#define NT_LWPSINFO    17              /* Contains copy of lwpinfo struct */ 
     694+#define NT_PRFPXREG    20              /* Contains copy of fprxregset struct */ 
     695+#define NT_PRXFPREG    0x46e62b7f      /* Contains copy of user_fxsr_struct */ 
     696+#define NT_PPC_VMX     0x100           /* PowerPC Altivec/VMX registers */ 
     697+#define NT_PPC_SPE     0x101           /* PowerPC SPE/EVR registers */ 
     698+#define NT_PPC_VSX     0x102           /* PowerPC VSX registers */ 
     699+#define NT_386_TLS     0x200           /* i386 TLS slots (struct user_desc) */ 
     700+#define NT_386_IOPERM  0x201           /* x86 io permission bitmap (1=deny) */ 
     701+#define NT_X86_XSTATE  0x202           /* x86 extended state using xsave */ 
     702+ 
     703+/* Legal values for the note segment descriptor types for object files.  */ 
     704+ 
     705+#define NT_VERSION     1               /* Contains a version string.  */ 
     706+ 
     707+ 
     708+/* Dynamic section entry.  */ 
     709+ 
     710+typedef struct 
     711+{ 
     712+  Elf32_Sword  d_tag;                  /* Dynamic entry type */ 
     713+  union 
     714+    { 
     715+      Elf32_Word d_val;                        /* Integer value */ 
     716+      Elf32_Addr d_ptr;                        /* Address value */ 
     717+    } d_un; 
     718+} Elf32_Dyn; 
     719+ 
     720+typedef struct 
     721+{ 
     722+  Elf64_Sxword d_tag;                  /* Dynamic entry type */ 
     723+  union 
     724+    { 
     725+      Elf64_Xword d_val;               /* Integer value */ 
     726+      Elf64_Addr d_ptr;                        /* Address value */ 
     727+    } d_un; 
     728+} Elf64_Dyn; 
     729+ 
     730+/* Legal values for d_tag (dynamic entry type).  */ 
     731+ 
     732+#define DT_NULL                0               /* Marks end of dynamic section */ 
     733+#define DT_NEEDED      1               /* Name of needed library */ 
     734+#define DT_PLTRELSZ    2               /* Size in bytes of PLT relocs */ 
     735+#define DT_PLTGOT      3               /* Processor defined value */ 
     736+#define DT_HASH                4               /* Address of symbol hash table */ 
     737+#define DT_STRTAB      5               /* Address of string table */ 
     738+#define DT_SYMTAB      6               /* Address of symbol table */ 
     739+#define DT_RELA                7               /* Address of Rela relocs */ 
     740+#define DT_RELASZ      8               /* Total size of Rela relocs */ 
     741+#define DT_RELAENT     9               /* Size of one Rela reloc */ 
     742+#define DT_STRSZ       10              /* Size of string table */ 
     743+#define DT_SYMENT      11              /* Size of one symbol table entry */ 
     744+#define DT_INIT                12              /* Address of init function */ 
     745+#define DT_FINI                13              /* Address of termination function */ 
     746+#define DT_SONAME      14              /* Name of shared object */ 
     747+#define DT_RPATH       15              /* Library search path (deprecated) */ 
     748+#define DT_SYMBOLIC    16              /* Start symbol search here */ 
     749+#define DT_REL         17              /* Address of Rel relocs */ 
     750+#define DT_RELSZ       18              /* Total size of Rel relocs */ 
     751+#define DT_RELENT      19              /* Size of one Rel reloc */ 
     752+#define DT_PLTREL      20              /* Type of reloc in PLT */ 
     753+#define DT_DEBUG       21              /* For debugging; unspecified */ 
     754+#define DT_TEXTREL     22              /* Reloc might modify .text */ 
     755+#define DT_JMPREL      23              /* Address of PLT relocs */ 
     756+#define        DT_BIND_NOW     24              /* Process relocations of object */ 
     757+#define        DT_INIT_ARRAY   25              /* Array with addresses of init fct */ 
     758+#define        DT_FINI_ARRAY   26              /* Array with addresses of fini fct */ 
     759+#define        DT_INIT_ARRAYSZ 27              /* Size in bytes of DT_INIT_ARRAY */ 
     760+#define        DT_FINI_ARRAYSZ 28              /* Size in bytes of DT_FINI_ARRAY */ 
     761+#define DT_RUNPATH     29              /* Library search path */ 
     762+#define DT_FLAGS       30              /* Flags for the object being loaded */ 
     763+#define DT_ENCODING    32              /* Start of encoded range */ 
     764+#define DT_PREINIT_ARRAY 32            /* Array with addresses of preinit fct*/ 
     765+#define DT_PREINIT_ARRAYSZ 33          /* size in bytes of DT_PREINIT_ARRAY */ 
     766+#define        DT_NUM          34              /* Number used */ 
     767+#define DT_LOOS                0x6000000d      /* Start of OS-specific */ 
     768+#define DT_HIOS                0x6ffff000      /* End of OS-specific */ 
     769+#define DT_LOPROC      0x70000000      /* Start of processor-specific */ 
     770+#define DT_HIPROC      0x7fffffff      /* End of processor-specific */ 
     771+#define        DT_PROCNUM      DT_MIPS_NUM     /* Most used by any processor */ 
     772+ 
     773+/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the 
     774+   Dyn.d_un.d_val field of the Elf*_Dyn structure.  This follows Sun's 
     775+   approach.  */ 
     776+#define DT_VALRNGLO    0x6ffffd00 
     777+#define DT_GNU_PRELINKED 0x6ffffdf5    /* Prelinking timestamp */ 
     778+#define DT_GNU_CONFLICTSZ 0x6ffffdf6   /* Size of conflict section */ 
     779+#define DT_GNU_LIBLISTSZ 0x6ffffdf7    /* Size of library list */ 
     780+#define DT_CHECKSUM    0x6ffffdf8 
     781+#define DT_PLTPADSZ    0x6ffffdf9 
     782+#define DT_MOVEENT     0x6ffffdfa 
     783+#define DT_MOVESZ      0x6ffffdfb 
     784+#define DT_FEATURE_1   0x6ffffdfc      /* Feature selection (DTF_*).  */ 
     785+#define DT_POSFLAG_1   0x6ffffdfd      /* Flags for DT_* entries, effecting 
     786+                                          the following DT_* entry.  */ 
     787+#define DT_SYMINSZ     0x6ffffdfe      /* Size of syminfo table (in bytes) */ 
     788+#define DT_SYMINENT    0x6ffffdff      /* Entry size of syminfo */ 
     789+#define DT_VALRNGHI    0x6ffffdff 
     790+#define DT_VALTAGIDX(tag)      (DT_VALRNGHI - (tag))   /* Reverse order! */ 
     791+#define DT_VALNUM 12 
     792+ 
     793+/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the 
     794+   Dyn.d_un.d_ptr field of the Elf*_Dyn structure. 
     795+ 
     796+   If any adjustment is made to the ELF object after it has been 
     797+   built these entries will need to be adjusted.  */ 
     798+#define DT_ADDRRNGLO   0x6ffffe00 
     799+#define DT_GNU_HASH    0x6ffffef5      /* GNU-style hash table.  */ 
     800+#define DT_TLSDESC_PLT 0x6ffffef6 
     801+#define DT_TLSDESC_GOT 0x6ffffef7 
     802+#define DT_GNU_CONFLICT        0x6ffffef8      /* Start of conflict section */ 
     803+#define DT_GNU_LIBLIST 0x6ffffef9      /* Library list */ 
     804+#define DT_CONFIG      0x6ffffefa      /* Configuration information.  */ 
     805+#define DT_DEPAUDIT    0x6ffffefb      /* Dependency auditing.  */ 
     806+#define DT_AUDIT       0x6ffffefc      /* Object auditing.  */ 
     807+#define        DT_PLTPAD       0x6ffffefd      /* PLT padding.  */ 
     808+#define        DT_MOVETAB      0x6ffffefe      /* Move table.  */ 
     809+#define DT_SYMINFO     0x6ffffeff      /* Syminfo table.  */ 
     810+#define DT_ADDRRNGHI   0x6ffffeff 
     811+#define DT_ADDRTAGIDX(tag)     (DT_ADDRRNGHI - (tag))  /* Reverse order! */ 
     812+#define DT_ADDRNUM 11 
     813+ 
     814+/* The versioning entry types.  The next are defined as part of the 
     815+   GNU extension.  */ 
     816+#define DT_VERSYM      0x6ffffff0 
     817+ 
     818+#define DT_RELACOUNT   0x6ffffff9 
     819+#define DT_RELCOUNT    0x6ffffffa 
     820+ 
     821+/* These were chosen by Sun.  */ 
     822+#define DT_FLAGS_1     0x6ffffffb      /* State flags, see DF_1_* below.  */ 
     823+#define        DT_VERDEF       0x6ffffffc      /* Address of version definition 
     824+                                          table */ 
     825+#define        DT_VERDEFNUM    0x6ffffffd      /* Number of version definitions */ 
     826+#define        DT_VERNEED      0x6ffffffe      /* Address of table with needed 
     827+                                          versions */ 
     828+#define        DT_VERNEEDNUM   0x6fffffff      /* Number of needed versions */ 
     829+#define DT_VERSIONTAGIDX(tag)  (DT_VERNEEDNUM - (tag)) /* Reverse order! */ 
     830+#define DT_VERSIONTAGNUM 16 
     831+ 
     832+/* Sun added these machine-independent extensions in the "processor-specific" 
     833+   range.  Be compatible.  */ 
     834+#define DT_AUXILIARY    0x7ffffffd      /* Shared object to load before self */ 
     835+#define DT_FILTER       0x7fffffff      /* Shared object to get values from */ 
     836+#define DT_EXTRATAGIDX(tag)    ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) 
     837+#define DT_EXTRANUM    3 
     838+ 
     839+/* Values of `d_un.d_val' in the DT_FLAGS entry.  */ 
     840+#define DF_ORIGIN      0x00000001      /* Object may use DF_ORIGIN */ 
     841+#define DF_SYMBOLIC    0x00000002      /* Symbol resolutions starts here */ 
     842+#define DF_TEXTREL     0x00000004      /* Object contains text relocations */ 
     843+#define DF_BIND_NOW    0x00000008      /* No lazy binding for this object */ 
     844+#define DF_STATIC_TLS  0x00000010      /* Module uses the static TLS model */ 
     845+ 
     846+/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1 
     847+   entry in the dynamic section.  */ 
     848+#define DF_1_NOW       0x00000001      /* Set RTLD_NOW for this object.  */ 
     849+#define DF_1_GLOBAL    0x00000002      /* Set RTLD_GLOBAL for this object.  */ 
     850+#define DF_1_GROUP     0x00000004      /* Set RTLD_GROUP for this object.  */ 
     851+#define DF_1_NODELETE  0x00000008      /* Set RTLD_NODELETE for this object.*/ 
     852+#define DF_1_LOADFLTR  0x00000010      /* Trigger filtee loading at runtime.*/ 
     853+#define DF_1_INITFIRST 0x00000020      /* Set RTLD_INITFIRST for this object*/ 
     854+#define DF_1_NOOPEN    0x00000040      /* Set RTLD_NOOPEN for this object.  */ 
     855+#define DF_1_ORIGIN    0x00000080      /* $ORIGIN must be handled.  */ 
     856+#define DF_1_DIRECT    0x00000100      /* Direct binding enabled.  */ 
     857+#define DF_1_TRANS     0x00000200 
     858+#define DF_1_INTERPOSE 0x00000400      /* Object is used to interpose.  */ 
     859+#define DF_1_NODEFLIB  0x00000800      /* Ignore default lib search path.  */ 
     860+#define DF_1_NODUMP    0x00001000      /* Object can't be dldump'ed.  */ 
     861+#define DF_1_CONFALT   0x00002000      /* Configuration alternative created.*/ 
     862+#define DF_1_ENDFILTEE 0x00004000      /* Filtee terminates filters search. */ 
     863+#define        DF_1_DISPRELDNE 0x00008000      /* Disp reloc applied at build time. */ 
     864+#define        DF_1_DISPRELPND 0x00010000      /* Disp reloc applied at run-time.  */ 
     865+ 
     866+/* Flags for the feature selection in DT_FEATURE_1.  */ 
     867+#define DTF_1_PARINIT  0x00000001 
     868+#define DTF_1_CONFEXP  0x00000002 
     869+ 
     870+/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry.  */ 
     871+#define DF_P1_LAZYLOAD 0x00000001      /* Lazyload following object.  */ 
     872+#define DF_P1_GROUPPERM        0x00000002      /* Symbols from next object are not 
     873+                                          generally available.  */ 
     874+ 
     875+/* Version definition sections.  */ 
     876+ 
     877+typedef struct 
     878+{ 
     879+  Elf32_Half   vd_version;             /* Version revision */ 
     880+  Elf32_Half   vd_flags;               /* Version information */ 
     881+  Elf32_Half   vd_ndx;                 /* Version Index */ 
     882+  Elf32_Half   vd_cnt;                 /* Number of associated aux entries */ 
     883+  Elf32_Word   vd_hash;                /* Version name hash value */ 
     884+  Elf32_Word   vd_aux;                 /* Offset in bytes to verdaux array */ 
     885+  Elf32_Word   vd_next;                /* Offset in bytes to next verdef 
     886+                                          entry */ 
     887+} Elf32_Verdef; 
     888+ 
     889+typedef struct 
     890+{ 
     891+  Elf64_Half   vd_version;             /* Version revision */ 
     892+  Elf64_Half   vd_flags;               /* Version information */ 
     893+  Elf64_Half   vd_ndx;                 /* Version Index */ 
     894+  Elf64_Half   vd_cnt;                 /* Number of associated aux entries */ 
     895+  Elf64_Word   vd_hash;                /* Version name hash value */ 
     896+  Elf64_Word   vd_aux;                 /* Offset in bytes to verdaux array */ 
     897+  Elf64_Word   vd_next;                /* Offset in bytes to next verdef 
     898+                                          entry */ 
     899+} Elf64_Verdef; 
     900+ 
     901+ 
     902+/* Legal values for vd_version (version revision).  */ 
     903+#define VER_DEF_NONE   0               /* No version */ 
     904+#define VER_DEF_CURRENT        1               /* Current version */ 
     905+#define VER_DEF_NUM    2               /* Given version number */ 
     906+ 
     907+/* Legal values for vd_flags (version information flags).  */ 
     908+#define VER_FLG_BASE   0x1             /* Version definition of file itself */ 
     909+#define VER_FLG_WEAK   0x2             /* Weak version identifier */ 
     910+ 
     911+/* Versym symbol index values.  */ 
     912+#define        VER_NDX_LOCAL           0       /* Symbol is local.  */ 
     913+#define        VER_NDX_GLOBAL          1       /* Symbol is global.  */ 
     914+#define        VER_NDX_LORESERVE       0xff00  /* Beginning of reserved entries.  */ 
     915+#define        VER_NDX_ELIMINATE       0xff01  /* Symbol is to be eliminated.  */ 
     916+ 
     917+/* Auxialiary version information.  */ 
     918+ 
     919+typedef struct 
     920+{ 
     921+  Elf32_Word   vda_name;               /* Version or dependency names */ 
     922+  Elf32_Word   vda_next;               /* Offset in bytes to next verdaux 
     923+                                          entry */ 
     924+} Elf32_Verdaux; 
     925+ 
     926+typedef struct 
     927+{ 
     928+  Elf64_Word   vda_name;               /* Version or dependency names */ 
     929+  Elf64_Word   vda_next;               /* Offset in bytes to next verdaux 
     930+                                          entry */ 
     931+} Elf64_Verdaux; 
     932+ 
     933+ 
     934+/* Version dependency section.  */ 
     935+ 
     936+typedef struct 
     937+{ 
     938+  Elf32_Half   vn_version;             /* Version of structure */ 
     939+  Elf32_Half   vn_cnt;                 /* Number of associated aux entries */ 
     940+  Elf32_Word   vn_file;                /* Offset of filename for this 
     941+                                          dependency */ 
     942+  Elf32_Word   vn_aux;                 /* Offset in bytes to vernaux array */ 
     943+  Elf32_Word   vn_next;                /* Offset in bytes to next verneed 
     944+                                          entry */ 
     945+} Elf32_Verneed; 
     946+ 
     947+typedef struct 
     948+{ 
     949+  Elf64_Half   vn_version;             /* Version of structure */ 
     950+  Elf64_Half   vn_cnt;                 /* Number of associated aux entries */ 
     951+  Elf64_Word   vn_file;                /* Offset of filename for this 
     952+                                          dependency */ 
     953+  Elf64_Word   vn_aux;                 /* Offset in bytes to vernaux array */ 
     954+  Elf64_Word   vn_next;                /* Offset in bytes to next verneed 
     955+                                          entry */ 
     956+} Elf64_Verneed; 
     957+ 
     958+ 
     959+/* Legal values for vn_version (version revision).  */ 
     960+#define VER_NEED_NONE   0              /* No version */ 
     961+#define VER_NEED_CURRENT 1             /* Current version */ 
     962+#define VER_NEED_NUM    2              /* Given version number */ 
     963+ 
     964+/* Auxiliary needed version information.  */ 
     965+ 
     966+typedef struct 
     967+{ 
     968+  Elf32_Word   vna_hash;               /* Hash value of dependency name */ 
     969+  Elf32_Half   vna_flags;              /* Dependency specific information */ 
     970+  Elf32_Half   vna_other;              /* Unused */ 
     971+  Elf32_Word   vna_name;               /* Dependency name string offset */ 
     972+  Elf32_Word   vna_next;               /* Offset in bytes to next vernaux 
     973+                                          entry */ 
     974+} Elf32_Vernaux; 
     975+ 
     976+typedef struct 
     977+{ 
     978+  Elf64_Word   vna_hash;               /* Hash value of dependency name */ 
     979+  Elf64_Half   vna_flags;              /* Dependency specific information */ 
     980+  Elf64_Half   vna_other;              /* Unused */ 
     981+  Elf64_Word   vna_name;               /* Dependency name string offset */ 
     982+  Elf64_Word   vna_next;               /* Offset in bytes to next vernaux 
     983+                                          entry */ 
     984+} Elf64_Vernaux; 
     985+ 
     986+ 
     987+/* Legal values for vna_flags.  */ 
     988+#define VER_FLG_WEAK   0x2             /* Weak version identifier */ 
     989+ 
     990+ 
     991+/* Auxiliary vector.  */ 
     992+ 
     993+/* This vector is normally only used by the program interpreter.  The 
     994+   usual definition in an ABI supplement uses the name auxv_t.  The 
     995+   vector is not usually defined in a standard <elf.h> file, but it 
     996+   can't hurt.  We rename it to avoid conflicts.  The sizes of these 
     997+   types are an arrangement between the exec server and the program 
     998+   interpreter, so we don't fully specify them here.  */ 
     999+ 
     1000+typedef struct 
     1001+{ 
     1002+  uint32_t a_type;             /* Entry type */ 
     1003+  union 
     1004+    { 
     1005+      uint32_t a_val;          /* Integer value */ 
     1006+      /* We use to have pointer elements added here.  We cannot do that, 
     1007+        though, since it does not work when using 32-bit definitions 
     1008+        on 64-bit platforms and vice versa.  */ 
     1009+    } a_un; 
     1010+} Elf32_auxv_t; 
     1011+ 
     1012+typedef struct 
     1013+{ 
     1014+  uint64_t a_type;             /* Entry type */ 
     1015+  union 
     1016+    { 
     1017+      uint64_t a_val;          /* Integer value */ 
     1018+      /* We use to have pointer elements added here.  We cannot do that, 
     1019+        though, since it does not work when using 32-bit definitions 
     1020+        on 64-bit platforms and vice versa.  */ 
     1021+    } a_un; 
     1022+} Elf64_auxv_t; 
     1023+ 
     1024+/* Legal values for a_type (entry type).  */ 
     1025+ 
     1026+#define AT_NULL                0               /* End of vector */ 
     1027+#define AT_IGNORE      1               /* Entry should be ignored */ 
     1028+#define AT_EXECFD      2               /* File descriptor of program */ 
     1029+#define AT_PHDR                3               /* Program headers for program */ 
     1030+#define AT_PHENT       4               /* Size of program header entry */ 
     1031+#define AT_PHNUM       5               /* Number of program headers */ 
     1032+#define AT_PAGESZ      6               /* System page size */ 
     1033+#define AT_BASE                7               /* Base address of interpreter */ 
     1034+#define AT_FLAGS       8               /* Flags */ 
     1035+#define AT_ENTRY       9               /* Entry point of program */ 
     1036+#define AT_NOTELF      10              /* Program is not ELF */ 
     1037+#define AT_UID         11              /* Real uid */ 
     1038+#define AT_EUID                12              /* Effective uid */ 
     1039+#define AT_GID         13              /* Real gid */ 
     1040+#define AT_EGID                14              /* Effective gid */ 
     1041+#define AT_CLKTCK      17              /* Frequency of times() */ 
     1042+ 
     1043+/* Some more special a_type values describing the hardware.  */ 
     1044+#define AT_PLATFORM    15              /* String identifying platform.  */ 
     1045+#define AT_HWCAP       16              /* Machine dependent hints about 
     1046+                                          processor capabilities.  */ 
     1047+ 
     1048+/* This entry gives some information about the FPU initialization 
     1049+   performed by the kernel.  */ 
     1050+#define AT_FPUCW       18              /* Used FPU control word.  */ 
     1051+ 
     1052+/* Cache block sizes.  */ 
     1053+#define AT_DCACHEBSIZE 19              /* Data cache block size.  */ 
     1054+#define AT_ICACHEBSIZE 20              /* Instruction cache block size.  */ 
     1055+#define AT_UCACHEBSIZE 21              /* Unified cache block size.  */ 
     1056+ 
     1057+/* A special ignored value for PPC, used by the kernel to control the 
     1058+   interpretation of the AUXV. Must be > 16.  */ 
     1059+#define AT_IGNOREPPC   22              /* Entry should be ignored.  */ 
     1060+ 
     1061+#define        AT_SECURE       23              /* Boolean, was exec setuid-like?  */ 
     1062+ 
     1063+#define AT_BASE_PLATFORM 24            /* String identifying real platforms.*/ 
     1064+ 
     1065+#define AT_RANDOM      25              /* Address of 16 random bytes.  */ 
     1066+ 
     1067+#define AT_EXECFN      31              /* Filename of executable.  */ 
     1068+ 
     1069+/* Pointer to the global system page used for system calls and other 
     1070+   nice things.  */ 
     1071+#define AT_SYSINFO     32 
     1072+#define AT_SYSINFO_EHDR        33 
     1073+ 
     1074+/* Shapes of the caches.  Bits 0-3 contains associativity; bits 4-7 contains 
     1075+   log2 of line size; mask those to get cache size.  */ 
     1076+#define AT_L1I_CACHESHAPE      34 
     1077+#define AT_L1D_CACHESHAPE      35 
     1078+#define AT_L2_CACHESHAPE       36 
     1079+#define AT_L3_CACHESHAPE       37 
     1080+ 
     1081+/* Note section contents.  Each entry in the note section begins with 
     1082+   a header of a fixed form.  */ 
     1083+ 
     1084+typedef struct 
     1085+{ 
     1086+  Elf32_Word n_namesz;                 /* Length of the note's name.  */ 
     1087+  Elf32_Word n_descsz;                 /* Length of the note's descriptor.  */ 
     1088+  Elf32_Word n_type;                   /* Type of the note.  */ 
     1089+} Elf32_Nhdr; 
     1090+ 
     1091+typedef struct 
     1092+{ 
     1093+  Elf64_Word n_namesz;                 /* Length of the note's name.  */ 
     1094+  Elf64_Word n_descsz;                 /* Length of the note's descriptor.  */ 
     1095+  Elf64_Word n_type;                   /* Type of the note.  */ 
     1096+} Elf64_Nhdr; 
     1097+ 
     1098+/* Known names of notes.  */ 
     1099+ 
     1100+/* Solaris entries in the note section have this name.  */ 
     1101+#define ELF_NOTE_SOLARIS       "SUNW Solaris" 
     1102+ 
     1103+/* Note entries for GNU systems have this name.  */ 
     1104+#define ELF_NOTE_GNU           "GNU" 
     1105+ 
     1106+ 
     1107+/* Defined types of notes for Solaris.  */ 
     1108+ 
     1109+/* Value of descriptor (one word) is desired pagesize for the binary.  */ 
     1110+#define ELF_NOTE_PAGESIZE_HINT 1 
     1111+ 
     1112+ 
     1113+/* Defined note types for GNU systems.  */ 
     1114+ 
     1115+/* ABI information.  The descriptor consists of words: 
     1116+   word 0: OS descriptor 
     1117+   word 1: major version of the ABI 
     1118+   word 2: minor version of the ABI 
     1119+   word 3: subminor version of the ABI 
     1120+*/ 
     1121+#define NT_GNU_ABI_TAG 1 
     1122+#define ELF_NOTE_ABI   NT_GNU_ABI_TAG /* Old name.  */ 
     1123+ 
     1124+/* Known OSes.  These values can appear in word 0 of an 
     1125+   NT_GNU_ABI_TAG note section entry.  */ 
     1126+#define ELF_NOTE_OS_LINUX      0 
     1127+#define ELF_NOTE_OS_GNU                1 
     1128+#define ELF_NOTE_OS_SOLARIS2   2 
     1129+#define ELF_NOTE_OS_FREEBSD    3 
     1130+ 
     1131+/* Synthetic hwcap information.  The descriptor begins with two words: 
     1132+   word 0: number of entries 
     1133+   word 1: bitmask of enabled entries 
     1134+   Then follow variable-length entries, one byte followed by a 
     1135+   '\0'-terminated hwcap name string.  The byte gives the bit 
     1136+   number to test if enabled, (1U << bit) & bitmask.  */ 
     1137+#define NT_GNU_HWCAP   2 
     1138+ 
     1139+/* Build ID bits as generated by ld --build-id. 
     1140+   The descriptor consists of any nonzero number of bytes.  */ 
     1141+#define NT_GNU_BUILD_ID        3 
     1142+ 
     1143+/* Version note generated by GNU gold containing a version string.  */ 
     1144+#define NT_GNU_GOLD_VERSION    4 
     1145+ 
     1146+ 
     1147+/* Move records.  */ 
     1148+typedef struct 
     1149+{ 
     1150+  Elf32_Xword m_value;         /* Symbol value.  */ 
     1151+  Elf32_Word m_info;           /* Size and index.  */ 
     1152+  Elf32_Word m_poffset;                /* Symbol offset.  */ 
     1153+  Elf32_Half m_repeat;         /* Repeat count.  */ 
     1154+  Elf32_Half m_stride;         /* Stride info.  */ 
     1155+} Elf32_Move; 
     1156+ 
     1157+typedef struct 
     1158+{ 
     1159+  Elf64_Xword m_value;         /* Symbol value.  */ 
     1160+  Elf64_Xword m_info;          /* Size and index.  */ 
     1161+  Elf64_Xword m_poffset;       /* Symbol offset.  */ 
     1162+  Elf64_Half m_repeat;         /* Repeat count.  */ 
     1163+  Elf64_Half m_stride;         /* Stride info.  */ 
     1164+} Elf64_Move; 
     1165+ 
     1166+/* Macro to construct move records.  */ 
     1167+#define ELF32_M_SYM(info)      ((info) >> 8) 
     1168+#define ELF32_M_SIZE(info)     ((unsigned char) (info)) 
     1169+#define ELF32_M_INFO(sym, size)        (((sym) << 8) + (unsigned char) (size)) 
     1170+ 
     1171+#define ELF64_M_SYM(info)      ELF32_M_SYM (info) 
     1172+#define ELF64_M_SIZE(info)     ELF32_M_SIZE (info) 
     1173+#define ELF64_M_INFO(sym, size)        ELF32_M_INFO (sym, size) 
     1174+ 
     1175+ 
     1176+/* Motorola 68k specific definitions.  */ 
     1177+ 
     1178+/* Values for Elf32_Ehdr.e_flags.  */ 
     1179+#define EF_CPU32       0x00810000 
     1180+ 
     1181+/* m68k relocs.  */ 
     1182+ 
     1183+#define R_68K_NONE     0               /* No reloc */ 
     1184+#define R_68K_32       1               /* Direct 32 bit  */ 
     1185+#define R_68K_16       2               /* Direct 16 bit  */ 
     1186+#define R_68K_8                3               /* Direct 8 bit  */ 
     1187+#define R_68K_PC32     4               /* PC relative 32 bit */ 
     1188+#define R_68K_PC16     5               /* PC relative 16 bit */ 
     1189+#define R_68K_PC8      6               /* PC relative 8 bit */ 
     1190+#define R_68K_GOT32    7               /* 32 bit PC relative GOT entry */ 
     1191+#define R_68K_GOT16    8               /* 16 bit PC relative GOT entry */ 
     1192+#define R_68K_GOT8     9               /* 8 bit PC relative GOT entry */ 
     1193+#define R_68K_GOT32O   10              /* 32 bit GOT offset */ 
     1194+#define R_68K_GOT16O   11              /* 16 bit GOT offset */ 
     1195+#define R_68K_GOT8O    12              /* 8 bit GOT offset */ 
     1196+#define R_68K_PLT32    13              /* 32 bit PC relative PLT address */ 
     1197+#define R_68K_PLT16    14              /* 16 bit PC relative PLT address */ 
     1198+#define R_68K_PLT8     15              /* 8 bit PC relative PLT address */ 
     1199+#define R_68K_PLT32O   16              /* 32 bit PLT offset */ 
     1200+#define R_68K_PLT16O   17              /* 16 bit PLT offset */ 
     1201+#define R_68K_PLT8O    18              /* 8 bit PLT offset */ 
     1202+#define R_68K_COPY     19              /* Copy symbol at runtime */ 
     1203+#define R_68K_GLOB_DAT 20              /* Create GOT entry */ 
     1204+#define R_68K_JMP_SLOT 21              /* Create PLT entry */ 
     1205+#define R_68K_RELATIVE 22              /* Adjust by program base */ 
     1206+#define R_68K_TLS_GD32      25          /* 32 bit GOT offset for GD */ 
     1207+#define R_68K_TLS_GD16      26          /* 16 bit GOT offset for GD */ 
     1208+#define R_68K_TLS_GD8       27          /* 8 bit GOT offset for GD */ 
     1209+#define R_68K_TLS_LDM32     28          /* 32 bit GOT offset for LDM */ 
     1210+#define R_68K_TLS_LDM16     29          /* 16 bit GOT offset for LDM */ 
     1211+#define R_68K_TLS_LDM8      30          /* 8 bit GOT offset for LDM */ 
     1212+#define R_68K_TLS_LDO32     31          /* 32 bit module-relative offset */ 
     1213+#define R_68K_TLS_LDO16     32          /* 16 bit module-relative offset */ 
     1214+#define R_68K_TLS_LDO8      33          /* 8 bit module-relative offset */ 
     1215+#define R_68K_TLS_IE32      34          /* 32 bit GOT offset for IE */ 
     1216+#define R_68K_TLS_IE16      35          /* 16 bit GOT offset for IE */ 
     1217+#define R_68K_TLS_IE8       36          /* 8 bit GOT offset for IE */ 
     1218+#define R_68K_TLS_LE32      37          /* 32 bit offset relative to 
     1219+                                          static TLS block */ 
     1220+#define R_68K_TLS_LE16      38          /* 16 bit offset relative to 
     1221+                                          static TLS block */ 
     1222+#define R_68K_TLS_LE8       39          /* 8 bit offset relative to 
     1223+                                          static TLS block */ 
     1224+#define R_68K_TLS_DTPMOD32  40          /* 32 bit module number */ 
     1225+#define R_68K_TLS_DTPREL32  41          /* 32 bit module-relative offset */ 
     1226+#define R_68K_TLS_TPREL32   42          /* 32 bit TP-relative offset */ 
     1227+/* Keep this the last entry.  */ 
     1228+#define R_68K_NUM      43 
     1229+ 
     1230+/* Intel 80386 specific definitions.  */ 
     1231+ 
     1232+/* i386 relocs.  */ 
     1233+ 
     1234+#define R_386_NONE        0            /* No reloc */ 
     1235+#define R_386_32          1            /* Direct 32 bit  */ 
     1236+#define R_386_PC32        2            /* PC relative 32 bit */ 
     1237+#define R_386_GOT32       3            /* 32 bit GOT entry */ 
     1238+#define R_386_PLT32       4            /* 32 bit PLT address */ 
     1239+#define R_386_COPY        5            /* Copy symbol at runtime */ 
     1240+#define R_386_GLOB_DAT    6            /* Create GOT entry */ 
     1241+#define R_386_JMP_SLOT    7            /* Create PLT entry */ 
     1242+#define R_386_RELATIVE    8            /* Adjust by program base */ 
     1243+#define R_386_GOTOFF      9            /* 32 bit offset to GOT */ 
     1244+#define R_386_GOTPC       10           /* 32 bit PC relative offset to GOT */ 
     1245+#define R_386_32PLT       11 
     1246+#define R_386_TLS_TPOFF           14           /* Offset in static TLS block */ 
     1247+#define R_386_TLS_IE      15           /* Address of GOT entry for static TLS 
     1248+                                          block offset */ 
     1249+#define R_386_TLS_GOTIE           16           /* GOT entry for static TLS block 
     1250+                                          offset */ 
     1251+#define R_386_TLS_LE      17           /* Offset relative to static TLS 
     1252+                                          block */ 
     1253+#define R_386_TLS_GD      18           /* Direct 32 bit for GNU version of 
     1254+                                          general dynamic thread local data */ 
     1255+#define R_386_TLS_LDM     19           /* Direct 32 bit for GNU version of 
     1256+                                          local dynamic thread local data 
     1257+                                          in LE code */ 
     1258+#define R_386_16          20 
     1259+#define R_386_PC16        21 
     1260+#define R_386_8                   22 
     1261+#define R_386_PC8         23 
     1262+#define R_386_TLS_GD_32           24           /* Direct 32 bit for general dynamic 
     1263+                                          thread local data */ 
     1264+#define R_386_TLS_GD_PUSH  25          /* Tag for pushl in GD TLS code */ 
     1265+#define R_386_TLS_GD_CALL  26          /* Relocation for call to 
     1266+                                          __tls_get_addr() */ 
     1267+#define R_386_TLS_GD_POP   27          /* Tag for popl in GD TLS code */ 
     1268+#define R_386_TLS_LDM_32   28          /* Direct 32 bit for local dynamic 
     1269+                                          thread local data in LE code */ 
     1270+#define R_386_TLS_LDM_PUSH 29          /* Tag for pushl in LDM TLS code */ 
     1271+#define R_386_TLS_LDM_CALL 30          /* Relocation for call to 
     1272+                                          __tls_get_addr() in LDM code */ 
     1273+#define R_386_TLS_LDM_POP  31          /* Tag for popl in LDM TLS code */ 
     1274+#define R_386_TLS_LDO_32   32          /* Offset relative to TLS block */ 
     1275+#define R_386_TLS_IE_32           33           /* GOT entry for negated static TLS 
     1276+                                          block offset */ 
     1277+#define R_386_TLS_LE_32           34           /* Negated offset relative to static 
     1278+                                          TLS block */ 
     1279+#define R_386_TLS_DTPMOD32 35          /* ID of module containing symbol */ 
     1280+#define R_386_TLS_DTPOFF32 36          /* Offset in TLS block */ 
     1281+#define R_386_TLS_TPOFF32  37          /* Negated offset in static TLS block */ 
     1282+/* 38? */ 
     1283+#define R_386_TLS_GOTDESC  39          /* GOT offset for TLS descriptor.  */ 
     1284+#define R_386_TLS_DESC_CALL 40         /* Marker of call through TLS 
     1285+                                          descriptor for 
     1286+                                          relaxation.  */ 
     1287+#define R_386_TLS_DESC     41          /* TLS descriptor containing 
     1288+                                          pointer to code and to 
     1289+                                          argument, returning the TLS 
     1290+                                          offset for the symbol.  */ 
     1291+#define R_386_IRELATIVE           42           /* Adjust indirectly by program base */ 
     1292+/* Keep this the last entry.  */ 
     1293+#define R_386_NUM         43 
     1294+ 
     1295+/* SUN SPARC specific definitions.  */ 
     1296+ 
     1297+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     1298+ 
     1299+#define STT_SPARC_REGISTER     13      /* Global register reserved to app. */ 
     1300+ 
     1301+/* Values for Elf64_Ehdr.e_flags.  */ 
     1302+ 
     1303+#define EF_SPARCV9_MM          3 
     1304+#define EF_SPARCV9_TSO         0 
     1305+#define EF_SPARCV9_PSO         1 
     1306+#define EF_SPARCV9_RMO         2 
     1307+#define EF_SPARC_LEDATA                0x800000 /* little endian data */ 
     1308+#define EF_SPARC_EXT_MASK      0xFFFF00 
     1309+#define EF_SPARC_32PLUS                0x000100 /* generic V8+ features */ 
     1310+#define EF_SPARC_SUN_US1       0x000200 /* Sun UltraSPARC1 extensions */ 
     1311+#define EF_SPARC_HAL_R1                0x000400 /* HAL R1 extensions */ 
     1312+#define EF_SPARC_SUN_US3       0x000800 /* Sun UltraSPARCIII extensions */ 
     1313+ 
     1314+/* SPARC relocs.  */ 
     1315+ 
     1316+#define R_SPARC_NONE           0       /* No reloc */ 
     1317+#define R_SPARC_8              1       /* Direct 8 bit */ 
     1318+#define R_SPARC_16             2       /* Direct 16 bit */ 
     1319+#define R_SPARC_32             3       /* Direct 32 bit */ 
     1320+#define R_SPARC_DISP8          4       /* PC relative 8 bit */ 
     1321+#define R_SPARC_DISP16         5       /* PC relative 16 bit */ 
     1322+#define R_SPARC_DISP32         6       /* PC relative 32 bit */ 
     1323+#define R_SPARC_WDISP30                7       /* PC relative 30 bit shifted */ 
     1324+#define R_SPARC_WDISP22                8       /* PC relative 22 bit shifted */ 
     1325+#define R_SPARC_HI22           9       /* High 22 bit */ 
     1326+#define R_SPARC_22             10      /* Direct 22 bit */ 
     1327+#define R_SPARC_13             11      /* Direct 13 bit */ 
     1328+#define R_SPARC_LO10           12      /* Truncated 10 bit */ 
     1329+#define R_SPARC_GOT10          13      /* Truncated 10 bit GOT entry */ 
     1330+#define R_SPARC_GOT13          14      /* 13 bit GOT entry */ 
     1331+#define R_SPARC_GOT22          15      /* 22 bit GOT entry shifted */ 
     1332+#define R_SPARC_PC10           16      /* PC relative 10 bit truncated */ 
     1333+#define R_SPARC_PC22           17      /* PC relative 22 bit shifted */ 
     1334+#define R_SPARC_WPLT30         18      /* 30 bit PC relative PLT address */ 
     1335+#define R_SPARC_COPY           19      /* Copy symbol at runtime */ 
     1336+#define R_SPARC_GLOB_DAT       20      /* Create GOT entry */ 
     1337+#define R_SPARC_JMP_SLOT       21      /* Create PLT entry */ 
     1338+#define R_SPARC_RELATIVE       22      /* Adjust by program base */ 
     1339+#define R_SPARC_UA32           23      /* Direct 32 bit unaligned */ 
     1340+ 
     1341+/* Additional Sparc64 relocs.  */ 
     1342+ 
     1343+#define R_SPARC_PLT32          24      /* Direct 32 bit ref to PLT entry */ 
     1344+#define R_SPARC_HIPLT22                25      /* High 22 bit PLT entry */ 
     1345+#define R_SPARC_LOPLT10                26      /* Truncated 10 bit PLT entry */ 
     1346+#define R_SPARC_PCPLT32                27      /* PC rel 32 bit ref to PLT entry */ 
     1347+#define R_SPARC_PCPLT22                28      /* PC rel high 22 bit PLT entry */ 
     1348+#define R_SPARC_PCPLT10                29      /* PC rel trunc 10 bit PLT entry */ 
     1349+#define R_SPARC_10             30      /* Direct 10 bit */ 
     1350+#define R_SPARC_11             31      /* Direct 11 bit */ 
     1351+#define R_SPARC_64             32      /* Direct 64 bit */ 
     1352+#define R_SPARC_OLO10          33      /* 10bit with secondary 13bit addend */ 
     1353+#define R_SPARC_HH22           34      /* Top 22 bits of direct 64 bit */ 
     1354+#define R_SPARC_HM10           35      /* High middle 10 bits of ... */ 
     1355+#define R_SPARC_LM22           36      /* Low middle 22 bits of ... */ 
     1356+#define R_SPARC_PC_HH22                37      /* Top 22 bits of pc rel 64 bit */ 
     1357+#define R_SPARC_PC_HM10                38      /* High middle 10 bit of ... */ 
     1358+#define R_SPARC_PC_LM22                39      /* Low miggle 22 bits of ... */ 
     1359+#define R_SPARC_WDISP16                40      /* PC relative 16 bit shifted */ 
     1360+#define R_SPARC_WDISP19                41      /* PC relative 19 bit shifted */ 
     1361+#define R_SPARC_GLOB_JMP       42      /* was part of v9 ABI but was removed */ 
     1362+#define R_SPARC_7              43      /* Direct 7 bit */ 
     1363+#define R_SPARC_5              44      /* Direct 5 bit */ 
     1364+#define R_SPARC_6              45      /* Direct 6 bit */ 
     1365+#define R_SPARC_DISP64         46      /* PC relative 64 bit */ 
     1366+#define R_SPARC_PLT64          47      /* Direct 64 bit ref to PLT entry */ 
     1367+#define R_SPARC_HIX22          48      /* High 22 bit complemented */ 
     1368+#define R_SPARC_LOX10          49      /* Truncated 11 bit complemented */ 
     1369+#define R_SPARC_H44            50      /* Direct high 12 of 44 bit */ 
     1370+#define R_SPARC_M44            51      /* Direct mid 22 of 44 bit */ 
     1371+#define R_SPARC_L44            52      /* Direct low 10 of 44 bit */ 
     1372+#define R_SPARC_REGISTER       53      /* Global register usage */ 
     1373+#define R_SPARC_UA64           54      /* Direct 64 bit unaligned */ 
     1374+#define R_SPARC_UA16           55      /* Direct 16 bit unaligned */ 
     1375+#define R_SPARC_TLS_GD_HI22    56 
     1376+#define R_SPARC_TLS_GD_LO10    57 
     1377+#define R_SPARC_TLS_GD_ADD     58 
     1378+#define R_SPARC_TLS_GD_CALL    59 
     1379+#define R_SPARC_TLS_LDM_HI22   60 
     1380+#define R_SPARC_TLS_LDM_LO10   61 
     1381+#define R_SPARC_TLS_LDM_ADD    62 
     1382+#define R_SPARC_TLS_LDM_CALL   63 
     1383+#define R_SPARC_TLS_LDO_HIX22  64 
     1384+#define R_SPARC_TLS_LDO_LOX10  65 
     1385+#define R_SPARC_TLS_LDO_ADD    66 
     1386+#define R_SPARC_TLS_IE_HI22    67 
     1387+#define R_SPARC_TLS_IE_LO10    68 
     1388+#define R_SPARC_TLS_IE_LD      69 
     1389+#define R_SPARC_TLS_IE_LDX     70 
     1390+#define R_SPARC_TLS_IE_ADD     71 
     1391+#define R_SPARC_TLS_LE_HIX22   72 
     1392+#define R_SPARC_TLS_LE_LOX10   73 
     1393+#define R_SPARC_TLS_DTPMOD32   74 
     1394+#define R_SPARC_TLS_DTPMOD64   75 
     1395+#define R_SPARC_TLS_DTPOFF32   76 
     1396+#define R_SPARC_TLS_DTPOFF64   77 
     1397+#define R_SPARC_TLS_TPOFF32    78 
     1398+#define R_SPARC_TLS_TPOFF64    79 
     1399+#define R_SPARC_GOTDATA_HIX22  80 
     1400+#define R_SPARC_GOTDATA_LOX10  81 
     1401+#define R_SPARC_GOTDATA_OP_HIX22       82 
     1402+#define R_SPARC_GOTDATA_OP_LOX10       83 
     1403+#define R_SPARC_GOTDATA_OP     84 
     1404+#define R_SPARC_H34            85 
     1405+#define R_SPARC_SIZE32         86 
     1406+#define R_SPARC_SIZE64         87 
     1407+#define R_SPARC_WDISP10                88 
     1408+#define R_SPARC_JMP_IREL       248 
     1409+#define R_SPARC_IRELATIVE      249 
     1410+#define R_SPARC_GNU_VTINHERIT  250 
     1411+#define R_SPARC_GNU_VTENTRY    251 
     1412+#define R_SPARC_REV32          252 
     1413+/* Keep this the last entry.  */ 
     1414+#define R_SPARC_NUM            253 
     1415+ 
     1416+/* For Sparc64, legal values for d_tag of Elf64_Dyn.  */ 
     1417+ 
     1418+#define DT_SPARC_REGISTER 0x70000001 
     1419+#define DT_SPARC_NUM   2 
     1420+ 
     1421+/* MIPS R3000 specific definitions.  */ 
     1422+ 
     1423+/* Legal values for e_flags field of Elf32_Ehdr.  */ 
     1424+ 
     1425+#define EF_MIPS_NOREORDER   1          /* A .noreorder directive was used */ 
     1426+#define EF_MIPS_PIC        2           /* Contains PIC code */ 
     1427+#define EF_MIPS_CPIC       4           /* Uses PIC calling sequence */ 
     1428+#define EF_MIPS_XGOT       8 
     1429+#define EF_MIPS_64BIT_WHIRL 16 
     1430+#define EF_MIPS_ABI2       32 
     1431+#define EF_MIPS_ABI_ON32    64 
     1432+#define EF_MIPS_ARCH       0xf0000000  /* MIPS architecture level */ 
     1433+ 
     1434+/* Legal values for MIPS architecture level.  */ 
     1435+ 
     1436+#define EF_MIPS_ARCH_1     0x00000000  /* -mips1 code.  */ 
     1437+#define EF_MIPS_ARCH_2     0x10000000  /* -mips2 code.  */ 
     1438+#define EF_MIPS_ARCH_3     0x20000000  /* -mips3 code.  */ 
     1439+#define EF_MIPS_ARCH_4     0x30000000  /* -mips4 code.  */ 
     1440+#define EF_MIPS_ARCH_5     0x40000000  /* -mips5 code.  */ 
     1441+#define EF_MIPS_ARCH_32            0x60000000  /* MIPS32 code.  */ 
     1442+#define EF_MIPS_ARCH_64            0x70000000  /* MIPS64 code.  */ 
     1443+ 
     1444+/* The following are non-official names and should not be used.  */ 
     1445+ 
     1446+#define E_MIPS_ARCH_1    0x00000000    /* -mips1 code.  */ 
     1447+#define E_MIPS_ARCH_2    0x10000000    /* -mips2 code.  */ 
     1448+#define E_MIPS_ARCH_3    0x20000000    /* -mips3 code.  */ 
     1449+#define E_MIPS_ARCH_4    0x30000000    /* -mips4 code.  */ 
     1450+#define E_MIPS_ARCH_5    0x40000000    /* -mips5 code.  */ 
     1451+#define E_MIPS_ARCH_32   0x60000000    /* MIPS32 code.  */ 
     1452+#define E_MIPS_ARCH_64   0x70000000    /* MIPS64 code.  */ 
     1453+ 
     1454+/* Special section indices.  */ 
     1455+ 
     1456+#define SHN_MIPS_ACOMMON    0xff00     /* Allocated common symbols */ 
     1457+#define SHN_MIPS_TEXT      0xff01      /* Allocated test symbols.  */ 
     1458+#define SHN_MIPS_DATA      0xff02      /* Allocated data symbols.  */ 
     1459+#define SHN_MIPS_SCOMMON    0xff03     /* Small common symbols */ 
     1460+#define SHN_MIPS_SUNDEFINED 0xff04     /* Small undefined symbols */ 
     1461+ 
     1462+/* Legal values for sh_type field of Elf32_Shdr.  */ 
     1463+ 
     1464+#define SHT_MIPS_LIBLIST       0x70000000 /* Shared objects used in link */ 
     1465+#define SHT_MIPS_MSYM         0x70000001 
     1466+#define SHT_MIPS_CONFLICT      0x70000002 /* Conflicting symbols */ 
     1467+#define SHT_MIPS_GPTAB        0x70000003 /* Global data area sizes */ 
     1468+#define SHT_MIPS_UCODE        0x70000004 /* Reserved for SGI/MIPS compilers */ 
     1469+#define SHT_MIPS_DEBUG        0x70000005 /* MIPS ECOFF debugging information*/ 
     1470+#define SHT_MIPS_REGINFO       0x70000006 /* Register usage information */ 
     1471+#define SHT_MIPS_PACKAGE       0x70000007 
     1472+#define SHT_MIPS_PACKSYM       0x70000008 
     1473+#define SHT_MIPS_RELD         0x70000009 
     1474+#define SHT_MIPS_IFACE         0x7000000b 
     1475+#define SHT_MIPS_CONTENT       0x7000000c 
     1476+#define SHT_MIPS_OPTIONS       0x7000000d /* Miscellaneous options.  */ 
     1477+#define SHT_MIPS_SHDR         0x70000010 
     1478+#define SHT_MIPS_FDESC        0x70000011 
     1479+#define SHT_MIPS_EXTSYM               0x70000012 
     1480+#define SHT_MIPS_DENSE        0x70000013 
     1481+#define SHT_MIPS_PDESC        0x70000014 
     1482+#define SHT_MIPS_LOCSYM               0x70000015 
     1483+#define SHT_MIPS_AUXSYM               0x70000016 
     1484+#define SHT_MIPS_OPTSYM               0x70000017 
     1485+#define SHT_MIPS_LOCSTR               0x70000018 
     1486+#define SHT_MIPS_LINE         0x70000019 
     1487+#define SHT_MIPS_RFDESC               0x7000001a 
     1488+#define SHT_MIPS_DELTASYM      0x7000001b 
     1489+#define SHT_MIPS_DELTAINST     0x7000001c 
     1490+#define SHT_MIPS_DELTACLASS    0x7000001d 
     1491+#define SHT_MIPS_DWARF         0x7000001e /* DWARF debugging information.  */ 
     1492+#define SHT_MIPS_DELTADECL     0x7000001f 
     1493+#define SHT_MIPS_SYMBOL_LIB    0x70000020 
     1494+#define SHT_MIPS_EVENTS               0x70000021 /* Event section.  */ 
     1495+#define SHT_MIPS_TRANSLATE     0x70000022 
     1496+#define SHT_MIPS_PIXIE        0x70000023 
     1497+#define SHT_MIPS_XLATE        0x70000024 
     1498+#define SHT_MIPS_XLATE_DEBUG   0x70000025 
     1499+#define SHT_MIPS_WHIRL        0x70000026 
     1500+#define SHT_MIPS_EH_REGION     0x70000027 
     1501+#define SHT_MIPS_XLATE_OLD     0x70000028 
     1502+#define SHT_MIPS_PDR_EXCEPTION 0x70000029 
     1503+ 
     1504+/* Legal values for sh_flags field of Elf32_Shdr.  */ 
     1505+ 
     1506+#define SHF_MIPS_GPREL  0x10000000     /* Must be part of global data area */ 
     1507+#define SHF_MIPS_MERGE  0x20000000 
     1508+#define SHF_MIPS_ADDR   0x40000000 
     1509+#define SHF_MIPS_STRINGS 0x80000000 
     1510+#define SHF_MIPS_NOSTRIP 0x08000000 
     1511+#define SHF_MIPS_LOCAL  0x04000000 
     1512+#define SHF_MIPS_NAMES  0x02000000 
     1513+#define SHF_MIPS_NODUPE         0x01000000 
     1514+ 
     1515+ 
     1516+/* Symbol tables.  */ 
     1517+ 
     1518+/* MIPS specific values for `st_other'.  */ 
     1519+#define STO_MIPS_DEFAULT               0x0 
     1520+#define STO_MIPS_INTERNAL              0x1 
     1521+#define STO_MIPS_HIDDEN                        0x2 
     1522+#define STO_MIPS_PROTECTED             0x3 
     1523+#define STO_MIPS_PLT                   0x8 
     1524+#define STO_MIPS_SC_ALIGN_UNUSED       0xff 
     1525+ 
     1526+/* MIPS specific values for `st_info'.  */ 
     1527+#define STB_MIPS_SPLIT_COMMON          13 
     1528+ 
     1529+/* Entries found in sections of type SHT_MIPS_GPTAB.  */ 
     1530+ 
     1531+typedef union 
     1532+{ 
     1533+  struct 
     1534+    { 
     1535+      Elf32_Word gt_current_g_value;   /* -G value used for compilation */ 
     1536+      Elf32_Word gt_unused;            /* Not used */ 
     1537+    } gt_header;                       /* First entry in section */ 
     1538+  struct 
     1539+    { 
     1540+      Elf32_Word gt_g_value;           /* If this value were used for -G */ 
     1541+      Elf32_Word gt_bytes;             /* This many bytes would be used */ 
     1542+    } gt_entry;                                /* Subsequent entries in section */ 
     1543+} Elf32_gptab; 
     1544+ 
     1545+/* Entry found in sections of type SHT_MIPS_REGINFO.  */ 
     1546+ 
     1547+typedef struct 
     1548+{ 
     1549+  Elf32_Word   ri_gprmask;             /* General registers used */ 
     1550+  Elf32_Word   ri_cprmask[4];          /* Coprocessor registers used */ 
     1551+  Elf32_Sword  ri_gp_value;            /* $gp register value */ 
     1552+} Elf32_RegInfo; 
     1553+ 
     1554+/* Entries found in sections of type SHT_MIPS_OPTIONS.  */ 
     1555+ 
     1556+typedef struct 
     1557+{ 
     1558+  unsigned char kind;          /* Determines interpretation of the 
     1559+                                  variable part of descriptor.  */ 
     1560+  unsigned char size;          /* Size of descriptor, including header.  */ 
     1561+  Elf32_Section section;       /* Section header index of section affected, 
     1562+                                  0 for global options.  */ 
     1563+  Elf32_Word info;             /* Kind-specific information.  */ 
     1564+} Elf_Options; 
     1565+ 
     1566+/* Values for `kind' field in Elf_Options.  */ 
     1567+ 
     1568+#define ODK_NULL       0       /* Undefined.  */ 
     1569+#define ODK_REGINFO    1       /* Register usage information.  */ 
     1570+#define ODK_EXCEPTIONS 2       /* Exception processing options.  */ 
     1571+#define ODK_PAD                3       /* Section padding options.  */ 
     1572+#define ODK_HWPATCH    4       /* Hardware workarounds performed */ 
     1573+#define ODK_FILL       5       /* record the fill value used by the linker. */ 
     1574+#define ODK_TAGS       6       /* reserve space for desktop tools to write. */ 
     1575+#define ODK_HWAND      7       /* HW workarounds.  'AND' bits when merging. */ 
     1576+#define ODK_HWOR       8       /* HW workarounds.  'OR' bits when merging.  */ 
     1577+ 
     1578+/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries.  */ 
     1579+ 
     1580+#define OEX_FPU_MIN    0x1f    /* FPE's which MUST be enabled.  */ 
     1581+#define OEX_FPU_MAX    0x1f00  /* FPE's which MAY be enabled.  */ 
     1582+#define OEX_PAGE0      0x10000 /* page zero must be mapped.  */ 
     1583+#define OEX_SMM                0x20000 /* Force sequential memory mode?  */ 
     1584+#define OEX_FPDBUG     0x40000 /* Force floating point debug mode?  */ 
     1585+#define OEX_PRECISEFP  OEX_FPDBUG 
     1586+#define OEX_DISMISS    0x80000 /* Dismiss invalid address faults?  */ 
     1587+ 
     1588+#define OEX_FPU_INVAL  0x10 
     1589+#define OEX_FPU_DIV0   0x08 
     1590+#define OEX_FPU_OFLO   0x04 
     1591+#define OEX_FPU_UFLO   0x02 
     1592+#define OEX_FPU_INEX   0x01 
     1593+ 
     1594+/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry.  */ 
     1595+ 
     1596+#define OHW_R4KEOP     0x1     /* R4000 end-of-page patch.  */ 
     1597+#define OHW_R8KPFETCH  0x2     /* may need R8000 prefetch patch.  */ 
     1598+#define OHW_R5KEOP     0x4     /* R5000 end-of-page patch.  */ 
     1599+#define OHW_R5KCVTL    0x8     /* R5000 cvt.[ds].l bug.  clean=1.  */ 
     1600+ 
     1601+#define OPAD_PREFIX    0x1 
     1602+#define OPAD_POSTFIX   0x2 
     1603+#define OPAD_SYMBOL    0x4 
     1604+ 
     1605+/* Entry found in `.options' section.  */ 
     1606+ 
     1607+typedef struct 
     1608+{ 
     1609+  Elf32_Word hwp_flags1;       /* Extra flags.  */ 
     1610+  Elf32_Word hwp_flags2;       /* Extra flags.  */ 
     1611+} Elf_Options_Hw; 
     1612+ 
     1613+/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries.  */ 
     1614+ 
     1615+#define OHWA0_R4KEOP_CHECKED   0x00000001 
     1616+#define OHWA1_R4KEOP_CLEAN     0x00000002 
     1617+ 
     1618+/* MIPS relocs.  */ 
     1619+ 
     1620+#define R_MIPS_NONE            0       /* No reloc */ 
     1621+#define R_MIPS_16              1       /* Direct 16 bit */ 
     1622+#define R_MIPS_32              2       /* Direct 32 bit */ 
     1623+#define R_MIPS_REL32           3       /* PC relative 32 bit */ 
     1624+#define R_MIPS_26              4       /* Direct 26 bit shifted */ 
     1625+#define R_MIPS_HI16            5       /* High 16 bit */ 
     1626+#define R_MIPS_LO16            6       /* Low 16 bit */ 
     1627+#define R_MIPS_GPREL16         7       /* GP relative 16 bit */ 
     1628+#define R_MIPS_LITERAL         8       /* 16 bit literal entry */ 
     1629+#define R_MIPS_GOT16           9       /* 16 bit GOT entry */ 
     1630+#define R_MIPS_PC16            10      /* PC relative 16 bit */ 
     1631+#define R_MIPS_CALL16          11      /* 16 bit GOT entry for function */ 
     1632+#define R_MIPS_GPREL32         12      /* GP relative 32 bit */ 
     1633+ 
     1634+#define R_MIPS_SHIFT5          16 
     1635+#define R_MIPS_SHIFT6          17 
     1636+#define R_MIPS_64              18 
     1637+#define R_MIPS_GOT_DISP                19 
     1638+#define R_MIPS_GOT_PAGE                20 
     1639+#define R_MIPS_GOT_OFST                21 
     1640+#define R_MIPS_GOT_HI16                22 
     1641+#define R_MIPS_GOT_LO16                23 
     1642+#define R_MIPS_SUB             24 
     1643+#define R_MIPS_INSERT_A                25 
     1644+#define R_MIPS_INSERT_B                26 
     1645+#define R_MIPS_DELETE          27 
     1646+#define R_MIPS_HIGHER          28 
     1647+#define R_MIPS_HIGHEST         29 
     1648+#define R_MIPS_CALL_HI16       30 
     1649+#define R_MIPS_CALL_LO16       31 
     1650+#define R_MIPS_SCN_DISP                32 
     1651+#define R_MIPS_REL16           33 
     1652+#define R_MIPS_ADD_IMMEDIATE   34 
     1653+#define R_MIPS_PJUMP           35 
     1654+#define R_MIPS_RELGOT          36 
     1655+#define R_MIPS_JALR            37 
     1656+#define R_MIPS_TLS_DTPMOD32    38      /* Module number 32 bit */ 
     1657+#define R_MIPS_TLS_DTPREL32    39      /* Module-relative offset 32 bit */ 
     1658+#define R_MIPS_TLS_DTPMOD64    40      /* Module number 64 bit */ 
     1659+#define R_MIPS_TLS_DTPREL64    41      /* Module-relative offset 64 bit */ 
     1660+#define R_MIPS_TLS_GD          42      /* 16 bit GOT offset for GD */ 
     1661+#define R_MIPS_TLS_LDM         43      /* 16 bit GOT offset for LDM */ 
     1662+#define R_MIPS_TLS_DTPREL_HI16 44      /* Module-relative offset, high 16 bits */ 
     1663+#define R_MIPS_TLS_DTPREL_LO16 45      /* Module-relative offset, low 16 bits */ 
     1664+#define R_MIPS_TLS_GOTTPREL    46      /* 16 bit GOT offset for IE */ 
     1665+#define R_MIPS_TLS_TPREL32     47      /* TP-relative offset, 32 bit */ 
     1666+#define R_MIPS_TLS_TPREL64     48      /* TP-relative offset, 64 bit */ 
     1667+#define R_MIPS_TLS_TPREL_HI16  49      /* TP-relative offset, high 16 bits */ 
     1668+#define R_MIPS_TLS_TPREL_LO16  50      /* TP-relative offset, low 16 bits */ 
     1669+#define R_MIPS_GLOB_DAT                51 
     1670+#define R_MIPS_COPY            126 
     1671+#define R_MIPS_JUMP_SLOT        127 
     1672+/* Keep this the last entry.  */ 
     1673+#define R_MIPS_NUM             128 
     1674+ 
     1675+/* Legal values for p_type field of Elf32_Phdr.  */ 
     1676+ 
     1677+#define PT_MIPS_REGINFO        0x70000000      /* Register usage information */ 
     1678+#define PT_MIPS_RTPROC  0x70000001     /* Runtime procedure table. */ 
     1679+#define PT_MIPS_OPTIONS 0x70000002 
     1680+ 
     1681+/* Special program header types.  */ 
     1682+ 
     1683+#define PF_MIPS_LOCAL  0x10000000 
     1684+ 
     1685+/* Legal values for d_tag field of Elf32_Dyn.  */ 
     1686+ 
     1687+#define DT_MIPS_RLD_VERSION  0x70000001        /* Runtime linker interface version */ 
     1688+#define DT_MIPS_TIME_STAMP   0x70000002        /* Timestamp */ 
     1689+#define DT_MIPS_ICHECKSUM    0x70000003        /* Checksum */ 
     1690+#define DT_MIPS_IVERSION     0x70000004        /* Version string (string tbl index) */ 
     1691+#define DT_MIPS_FLAGS       0x70000005 /* Flags */ 
     1692+#define DT_MIPS_BASE_ADDRESS 0x70000006        /* Base address */ 
     1693+#define DT_MIPS_MSYM        0x70000007 
     1694+#define DT_MIPS_CONFLICT     0x70000008        /* Address of CONFLICT section */ 
     1695+#define DT_MIPS_LIBLIST             0x70000009 /* Address of LIBLIST section */ 
     1696+#define DT_MIPS_LOCAL_GOTNO  0x7000000a        /* Number of local GOT entries */ 
     1697+#define DT_MIPS_CONFLICTNO   0x7000000b        /* Number of CONFLICT entries */ 
     1698+#define DT_MIPS_LIBLISTNO    0x70000010        /* Number of LIBLIST entries */ 
     1699+#define DT_MIPS_SYMTABNO     0x70000011        /* Number of DYNSYM entries */ 
     1700+#define DT_MIPS_UNREFEXTNO   0x70000012        /* First external DYNSYM */ 
     1701+#define DT_MIPS_GOTSYM      0x70000013 /* First GOT entry in DYNSYM */ 
     1702+#define DT_MIPS_HIPAGENO     0x70000014        /* Number of GOT page table entries */ 
     1703+#define DT_MIPS_RLD_MAP             0x70000016 /* Address of run time loader map.  */ 
     1704+#define DT_MIPS_DELTA_CLASS  0x70000017        /* Delta C++ class definition.  */ 
     1705+#define DT_MIPS_DELTA_CLASS_NO    0x70000018 /* Number of entries in 
     1706+                                               DT_MIPS_DELTA_CLASS.  */ 
     1707+#define DT_MIPS_DELTA_INSTANCE    0x70000019 /* Delta C++ class instances.  */ 
     1708+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in 
     1709+                                               DT_MIPS_DELTA_INSTANCE.  */ 
     1710+#define DT_MIPS_DELTA_RELOC  0x7000001b /* Delta relocations.  */ 
     1711+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in 
     1712+                                            DT_MIPS_DELTA_RELOC.  */ 
     1713+#define DT_MIPS_DELTA_SYM    0x7000001d /* Delta symbols that Delta 
     1714+                                          relocations refer to.  */ 
     1715+#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in 
     1716+                                          DT_MIPS_DELTA_SYM.  */ 
     1717+#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the 
     1718+                                            class declaration.  */ 
     1719+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in 
     1720+                                               DT_MIPS_DELTA_CLASSSYM.  */ 
     1721+#define DT_MIPS_CXX_FLAGS    0x70000022 /* Flags indicating for C++ flavor.  */ 
     1722+#define DT_MIPS_PIXIE_INIT   0x70000023 
     1723+#define DT_MIPS_SYMBOL_LIB   0x70000024 
     1724+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 
     1725+#define DT_MIPS_LOCAL_GOTIDX 0x70000026 
     1726+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 
     1727+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 
     1728+#define DT_MIPS_OPTIONS             0x70000029 /* Address of .options.  */ 
     1729+#define DT_MIPS_INTERFACE    0x7000002a /* Address of .interface.  */ 
     1730+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b 
     1731+#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */ 
     1732+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve 
     1733+                                                   function stored in GOT.  */ 
     1734+#define DT_MIPS_PERF_SUFFIX  0x7000002e /* Default suffix of dso to be added 
     1735+                                          by rld on dlopen() calls.  */ 
     1736+#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */ 
     1737+#define DT_MIPS_GP_VALUE     0x70000030 /* GP value for aux GOTs.  */ 
     1738+#define DT_MIPS_AUX_DYNAMIC  0x70000031 /* Address of aux .dynamic.  */ 
     1739+/* The address of .got.plt in an executable using the new non-PIC ABI.  */ 
     1740+#define DT_MIPS_PLTGOT      0x70000032 
     1741+/* The base of the PLT in an executable using the new non-PIC ABI if that 
     1742+   PLT is writable.  For a non-writable PLT, this is omitted or has a zero 
     1743+   value.  */ 
     1744+#define DT_MIPS_RWPLT        0x70000034 
     1745+#define DT_MIPS_NUM         0x35 
     1746+ 
     1747+/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */ 
     1748+ 
     1749+#define RHF_NONE                  0            /* No flags */ 
     1750+#define RHF_QUICKSTART            (1 << 0)     /* Use quickstart */ 
     1751+#define RHF_NOTPOT                (1 << 1)     /* Hash size not power of 2 */ 
     1752+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)    /* Ignore LD_LIBRARY_PATH */ 
     1753+#define RHF_NO_MOVE               (1 << 3) 
     1754+#define RHF_SGI_ONLY              (1 << 4) 
     1755+#define RHF_GUARANTEE_INIT        (1 << 5) 
     1756+#define RHF_DELTA_C_PLUS_PLUS     (1 << 6) 
     1757+#define RHF_GUARANTEE_START_INIT   (1 << 7) 
     1758+#define RHF_PIXIE                 (1 << 8) 
     1759+#define RHF_DEFAULT_DELAY_LOAD    (1 << 9) 
     1760+#define RHF_REQUICKSTART          (1 << 10) 
     1761+#define RHF_REQUICKSTARTED        (1 << 11) 
     1762+#define RHF_CORD                  (1 << 12) 
     1763+#define RHF_NO_UNRES_UNDEF        (1 << 13) 
     1764+#define RHF_RLD_ORDER_SAFE        (1 << 14) 
     1765+ 
     1766+/* Entries found in sections of type SHT_MIPS_LIBLIST.  */ 
     1767+ 
     1768+typedef struct 
     1769+{ 
     1770+  Elf32_Word l_name;           /* Name (string table index) */ 
     1771+  Elf32_Word l_time_stamp;     /* Timestamp */ 
     1772+  Elf32_Word l_checksum;       /* Checksum */ 
     1773+  Elf32_Word l_version;                /* Interface version */ 
     1774+  Elf32_Word l_flags;          /* Flags */ 
     1775+} Elf32_Lib; 
     1776+ 
     1777+typedef struct 
     1778+{ 
     1779+  Elf64_Word l_name;           /* Name (string table index) */ 
     1780+  Elf64_Word l_time_stamp;     /* Timestamp */ 
     1781+  Elf64_Word l_checksum;       /* Checksum */ 
     1782+  Elf64_Word l_version;                /* Interface version */ 
     1783+  Elf64_Word l_flags;          /* Flags */ 
     1784+} Elf64_Lib; 
     1785+ 
     1786+ 
     1787+/* Legal values for l_flags.  */ 
     1788+ 
     1789+#define LL_NONE                  0 
     1790+#define LL_EXACT_MATCH   (1 << 0)      /* Require exact match */ 
     1791+#define LL_IGNORE_INT_VER (1 << 1)     /* Ignore interface version */ 
     1792+#define LL_REQUIRE_MINOR  (1 << 2) 
     1793+#define LL_EXPORTS       (1 << 3) 
     1794+#define LL_DELAY_LOAD    (1 << 4) 
     1795+#define LL_DELTA         (1 << 5) 
     1796+ 
     1797+/* Entries found in sections of type SHT_MIPS_CONFLICT.  */ 
     1798+ 
     1799+typedef Elf32_Addr Elf32_Conflict; 
     1800+ 
     1801+ 
     1802+/* HPPA specific definitions.  */ 
     1803+ 
     1804+/* Legal values for e_flags field of Elf32_Ehdr.  */ 
     1805+ 
     1806+#define EF_PARISC_TRAPNIL      0x00010000 /* Trap nil pointer dereference.  */ 
     1807+#define EF_PARISC_EXT          0x00020000 /* Program uses arch. extensions. */ 
     1808+#define EF_PARISC_LSB          0x00040000 /* Program expects little endian. */ 
     1809+#define EF_PARISC_WIDE         0x00080000 /* Program expects wide mode.  */ 
     1810+#define EF_PARISC_NO_KABP      0x00100000 /* No kernel assisted branch 
     1811+                                             prediction.  */ 
     1812+#define EF_PARISC_LAZYSWAP     0x00400000 /* Allow lazy swapping.  */ 
     1813+#define EF_PARISC_ARCH         0x0000ffff /* Architecture version.  */ 
     1814+ 
     1815+/* Defined values for `e_flags & EF_PARISC_ARCH' are:  */ 
     1816+ 
     1817+#define EFA_PARISC_1_0             0x020b /* PA-RISC 1.0 big-endian.  */ 
     1818+#define EFA_PARISC_1_1             0x0210 /* PA-RISC 1.1 big-endian.  */ 
     1819+#define EFA_PARISC_2_0             0x0214 /* PA-RISC 2.0 big-endian.  */ 
     1820+ 
     1821+/* Additional section indeces.  */ 
     1822+ 
     1823+#define SHN_PARISC_ANSI_COMMON 0xff00     /* Section for tenatively declared 
     1824+                                             symbols in ANSI C.  */ 
     1825+#define SHN_PARISC_HUGE_COMMON 0xff01     /* Common blocks in huge model.  */ 
     1826+ 
     1827+/* Legal values for sh_type field of Elf32_Shdr.  */ 
     1828+ 
     1829+#define SHT_PARISC_EXT         0x70000000 /* Contains product specific ext. */ 
     1830+#define SHT_PARISC_UNWIND      0x70000001 /* Unwind information.  */ 
     1831+#define SHT_PARISC_DOC         0x70000002 /* Debug info for optimized code. */ 
     1832+ 
     1833+/* Legal values for sh_flags field of Elf32_Shdr.  */ 
     1834+ 
     1835+#define SHF_PARISC_SHORT       0x20000000 /* Section with short addressing. */ 
     1836+#define SHF_PARISC_HUGE                0x40000000 /* Section far from gp.  */ 
     1837+#define SHF_PARISC_SBP         0x80000000 /* Static branch prediction code. */ 
     1838+ 
     1839+/* Legal values for ST_TYPE subfield of st_info (symbol type).  */ 
     1840+ 
     1841+#define STT_PARISC_MILLICODE   13      /* Millicode function entry point.  */ 
     1842+ 
     1843+#define STT_HP_OPAQUE          (STT_LOOS + 0x1) 
     1844+#define STT_HP_STUB            (STT_LOOS + 0x2) 
     1845+ 
     1846+/* HPPA relocs.  */ 
     1847+ 
     1848+#define R_PARISC_NONE          0       /* No reloc.  */ 
     1849+#define R_PARISC_DIR32         1       /* Direct 32-bit reference.  */ 
     1850+#define R_PARISC_DIR21L                2       /* Left 21 bits of eff. address.  */ 
     1851+#define R_PARISC_DIR17R                3       /* Right 17 bits of eff. address.  */ 
     1852+#define R_PARISC_DIR17F                4       /* 17 bits of eff. address.  */ 
     1853+#define R_PARISC_DIR14R                6       /* Right 14 bits of eff. address.  */ 
     1854+#define R_PARISC_PCREL32       9       /* 32-bit rel. address.  */ 
     1855+#define R_PARISC_PCREL21L      10      /* Left 21 bits of rel. address.  */ 
     1856+#define R_PARISC_PCREL17R      11      /* Right 17 bits of rel. address.  */ 
     1857+#define R_PARISC_PCREL17F      12      /* 17 bits of rel. address.  */ 
     1858+#define R_PARISC_PCREL14R      14      /* Right 14 bits of rel. address.  */ 
     1859+#define R_PARISC_DPREL21L      18      /* Left 21 bits of rel. address.  */ 
     1860+#define R_PARISC_DPREL14R      22      /* Right 14 bits of rel. address.  */ 
     1861+#define R_PARISC_GPREL21L      26      /* GP-relative, left 21 bits.  */ 
     1862+#define R_PARISC_GPREL14R      30      /* GP-relative, right 14 bits.  */ 
     1863+#define R_PARISC_LTOFF21L      34      /* LT-relative, left 21 bits.  */ 
     1864+#define R_PARISC_LTOFF14R      38      /* LT-relative, right 14 bits.  */ 
     1865+#define R_PARISC_SECREL32      41      /* 32 bits section rel. address.  */ 
     1866+#define R_PARISC_SEGBASE       48      /* No relocation, set segment base.  */ 
     1867+#define R_PARISC_SEGREL32      49      /* 32 bits segment rel. address.  */ 
     1868+#define R_PARISC_PLTOFF21L     50      /* PLT rel. address, left 21 bits.  */ 
     1869+#define R_PARISC_PLTOFF14R     54      /* PLT rel. address, right 14 bits.  */ 
     1870+#define R_PARISC_LTOFF_FPTR32  57      /* 32 bits LT-rel. function pointer. */ 
     1871+#define R_PARISC_LTOFF_FPTR21L 58      /* LT-rel. fct ptr, left 21 bits. */ 
     1872+#define R_PARISC_LTOFF_FPTR14R 62      /* LT-rel. fct ptr, right 14 bits. */ 
     1873+#define R_PARISC_FPTR64                64      /* 64 bits function address.  */ 
     1874+#define R_PARISC_PLABEL32      65      /* 32 bits function address.  */ 
     1875+#define R_PARISC_PLABEL21L     66      /* Left 21 bits of fdesc address.  */ 
     1876+#define R_PARISC_PLABEL14R     70      /* Right 14 bits of fdesc address.  */ 
     1877+#define R_PARISC_PCREL64       72      /* 64 bits PC-rel. address.  */ 
     1878+#define R_PARISC_PCREL22F      74      /* 22 bits PC-rel. address.  */ 
     1879+#define R_PARISC_PCREL14WR     75      /* PC-rel. address, right 14 bits.  */ 
     1880+#define R_PARISC_PCREL14DR     76      /* PC rel. address, right 14 bits.  */ 
     1881+#define R_PARISC_PCREL16F      77      /* 16 bits PC-rel. address.  */ 
     1882+#define R_PARISC_PCREL16WF     78      /* 16 bits PC-rel. address.  */ 
     1883+#define R_PARISC_PCREL16DF     79      /* 16 bits PC-rel. address.  */ 
     1884+#define R_PARISC_DIR64         80      /* 64 bits of eff. address.  */ 
     1885+#define R_PARISC_DIR14WR       83      /* 14 bits of eff. address.  */ 
     1886+#define R_PARISC_DIR14DR       84      /* 14 bits of eff. address.  */ 
     1887+#define R_PARISC_DIR16F                85      /* 16 bits of eff. address.  */ 
     1888+#define R_PARISC_DIR16WF       86      /* 16 bits of eff. address.  */ 
     1889+#define R_PARISC_DIR16DF       87      /* 16 bits of eff. address.  */ 
     1890+#define R_PARISC_GPREL64       88      /* 64 bits of GP-rel. address.  */ 
     1891+#define R_PARISC_GPREL14WR     91      /* GP-rel. address, right 14 bits.  */ 
     1892+#define R_PARISC_GPREL14DR     92      /* GP-rel. address, right 14 bits.  */ 
     1893+#define R_PARISC_GPREL16F      93      /* 16 bits GP-rel. address.  */ 
     1894+#define R_PARISC_GPREL16WF     94      /* 16 bits GP-rel. address.  */ 
     1895+#define R_PARISC_GPREL16DF     95      /* 16 bits GP-rel. address.  */ 
     1896+#define R_PARISC_LTOFF64       96      /* 64 bits LT-rel. address.  */ 
     1897+#define R_PARISC_LTOFF14WR     99      /* LT-rel. address, right 14 bits.  */ 
     1898+#define R_PARISC_LTOFF14DR     100     /* LT-rel. address, right 14 bits.  */ 
     1899+#define R_PARISC_LTOFF16F      101     /* 16 bits LT-rel. address.  */ 
     1900+#define R_PARISC_LTOFF16WF     102     /* 16 bits LT-rel. address.  */ 
     1901+#define R_PARISC_LTOFF16DF     103     /* 16 bits LT-rel. address.  */ 
     1902+#define R_PARISC_SECREL64      104     /* 64 bits section rel. address.  */ 
     1903+#define R_PARISC_SEGREL64      112     /* 64 bits segment rel. address.  */ 
     1904+#define R_PARISC_PLTOFF14WR    115     /* PLT-rel. address, right 14 bits.  */ 
     1905+#define R_PARISC_PLTOFF14DR    116     /* PLT-rel. address, right 14 bits.  */ 
     1906+#define R_PARISC_PLTOFF16F     117     /* 16 bits LT-rel. address.  */ 
     1907+#define R_PARISC_PLTOFF16WF    118     /* 16 bits PLT-rel. address.  */ 
     1908+#define R_PARISC_PLTOFF16DF    119     /* 16 bits PLT-rel. address.  */ 
     1909+#define R_PARISC_LTOFF_FPTR64  120     /* 64 bits LT-rel. function ptr.  */ 
     1910+#define R_PARISC_LTOFF_FPTR14WR        123     /* LT-rel. fct. ptr., right 14 bits. */ 
     1911+#define R_PARISC_LTOFF_FPTR14DR        124     /* LT-rel. fct. ptr., right 14 bits. */ 
     1912+#define R_PARISC_LTOFF_FPTR16F 125     /* 16 bits LT-rel. function ptr.  */ 
     1913+#define R_PARISC_LTOFF_FPTR16WF        126     /* 16 bits LT-rel. function ptr.  */ 
     1914+#define R_PARISC_LTOFF_FPTR16DF        127     /* 16 bits LT-rel. function ptr.  */ 
     1915+#define R_PARISC_LORESERVE     128 
     1916+#define R_PARISC_COPY          128     /* Copy relocation.  */ 
     1917+#define R_PARISC_IPLT          129     /* Dynamic reloc, imported PLT */ 
     1918+#define R_PARISC_EPLT          130     /* Dynamic reloc, exported PLT */ 
     1919+#define R_PARISC_TPREL32       153     /* 32 bits TP-rel. address.  */ 
     1920+#define R_PARISC_TPREL21L      154     /* TP-rel. address, left 21 bits.  */ 
     1921+#define R_PARISC_TPREL14R      158     /* TP-rel. address, right 14 bits.  */ 
     1922+#define R_PARISC_LTOFF_TP21L   162     /* LT-TP-rel. address, left 21 bits. */ 
     1923+#define R_PARISC_LTOFF_TP14R   166     /* LT-TP-rel. address, right 14 bits.*/ 
     1924+#define R_PARISC_LTOFF_TP14F   167     /* 14 bits LT-TP-rel. address.  */ 
     1925+#define R_PARISC_TPREL64       216     /* 64 bits TP-rel. address.  */ 
     1926+#define R_PARISC_TPREL14WR     219     /* TP-rel. address, right 14 bits.  */ 
     1927+#define R_PARISC_TPREL14DR     220     /* TP-rel. address, right 14 bits.  */ 
     1928+#define R_PARISC_TPREL16F      221     /* 16 bits TP-rel. address.  */ 
     1929+#define R_PARISC_TPREL16WF     222     /* 16 bits TP-rel. address.  */ 
     1930+#define R_PARISC_TPREL16DF     223     /* 16 bits TP-rel. address.  */ 
     1931+#define R_PARISC_LTOFF_TP64    224     /* 64 bits LT-TP-rel. address.  */ 
     1932+#define R_PARISC_LTOFF_TP14WR  227     /* LT-TP-rel. address, right 14 bits.*/ 
     1933+#define R_PARISC_LTOFF_TP14DR  228     /* LT-TP-rel. address, right 14 bits.*/ 
     1934+#define R_PARISC_LTOFF_TP16F   229     /* 16 bits LT-TP-rel. address.  */ 
     1935+#define R_PARISC_LTOFF_TP16WF  230     /* 16 bits LT-TP-rel. address.  */ 
     1936+#define R_PARISC_LTOFF_TP16DF  231     /* 16 bits LT-TP-rel. address.  */ 
     1937+#define R_PARISC_GNU_VTENTRY   232 
     1938+#define R_PARISC_GNU_VTINHERIT 233 
     1939+#define R_PARISC_TLS_GD21L     234     /* GD 21-bit left.  */ 
     1940+#define R_PARISC_TLS_GD14R     235     /* GD 14-bit right.  */ 
     1941+#define R_PARISC_TLS_GDCALL    236     /* GD call to __t_g_a.  */ 
     1942+#define R_PARISC_TLS_LDM21L    237     /* LD module 21-bit left.  */ 
     1943+#define R_PARISC_TLS_LDM14R    238     /* LD module 14-bit right.  */ 
     1944+#define R_PARISC_TLS_LDMCALL   239     /* LD module call to __t_g_a.  */ 
     1945+#define R_PARISC_TLS_LDO21L    240     /* LD offset 21-bit left.  */ 
     1946+#define R_PARISC_TLS_LDO14R    241     /* LD offset 14-bit right.  */ 
     1947+#define R_PARISC_TLS_DTPMOD32  242     /* DTP module 32-bit.  */ 
     1948+#define R_PARISC_TLS_DTPMOD64  243     /* DTP module 64-bit.  */ 
     1949+#define R_PARISC_TLS_DTPOFF32  244     /* DTP offset 32-bit.  */ 
     1950+#define R_PARISC_TLS_DTPOFF64  245     /* DTP offset 32-bit.  */ 
     1951+#define R_PARISC_TLS_LE21L     R_PARISC_TPREL21L 
     1952+#define R_PARISC_TLS_LE14R     R_PARISC_TPREL14R 
     1953+#define R_PARISC_TLS_IE21L     R_PARISC_LTOFF_TP21L 
     1954+#define R_PARISC_TLS_IE14R     R_PARISC_LTOFF_TP14R 
     1955+#define R_PARISC_TLS_TPREL32   R_PARISC_TPREL32 
     1956+#define R_PARISC_TLS_TPREL64   R_PARISC_TPREL64 
     1957+#define R_PARISC_HIRESERVE     255 
     1958+ 
     1959+/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr.  */ 
     1960+ 
     1961+#define PT_HP_TLS              (PT_LOOS + 0x0) 
     1962+#define PT_HP_CORE_NONE                (PT_LOOS + 0x1) 
     1963+#define PT_HP_CORE_VERSION     (PT_LOOS + 0x2) 
     1964+#define PT_HP_CORE_KERNEL      (PT_LOOS + 0x3) 
     1965+#define PT_HP_CORE_COMM                (PT_LOOS + 0x4) 
     1966+#define PT_HP_CORE_PROC                (PT_LOOS + 0x5) 
     1967+#define PT_HP_CORE_LOADABLE    (PT_LOOS + 0x6) 
     1968+#define PT_HP_CORE_STACK       (PT_LOOS + 0x7) 
     1969+#define PT_HP_CORE_SHM         (PT_LOOS + 0x8) 
     1970+#define PT_HP_CORE_MMF         (PT_LOOS + 0x9) 
     1971+#define PT_HP_PARALLEL         (PT_LOOS + 0x10) 
     1972+#define PT_HP_FASTBIND         (PT_LOOS + 0x11) 
     1973+#define PT_HP_OPT_ANNOT                (PT_LOOS + 0x12) 
     1974+#define PT_HP_HSL_ANNOT                (PT_LOOS + 0x13) 
     1975+#define PT_HP_STACK            (PT_LOOS + 0x14) 
     1976+ 
     1977+#define PT_PARISC_ARCHEXT      0x70000000 
     1978+#define PT_PARISC_UNWIND       0x70000001 
     1979+ 
     1980+/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr.  */ 
     1981+ 
     1982+#define PF_PARISC_SBP          0x08000000 
     1983+ 
     1984+#define PF_HP_PAGE_SIZE                0x00100000 
     1985+#define PF_HP_FAR_SHARED       0x00200000 
     1986+#define PF_HP_NEAR_SHARED      0x00400000 
     1987+#define PF_HP_CODE             0x01000000 
     1988+#define PF_HP_MODIFY           0x02000000 
     1989+#define PF_HP_LAZYSWAP         0x04000000 
     1990+#define PF_HP_SBP              0x08000000 
     1991+ 
     1992+ 
     1993+/* Alpha specific definitions.  */ 
     1994+ 
     1995+/* Legal values for e_flags field of Elf64_Ehdr.  */ 
     1996+ 
     1997+#define EF_ALPHA_32BIT         1       /* All addresses must be < 2GB.  */ 
     1998+#define EF_ALPHA_CANRELAX      2       /* Relocations for relaxing exist.  */ 
     1999+ 
     2000+/* Legal values for sh_type field of Elf64_Shdr.  */ 
     2001+ 
     2002+/* These two are primerily concerned with ECOFF debugging info.  */ 
     2003+#define SHT_ALPHA_DEBUG                0x70000001 
     2004+#define SHT_ALPHA_REGINFO      0x70000002 
     2005+ 
     2006+/* Legal values for sh_flags field of Elf64_Shdr.  */ 
     2007+ 
     2008+#define SHF_ALPHA_GPREL                0x10000000 
     2009+ 
     2010+/* Legal values for st_other field of Elf64_Sym.  */ 
     2011+#define STO_ALPHA_NOPV         0x80    /* No PV required.  */ 
     2012+#define STO_ALPHA_STD_GPLOAD   0x88    /* PV only used for initial ldgp.  */ 
     2013+ 
     2014+/* Alpha relocs.  */ 
     2015+ 
     2016+#define R_ALPHA_NONE           0       /* No reloc */ 
     2017+#define R_ALPHA_REFLONG                1       /* Direct 32 bit */ 
     2018+#define R_ALPHA_REFQUAD                2       /* Direct 64 bit */ 
     2019+#define R_ALPHA_GPREL32                3       /* GP relative 32 bit */ 
     2020+#define R_ALPHA_LITERAL                4       /* GP relative 16 bit w/optimization */ 
     2021+#define R_ALPHA_LITUSE         5       /* Optimization hint for LITERAL */ 
     2022+#define R_ALPHA_GPDISP         6       /* Add displacement to GP */ 
     2023+#define R_ALPHA_BRADDR         7       /* PC+4 relative 23 bit shifted */ 
     2024+#define R_ALPHA_HINT           8       /* PC+4 relative 16 bit shifted */ 
     2025+#define R_ALPHA_SREL16         9       /* PC relative 16 bit */ 
     2026+#define R_ALPHA_SREL32         10      /* PC relative 32 bit */ 
     2027+#define R_ALPHA_SREL64         11      /* PC relative 64 bit */ 
     2028+#define R_ALPHA_GPRELHIGH      17      /* GP relative 32 bit, high 16 bits */ 
     2029+#define R_ALPHA_GPRELLOW       18      /* GP relative 32 bit, low 16 bits */ 
     2030+#define R_ALPHA_GPREL16                19      /* GP relative 16 bit */ 
     2031+#define R_ALPHA_COPY           24      /* Copy symbol at runtime */ 
     2032+#define R_ALPHA_GLOB_DAT       25      /* Create GOT entry */ 
     2033+#define R_ALPHA_JMP_SLOT       26      /* Create PLT entry */ 
     2034+#define R_ALPHA_RELATIVE       27      /* Adjust by program base */ 
     2035+#define R_ALPHA_TLS_GD_HI      28 
     2036+#define R_ALPHA_TLSGD          29 
     2037+#define R_ALPHA_TLS_LDM                30 
     2038+#define R_ALPHA_DTPMOD64       31 
     2039+#define R_ALPHA_GOTDTPREL      32 
     2040+#define R_ALPHA_DTPREL64       33 
     2041+#define R_ALPHA_DTPRELHI       34 
     2042+#define R_ALPHA_DTPRELLO       35 
     2043+#define R_ALPHA_DTPREL16       36 
     2044+#define R_ALPHA_GOTTPREL       37 
     2045+#define R_ALPHA_TPREL64                38 
     2046+#define R_ALPHA_TPRELHI                39 
     2047+#define R_ALPHA_TPRELLO                40 
     2048+#define R_ALPHA_TPREL16                41 
     2049+/* Keep this the last entry.  */ 
     2050+#define R_ALPHA_NUM            46 
     2051+ 
     2052+/* Magic values of the LITUSE relocation addend.  */ 
     2053+#define LITUSE_ALPHA_ADDR      0 
     2054+#define LITUSE_ALPHA_BASE      1 
     2055+#define LITUSE_ALPHA_BYTOFF    2 
     2056+#define LITUSE_ALPHA_JSR       3 
     2057+#define LITUSE_ALPHA_TLS_GD    4 
     2058+#define LITUSE_ALPHA_TLS_LDM   5 
     2059+ 
     2060+/* Legal values for d_tag of Elf64_Dyn.  */ 
     2061+#define DT_ALPHA_PLTRO         (DT_LOPROC + 0) 
     2062+#define DT_ALPHA_NUM           1 
     2063+ 
     2064+/* PowerPC specific declarations */ 
     2065+ 
     2066+/* Values for Elf32/64_Ehdr.e_flags.  */ 
     2067+#define EF_PPC_EMB             0x80000000      /* PowerPC embedded flag */ 
     2068+ 
     2069+/* Cygnus local bits below */ 
     2070+#define EF_PPC_RELOCATABLE     0x00010000      /* PowerPC -mrelocatable flag*/ 
     2071+#define EF_PPC_RELOCATABLE_LIB 0x00008000      /* PowerPC -mrelocatable-lib 
     2072+                                                  flag */ 
     2073+ 
     2074+/* PowerPC relocations defined by the ABIs */ 
     2075+#define R_PPC_NONE             0 
     2076+#define R_PPC_ADDR32           1       /* 32bit absolute address */ 
     2077+#define R_PPC_ADDR24           2       /* 26bit address, 2 bits ignored.  */ 
     2078+#define R_PPC_ADDR16           3       /* 16bit absolute address */ 
     2079+#define R_PPC_ADDR16_LO                4       /* lower 16bit of absolute address */ 
     2080+#define R_PPC_ADDR16_HI                5       /* high 16bit of absolute address */ 
     2081+#define R_PPC_ADDR16_HA                6       /* adjusted high 16bit */ 
     2082+#define R_PPC_ADDR14           7       /* 16bit address, 2 bits ignored */ 
     2083+#define R_PPC_ADDR14_BRTAKEN   8 
     2084+#define R_PPC_ADDR14_BRNTAKEN  9 
     2085+#define R_PPC_REL24            10      /* PC relative 26 bit */ 
     2086+#define R_PPC_REL14            11      /* PC relative 16 bit */ 
     2087+#define R_PPC_REL14_BRTAKEN    12 
     2088+#define R_PPC_REL14_BRNTAKEN   13 
     2089+#define R_PPC_GOT16            14 
     2090+#define R_PPC_GOT16_LO         15 
     2091+#define R_PPC_GOT16_HI         16 
     2092+#define R_PPC_GOT16_HA         17 
     2093+#define R_PPC_PLTREL24         18 
     2094+#define R_PPC_COPY             19 
     2095+#define R_PPC_GLOB_DAT         20 
     2096+#define R_PPC_JMP_SLOT         21 
     2097+#define R_PPC_RELATIVE         22 
     2098+#define R_PPC_LOCAL24PC                23 
     2099+#define R_PPC_UADDR32          24 
     2100+#define R_PPC_UADDR16          25 
     2101+#define R_PPC_REL32            26 
     2102+#define R_PPC_PLT32            27 
     2103+#define R_PPC_PLTREL32         28 
     2104+#define R_PPC_PLT16_LO         29 
     2105+#define R_PPC_PLT16_HI         30 
     2106+#define R_PPC_PLT16_HA         31 
     2107+#define R_PPC_SDAREL16         32 
     2108+#define R_PPC_SECTOFF          33 
     2109+#define R_PPC_SECTOFF_LO       34 
     2110+#define R_PPC_SECTOFF_HI       35 
     2111+#define R_PPC_SECTOFF_HA       36 
     2112+ 
     2113+/* PowerPC relocations defined for the TLS access ABI.  */ 
     2114+#define R_PPC_TLS              67 /* none      (sym+add)@tls */ 
     2115+#define R_PPC_DTPMOD32         68 /* word32    (sym+add)@dtpmod */ 
     2116+#define R_PPC_TPREL16          69 /* half16*   (sym+add)@tprel */ 
     2117+#define R_PPC_TPREL16_LO       70 /* half16    (sym+add)@tprel@l */ 
     2118+#define R_PPC_TPREL16_HI       71 /* half16    (sym+add)@tprel@h */ 
     2119+#define R_PPC_TPREL16_HA       72 /* half16    (sym+add)@tprel@ha */ 
     2120+#define R_PPC_TPREL32          73 /* word32    (sym+add)@tprel */ 
     2121+#define R_PPC_DTPREL16         74 /* half16*   (sym+add)@dtprel */ 
     2122+#define R_PPC_DTPREL16_LO      75 /* half16    (sym+add)@dtprel@l */ 
     2123+#define R_PPC_DTPREL16_HI      76 /* half16    (sym+add)@dtprel@h */ 
     2124+#define R_PPC_DTPREL16_HA      77 /* half16    (sym+add)@dtprel@ha */ 
     2125+#define R_PPC_DTPREL32         78 /* word32    (sym+add)@dtprel */ 
     2126+#define R_PPC_GOT_TLSGD16      79 /* half16*   (sym+add)@got@tlsgd */ 
     2127+#define R_PPC_GOT_TLSGD16_LO   80 /* half16    (sym+add)@got@tlsgd@l */ 
     2128+#define R_PPC_GOT_TLSGD16_HI   81 /* half16    (sym+add)@got@tlsgd@h */ 
     2129+#define R_PPC_GOT_TLSGD16_HA   82 /* half16    (sym+add)@got@tlsgd@ha */ 
     2130+#define R_PPC_GOT_TLSLD16      83 /* half16*   (sym+add)@got@tlsld */ 
     2131+#define R_PPC_GOT_TLSLD16_LO   84 /* half16    (sym+add)@got@tlsld@l */ 
     2132+#define R_PPC_GOT_TLSLD16_HI   85 /* half16    (sym+add)@got@tlsld@h */ 
     2133+#define R_PPC_GOT_TLSLD16_HA   86 /* half16    (sym+add)@got@tlsld@ha */ 
     2134+#define R_PPC_GOT_TPREL16      87 /* half16*   (sym+add)@got@tprel */ 
     2135+#define R_PPC_GOT_TPREL16_LO   88 /* half16    (sym+add)@got@tprel@l */ 
     2136+#define R_PPC_GOT_TPREL16_HI   89 /* half16    (sym+add)@got@tprel@h */ 
     2137+#define R_PPC_GOT_TPREL16_HA   90 /* half16    (sym+add)@got@tprel@ha */ 
     2138+#define R_PPC_GOT_DTPREL16     91 /* half16*   (sym+add)@got@dtprel */ 
     2139+#define R_PPC_GOT_DTPREL16_LO  92 /* half16*   (sym+add)@got@dtprel@l */ 
     2140+#define R_PPC_GOT_DTPREL16_HI  93 /* half16*   (sym+add)@got@dtprel@h */ 
     2141+#define R_PPC_GOT_DTPREL16_HA  94 /* half16*   (sym+add)@got@dtprel@ha */ 
     2142+ 
     2143+/* The remaining relocs are from the Embedded ELF ABI, and are not 
     2144+   in the SVR4 ELF ABI.  */ 
     2145+#define R_PPC_EMB_NADDR32      101 
     2146+#define R_PPC_EMB_NADDR16      102 
     2147+#define R_PPC_EMB_NADDR16_LO   103 
     2148+#define R_PPC_EMB_NADDR16_HI   104 
     2149+#define R_PPC_EMB_NADDR16_HA   105 
     2150+#define R_PPC_EMB_SDAI16       106 
     2151+#define R_PPC_EMB_SDA2I16      107 
     2152+#define R_PPC_EMB_SDA2REL      108 
     2153+#define R_PPC_EMB_SDA21                109     /* 16 bit offset in SDA */ 
     2154+#define R_PPC_EMB_MRKREF       110 
     2155+#define R_PPC_EMB_RELSEC16     111 
     2156+#define R_PPC_EMB_RELST_LO     112 
     2157+#define R_PPC_EMB_RELST_HI     113 
     2158+#define R_PPC_EMB_RELST_HA     114 
     2159+#define R_PPC_EMB_BIT_FLD      115 
     2160+#define R_PPC_EMB_RELSDA       116     /* 16 bit relative offset in SDA */ 
     2161+ 
     2162+/* Diab tool relocations.  */ 
     2163+#define R_PPC_DIAB_SDA21_LO    180     /* like EMB_SDA21, but lower 16 bit */ 
     2164+#define R_PPC_DIAB_SDA21_HI    181     /* like EMB_SDA21, but high 16 bit */ 
     2165+#define R_PPC_DIAB_SDA21_HA    182     /* like EMB_SDA21, adjusted high 16 */ 
     2166+#define R_PPC_DIAB_RELSDA_LO   183     /* like EMB_RELSDA, but lower 16 bit */ 
     2167+#define R_PPC_DIAB_RELSDA_HI   184     /* like EMB_RELSDA, but high 16 bit */ 
     2168+#define R_PPC_DIAB_RELSDA_HA   185     /* like EMB_RELSDA, adjusted high 16 */ 
     2169+ 
     2170+/* GNU extension to support local ifunc.  */ 
     2171+#define R_PPC_IRELATIVE                248 
     2172+ 
     2173+/* GNU relocs used in PIC code sequences.  */ 
     2174+#define R_PPC_REL16            249     /* half16   (sym+add-.) */ 
     2175+#define R_PPC_REL16_LO         250     /* half16   (sym+add-.)@l */ 
     2176+#define R_PPC_REL16_HI         251     /* half16   (sym+add-.)@h */ 
     2177+#define R_PPC_REL16_HA         252     /* half16   (sym+add-.)@ha */ 
     2178+ 
     2179+/* This is a phony reloc to handle any old fashioned TOC16 references 
     2180+   that may still be in object files.  */ 
     2181+#define R_PPC_TOC16            255 
     2182+ 
     2183+/* PowerPC specific values for the Dyn d_tag field.  */ 
     2184+#define DT_PPC_GOT             (DT_LOPROC + 0) 
     2185+#define DT_PPC_NUM             1 
     2186+ 
     2187+/* PowerPC64 relocations defined by the ABIs */ 
     2188+#define R_PPC64_NONE           R_PPC_NONE 
     2189+#define R_PPC64_ADDR32         R_PPC_ADDR32 /* 32bit absolute address */ 
     2190+#define R_PPC64_ADDR24         R_PPC_ADDR24 /* 26bit address, word aligned */ 
     2191+#define R_PPC64_ADDR16         R_PPC_ADDR16 /* 16bit absolute address */ 
     2192+#define R_PPC64_ADDR16_LO      R_PPC_ADDR16_LO /* lower 16bits of address */ 
     2193+#define R_PPC64_ADDR16_HI      R_PPC_ADDR16_HI /* high 16bits of address. */ 
     2194+#define R_PPC64_ADDR16_HA      R_PPC_ADDR16_HA /* adjusted high 16bits.  */ 
     2195+#define R_PPC64_ADDR14         R_PPC_ADDR14 /* 16bit address, word aligned */ 
     2196+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN 
     2197+#define R_PPC64_ADDR14_BRNTAKEN        R_PPC_ADDR14_BRNTAKEN 
     2198+#define R_PPC64_REL24          R_PPC_REL24 /* PC-rel. 26 bit, word aligned */ 
     2199+#define R_PPC64_REL14          R_PPC_REL14 /* PC relative 16 bit */ 
     2200+#define R_PPC64_REL14_BRTAKEN  R_PPC_REL14_BRTAKEN 
     2201+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN 
     2202+#define R_PPC64_GOT16          R_PPC_GOT16 
     2203+#define R_PPC64_GOT16_LO       R_PPC_GOT16_LO 
     2204+#define R_PPC64_GOT16_HI       R_PPC_GOT16_HI 
     2205+#define R_PPC64_GOT16_HA       R_PPC_GOT16_HA 
     2206+ 
     2207+#define R_PPC64_COPY           R_PPC_COPY 
     2208+#define R_PPC64_GLOB_DAT       R_PPC_GLOB_DAT 
     2209+#define R_PPC64_JMP_SLOT       R_PPC_JMP_SLOT 
     2210+#define R_PPC64_RELATIVE       R_PPC_RELATIVE 
     2211+ 
     2212+#define R_PPC64_UADDR32                R_PPC_UADDR32 
     2213+#define R_PPC64_UADDR16                R_PPC_UADDR16 
     2214+#define R_PPC64_REL32          R_PPC_REL32 
     2215+#define R_PPC64_PLT32          R_PPC_PLT32 
     2216+#define R_PPC64_PLTREL32       R_PPC_PLTREL32 
     2217+#define R_PPC64_PLT16_LO       R_PPC_PLT16_LO 
     2218+#define R_PPC64_PLT16_HI       R_PPC_PLT16_HI 
     2219+#define R_PPC64_PLT16_HA       R_PPC_PLT16_HA 
     2220+ 
     2221+#define R_PPC64_SECTOFF                R_PPC_SECTOFF 
     2222+#define R_PPC64_SECTOFF_LO     R_PPC_SECTOFF_LO 
     2223+#define R_PPC64_SECTOFF_HI     R_PPC_SECTOFF_HI 
     2224+#define R_PPC64_SECTOFF_HA     R_PPC_SECTOFF_HA 
     2225+#define R_PPC64_ADDR30         37 /* word30 (S + A - P) >> 2 */ 
     2226+#define R_PPC64_ADDR64         38 /* doubleword64 S + A */ 
     2227+#define R_PPC64_ADDR16_HIGHER  39 /* half16 #higher(S + A) */ 
     2228+#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */ 
     2229+#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */ 
     2230+#define R_PPC64_ADDR16_HIGHESTA        42 /* half16 #highesta(S + A) */ 
     2231+#define R_PPC64_UADDR64                43 /* doubleword64 S + A */ 
     2232+#define R_PPC64_REL64          44 /* doubleword64 S + A - P */ 
     2233+#define R_PPC64_PLT64          45 /* doubleword64 L + A */ 
     2234+#define R_PPC64_PLTREL64       46 /* doubleword64 L + A - P */ 
     2235+#define R_PPC64_TOC16          47 /* half16* S + A - .TOC */ 
     2236+#define R_PPC64_TOC16_LO       48 /* half16 #lo(S + A - .TOC.) */ 
     2237+#define R_PPC64_TOC16_HI       49 /* half16 #hi(S + A - .TOC.) */ 
     2238+#define R_PPC64_TOC16_HA       50 /* half16 #ha(S + A - .TOC.) */ 
     2239+#define R_PPC64_TOC            51 /* doubleword64 .TOC */ 
     2240+#define R_PPC64_PLTGOT16       52 /* half16* M + A */ 
     2241+#define R_PPC64_PLTGOT16_LO    53 /* half16 #lo(M + A) */ 
     2242+#define R_PPC64_PLTGOT16_HI    54 /* half16 #hi(M + A) */ 
     2243+#define R_PPC64_PLTGOT16_HA    55 /* half16 #ha(M + A) */ 
     2244+ 
     2245+#define R_PPC64_ADDR16_DS      56 /* half16ds* (S + A) >> 2 */ 
     2246+#define R_PPC64_ADDR16_LO_DS   57 /* half16ds  #lo(S + A) >> 2 */ 
     2247+#define R_PPC64_GOT16_DS       58 /* half16ds* (G + A) >> 2 */ 
     2248+#define R_PPC64_GOT16_LO_DS    59 /* half16ds  #lo(G + A) >> 2 */ 
     2249+#define R_PPC64_PLT16_LO_DS    60 /* half16ds  #lo(L + A) >> 2 */ 
     2250+#define R_PPC64_SECTOFF_DS     61 /* half16ds* (R + A) >> 2 */ 
     2251+#define R_PPC64_SECTOFF_LO_DS  62 /* half16ds  #lo(R + A) >> 2 */ 
     2252+#define R_PPC64_TOC16_DS       63 /* half16ds* (S + A - .TOC.) >> 2 */ 
     2253+#define R_PPC64_TOC16_LO_DS    64 /* half16ds  #lo(S + A - .TOC.) >> 2 */ 
     2254+#define R_PPC64_PLTGOT16_DS    65 /* half16ds* (M + A) >> 2 */ 
     2255+#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds  #lo(M + A) >> 2 */ 
     2256+ 
     2257+/* PowerPC64 relocations defined for the TLS access ABI.  */ 
     2258+#define R_PPC64_TLS            67 /* none      (sym+add)@tls */ 
     2259+#define R_PPC64_DTPMOD64       68 /* doubleword64 (sym+add)@dtpmod */ 
     2260+#define R_PPC64_TPREL16                69 /* half16*   (sym+add)@tprel */ 
     2261+#define R_PPC64_TPREL16_LO     70 /* half16    (sym+add)@tprel@l */ 
     2262+#define R_PPC64_TPREL16_HI     71 /* half16    (sym+add)@tprel@h */ 
     2263+#define R_PPC64_TPREL16_HA     72 /* half16    (sym+add)@tprel@ha */ 
     2264+#define R_PPC64_TPREL64                73 /* doubleword64 (sym+add)@tprel */ 
     2265+#define R_PPC64_DTPREL16       74 /* half16*   (sym+add)@dtprel */ 
     2266+#define R_PPC64_DTPREL16_LO    75 /* half16    (sym+add)@dtprel@l */ 
     2267+#define R_PPC64_DTPREL16_HI    76 /* half16    (sym+add)@dtprel@h */ 
     2268+#define R_PPC64_DTPREL16_HA    77 /* half16    (sym+add)@dtprel@ha */ 
     2269+#define R_PPC64_DTPREL64       78 /* doubleword64 (sym+add)@dtprel */ 
     2270+#define R_PPC64_GOT_TLSGD16    79 /* half16*   (sym+add)@got@tlsgd */ 
     2271+#define R_PPC64_GOT_TLSGD16_LO 80 /* half16    (sym+add)@got@tlsgd@l */ 
     2272+#define R_PPC64_GOT_TLSGD16_HI 81 /* half16    (sym+add)@got@tlsgd@h */ 
     2273+#define R_PPC64_GOT_TLSGD16_HA 82 /* half16    (sym+add)@got@tlsgd@ha */ 
     2274+#define R_PPC64_GOT_TLSLD16    83 /* half16*   (sym+add)@got@tlsld */ 
     2275+#define R_PPC64_GOT_TLSLD16_LO 84 /* half16    (sym+add)@got@tlsld@l */ 
     2276+#define R_PPC64_GOT_TLSLD16_HI 85 /* half16    (sym+add)@got@tlsld@h */ 
     2277+#define R_PPC64_GOT_TLSLD16_HA 86 /* half16    (sym+add)@got@tlsld@ha */ 
     2278+#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */ 
     2279+#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */ 
     2280+#define R_PPC64_GOT_TPREL16_HI 89 /* half16    (sym+add)@got@tprel@h */ 
     2281+#define R_PPC64_GOT_TPREL16_HA 90 /* half16    (sym+add)@got@tprel@ha */ 
     2282+#define R_PPC64_GOT_DTPREL16_DS        91 /* half16ds* (sym+add)@got@dtprel */ 
     2283+#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */ 
     2284+#define R_PPC64_GOT_DTPREL16_HI        93 /* half16    (sym+add)@got@dtprel@h */ 
     2285+#define R_PPC64_GOT_DTPREL16_HA        94 /* half16    (sym+add)@got@dtprel@ha */ 
     2286+#define R_PPC64_TPREL16_DS     95 /* half16ds* (sym+add)@tprel */ 
     2287+#define R_PPC64_TPREL16_LO_DS  96 /* half16ds  (sym+add)@tprel@l */ 
     2288+#define R_PPC64_TPREL16_HIGHER 97 /* half16    (sym+add)@tprel@higher */ 
     2289+#define R_PPC64_TPREL16_HIGHERA        98 /* half16    (sym+add)@tprel@highera */ 
     2290+#define R_PPC64_TPREL16_HIGHEST        99 /* half16    (sym+add)@tprel@highest */ 
     2291+#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */ 
     2292+#define R_PPC64_DTPREL16_DS    101 /* half16ds* (sym+add)@dtprel */ 
     2293+#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */ 
     2294+#define R_PPC64_DTPREL16_HIGHER        103 /* half16   (sym+add)@dtprel@higher */ 
     2295+#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ 
     2296+#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ 
     2297+#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16        (sym+add)@dtprel@highesta */ 
     2298+ 
     2299+/* GNU extension to support local ifunc.  */ 
     2300+#define R_PPC64_JMP_IREL       247 
     2301+#define R_PPC64_IRELATIVE      248 
     2302+#define R_PPC64_REL16          249     /* half16   (sym+add-.) */ 
     2303+#define R_PPC64_REL16_LO       250     /* half16   (sym+add-.)@l */ 
     2304+#define R_PPC64_REL16_HI       251     /* half16   (sym+add-.)@h */ 
     2305+#define R_PPC64_REL16_HA       252     /* half16   (sym+add-.)@ha */ 
     2306+ 
     2307+/* PowerPC64 specific values for the Dyn d_tag field.  */ 
     2308+#define DT_PPC64_GLINK  (DT_LOPROC + 0) 
     2309+#define DT_PPC64_OPD   (DT_LOPROC + 1) 
     2310+#define DT_PPC64_OPDSZ (DT_LOPROC + 2) 
     2311+#define DT_PPC64_NUM    3 
     2312+ 
     2313+ 
     2314+/* ARM specific declarations */ 
     2315+ 
     2316+/* Processor specific flags for the ELF header e_flags field.  */ 
     2317+#define EF_ARM_RELEXEC         0x01 
     2318+#define EF_ARM_HASENTRY                0x02 
     2319+#define EF_ARM_INTERWORK       0x04 
     2320+#define EF_ARM_APCS_26         0x08 
     2321+#define EF_ARM_APCS_FLOAT      0x10 
     2322+#define EF_ARM_PIC             0x20 
     2323+#define EF_ARM_ALIGN8          0x40 /* 8-bit structure alignment is in use */ 
     2324+#define EF_ARM_NEW_ABI         0x80 
     2325+#define EF_ARM_OLD_ABI         0x100 
     2326+#define EF_ARM_SOFT_FLOAT      0x200 
     2327+#define EF_ARM_VFP_FLOAT       0x400 
     2328+#define EF_ARM_MAVERICK_FLOAT  0x800 
     2329+ 
     2330+ 
     2331+/* Other constants defined in the ARM ELF spec. version B-01.  */ 
     2332+/* NB. These conflict with values defined above.  */ 
     2333+#define EF_ARM_SYMSARESORTED   0x04 
     2334+#define EF_ARM_DYNSYMSUSESEGIDX        0x08 
     2335+#define EF_ARM_MAPSYMSFIRST    0x10 
     2336+#define EF_ARM_EABIMASK                0XFF000000 
     2337+ 
     2338+/* Constants defined in AAELF.  */ 
     2339+#define EF_ARM_BE8         0x00800000 
     2340+#define EF_ARM_LE8         0x00400000 
     2341+ 
     2342+#define EF_ARM_EABI_VERSION(flags)     ((flags) & EF_ARM_EABIMASK) 
     2343+#define EF_ARM_EABI_UNKNOWN    0x00000000 
     2344+#define EF_ARM_EABI_VER1       0x01000000 
     2345+#define EF_ARM_EABI_VER2       0x02000000 
     2346+#define EF_ARM_EABI_VER3       0x03000000 
     2347+#define EF_ARM_EABI_VER4       0x04000000 
     2348+#define EF_ARM_EABI_VER5       0x05000000 
     2349+ 
     2350+/* Additional symbol types for Thumb.  */ 
     2351+#define STT_ARM_TFUNC          STT_LOPROC /* A Thumb function.  */ 
     2352+#define STT_ARM_16BIT          STT_HIPROC /* A Thumb label.  */ 
     2353+ 
     2354+/* ARM-specific values for sh_flags */ 
     2355+#define SHF_ARM_ENTRYSECT      0x10000000 /* Section contains an entry point */ 
     2356+#define SHF_ARM_COMDEF         0x80000000 /* Section may be multiply defined 
     2357+                                             in the input to a link step.  */ 
     2358+ 
     2359+/* ARM-specific program header flags */ 
     2360+#define PF_ARM_SB              0x10000000 /* Segment contains the location 
     2361+                                             addressed by the static base. */ 
     2362+#define PF_ARM_PI              0x20000000 /* Position-independent segment.  */ 
     2363+#define PF_ARM_ABS             0x40000000 /* Absolute segment.  */ 
     2364+ 
     2365+/* Processor specific values for the Phdr p_type field.  */ 
     2366+#define PT_ARM_EXIDX           (PT_LOPROC + 1) /* ARM unwind segment.  */ 
     2367+ 
     2368+/* Processor specific values for the Shdr sh_type field.  */ 
     2369+#define SHT_ARM_EXIDX          (SHT_LOPROC + 1) /* ARM unwind section.  */ 
     2370+#define SHT_ARM_PREEMPTMAP     (SHT_LOPROC + 2) /* Preemption details.  */ 
     2371+#define SHT_ARM_ATTRIBUTES     (SHT_LOPROC + 3) /* ARM attributes section.  */ 
     2372+ 
     2373+ 
     2374+/* ARM relocs.  */ 
     2375+ 
     2376+#define R_ARM_NONE             0       /* No reloc */ 
     2377+#define R_ARM_PC24             1       /* PC relative 26 bit branch */ 
     2378+#define R_ARM_ABS32            2       /* Direct 32 bit  */ 
     2379+#define R_ARM_REL32            3       /* PC relative 32 bit */ 
     2380+#define R_ARM_PC13             4 
     2381+#define R_ARM_ABS16            5       /* Direct 16 bit */ 
     2382+#define R_ARM_ABS12            6       /* Direct 12 bit */ 
     2383+#define R_ARM_THM_ABS5         7 
     2384+#define R_ARM_ABS8             8       /* Direct 8 bit */ 
     2385+#define R_ARM_SBREL32          9 
     2386+#define R_ARM_THM_PC22         10 
     2387+#define R_ARM_THM_PC8          11 
     2388+#define R_ARM_AMP_VCALL9       12 
     2389+#define R_ARM_SWI24            13      /* Obsolete static relocation.  */ 
     2390+#define R_ARM_TLS_DESC         13      /* Dynamic relocation.  */ 
     2391+#define R_ARM_THM_SWI8         14 
     2392+#define R_ARM_XPC25            15 
     2393+#define R_ARM_THM_XPC22                16 
     2394+#define R_ARM_TLS_DTPMOD32     17      /* ID of module containing symbol */ 
     2395+#define R_ARM_TLS_DTPOFF32     18      /* Offset in TLS block */ 
     2396+#define R_ARM_TLS_TPOFF32      19      /* Offset in static TLS block */ 
     2397+#define R_ARM_COPY             20      /* Copy symbol at runtime */ 
     2398+#define R_ARM_GLOB_DAT         21      /* Create GOT entry */ 
     2399+#define R_ARM_JUMP_SLOT                22      /* Create PLT entry */ 
     2400+#define R_ARM_RELATIVE         23      /* Adjust by program base */ 
     2401+#define R_ARM_GOTOFF           24      /* 32 bit offset to GOT */ 
     2402+#define R_ARM_GOTPC            25      /* 32 bit PC relative offset to GOT */ 
     2403+#define R_ARM_GOT32            26      /* 32 bit GOT entry */ 
     2404+#define R_ARM_PLT32            27      /* 32 bit PLT address */ 
     2405+#define R_ARM_ALU_PCREL_7_0    32 
     2406+#define R_ARM_ALU_PCREL_15_8   33 
     2407+#define R_ARM_ALU_PCREL_23_15  34 
     2408+#define R_ARM_LDR_SBREL_11_0   35 
     2409+#define R_ARM_ALU_SBREL_19_12  36 
     2410+#define R_ARM_ALU_SBREL_27_20  37 
     2411+#define R_ARM_TLS_GOTDESC      90 
     2412+#define R_ARM_TLS_CALL         91 
     2413+#define R_ARM_TLS_DESCSEQ      92 
     2414+#define R_ARM_THM_TLS_CALL     93 
     2415+#define R_ARM_GNU_VTENTRY      100 
     2416+#define R_ARM_GNU_VTINHERIT    101 
     2417+#define R_ARM_THM_PC11         102     /* thumb unconditional branch */ 
     2418+#define R_ARM_THM_PC9          103     /* thumb conditional branch */ 
     2419+#define R_ARM_TLS_GD32         104     /* PC-rel 32 bit for global dynamic 
     2420+                                          thread local data */ 
     2421+#define R_ARM_TLS_LDM32                105     /* PC-rel 32 bit for local dynamic 
     2422+                                          thread local data */ 
     2423+#define R_ARM_TLS_LDO32                106     /* 32 bit offset relative to TLS 
     2424+                                          block */ 
     2425+#define R_ARM_TLS_IE32         107     /* PC-rel 32 bit for GOT entry of 
     2426+                                          static TLS block offset */ 
     2427+#define R_ARM_TLS_LE32         108     /* 32 bit offset relative to static 
     2428+                                          TLS block */ 
     2429+#define        R_ARM_THM_TLS_DESCSEQ   129 
     2430+#define R_ARM_IRELATIVE                160 
     2431+#define R_ARM_RXPC25           249 
     2432+#define R_ARM_RSBREL32         250 
     2433+#define R_ARM_THM_RPC22                251 
     2434+#define R_ARM_RREL32           252 
     2435+#define R_ARM_RABS22           253 
     2436+#define R_ARM_RPC24            254 
     2437+#define R_ARM_RBASE            255 
     2438+/* Keep this the last entry.  */ 
     2439+#define R_ARM_NUM              256 
     2440+ 
     2441+/* IA-64 specific declarations.  */ 
     2442+ 
     2443+/* Processor specific flags for the Ehdr e_flags field.  */ 
     2444+#define EF_IA_64_MASKOS                0x0000000f      /* os-specific flags */ 
     2445+#define EF_IA_64_ABI64         0x00000010      /* 64-bit ABI */ 
     2446+#define EF_IA_64_ARCH          0xff000000      /* arch. version mask */ 
     2447+ 
     2448+/* Processor specific values for the Phdr p_type field.  */ 
     2449+#define PT_IA_64_ARCHEXT       (PT_LOPROC + 0) /* arch extension bits */ 
     2450+#define PT_IA_64_UNWIND                (PT_LOPROC + 1) /* ia64 unwind bits */ 
     2451+#define PT_IA_64_HP_OPT_ANOT   (PT_LOOS + 0x12) 
     2452+#define PT_IA_64_HP_HSL_ANOT   (PT_LOOS + 0x13) 
     2453+#define PT_IA_64_HP_STACK      (PT_LOOS + 0x14) 
     2454+ 
     2455+/* Processor specific flags for the Phdr p_flags field.  */ 
     2456+#define PF_IA_64_NORECOV       0x80000000      /* spec insns w/o recovery */ 
     2457+ 
     2458+/* Processor specific values for the Shdr sh_type field.  */ 
     2459+#define SHT_IA_64_EXT          (SHT_LOPROC + 0) /* extension bits */ 
     2460+#define SHT_IA_64_UNWIND       (SHT_LOPROC + 1) /* unwind bits */ 
     2461+ 
     2462+/* Processor specific flags for the Shdr sh_flags field.  */ 
     2463+#define SHF_IA_64_SHORT                0x10000000      /* section near gp */ 
     2464+#define SHF_IA_64_NORECOV      0x20000000      /* spec insns w/o recovery */ 
     2465+ 
     2466+/* Processor specific values for the Dyn d_tag field.  */ 
     2467+#define DT_IA_64_PLT_RESERVE   (DT_LOPROC + 0) 
     2468+#define DT_IA_64_NUM           1 
     2469+ 
     2470+/* IA-64 relocations.  */ 
     2471+#define R_IA64_NONE            0x00    /* none */ 
     2472+#define R_IA64_IMM14           0x21    /* symbol + addend, add imm14 */ 
     2473+#define R_IA64_IMM22           0x22    /* symbol + addend, add imm22 */ 
     2474+#define R_IA64_IMM64           0x23    /* symbol + addend, mov imm64 */ 
     2475+#define R_IA64_DIR32MSB                0x24    /* symbol + addend, data4 MSB */ 
     2476+#define R_IA64_DIR32LSB                0x25    /* symbol + addend, data4 LSB */ 
     2477+#define R_IA64_DIR64MSB                0x26    /* symbol + addend, data8 MSB */ 
     2478+#define R_IA64_DIR64LSB                0x27    /* symbol + addend, data8 LSB */ 
     2479+#define R_IA64_GPREL22         0x2a    /* @gprel(sym + add), add imm22 */ 
     2480+#define R_IA64_GPREL64I                0x2b    /* @gprel(sym + add), mov imm64 */ 
     2481+#define R_IA64_GPREL32MSB      0x2c    /* @gprel(sym + add), data4 MSB */ 
     2482+#define R_IA64_GPREL32LSB      0x2d    /* @gprel(sym + add), data4 LSB */