OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /or1k/trunk/gdb-5.0/include/elf
    from Rev 850 to Rev 1765
    Reverse comparison

Rev 850 → Rev 1765

/or32.h
0,0 → 1,64
/* OR1K ELF support for BFD. Derived from ppc.h.
Copyright (C) 2002 Free Software Foundation, Inc.
Contributed by Ivan Guzvinec <ivang@opencores.org>
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_OR1K_H
#define _ELF_OR1K_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_or32_reloc_type)
RELOC_NUMBER (R_OR32_NONE, 0)
RELOC_NUMBER (R_OR32_32, 1)
RELOC_NUMBER (R_OR32_16, 2)
RELOC_NUMBER (R_OR32_8, 3)
RELOC_NUMBER (R_OR32_CONST, 4)
RELOC_NUMBER (R_OR32_CONSTH, 5)
RELOC_NUMBER (R_OR32_JUMPTARG, 6)
RELOC_NUMBER (R_OR32_GNU_VTENTRY, 7)
RELOC_NUMBER (R_OR32_GNU_VTINHERIT, 8)
END_RELOC_NUMBERS
 
#define R_OR32_max 8
 
/* Four bit OR32 machine type field. */
#define EF_OR32_MACH 0x0000000f
 
/* Various CPU types. */
#define E_OR32_MACH_BASE 0x00000000
#define E_OR32_MACH_UNUSED1 0x00000001
#define E_OR32_MACH_UNUSED2 0x00000002
#define E_OR32_MACH_UNUSED4 0x00000003
 
/* Processor specific section headers, sh_type field */
#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
entries in this section \
based on the address \
specified in the associated \
symbol table entry. */
 
/* Processor specific section flags, sh_flags field */
#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \
this section from executable \
and shared objects that it \
builds when those objects \
are not to be furhter \
relocated. */
#endif /* _ELF_OR1K_H */
/common.h
0,0 → 1,556
/* ELF support for BFD.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
Programming Support Tools".
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
 
/* This file is part of ELF support for BFD, and contains the portions
that are common to both the internal and external representations.
For example, ELFMAG0 is the byte 0x7F in both the internal (in-memory)
and external (in-file) representations. */
 
#ifndef _ELF_COMMON_H
#define _ELF_COMMON_H
 
/* Fields in e_ident[] */
 
#define EI_MAG0 0 /* File identification byte 0 index */
#define ELFMAG0 0x7F /* Magic number byte 0 */
 
#define EI_MAG1 1 /* File identification byte 1 index */
#define ELFMAG1 'E' /* Magic number byte 1 */
 
#define EI_MAG2 2 /* File identification byte 2 index */
#define ELFMAG2 'L' /* Magic number byte 2 */
 
#define EI_MAG3 3 /* File identification byte 3 index */
#define ELFMAG3 'F' /* Magic number byte 3 */
 
#define EI_CLASS 4 /* File class */
#define ELFCLASSNONE 0 /* Invalid class */
#define ELFCLASS32 1 /* 32-bit objects */
#define ELFCLASS64 2 /* 64-bit objects */
 
#define EI_DATA 5 /* Data encoding */
#define ELFDATANONE 0 /* Invalid data encoding */
#define ELFDATA2LSB 1 /* 2's complement, little endian */
#define ELFDATA2MSB 2 /* 2's complement, big endian */
 
#define EI_VERSION 6 /* File version */
 
#define EI_OSABI 7 /* Operating System/ABI indication */
#define ELFOSABI_SYSV 0 /* UNIX System V ABI */
#define ELFOSABI_HPUX 1 /* HP-UX operating system */
#define ELFOSABI_LINUX 3 /* GNU/Linux */
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */
#define ELFOSABI_ARM 97 /* ARM */
 
#define EI_ABIVERSION 8 /* ABI version */
 
#define EI_PAD 9 /* Start of padding bytes */
 
 
/* Values for e_type, which identifies the object file type */
 
#define ET_NONE 0 /* No file type */
#define ET_REL 1 /* Relocatable file */
#define ET_EXEC 2 /* Executable file */
#define ET_DYN 3 /* Shared object file */
#define ET_CORE 4 /* Core file */
#define ET_LOOS 0xFE00 /* Operating system-specific */
#define ET_HIOS 0xFEFF /* Operating system-specific */
#define ET_LOPROC 0xFF00 /* Processor-specific */
#define ET_HIPROC 0xFFFF /* Processor-specific */
 
/* Values for e_machine, which identifies the architecture */
 
#define EM_NONE 0 /* No machine */
#define EM_M32 1 /* AT&T WE 32100 */
#define EM_SPARC 2 /* SUN SPARC */
#define EM_386 3 /* Intel 80386 */
#define EM_68K 4 /* Motorola m68k family */
#define EM_88K 5 /* Motorola m88k family */
#define EM_486 6 /* Intel 80486 */
#define EM_860 7 /* Intel 80860 */
#define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */
#define EM_S370 9 /* IBM System/370 */
#define EM_MIPS_RS4_BE 10 /* MIPS R4000 big-endian */ /* Depreciated */
#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian (Oct 4 1999 Draft)*/ /* Depreciated */
 
#define EM_PARISC 15 /* HPPA */
 
#define EM_VPP550 17 /* Fujitsu VPP500 */
#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */
#define EM_960 19 /* Intel 80960 */
#define EM_PPC 20 /* PowerPC */
#define EM_PPC64 21 /* 64-bit PowerPC */
 
#define EM_V800 36 /* NEC V800 series */
#define EM_FR20 37 /* Fujitsu FR20 */
#define EM_RH32 38 /* TRW RH32 */
#define EM_MCORE 39 /* Motorola M*Core */ /* May also be taken by Fujitsu MMA */
#define EM_RCE 39 /* Old name for MCore */
#define EM_ARM 40 /* ARM */
#define EM_OLD_ALPHA 41 /* Digital Alpha */
#define EM_SH 42 /* Hitachi SH */
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
#define EM_TRICORE 44 /* Siemens Tricore embedded processor */
#define EM_ARC 45 /* Argonaut RISC Core, Argonaut Technologies Inc. */
#define EM_H8_300 46 /* Hitachi H8/300 */
#define EM_H8_300H 47 /* Hitachi H8/300H */
#define EM_H8S 48 /* Hitachi H8S */
#define EM_H8_500 49 /* Hitachi H8/500 */
#define EM_IA_64 50 /* Intel IA-64 Processor */
#define EM_MIPS_X 51 /* Stanford MIPS-X */
#define EM_COLDFIRE 52 /* Motorola Coldfire */
#define EM_68HC12 53 /* Motorola M68HC12 */
#define EM_MMA 54 /* Fujitsu Multimedia Accelerator */
#define EM_PCP 55 /* Siemens PCP */
#define EM_NCPU 56 /* Sony nCPU embedded RISC processor */
#define EM_NDR1 57 /* Denso NDR1 microprocesspr */
#define EM_STARCORE 58 /* Motorola Star*Core processor */
#define EM_ME16 59 /* Toyota ME16 processor */
#define EM_ST100 60 /* STMicroelectronics ST100 processor */
#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ embedded processor */
 
#define EM_FX66 66 /* Siemens FX66 microcontroller */
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */
#define EM_ST7 68 /* STMicroelectronics ST7 8-bit microcontroller */
#define EM_68HC16 69 /* Motorola MC68HC16 Microcontroller */
#define EM_68HC11 70 /* Motorola MC68HC11 Microcontroller */
#define EM_68HC08 71 /* Motorola MC68HC08 Microcontroller */
#define EM_68HC05 72 /* Motorola MC68HC05 Microcontroller */
#define EM_SVX 73 /* Silicon Graphics SVx */
#define EM_ST19 74 /* STMicroelectronics ST19 8-bit microcontroller */
#define EM_VAX 75 /* Digital VAX */
 
#define EM_PJ 99 /* picoJava */
#define EM_OR32 100 /* OpenRisc 32 */
 
/* If it is necessary to assign new unofficial EM_* values, please pick large
random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
with official or non-GNU unofficial values.
 
NOTE: Do not just increment the most recent number by one.
Somebody else somewhere will do exactly the same thing, and you
will have a collision. Instead, pick a random number. */
 
/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */
#define EM_CYGNUS_POWERPC 0x9025
 
/* Old version of Sparc v9, from before the ABI; this should be
removed shortly. */
#define EM_OLD_SPARCV9 11
 
/* Old version of PowerPC, this should be removed shortly. */
#define EM_PPC_OLD 17
 
/* Cygnus ARC ELF backend. Written in the absence of an ABI. */
#define EM_CYGNUS_ARC 0x9040
 
/* Cygnus M32R ELF backend. Written in the absence of an ABI. */
#define EM_CYGNUS_M32R 0x9041
 
/* Alpha backend magic number. Written in the absence of an ABI. */
#define EM_ALPHA 0x9026
 
/* D10V backend magic number. Written in the absence of an ABI. */
#define EM_CYGNUS_D10V 0x7650
 
/* D30V backend magic number. Written in the absence of an ABI. */
#define EM_CYGNUS_D30V 0x7676
 
/* V850 backend magic number. Written in the absense of an ABI. */
#define EM_CYGNUS_V850 0x9080
 
/* mn10200 and mn10300 backend magic numbers.
Written in the absense of an ABI. */
#define EM_CYGNUS_MN10200 0xdead
#define EM_CYGNUS_MN10300 0xbeef
 
/* FR30 magic number - no EABI available. */
#define EM_CYGNUS_FR30 0x3330
 
/* AVR magic number
Written in the absense of an ABI. */
#define EM_AVR 0x1057
 
/* See the above comment before you add a new EM_* value here. */
 
/* Values for e_version */
 
#define EV_NONE 0 /* Invalid ELF version */
#define EV_CURRENT 1 /* Current version */
 
/* Values for program header, p_type field */
 
#define PT_NULL 0 /* Program header table entry unused */
#define PT_LOAD 1 /* Loadable program segment */
#define PT_DYNAMIC 2 /* Dynamic linking information */
#define PT_INTERP 3 /* Program interpreter */
#define PT_NOTE 4 /* Auxiliary information */
#define PT_SHLIB 5 /* Reserved, unspecified semantics */
#define PT_PHDR 6 /* Entry for header table itself */
#define PT_LOOS 0x60000000 /* OS-specific */
#define PT_HIOS 0x6fffffff /* OS-specific */
#define PT_LOPROC 0x70000000 /* Processor-specific */
#define PT_HIPROC 0x7FFFFFFF /* Processor-specific */
 
/* Program segment permissions, in program header p_flags field */
 
#define PF_X (1 << 0) /* Segment is executable */
#define PF_W (1 << 1) /* Segment is writable */
#define PF_R (1 << 2) /* Segment is readable */
/* #define PF_MASKOS 0x0F000000 *//* OS-specific reserved bits */
#define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */
 
/* Values for section header, sh_type field */
 
#define SHT_NULL 0 /* Section header table entry unused */
#define SHT_PROGBITS 1 /* Program specific (private) data */
#define SHT_SYMTAB 2 /* Link editing symbol table */
#define SHT_STRTAB 3 /* A string table */
#define SHT_RELA 4 /* Relocation entries with addends */
#define SHT_HASH 5 /* A symbol hash table */
#define SHT_DYNAMIC 6 /* Information for dynamic linking */
#define SHT_NOTE 7 /* Information that marks file */
#define SHT_NOBITS 8 /* Section occupies no space in file */
#define SHT_REL 9 /* Relocation entries, no addends */
#define SHT_SHLIB 10 /* Reserved, unspecified semantics */
#define SHT_DYNSYM 11 /* Dynamic linking symbol table */
 
#define SHT_INIT_ARRAY 14 /* Array of pointers to init functions */
#define SHT_FINI_ARRAY 15 /* Array of pointers to finish functions */
#define SHT_PREINIT_ARRAY 16 /* Array of pointers to pre-init functions */
 
#define SHT_LOOS 0x60000000 /* Operating system specific semantics, lo */
#define SHT_HIOS 0x6fffffff /* Operating system specific semantics, hi */
 
/* The next three section types are defined by Solaris, and are named
SHT_SUNW*. We use them in GNU code, so we also define SHT_GNU*
versions. */
#define SHT_SUNW_verdef 0x6ffffffd /* Versions defined by file */
#define SHT_SUNW_verneed 0x6ffffffe /* Versions needed by file */
#define SHT_SUNW_versym 0x6fffffff /* Symbol versions */
 
#define SHT_GNU_verdef SHT_SUNW_verdef
#define SHT_GNU_verneed SHT_SUNW_verneed
#define SHT_GNU_versym SHT_SUNW_versym
 
#define SHT_LOPROC 0x70000000 /* Processor-specific semantics, lo */
#define SHT_HIPROC 0x7FFFFFFF /* Processor-specific semantics, hi */
#define SHT_LOUSER 0x80000000 /* Application-specific semantics */
/* #define SHT_HIUSER 0x8FFFFFFF *//* Application-specific semantics */
#define SHT_HIUSER 0xFFFFFFFF /* New value, defined in Oct 4, 1999 Draft */
 
/* Values for section header, sh_flags field */
 
#define SHF_WRITE (1 << 0) /* Writable data during execution */
#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */
#define SHF_EXECINSTR (1 << 2) /* Executable machine instructions */
#define SHF_MERGE (1 << 4) /* Data in this section can be merged */
#define SHF_STRINGS (1 << 5) /* Contains null terminated character strings */
#define SHF_INFO_LINK (1 << 6) /* sh_info holds section header table index */
#define SHF_LINK_ORDER (1 << 7) /* Preserve section ordering when linking */
#define SHF_OS_NONCONFORMING (1 << 8) /* OS specifci processing required */
 
/* #define SHF_MASKOS 0x0F000000 *//* OS-specific semantics */
#define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define SHF_MASKPROC 0xF0000000 /* Processor-specific semantics */
 
/* Values of note segment descriptor types for core files. */
 
#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */
#define NT_FPREGSET 2 /* Contains copy of fpregset struct */
#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */
#define NT_TASKSTRUCT 4 /* Contains copy of task struct */
#define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */
/* note name must be "LINUX". */
 
/* Note segments for core files on dir-style procfs systems. */
 
#define NT_PSTATUS 10 /* Has a struct pstatus */
#define NT_FPREGS 12 /* Has a struct fpregset */
#define NT_PSINFO 13 /* Has a struct psinfo */
#define NT_LWPSTATUS 16 /* Has a struct lwpstatus_t */
#define NT_LWPSINFO 17 /* Has a struct lwpsinfo_t */
#define NT_WIN32PSTATUS 18 /* Has a struct win32_pstatus */
 
/* Values of note segment descriptor types for object files. */
/* (Only for hppa right now. Should this be moved elsewhere?) */
 
#define NT_VERSION 1 /* Contains a version string. */
 
/* These three macros disassemble and assemble a symbol table st_info field,
which contains the symbol binding and symbol type. The STB_ and STT_
defines identify the binding and type. */
 
#define ELF_ST_BIND(val) (((unsigned int)(val)) >> 4)
#define ELF_ST_TYPE(val) ((val) & 0xF)
#define ELF_ST_INFO(bind,type) (((bind) << 4) + ((type) & 0xF))
 
/* The 64bit and 32bit versions of these macros are identical, but
the ELF spec defines them, so here they are. */
#define ELF32_ST_BIND ELF_ST_BIND
#define ELF32_ST_TYPE ELF_ST_TYPE
#define ELF32_ST_INFO ELF_ST_INFO
#define ELF64_ST_BIND ELF_ST_BIND
#define ELF64_ST_TYPE ELF_ST_TYPE
#define ELF64_ST_INFO ELF_ST_INFO
 
/* This macro disassembles and assembles a symbol's visibility into
the st_other field. The STV_ defines specificy the actual visibility. */
 
#define ELF_ST_VISIBILITY(v) ((v) & 0x3)
/* The remaining bits in the st_other field are not currently used.
They should be set to zero. */
 
#define ELF32_ST_VISIBILITY ELF_ST_VISIBILITY
#define ELF64_ST_VISIBILITY ELF_ST_VISIBILITY
 
 
#define STN_UNDEF 0 /* undefined symbol index */
 
#define STB_LOCAL 0 /* Symbol not visible outside obj */
#define STB_GLOBAL 1 /* Symbol visible outside obj */
#define STB_WEAK 2 /* Like globals, lower precedence */
#define STB_LOOS 10 /* OS-specific semantics */
#define STB_HIOS 12 /* OS-specific semantics */
#define STB_LOPROC 13 /* Application-specific semantics */
#define STB_HIPROC 15 /* Application-specific semantics */
 
#define STT_NOTYPE 0 /* Symbol type is unspecified */
#define STT_OBJECT 1 /* Symbol is a data object */
#define STT_FUNC 2 /* Symbol is a code object */
#define STT_SECTION 3 /* Symbol associated with a section */
#define STT_FILE 4 /* Symbol gives a file name */
#define STT_COMMON 5 /* An uninitialised common block */
#define STT_LOOS 10 /* OS-specific semantics */
#define STT_HIOS 12 /* OS-specific semantics */
#define STT_LOPROC 13 /* Application-specific semantics */
#define STT_HIPROC 15 /* Application-specific semantics */
 
/* Special section indices, which may show up in st_shndx fields, among
other places. */
 
#define SHN_UNDEF 0 /* Undefined section reference */
#define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */
#define SHN_LOPROC 0xFF00 /* Begin range of appl-specific */
#define SHN_HIPROC 0xFF1F /* End range of appl-specific */
#define SHN_LOOS 0xFF20 /* OS specific semantics, lo */
#define SHN_HIOS 0xFF3F /* OS specific semantics, hi */
#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */
#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */
#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */
 
/* The following constants control how a symbol may be accessed once it has
become part of an executable or shared library. */
#define STV_DEFAULT 0 /* Visibility is specified by binding type */
#define STV_INTERNAL 1 /* OS specific version of STV_HIDDEN */
#define STV_HIDDEN 2 /* Can only be seen inside currect component */
#define STV_PROTECTED 3 /* Treat as STB_LOCAL inside current component */
 
/* relocation info handling macros */
 
#define ELF32_R_SYM(i) ((i) >> 8)
#define ELF32_R_TYPE(i) ((i) & 0xff)
#define ELF32_R_INFO(s,t) (((s) << 8) + ((t) & 0xff))
 
#define ELF64_R_SYM(i) ((i) >> 32)
#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
#define ELF64_R_INFO(s,t) (((bfd_vma) (s) << 32) + (bfd_vma) (t))
 
/* Dynamic section tags */
 
#define DT_NULL 0
#define DT_NEEDED 1
#define DT_PLTRELSZ 2
#define DT_PLTGOT 3
#define DT_HASH 4
#define DT_STRTAB 5
#define DT_SYMTAB 6
#define DT_RELA 7
#define DT_RELASZ 8
#define DT_RELAENT 9
#define DT_STRSZ 10
#define DT_SYMENT 11
#define DT_INIT 12
#define DT_FINI 13
#define DT_SONAME 14
#define DT_RPATH 15
#define DT_SYMBOLIC 16
#define DT_REL 17
#define DT_RELSZ 18
#define DT_RELENT 19
#define DT_PLTREL 20
#define DT_DEBUG 21
#define DT_TEXTREL 22
#define DT_JMPREL 23
#define DT_BIND_NOW 24
#define DT_INIT_ARRAY 25
#define DT_FINI_ARRAY 26
#define DT_INIT_ARRAYSZ 27
#define DT_FINI_ARRAYSZ 28
#define DT_RUNPATH 29
#define DT_FLAGS 30
 
#define DT_ENCODING 32
#define DT_PREINIT_ARRAY 32
#define DT_PREINIT_ARRAYSZ 33
 
/* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
for DT_LOOS and DT_HIOS. Some implementations however, use
values outside of the new range (see below). */
#define OLD_DT_LOOS 0x60000000
#define DT_LOOS 0x6000000d
#define DT_HIOS 0x6fff0000
#define OLD_DT_HIOS 0x6fffffff
 
#define DT_LOPROC 0x70000000
#define DT_HIPROC 0x7fffffff
 
/* The next four dynamic tags are used on Solaris. We support them
everywhere. Note these values lie outside of the (new) range for
OS specific values. This is a deliberate special case and we
maintain it for backwards compatability. */
#define DT_VALRNGLO 0x6ffffd00
#define DT_PLTPADSZ 0x6ffffdf9
#define DT_MOVEENT 0x6ffffdfa
#define DT_MOVESZ 0x6ffffdfb
#define DT_FEATURE_1 0x6ffffdfc
#define DT_POSFLAG_1 0x6ffffdfd
#define DT_SYMINSZ 0x6ffffdfe
#define DT_SYMINENT 0x6ffffdff
#define DT_VALRNGHI 0x6ffffdff
 
#define DT_ADDRRNGLO 0x6ffffe00
#define DT_SYMINFO 0x6ffffeff
#define DT_ADDRRNGHI 0x6ffffeff
 
#define DT_RELACOUNT 0x6ffffff9
#define DT_RELCOUNT 0x6ffffffa
#define DT_FLAGS_1 0x6ffffffb
#define DT_VERDEF 0x6ffffffc
#define DT_VERDEFNUM 0x6ffffffd
#define DT_VERNEED 0x6ffffffe
#define DT_VERNEEDNUM 0x6fffffff
 
/* This tag is a GNU extension to the Solaris version scheme. */
#define DT_VERSYM 0x6ffffff0
 
#define DT_LOPROC 0x70000000
#define DT_HIPROC 0x7fffffff
 
/* These section tags are used on Solaris. We support them
everywhere, and hope they do not conflict. */
 
#define DT_AUXILIARY 0x7ffffffd
#define DT_USED 0x7ffffffe
#define DT_FILTER 0x7fffffff
 
/* Values used in DT_FEATURE_1 .dynamic entry. */
#define DTF_1_PARINIT 0x00000001
 
/* Flag values used in the DT_POSFLAG_1 .dynamic entry. */
#define DF_P1_LAZYLOAD 0x00000001
#define DF_P1_GROUPPERM 0x00000002
 
/* Flag value in in the DT_1_FLAGS .dynamic entry. */
#define DF_1_NOW 0x00000001
#define DF_1_GLOBAL 0x00000002
#define DF_1_GROUP 0x00000004
#define DF_1_NODELETE 0x00000008
#define DF_1_LOADFLTR 0x00000010
#define DF_1_INITFIRST 0x00000020
#define DF_1_NOOPEN 0x00000040
#define DF_1_ORIGIN 0x00000080
#define DF_1_DIRECT 0x00000100
#define DF_1_TRANS 0x00000200
#define DF_1_INTERPOSE 0x00000400
 
/* Flag values for the DT_FLAGS entry. */
#define DF_ORIGIN (1 << 0)
#define DF_SYMBOLIC (1 << 1)
#define DF_TEXTREL (1 << 2)
#define DF_BIND_NOW (1 << 3)
 
/* These constants are used for the version number of a Elf32_Verdef
structure. */
 
#define VER_DEF_NONE 0
#define VER_DEF_CURRENT 1
 
/* These constants appear in the vd_flags field of a Elf32_Verdef
structure. */
 
#define VER_FLG_BASE 0x1
#define VER_FLG_WEAK 0x2
 
/* These special constants can be found in an Elf32_Versym field. */
 
#define VER_NDX_LOCAL 0
#define VER_NDX_GLOBAL 1
 
/* These constants are used for the version number of a Elf32_Verneed
structure. */
 
#define VER_NEED_NONE 0
#define VER_NEED_CURRENT 1
 
/* This flag appears in a Versym structure. It means that the symbol
is hidden, and is only visible with an explicit version number.
This is a GNU extension. */
 
#define VERSYM_HIDDEN 0x8000
 
/* This is the mask for the rest of the Versym information. */
 
#define VERSYM_VERSION 0x7fff
 
/* This is a special token which appears as part of a symbol name. It
indictes that the rest of the name is actually the name of a
version node, and is not part of the actual name. This is a GNU
extension. For example, the symbol name `stat@ver2' is taken to
mean the symbol `stat' in version `ver2'. */
 
#define ELF_VER_CHR '@'
 
/* Possible values for si_boundto. */
#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */
#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */
#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */
 
/* Possible bitmasks for si_flags. */
#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */
#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */
#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */
#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
loaded */
/* Syminfo version values. */
#define SYMINFO_NONE 0
#define SYMINFO_CURRENT 1
#define SYMINFO_NUM 2
 
#endif /* _ELF_COMMON_H */
/i386.h
0,0 → 1,49
/* ix86 ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_I386_H
#define _ELF_I386_H
 
#include "elf/reloc-macros.h"
 
START_RELOC_NUMBERS (elf_i386_reloc_type)
RELOC_NUMBER (R_386_NONE, 0) /* No reloc */
RELOC_NUMBER (R_386_32, 1) /* Direct 32 bit */
RELOC_NUMBER (R_386_PC32, 2) /* PC relative 32 bit */
RELOC_NUMBER (R_386_GOT32, 3) /* 32 bit GOT entry */
RELOC_NUMBER (R_386_PLT32, 4) /* 32 bit PLT address */
RELOC_NUMBER (R_386_COPY, 5) /* Copy symbol at runtime */
RELOC_NUMBER (R_386_GLOB_DAT, 6) /* Create GOT entry */
RELOC_NUMBER (R_386_JUMP_SLOT, 7) /* Create PLT entry */
RELOC_NUMBER (R_386_RELATIVE, 8) /* Adjust by program base */
RELOC_NUMBER (R_386_GOTOFF, 9) /* 32 bit offset to GOT */
RELOC_NUMBER (R_386_GOTPC, 10) /* 32 bit PC relative offset to GOT */
FAKE_RELOC (FIRST_INVALID_RELOC, 11)
FAKE_RELOC (LAST_INVALID_RELOC, 19)
RELOC_NUMBER (R_386_16, 20)
RELOC_NUMBER (R_386_PC16, 21)
RELOC_NUMBER (R_386_8, 22)
RELOC_NUMBER (R_386_PC8, 23)
RELOC_NUMBER (R_386_max, 24)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
END_RELOC_NUMBERS
 
#endif
/mn10200.h
0,0 → 1,39
/* MN10200 ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the MN10200 ELF ABI. */
 
#ifndef _ELF_MN10200_H
#define _ELF_MN10200_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_mn10200_reloc_type)
RELOC_NUMBER (R_MN10200_NONE, 0)
RELOC_NUMBER (R_MN10200_32, 1)
RELOC_NUMBER (R_MN10200_16, 2)
RELOC_NUMBER (R_MN10200_8, 3)
RELOC_NUMBER (R_MN10200_24, 4)
RELOC_NUMBER (R_MN10200_PCREL8, 5)
RELOC_NUMBER (R_MN10200_PCREL16, 6)
RELOC_NUMBER (R_MN10200_PCREL24, 7)
END_RELOC_NUMBERS
 
#endif /* _ELF_MN10200_H */
/mn10300.h
0,0 → 1,54
/* MN10300 ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the MN10300 ELF ABI. */
 
#ifndef _ELF_MN10300_H
#define _ELF_MN10300_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_mn10300_reloc_type)
RELOC_NUMBER (R_MN10300_NONE, 0)
RELOC_NUMBER (R_MN10300_32, 1)
RELOC_NUMBER (R_MN10300_16, 2)
RELOC_NUMBER (R_MN10300_8, 3)
RELOC_NUMBER (R_MN10300_PCREL32, 4)
RELOC_NUMBER (R_MN10300_PCREL16, 5)
RELOC_NUMBER (R_MN10300_PCREL8, 6)
RELOC_NUMBER (R_MN10300_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_MN10300_GNU_VTENTRY, 8)
RELOC_NUMBER (R_MN10300_24, 9)
EMPTY_RELOC (R_MN10300_MAX)
END_RELOC_NUMBERS
 
/* Machine variant if we know it. This field was invented at Cygnus,
but it is hoped that other vendors will adopt it. If some standard
is developed, this code should be changed to follow it. */
 
#define EF_MN10300_MACH 0x00FF0000
 
/* Cygnus is choosing values between 80 and 9F;
00 - 7F should be left for a future standard;
the rest are open. */
 
#define E_MN10300_MACH_MN10300 0x00810000
#define E_MN10300_MACH_AM33 0x00820000
#endif /* _ELF_MN10300_H */
/ChangeLog
0,0 → 1,980
2000-04-07 Nick Clifton <nickc@cygnus.com>
 
* arm-oabi.h: Delete.
* arm.h: Merge in definitions of old reloc numbers from
arm-oabi.h.
 
2000-04-06 Nick Clifton <nickc@cygnus.com>
 
* arm.h (EF_ARM_SYMSARESORTED): Define.
(EF_ARM_EABIMASK): Define.
(EF_ARM_EABI_VERSION): Define.
(EF_ARM_EABI_UNKNOWN): Define.
(EF_ARM_EABI_VER1): Define.
(PF_ARM_PI): Define.
(PF_ARM_ABS): Define.
Wed Apr 5 22:08:59 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
 
* sh.h (R_SH_LOOP_START, R_SH_LOOP_END): New RELOC_NUMBERs.
 
2000-03-27 Denis Chertykov <denisc@overta.ru>
 
* avr.h: New file. AVR ELF support for BFD.
* common.h: Add AVR magic number.
 
2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
 
* mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16,
R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation
numbers.
 
2000-02-23 Linas Vepstas <linas@linas.org>
 
* i370.h: New file.
 
2000-02-22 Nick Clifton <nickc@cygnus.com>
 
* common.h (ELF_ST_OTHER): Remove definition.
(ELF32_ST_OTHER): Remove definition.
(ELF64_ST_OTHER): Remove definition.
 
2000-02-22 H.J. Lu <hjl@gnu.org>
 
* common.h (ELFOSABI_LINUX): Define.
 
Thu Feb 17 00:18:33 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
 
* sh.h: (EF_SH_MACH_MASK, EF_SH_UNKNOWN, EF_SH1, EF_SH2): New macros.
(EF_SH3, EF_SH_HAS_DSP, EF_SH_DSP, EF_SH3_DSP): Likewise.
(EF_SH_HAS_FP, EF_SH3E, EF_SH4, EF_SH_MERGE_MACH): Likewise.
 
2000-02-03 H.J. Lu <hjl@gnu.org>
 
* arm-oabi.h: Duplicate changes made to arm.h on Jan. 27,
2000 by Thomas de Lellis <tdel@windriver.com>.
 
2000-01-27 Thomas de Lellis <tdel@windriver.com>
 
* arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC.
(STT_ARM_16BIT): New flag. Denotes a label that was defined in
Thumb block but was does not identify a function.
 
2000-01-20 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_MCORE): Fix spelling of Motorola.
* mcore.h (EM_MCORE): Fix spelling of Motorola.
 
2000-01-13 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_S370): Change comment - this is now the IBM
System/370.
(EM_IA_64): Change comment - this is now the IA-64.
 
2000-01-11 Nick Clifton <nickc@cygnus.com>
 
* common.h (DT_ENCODING): Fix definition of this value.
(DT_LOOS): Fix definition of this value.
(DT_HIOS): Fix definition of this value.
(OLD_DT_LOOS): Value of DT_LOOS before Oct 4, 1999 draft
of ELF spec changed it.
(OLD_DT_HIOS): Value of DT_HIOS before Oct 4, 1999 draft
of ELF spec changed it.
 
2000-01-10 Egor Duda <deo@logos-m.ru>
 
* common.h (NT_WIN32PSTATUS): Define. (cygwin elf core dumps).
 
1999-12-28 Nick Clifton <nickc@cygnus.com>
 
* mips.h (STO_*): Redefine in terms of STV_* values now in
common.h.
 
1999-12-27 Nick Clifton <nickc@cygnus.com>
 
* common.h: Upgrade to match Oct4, 1999 Draft ELF ABI Spec.
(EM_MIPS_RS3_LE): New machine number.
(EM_RCE): New machine number.
(EM_MMA): New machine number.
(EM_PCP): New machine number.
(EM_NCPU): New machine number.
(EM_NDR1): New machine number.
(EM_STARCORE): New machine number.
(EM_ME16): New machine number.
(EM_ST100): New machine number.
(EM_TINYJ): New machine number.
(EM_FX66): New machine number.
(EM_ST9PLUS): New machine number.
(EM_ST7): New machine number.
(EM_68HC16): New machine number.
(EM_68HC11): New machine number.
(EM_68HC08): New machine number.
(EM_68HC05): New machine number.
(EM_SVX): New machine number.
(EM_VAX): New machine number.
(PF_MASKOS): Change value.
(SHT_INIT_ARRAY): New value for sh_type field.
(SHT_FINI_ARRAY): New value for sh_type field.
(SHT_PREINIT_ARRAY): New value for sh_type field.
(SHT_HIUSER): Change value.
(SHF_MERGE): New valye for sh_flags field.
(SHF_STRINGS): New valye for sh_flags field.
(SHF_INFO_LINK): New valye for sh_flags field.
(SHF_OS_NONCONFORMING): New valye for sh_flags field.
(SHF_MASKOS): Change value.
(ELF_ST_VISIBILITY): New macro.
(ELF_ST_OTHER): New macro.
(STT_COMMON): New symbol type.
(STV_DEFAULT): Value for symbol visibility.
(STV_INTERNAL): Value for symbol visibility.
(STV_HIDDEN): Value for symbol visibility.
(STV_PROTECTED): Value for symbol visibility.
(DT_RUNPATH): New dynamic section tag.
(DT_FLAGS): New dynamic section tag.
(DT_ENCODING): New dynamic section tag.
(DT_PREINIT_ARRAY): New dynamic section tag.
(DT_PREINIT_ARRAYSZ): New dynamic section tag.
(DT_LOPROC): New dynamic section tag index.
(DT_HIPROC): New dynamic section tag index.
(DF_ORIGIN): Value for dynamic section flag.
(DF_SYMBOLIC): Value for dynamic section flag.
(DF_TEXTREL): Value for dynamic section flag.
(DF_BIND_NOW): Value for dynamic section flag.
 
1999-12-09 Fred Fish <fnf@cygnus.com>
 
* i960.h (reloc-macros.h): Include using relative dir elf/.
* i386.h (reloc-macros.h): Include using relative dir elf/.
* hppa.h (reloc-macros.h): Include using relative dir elf/.
1999-12-07 Jim Blandy <jimb@cygnus.com>
 
* common.h (NT_PRXFPREG): New definition.
 
Wed Dec 1 03:02:15 1999 Jeffrey A Law (law@cygnus.com)
 
* mn10300.h (E_MN10300_MACH_AM33): Define.
 
Mon Oct 11 22:42:37 1999 Jeffrey A Law (law@cygnus.com)
 
* hppa.h (PF_HP_PAGE_SIZE): Define.
(PF_HP_FAR_SHARED, PF_HP_NEAR_SHARED, PF_HP_CODE): Likewise.
(PF_HP_MODIFY, PF_HP_LAZYSWAP, PF_HP_SBP): Likewise.
 
Mon Oct 4 17:42:38 1999 Doug Evans <devans@canuck.cygnus.com>
 
* m32r.h (E_M32RX_ARCH): Define.
 
1999-09-15 Ulrich Drepper <drepper@cygnus.com>
 
* hppa.h: Add DT_HP_GST_SIZE, DT_HP_GST_VERSION, and DT_HP_GST_HASHVAL.
 
1999-09-04 Steve Chamberlain <sac@pobox.com>
 
* pj.h: New file.
* common.h (EM_PJ): Define.
 
1999-09-02 Ulrich Drepper <drepper@cygnus.com>
 
* hppa.h: Add HPUX specific symbol type definitions.
 
* hppa.h: Add HPUX specific dynamic and program header table
specific definitions.
 
1999-08-31 Scott Bambrough <scottb@netwinder.org>
 
* common.h (NT_TASKSTRUCT): Define.
 
1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
 
* sparc.h (EF_SPARC_SUN_US3): Define in Cheetah extensions
flag (as per SCD2.4.1).
 
1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
 
* sparc.h (ELF64_R_TYPE_DATA): Only use ELF64_R_TYPE bits, not
ELF64_R_SYM bits.
 
1999-06-21 Philip Blundell <pb@nexus.co.uk>
 
* arm.h (EF_SOFT_FLOAT, F_SOFT_FLOAT): Define.
 
1999-07-13 Andreas Schwab <schwab@suse.de>
 
* m68k.h (EF_CPU32): Move definition inside multiple inclusion
guard.
 
1999-07-08 Richard Henderson <rth@cygnus.com>
 
* sparc.h (ELF64_R_TYPE_DATA): Sign extend the value.
(ELF64_R_TYPE_INFO): Mask out all but low 24 bits of data.
(DT_SPARC_PLTFMT): Delete.
Based on a patch from Jakub Jelinek.
 
Mon Jun 21 16:36:02 1999 Jeffrey A Law (law@cygnus.com)
 
* hppa.h (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type.
 
1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
 
* sparc.h (R_SPARC_max_std): Define.
 
Wed Jun 9 15:16:34 1999 Jeffrey A Law (law@cygnus.com)
 
* hppa.h: Update with various changes from newest PA ELF
specifications.
 
1999-06-03 Ian Lance Taylor <ian@zembu.com>
 
* common.h (EM_PPC64): Define.
 
1999-06-02 Stu Grossman <grossman@babylon-5.cygnus.com>
 
* dwarf.h: Add LANG_JAVA.
* dwarf2.h: Add DW_LANG_Java.
 
1999-05-29 Nick Clifton <nickc@cygnus.com>
 
* common.h (ELFOSABI_ARM): Define.
 
1999-05-28 Nick Clifton <nickc@cygnus.com>
 
* reloc-macros.h: Update comment.
 
1999-05-28 Ian Lance Taylor <ian@zembu.com>
 
* i960.h: New file.
 
1999-05-16 Nick Clifton <nickc@cygnus.com>
 
* mcore.h (R_MCORE_COPY): Define.
(R_MCORE_GLOB_DAT): Define.
(R_MCORE_JUMP_SLOT): Define.
 
1999-05-15 Nick Clifton <nickc@cygnus.com>
 
* mcore.h (R_MCORE_RELATIVE): Define.
 
999-05-05 Catherine Moore <clm@cygnus.com>
 
* m68k.h (EF_CPU32): Define.
 
1999-04-21 Nick Clifton <nickc@cygnus.com>
 
* reloc-macros.h (START_RELOC_NUMBERS): Prepend an underscore to
fake reloc entry name (if possible), in order to avoid conflicts
with typedefs of the same name.
 
1999-04-16 Gavin Romig-Koch <gavin@cygnus.com>
 
* mips.h (EF_MIPS_32BITMODE): New.
 
1999-04-08 Nick Clifton <nickc@cygnus.com>
 
* mcore.h: New header file. Defines for Motorola's MCore
processor.
 
1999-04-08 Nick Clifton <nickc@cygnus.com>
 
* common.h: Add new constants defined in: "System V Application
Binary Interface - DRAFT - April 29, 1998" found at the web site:
http://www.sco.com/developer/gabi/contents.html
 
(EM_MMA): Removed. Replaced with EM_MCORE as Motorolla own this
value.
 
1999-03-31 Nick Clifton <nickc@cygnus.com>
 
* reloc-macros.h: Fixed to not generate an enum with a trailing
comma.
 
1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
 
* mips.h (E_MIPS_MACH_5000): New.
 
1999-03-10 Ulrich Drepper <drepper@cygnus.com>
 
* common.h: Add definitions for a few more Solaris ELF extensions.
 
Thu Feb 18 18:58:26 1999 Ian Lance Taylor <ian@cygnus.com>
 
* external.h: Only use attribute if __GNUC__ is defined.
 
1999-02-17 Nick Clifton <nickc@cygnus.com>
 
Patch submitted by: Scott Bambrough <scottb@corelcomputer.com>
 
* elf/external.h: struct Elf_External_Versym must be packed on
ARM. Code uses sizeof(Elf_External_Versym) and assumes it is
equal to sizeof(char[2]). Reported by Jim Pick <jim@jimpick.com>
 
1999-02-02 Nick Clifton <nickc@cygnus.com>
 
* dwarf2.h (DWARF2_External_ARange): New structure.
(DWARF2_Internal_ARange): New structure.
 
Mon Feb 1 11:33:56 1999 Catherine Moore <clm@cygnus.com>
 
* arm.h: Renumber relocs to conform to standard.
(EF_NEW_ABI): Define.
(EF_OLD_ABI): Define.
* arm-oabi.h: New file.
 
1999-01-28 Nick Clifton <nickc@cygnus.com>
 
* fr30.h: Add R_FR30_GNU_VT{INHERIT,ENTRY} relocs.
 
1999-01-27 Nick Clifton <nickc@cygnus.com>
 
* dwarf2.h: Add typedefs for structures found in dwarf2 sections.
 
1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
 
* mips.h (E_MIPS_MACH_4111): New.
 
1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
 
* mips.h (EF_MIPS_ABI,E_MIPS_ABI_O32,E_MIPS_ABI_O64,
E_MIPS_ABI_EABI32,E_MIPS_ABI_EABI64):
 
1998-12-03 Nick Clifton <nickc@cygnus.com>
 
* fr30.h: Add R_FR30_48 reloc.
 
1998-12-02 Ulrich Drepper <drepper@cygnus.com>
 
* mips.h: Add external data type for conflict section.
 
* mips.h: Add more LL_* options from Irix 6.5.
 
* mips.h: Add R_MIPS_JALR and adjust R_MIPS_max appropriately.
 
Tue Nov 10 15:12:28 1998 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_CYGNUS_FR30): Reduce to a 16 bit value.
 
Tue Nov 10 15:17:28 1998 Catherine Moore <clm@cygnus.com>
 
* d10v.h: Add vtable relocs.
 
Wed Nov 4 15:56:50 1998 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_CYGNUS_FR30): New machine number.
 
* fr30.h: New file: Definitions for the FR30.
 
Fri Oct 30 11:54:15 1998 Catherine Moore <clm@cygnus.com>
 
From Philip Blundell <pb@nexus.co.uk>:
* arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC.
(EF_ALIGN8): New flag.
 
Tue Oct 20 11:19:50 1998 Ian Lance Taylor <ian@cygnus.com>
 
* common.h (NT_LWPSTATUS): Close comment accidentally left open.
 
Mon Oct 19 20:24:11 1998 Catherine Moore <clm@cygnus.com>
 
* sh.h: Add vtable relocs.
 
Mon Oct 19 01:44:42 1998 Felix Lee <flee@cygnus.com>
 
* common.h (NT_PSTATUS, NT_FPREGS, NT_PSINFO,
NT_LWPSTATUS,NT_LWPSINFO): added.
* internal.h (Elf_Internal_Note): new structure members.
 
Fri Oct 16 14:11:25 1998 Catherine Moore <clm@cygnus.com>
 
* m32r.h: Add vtable relocs.
 
Tue Oct 6 09:22:22 1998 Catherine Moore <clm@cygnus.com>
 
* sparc.h: Add vtable relocs.
 
Mon Oct 5 09:39:22 1998 Catherine Moore <clm@cygnus.com>
 
* v850.h: Add vtable relocs.
 
Sun Oct 4 21:17:51 1998 Ian Lance Taylor <ian@cygnus.com>
 
* i386.h (R_386_max): Change from 252 to 24.
 
Mon Sep 21 12:24:44 1998 Catherine Moore <clm@cygnus.com>
 
* i386.h: Change vtable reloc numbers.
 
Sun Sep 20 00:54:22 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
 
* m68k.h: Add vtable relocs and R_68K_max.
 
Tue Sep 15 09:56:49 CDT 1998 Catherine Moore <clm@cygnus.com>
 
* arm.h: Add vtable relocs.
 
Mon Aug 31 11:25:27 1998 Catherine Moore <clm@cygnus.com>
 
* arm.h: Define STT_ARM_TFUNC. Remove ST_THUMB_xxxx
definitions.
 
Sat Aug 29 22:25:51 1998 Richard Henderson <rth@cygnus.com>
 
* i386.h: Add vtable relocs.
 
1998-08-25 16:42 Ulrich Drepper <drepper@cygnus.com>
 
* common.h: Add SYMINFO_* macros to access Elf*_Syminfo information.
 
* external.h: Add Elf_External_Syminfo definition.
 
* internal.h: Add Elf_Internal_Syminfo, Elf32_Internal_Syminfo,
and Elf64_Syminfo definitions.
 
Sun Aug 9 20:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
 
* arm.h: Add ST_THUMB definitions.
 
Wed Aug 5 15:52:35 1998 Nick Clifton <nickc@cygnus.com>
 
* arm.h: Add ELF header flags to specify compile time optins:
EF_INTERWORK: New flag.
EF_APCS_26: New flag.
EF_APCS_FLOAT: New flag.
EF_PIC: New flag.
 
1998-07-31 21:28 Ulrich Drepper <drepper@cygnus.com>
 
* mips.h: Add missing RHF_* constants.
 
Fri Jul 31 10:01:40 1998 Catherine Moore <clm@cygnus.com>
 
* arm.h: Add R_ARM_THM_PC9 relocation.
 
1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
 
* common.h: Add new DT_* entries and there flag macros from Solaris.
 
Tue Jul 28 18:14:07 1998 Stan Cox <scox@equinox.cygnus.com>
 
* sparc.h: (R_SPARC_REV32): Added for little endian data e.g. sparc 86x.
 
Fri Jul 24 11:22:06 1998 Jeffrey A Law (law@cygnus.com)
 
* mn10300.h: Add R_MN10300_24 relocation.
 
1998-07-24 Ulrich Drepper <drepper@cygnus.com>
 
* mips.h: Add MIPS64 relocation names and values.
 
Wed Jul 22 19:29:00 Catherine Moore <clm@cygnus.com>
 
* arm.h: Rename relocations.
 
1998-07-22 Ulrich Drepper <drepper@cygnus.com>
 
* ppc.h: Define enum as elf_ppc_reloc_type.
 
Wed Jul 22 16:22:11 1998 Nick Clifton <nickc@cygnus.com>
 
* reloc-macros.h: New file. Provides relocation macros:
START_RELOC_NUMBERS, RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC and
END_RELOC_NUMBERS used by other elf header files.
 
* alpha.h: Use reloc-macros.h.
* arc.h: Use reloc-macros.h.
* arm.h: Use reloc-macros.h.
* d10v.h: Use reloc-macros.h.
* d30v.h: Use reloc-macros.h.
* hppa.h: Use reloc-macros.h.
* i386.h: Use reloc-macros.h.
* m32r.h: Use reloc-macros.h.
* m68k.h: Use reloc-macros.h.
* mips.h: Use reloc-macros.h.
* mn10200.h: Use reloc-macros.h.
* mn10300.h: Use reloc-macros.h.
* ppc.h: Use reloc-macros.h.
* sh.h: Use reloc-macros.h.
* sparc.h: Use reloc-macros.h.
* v850.h: Use reloc-macros.h.
 
1998-07-22 13:07 Ulrich Drepper <drepper@cygnus.com>
 
* mn10300.h: Rewrite relocation definition using macros.
* mips.h: Likewise.
* ppc.h: Likewise.
* alpha.h: Likewise.
* arm.h: Likewise.
* d10v.h: Likewise.
* d30v.h: Likewise.
* m32r.h: Likewise.
* m68k.h: Likewise.
* mn10200.h: Likewise.
* sh.h: Likewise.
* sparc.h: Likewise.
 
1998-07-21 13:07 Ulrich Drepper <drepper@cygnus.com>
 
* arm.h: New file.
* d10v.h: New file.
* d30v.h: New file.
* i386.h: New file.
* m68k.h: New file.
* mn10200.h: New file.
* sh.h: New file.
 
* mips.h: Add R_MIPS_* and SHT_MIPS_* entries.
 
* mn10300.h: Add R_MN10300_* entries.
 
* ppc.h: Add R_PPC_* entries.
 
1998-07-20 07:11 Ulrich Drepper <drepper@cygnus.com>
 
* mips.h: Add ODK_*, OEX_*, OPAD_*, OHW_*, and OGP_* constants.
Define Elf32_External_Lib.
 
1998-07-19 15:24 Ulrich Drepper <drepper@cygnus.com>
 
* mips.h (PT_MIPS_OPTIONS): New symbol.
Add lots of DT_MIPS_* symbols.
 
Fri Jun 26 10:46:35 1998 Jeffrey A Law (law@cygnus.com)
 
* mn10300.h: New file.
 
Thu Jun 18 19:27:56 1998 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_960, EM_V800, EM_FR20, EM_RH32, EM_MMA,
EM_OLD_ALPHA): Add these constants.
 
Thu Jun 11 17:59:01 1998 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_486, EM_S370): Add these constants.
 
Tue Jun 9 09:35:29 1998 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_ARM): Add this constant.
 
Wed May 6 09:45:30 1998 Gavin Koch <gavin@cygnus.com>
 
* mips.h (EF_MIPS_MACH,E_MIPS_MACH_*): Added.
 
Sat Apr 25 18:35:06 1998 Richard Henderson <rth@cygnus.com>
 
* alpha.h (STO_ALPHA_NOPV, STO_ALPHA_STD_GPLOAD): New.
 
Wed Apr 15 15:42:45 1998 Richard Henderson <rth@cygnus.com>
 
* common.h (EM_SPARC64): Move and rename to EM_OLD_SPARCV9.
(EM_SPARCV9): New. This is the official ABI name and number.
 
Sat Feb 28 17:04:41 1998 Richard Henderson <rth@cygnus.com>
 
* alpha.h (EF_ALPHA_32BIT, EF_ALPHA_CANRELAX): New.
 
Mon Dec 15 15:07:49 1997 Nick Clifton <nickc@cygnus.com>
 
* m32r.h (EF_M32R_ARCH, E_M32R_ARCH): New flags to
specify machine architecture.
 
Fri Dec 5 11:20:08 1997 Nick Clifton <nickc@cygnus.com>
 
* v850.h: New constants: SHN_V850_SCOMMON, SHN_V850_TCOMMON,
SHN_V850_ZCOMMON, SHT_V850_SCOMMON, SHT_V850_TCOMMON,
SHT_V850_ZCOMMON to handle v850 common sections.
enum reloc_type renamed to v850_reloc_type to avoid name
conflict.
 
Thu Oct 23 13:55:24 1997 Richard Henderson <rth@cygnus.com>
 
* sparc.h (enum elf_sparc_reloc_type): Add UA64 & UA16.
 
Thu Oct 23 00:42:04 1997 Richard Henderson <rth@dot.cygnus.com>
 
* sparc.h (DT_SPARC_REGISTER): New macro.
(DT_SPARC_PLTFMT): In support of old sparc64-linux .plts; will
go away soon.
 
Tue Sep 30 13:26:58 1997 Doug Evans <dje@canuck.cygnus.com>
 
* sparc.h (EF_SPARC_HAL_R1, EF_SPARC_EXT_MASK): New macros.
(EF_SPARCV9_{MM,TSO,PSO,RMO}): New macros.
(SHN_BEFORE,SHN_AFTER): New macros.
(SHF_EXCLUDE,SHF_ORDERED): New macros.
(STT_REGISTER): New macro.
(R_SPARC_GLOB_JMP): Deleted, but slot reserved.
(R_SPARC_{DISP64,PLT64,HIX22,LOX10}): New relocations.
(R_SPARC_{H44,M44,L44,REGISTER}): New relocations.
(ELF64_R_TYPE_{DATA,ID,INFO}): New macros.
 
Wed Sep 17 16:41:42 1997 Nick Clifton <nickc@cygnus.com>
 
* v850.h: Add R_V850_CALLT_6_7_OFFSET and R_V850_CALLT_16_16_OFFSET.
 
Tue Sep 16 14:16:17 1997 Nick Clifton <nickc@cygnus.com>
 
* v850.h (reloc_type): Add R_V850_TDA_16_16_OFFSET.
 
Wed Sep 3 15:11:14 1997 Richard Henderson <rth@cygnus.com>
 
* mips.h: Correct typo in comment.
 
Wed Sep 3 11:25:57 1997 Nick Clifton <nickc@cygnus.com>
 
* v850.h (reloc_type): Remove R_V850_16_PCREL.
 
Tue Sep 2 17:41:05 1997 Nick Clifton <nickc@cygnus.com>
 
* common.h: Remove magic number for V850E.
* common.h: Remove magic number for V850EA.
* v850.h: Add new flags for e_flags field in elf header.
 
Mon Aug 25 16:06:47 1997 Nick Clifton <nickc@cygnus.com>
 
* common.h (EM_CYGNUS_V850E): backend magic number for v850e.
* common.h (EM_CYGNUS_V850EA): backend magic number for v850ea.
 
Mon Aug 18 11:05:23 1997 Nick Clifton <nickc@cygnus.com>
 
* v850.h (reloc_type): Add 16 bit PC relative relocation.
 
Fri Aug 15 05:10:09 1997 Doug Evans <dje@canuck.cygnus.com>
 
* arc.h (enum reloc): Move here from elf32-arc.c.
 
Fri Aug 8 17:05:29 1997 Doug Evans <dje@canuck.cygnus.com>
 
* arc.h: New file.
* common.h (EM_CYGNUS_ARC): Define.
 
Mon Jun 16 14:46:12 1997 Ian Lance Taylor <ian@cygnus.com>
 
* internal.h (Elf_Internal_Ehdr): Change e_phoff and e_shoff from
bfd_signed_vma to bfd_size_type, as they are not signed.
 
Wed Mar 5 15:35:26 1997 Doug Evans <dje@seba.cygnus.com>
 
* m32r.h (SHF_M32R_CAN_RELAX): Define.
 
Mon Feb 24 17:49:01 1997 Ian Lance Taylor <ian@cygnus.com>
 
* external.h: Dump the 32/64 bit specific forms of the version
structures, and just define them as size independent.
 
* common.h (VERSYM_HIDDEN, VERSYM_VERSION): Define.
 
Fri Feb 21 13:00:34 1997 Doug Evans <dje@canuck.cygnus.com>
 
* m32r.h (enum reloc_type): Add R_M32R_SDA16.
(SHN_M32R_SCOMMON): Define.
 
Wed Feb 19 15:35:31 1997 Ian Lance Taylor <ian@cygnus.com>
 
From Eric Youngdale <eric@andante.jic.com>:
* external.h, internal.h, common.h: Added new structures and
definitions for ELF versions.
 
Tue Feb 18 17:40:36 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
 
* common.h (EM_CYGNUS_D30V): Define.
 
Mon Jan 27 11:54:44 1997 Doug Evans <dje@seba.cygnus.com>
 
* m32r.h (enum reloc_type): Add R_M32R_HI16_[SU]LO,R_M32R_LO16.
 
Fri Jan 3 11:32:51 1997 Michael Meissner <meissner@tiktok.cygnus.com>
 
* v850.h (V850_OTHER_{TDA_BYTE,ERROR}): New bits for the st_other
field.
(SHN_V850_*): Remove v850 specific section indexes, which are not
needed.
(enum reloc_type): Move the v850 relocations here from
elf32-v850.c
 
Thu Jan 2 19:30:23 1997 Michael Meissner <meissner@tiktok.cygnus.com>
 
* v850.h: New file, provide V850 specific definitions.
 
Tue Dec 31 14:44:32 1996 Ian Lance Taylor <ian@cygnus.com>
 
* common.h (DT_AUXILIARY): Define.
(DT_FILTER): Define.
 
Wed Dec 4 05:03:37 1996 Jason Merrill <jason@yorick.cygnus.com>
 
* dwarf2.h: Update.
 
Tue Nov 26 10:44:47 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (STO_MIPS16): Define.
 
Tue Nov 12 15:45:42 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
 
* d10v.h: Remove empty file.
 
Tue Oct 8 11:31:24 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (EF_MIPS_ABI2): Define.
 
Thu Oct 3 10:01:40 1996 Jeffrey A Law (law@cygnus.com)
 
* common.h: Break mn10x00 support into mn10200 and mn10300.
 
Wed Oct 2 21:26:43 1996 Jeffrey A Law (law@cygnus.com)
 
* common.h (EM_CYGNUS_MN10x00): Define.
 
Mon Sep 23 09:18:04 1996 Doug Evans <dje@seba.cygnus.com>
 
* m32r.h: New file.
 
Fri Aug 30 17:06:21 1996 Ian Lance Taylor <ian@cygnus.com>
 
* common.h (EM_SH): Define.
 
Tue Aug 20 14:47:54 1996 J.T. Conklin <jtc@hippo.cygnus.com>
 
* common.h (EM_CYGNUS_V850): Define.
 
Mon Aug 19 10:59:10 1996 Doug Evans <dje@canuck.cygnus.com>
 
* common.h (EM_CYGNUS_M32R): Define.
 
Mon Jul 22 18:59:55 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (SHT_MIPS_IFACE, SHT_MIPS_CONTENT): Define.
(SHT_MIPS_SYMBOL_LIB): Define.
(SHF_MIPS_MERGE, SHF_MIPS_ADDR32, SHF_MIPS_ADDR64): Define.
(SHF_MIPS_NOSTRIP, SHF_MIPS_LOCAL, SHF_MIPS_NAMES): Define.
 
Thu Jul 18 19:12:15 1996 Stan Shebs <shebs@andros.cygnus.com>
 
* dwarf2.h: New file.
 
Jul 18 13:20:39 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
 
* common.h (EM_CYGNUS_D10V): Define.
* d10v.h: New file.
 
Fri Jun 21 12:33:24 1996 Richard Henderson <rth@tamu.edu>
 
* alpha.h: New file.
* common.h (EM_ALPHA): Define.
 
Fri May 31 17:28:05 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (Elf_External_Options, Elf_Internal_Options): Define.
(bfd_mips_elf_swap_options_in): Declare.
(bfd_mips_elf_swap_options_out): Declare.
(ODK_*): Define.
(Elf64_External_RegInfo, Elf64_Internal_RegInfo): Define.
(bfd_mips_elf64_swap_reginfo_in): Declare.
(bfd_mips_elf64_swap_reginfo_out): Declare.
 
Thu May 30 12:35:57 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (E_MIPS_ARCH_4): Define.
 
Wed May 29 15:35:33 1996 Ian Lance Taylor <ian@cygnus.com>
 
* mips.h (Elf64_Mips_External_Rel): Define.
(Elf64_Mips_Internal_Rel): Define.
(Elf64_Mips_External_Rela, Elf64_Mips_Internal_Rela): Define.
(RSS_*): Define.
 
Mon Apr 22 18:26:30 1996 Doug Evans <dje@canuck.cygnus.com>
 
* sparc.h (R_SPARC_[56]): Always define.
 
Mon Feb 19 01:55:56 1996 Doug Evans <dje@charmed.cygnus.com>
 
* sparc.h (R_SPARC_{PLT32,HIPLT22,LOPLT10,PCPLT32,PCPLT22,
PCPLT10,5,6}): Don't define ifdef SPARC64_OLD_RELOCS.
 
Tue Feb 6 11:33:58 1996 Doug Evans <dje@charmed.cygnus.com>
 
* sparc.h (enum sparc_elf_reloc_type): Define.
 
Wed Jan 17 09:09:16 1996 Doug Evans <dje@canuck.cygnus.com>
 
* common.h: Define EM_SPARC32PLUS.
* sparc.h: New file.
 
Thu Jan 11 16:27:34 1996 Michael Meissner <meissner@tiktok.cygnus.com>
 
* ppc.h (SHF_EXCLUDE, SHT_ORDERED): New fields from the abi.
 
Thu Nov 30 16:47:18 1995 Ian Lance Taylor <ian@cygnus.com>
 
* internal.h (struct elf_segment_map): Add includes_filehdr and
includes_phdrs fields.
 
Tue Nov 28 16:58:10 1995 Ian Lance Taylor <ian@cygnus.com>
 
* internal.h (struct elf_segment_map): Define.
 
Tue Oct 31 15:19:36 1995 Fred Fish <fnf@cygnus.com>
 
* common.h, dwarf.h, external.h, hppa.h, internal.h,
mips.h, ppc.h: Protect against multiple inclusions.
 
Thu Sep 21 13:51:58 1995 Michael Meissner <meissner@tiktok.cygnus.com>
 
* ppc.h (EF_PPC_RELOCATABLE_LIB): Add new flag bit.
 
Fri Sep 1 15:32:17 1995 Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>
 
* mips.h: Add some definitions used on Irix 5.
 
Tue Jun 20 10:18:28 1995 Jeff Law (law@snake.cs.utah.edu)
 
* hppa.h (CPU_PA_RISC1_0): Protect from redefinitions.
(CPU_PA_RISC1_1): Likewise.
 
Wed Mar 8 18:14:37 1995 Michael Meissner <meissner@tiktok.cygnus.com>
 
* ppc.h: New file for PowerPC support.
 
Tue Feb 14 13:59:13 1995 Michael Meissner <meissner@tiktok.cygnus.com>
 
* common.h (EM_PPC): Use offical value of 20, not 17.
(EM_PPC_OLD): Define this to be the old value of EM_PPC.
 
Tue Jan 24 09:40:59 1995 Michael Meissner <meissner@tiktok.cygnus.com>
 
* common.h (EM_PPC): New macro, PowerPC machine id.
 
Tue Jan 17 10:51:38 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
 
* mips.h (SHT_MIPS_MSYM, SHT_MIPS_DWARF, SHT_MIPS_EVENTS): Define.
 
Mon Oct 17 13:43:59 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
 
* internal.h (Elf_Internal_Shdr): Remove rawdata and size fields.
Add bfd_section field.
 
Tue May 24 16:11:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* mips.h (Elf32_External_gptab): Define.
 
Mon May 16 13:22:04 1994 Jeff Law (law@snake.cs.utah.edu)
 
* common.h (EM_HPPA): Delete.
(EM_PARISC): Add.
* hppa.h: New file.
 
Mon May 9 13:27:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* common.h (SHN_LORESERVE): Rename from SHN_LORESERV.
(ELF32_R_TYPE, ELF32_R_INFO): Don't rely on size of unsigned char.
(ELF64_R_TYPE): Don't rely on size of unsigned long.
 
Mon Apr 25 15:53:09 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* internal.h (Elf_Internal_Shdr): Use PTR, not void *.
 
Fri Mar 11 00:34:59 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
 
* mips.h (SHN_MIPS_TEXT, SHN_MIPS_DATA): Define.
 
Sat Mar 5 14:08:54 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
 
* internal.h: Remove Elf32_*, Elf64_* typedefs. These names
cause conflicts with system headers, e.g. link.h in gdb/solib.c.
Combine 32- and 64-bit versions of *_Internal_Dyn.
* common.h: Replace uses of Elf64_Word, Elf64_Xword typedefs
by their expansion.
* mips.h: Replace uses of Elf32_Word, Elf32_Sword, Elf32_Addr
typedefs by their expansion. Add DT_MIPS_RLD_MAP definition.
 
Fri Feb 18 10:39:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* common.h (EM_CYGNUS_POWERPC): Define. This may be temporary,
depending upon how quickly I can find a real PowerPC ABI.
 
Mon Feb 7 08:27:13 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* internal.h: Change HOST_64_BIT to BFD_HOST_64_BIT.
 
Wed Feb 2 14:12:18 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
 
* common.h: Add comments regarding value of EM_HPPA and how to
pick an unofficial value.
 
Wed Nov 17 17:14:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* mips.h (SHT_MIPS_OPTIONS): Define.
 
Mon Nov 8 17:57:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
 
* mips.h: Added some more MIPS ABI macro definitions.
 
Wed Nov 3 22:07:17 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
 
* common.h (EM_MIPS_RS4_BE): New macro.
 
Tue Oct 12 07:28:18 1993 Ian Lance Taylor (ian@cygnus.com)
 
* mips.h: New file. MIPS ABI specific information.
 
Mon Jun 21 13:13:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
 
* internal.h: Combined 32- and 64-bit versions of all structures
except *_Internal_Dyn. This will simply the assembler interface,
and some bfd code.
 
Tue May 25 02:00:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
 
* external.h, internal.h, common.h: Added 64-bit versions of some
structures and macros. Renamed old versions to put "32" in the
name. Some are unchanged.
 
Thu Apr 29 12:12:20 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
 
* common.h (EM_HPPA, NT_VERSION, STN_UNDEF, DT_*): New macros.
* external.h (Elf_External_Dyn): New type.
 
* internal.h (Elf_Intenral_Shdr): New field `size'.
(Elf_Internal_Dyn): New type.
 
Tue Apr 20 16:03:45 1993 Fred Fish (fnf@cygnus.com)
 
* dwarf.h (LANG_CHILL): Change value to one randomly picked in
the user defined range, to reduce probability of collisions.
 
Sun Nov 15 09:34:02 1992 Fred Fish (fnf@cygnus.com)
 
* dwarf.h (AT_src_coords): Whitespace change only.
* dwarf.h (AT_body_begin, AT_body_end, LANG_MODULA2):
Add from latest gcc.
* dwarf.h (LANG_CHILL): Add as GNU extension.
 
Sat Aug 1 13:46:53 1992 Fred Fish (fnf@cygnus.com)
 
* dwarf.h: Replace with current version from gcc distribution.
 
Fri Jun 19 19:05:09 1992 John Gilmore (gnu at cygnus.com)
 
* internal.h: Add real struct tags to all the Type_Defs, so they
can be used in prototypes where the Type_Defs are not known.
 
Fri Apr 3 20:58:58 1992 Mark Eichin (eichin at cygnus.com)
 
* common.h: added ELF_R_{SYM,TYPE,INFO} for handling relocation
info
added EM_MIPS, and corrected value of EM_860 based on System V ABI
manual.
 
* external.h: added Elf_External_{Rel,Rela}.
 
* internal.h: added Elf_Internal_{Rel,Rela}.
added rawdata to Elf_Internal_Shdr.
 
Sat Nov 30 20:43:59 1991 Steve Chamberlain (sac at rtl.cygnus.com)
 
* common.h, dwarf.h, external.h, internal.h, ChangeLog; moved from
../elf-<foo>
 
Local Variables:
version-control: never
End:
/v850.h
0,0 → 1,111
/* V850 ELF support for BFD.
Copyright (C) 1997 Free Software Foundation, Inc.
Created by Michael Meissner, Cygnus Support <meissner@cygnus.com>
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the MIPS ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_V850_H
#define _ELF_V850_H
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* Four bit V850 architecture field. */
#define EF_V850_ARCH 0xf0000000
 
/* v850 code. */
#define E_V850_ARCH 0x00000000
 
/* v850e code. */
#define E_V850E_ARCH 0x10000000
 
/* v850ea code. */
#define E_V850EA_ARCH 0x20000000
 
 
/* Flags for the st_other field */
#define V850_OTHER_SDA 0x01 /* symbol had SDA relocations */
#define V850_OTHER_ZDA 0x02 /* symbol had ZDA relocations */
#define V850_OTHER_TDA 0x04 /* symbol had TDA relocations */
#define V850_OTHER_TDA_BYTE 0x08 /* symbol had TDA byte relocations */
#define V850_OTHER_ERROR 0x80 /* symbol had an error reported */
 
/* V850 relocations */
#include "elf/reloc-macros.h"
 
START_RELOC_NUMBERS (v850_reloc_type)
RELOC_NUMBER (R_V850_NONE, 0)
RELOC_NUMBER (R_V850_9_PCREL, 1)
RELOC_NUMBER (R_V850_22_PCREL, 2)
RELOC_NUMBER (R_V850_HI16_S, 3)
RELOC_NUMBER (R_V850_HI16, 4)
RELOC_NUMBER (R_V850_LO16, 5)
RELOC_NUMBER (R_V850_32, 6)
RELOC_NUMBER (R_V850_16, 7)
RELOC_NUMBER (R_V850_8, 8)
RELOC_NUMBER( R_V850_SDA_16_16_OFFSET, 9) /* For ld.b, st.b, set1, clr1, not1, tst1, movea, movhi */
RELOC_NUMBER( R_V850_SDA_15_16_OFFSET, 10) /* For ld.w, ld.h, ld.hu, st.w, st.h */
RELOC_NUMBER( R_V850_ZDA_16_16_OFFSET, 11) /* For ld.b, st.b, set1, clr1, not1, tst1, movea, movhi */
RELOC_NUMBER( R_V850_ZDA_15_16_OFFSET, 12) /* For ld.w, ld.h, ld.hu, st.w, st.h */
RELOC_NUMBER( R_V850_TDA_6_8_OFFSET, 13) /* For sst.w, sld.w */
RELOC_NUMBER( R_V850_TDA_7_8_OFFSET, 14) /* For sst.h, sld.h */
RELOC_NUMBER( R_V850_TDA_7_7_OFFSET, 15) /* For sst.b, sld.b */
RELOC_NUMBER( R_V850_TDA_16_16_OFFSET, 16) /* For set1, clr1, not1, tst1, movea, movhi */
/* CYGNUS LOCAL v850e */
RELOC_NUMBER( R_V850_TDA_4_5_OFFSET, 17) /* For sld.hu */
RELOC_NUMBER( R_V850_TDA_4_4_OFFSET, 18) /* For sld.bu */
RELOC_NUMBER( R_V850_SDA_16_16_SPLIT_OFFSET, 19) /* For ld.bu */
RELOC_NUMBER( R_V850_ZDA_16_16_SPLIT_OFFSET, 20) /* For ld.bu */
RELOC_NUMBER( R_V850_CALLT_6_7_OFFSET, 21) /* For callt */
RELOC_NUMBER( R_V850_CALLT_16_16_OFFSET, 22) /* For callt */
/* END CYGNUS LOCAL */
RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_V850_GNU_VTENTRY, 24)
 
EMPTY_RELOC (R_V850_max)
END_RELOC_NUMBERS
 
/* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these
values have a special meaning. */
 
/* Small data area common symbol. */
#define SHN_V850_SCOMMON 0xff00
 
/* Tiny data area common symbol. */
#define SHN_V850_TCOMMON 0xff01
 
/* Zero data area common symbol. */
#define SHN_V850_ZCOMMON 0xff02
 
/* Processor specific section types. */
 
/* Section contains the .scommon data. */
#define SHT_V850_SCOMMON 0x70000000
 
/* Section contains the .scommon data. */
#define SHT_V850_TCOMMON 0x70000001
 
/* Section contains the .scommon data. */
#define SHT_V850_ZCOMMON 0x70000002
 
 
#endif /* _ELF_V850_H */
/dwarf.h
0,0 → 1,320
/* Declarations and definitions of codes relating to the DWARF symbolic
debugging information format.
 
Written by Ron Guilmette (rfg@ncd.com)
 
Copyright (C) 1992, 1999 Free Software Foundation, Inc.
 
This file is part of GNU CC.
 
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
 
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file is derived from the DWARF specification (a public document)
Revision 1.0.1 (April 8, 1992) developed by the UNIX International
Programming Languages Special Interest Group (UI/PLSIG) and distributed
by UNIX International. Copies of this specification are available from
UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
*/
 
#ifndef _ELF_DWARF_H
#define _ELF_DWARF_H
 
/* Tag names and codes. */
 
enum dwarf_tag {
TAG_padding = 0x0000,
TAG_array_type = 0x0001,
TAG_class_type = 0x0002,
TAG_entry_point = 0x0003,
TAG_enumeration_type = 0x0004,
TAG_formal_parameter = 0x0005,
TAG_global_subroutine = 0x0006,
TAG_global_variable = 0x0007,
/* 0x0008 -- reserved */
/* 0x0009 -- reserved */
TAG_label = 0x000a,
TAG_lexical_block = 0x000b,
TAG_local_variable = 0x000c,
TAG_member = 0x000d,
/* 0x000e -- reserved */
TAG_pointer_type = 0x000f,
TAG_reference_type = 0x0010,
TAG_compile_unit = 0x0011,
TAG_string_type = 0x0012,
TAG_structure_type = 0x0013,
TAG_subroutine = 0x0014,
TAG_subroutine_type = 0x0015,
TAG_typedef = 0x0016,
TAG_union_type = 0x0017,
TAG_unspecified_parameters = 0x0018,
TAG_variant = 0x0019,
TAG_common_block = 0x001a,
TAG_common_inclusion = 0x001b,
TAG_inheritance = 0x001c,
TAG_inlined_subroutine = 0x001d,
TAG_module = 0x001e,
TAG_ptr_to_member_type = 0x001f,
TAG_set_type = 0x0020,
TAG_subrange_type = 0x0021,
TAG_with_stmt = 0x0022,
 
/* GNU extensions */
 
TAG_format_label = 0x8000, /* for FORTRAN 77 and Fortran 90 */
TAG_namelist = 0x8001, /* For Fortran 90 */
TAG_function_template = 0x8002, /* for C++ */
TAG_class_template = 0x8003 /* for C++ */
};
 
#define TAG_lo_user 0x8000 /* implementation-defined range start */
#define TAG_hi_user 0xffff /* implementation-defined range end */
#define TAG_source_file TAG_compile_unit /* for backward compatibility */
 
/* Form names and codes. */
 
enum dwarf_form {
FORM_ADDR = 0x1,
FORM_REF = 0x2,
FORM_BLOCK2 = 0x3,
FORM_BLOCK4 = 0x4,
FORM_DATA2 = 0x5,
FORM_DATA4 = 0x6,
FORM_DATA8 = 0x7,
FORM_STRING = 0x8
};
 
/* Attribute names and codes. */
 
enum dwarf_attribute {
AT_sibling = (0x0010|FORM_REF),
AT_location = (0x0020|FORM_BLOCK2),
AT_name = (0x0030|FORM_STRING),
AT_fund_type = (0x0050|FORM_DATA2),
AT_mod_fund_type = (0x0060|FORM_BLOCK2),
AT_user_def_type = (0x0070|FORM_REF),
AT_mod_u_d_type = (0x0080|FORM_BLOCK2),
AT_ordering = (0x0090|FORM_DATA2),
AT_subscr_data = (0x00a0|FORM_BLOCK2),
AT_byte_size = (0x00b0|FORM_DATA4),
AT_bit_offset = (0x00c0|FORM_DATA2),
AT_bit_size = (0x00d0|FORM_DATA4),
/* (0x00e0|FORM_xxxx) -- reserved */
AT_element_list = (0x00f0|FORM_BLOCK4),
AT_stmt_list = (0x0100|FORM_DATA4),
AT_low_pc = (0x0110|FORM_ADDR),
AT_high_pc = (0x0120|FORM_ADDR),
AT_language = (0x0130|FORM_DATA4),
AT_member = (0x0140|FORM_REF),
AT_discr = (0x0150|FORM_REF),
AT_discr_value = (0x0160|FORM_BLOCK2),
/* (0x0170|FORM_xxxx) -- reserved */
/* (0x0180|FORM_xxxx) -- reserved */
AT_string_length = (0x0190|FORM_BLOCK2),
AT_common_reference = (0x01a0|FORM_REF),
AT_comp_dir = (0x01b0|FORM_STRING),
AT_const_value_string = (0x01c0|FORM_STRING),
AT_const_value_data2 = (0x01c0|FORM_DATA2),
AT_const_value_data4 = (0x01c0|FORM_DATA4),
AT_const_value_data8 = (0x01c0|FORM_DATA8),
AT_const_value_block2 = (0x01c0|FORM_BLOCK2),
AT_const_value_block4 = (0x01c0|FORM_BLOCK4),
AT_containing_type = (0x01d0|FORM_REF),
AT_default_value_addr = (0x01e0|FORM_ADDR),
AT_default_value_data2 = (0x01e0|FORM_DATA2),
AT_default_value_data4 = (0x01e0|FORM_DATA4),
AT_default_value_data8 = (0x01e0|FORM_DATA8),
AT_default_value_string = (0x01e0|FORM_STRING),
AT_friends = (0x01f0|FORM_BLOCK2),
AT_inline = (0x0200|FORM_STRING),
AT_is_optional = (0x0210|FORM_STRING),
AT_lower_bound_ref = (0x0220|FORM_REF),
AT_lower_bound_data2 = (0x0220|FORM_DATA2),
AT_lower_bound_data4 = (0x0220|FORM_DATA4),
AT_lower_bound_data8 = (0x0220|FORM_DATA8),
AT_private = (0x0240|FORM_STRING),
AT_producer = (0x0250|FORM_STRING),
AT_program = (0x0230|FORM_STRING),
AT_protected = (0x0260|FORM_STRING),
AT_prototyped = (0x0270|FORM_STRING),
AT_public = (0x0280|FORM_STRING),
AT_pure_virtual = (0x0290|FORM_STRING),
AT_return_addr = (0x02a0|FORM_BLOCK2),
AT_abstract_origin = (0x02b0|FORM_REF),
AT_start_scope = (0x02c0|FORM_DATA4),
AT_stride_size = (0x02e0|FORM_DATA4),
AT_upper_bound_ref = (0x02f0|FORM_REF),
AT_upper_bound_data2 = (0x02f0|FORM_DATA2),
AT_upper_bound_data4 = (0x02f0|FORM_DATA4),
AT_upper_bound_data8 = (0x02f0|FORM_DATA8),
AT_virtual = (0x0300|FORM_STRING),
 
/* GNU extensions. */
 
AT_sf_names = (0x8000|FORM_DATA4),
AT_src_info = (0x8010|FORM_DATA4),
AT_mac_info = (0x8020|FORM_DATA4),
AT_src_coords = (0x8030|FORM_DATA4),
AT_body_begin = (0x8040|FORM_ADDR),
AT_body_end = (0x8050|FORM_ADDR)
};
 
#define AT_lo_user 0x8000 /* implementation-defined range start */
#define AT_hi_user 0xffff /* implementation-defined range end */
 
/* Location atom names and codes. */
 
enum dwarf_location_atom {
OP_REG = 0x01,
OP_BASEREG = 0x02,
OP_ADDR = 0x03,
OP_CONST = 0x04,
OP_DEREF2 = 0x05,
OP_DEREF4 = 0x06,
OP_ADD = 0x07
};
 
#define OP_LO_USER 0x80 /* implementation-defined range start */
#define OP_HI_USER 0xff /* implementation-defined range end */
 
/* Fundamental type names and codes. */
 
enum dwarf_fundamental_type {
FT_char = 0x0001,
FT_signed_char = 0x0002,
FT_unsigned_char = 0x0003,
FT_short = 0x0004,
FT_signed_short = 0x0005,
FT_unsigned_short = 0x0006,
FT_integer = 0x0007,
FT_signed_integer = 0x0008,
FT_unsigned_integer = 0x0009,
FT_long = 0x000a,
FT_signed_long = 0x000b,
FT_unsigned_long = 0x000c,
FT_pointer = 0x000d, /* an alias for (void *) */
FT_float = 0x000e,
FT_dbl_prec_float = 0x000f,
FT_ext_prec_float = 0x0010, /* breaks "classic" svr4 SDB */
FT_complex = 0x0011, /* breaks "classic" svr4 SDB */
FT_dbl_prec_complex = 0x0012, /* breaks "classic" svr4 SDB */
/* 0x0013 -- reserved */
FT_void = 0x0014,
FT_boolean = 0x0015, /* breaks "classic" svr4 SDB */
FT_ext_prec_complex = 0x0016, /* breaks "classic" svr4 SDB */
FT_label = 0x0017,
/* GNU extensions
The low order byte must indicate the size (in bytes) for the type.
All of these types will probably break "classic" svr4 SDB */
 
FT_long_long = 0x8008,
FT_signed_long_long = 0x8108,
FT_unsigned_long_long = 0x8208,
 
FT_int8 = 0x9001,
FT_signed_int8 = 0x9101,
FT_unsigned_int8 = 0x9201,
FT_int16 = 0x9302,
FT_signed_int16 = 0x9402,
FT_unsigned_int16 = 0x9502,
FT_int32 = 0x9604,
FT_signed_int32 = 0x9704,
FT_unsigned_int32 = 0x9804,
FT_int64 = 0x9908,
FT_signed_int64 = 0x9a08,
FT_unsigned_int64 = 0x9b08,
 
FT_real32 = 0xa004,
FT_real64 = 0xa108,
FT_real96 = 0xa20c,
FT_real128 = 0xa310
};
 
#define FT_lo_user 0x8000 /* implementation-defined range start */
#define FT_hi_user 0xffff /* implementation defined range end */
 
/* Type modifier names and codes. */
 
enum dwarf_type_modifier {
MOD_pointer_to = 0x01,
MOD_reference_to = 0x02,
MOD_const = 0x03,
MOD_volatile = 0x04
};
 
#define MOD_lo_user 0x80 /* implementation-defined range start */
#define MOD_hi_user 0xff /* implementation-defined range end */
 
/* Array ordering names and codes. */
 
enum dwarf_array_dim_ordering {
ORD_row_major = 0,
ORD_col_major = 1
};
 
/* Array subscript format names and codes. */
 
enum dwarf_subscr_data_formats {
FMT_FT_C_C = 0x0,
FMT_FT_C_X = 0x1,
FMT_FT_X_C = 0x2,
FMT_FT_X_X = 0x3,
FMT_UT_C_C = 0x4,
FMT_UT_C_X = 0x5,
FMT_UT_X_C = 0x6,
FMT_UT_X_X = 0x7,
FMT_ET = 0x8
};
 
/* Derived from above for ease of use. */
 
#define FMT_CODE(_FUNDAMENTAL_TYPE_P, _UB_CONST_P, _LB_CONST_P) \
(((_FUNDAMENTAL_TYPE_P) ? 0 : 4) \
| ((_UB_CONST_P) ? 0 : 2) \
| ((_LB_CONST_P) ? 0 : 1))
 
/* Source language names and codes. */
 
enum dwarf_source_language {
LANG_C89 = 0x00000001,
LANG_C = 0x00000002,
LANG_ADA83 = 0x00000003,
LANG_C_PLUS_PLUS = 0x00000004,
LANG_COBOL74 = 0x00000005,
LANG_COBOL85 = 0x00000006,
LANG_FORTRAN77 = 0x00000007,
LANG_FORTRAN90 = 0x00000008,
LANG_PASCAL83 = 0x00000009,
LANG_MODULA2 = 0x0000000a,
 
/* GNU extensions */
 
LANG_CHILL = 0x00009af3, /* random value for GNU Chill */
LANG_JAVA = 0x00009af4 /* random value + 1 for GNU Java */
};
 
#define LANG_lo_user 0x00008000 /* implementation-defined range start */
#define LANG_hi_user 0x0000ffff /* implementation-defined range end */
 
/* Names and codes for GNU "macinfo" extension. */
 
enum dwarf_macinfo_record_type {
MACINFO_start = 's',
MACINFO_resume = 'r',
MACINFO_define = 'd',
MACINFO_undef = 'u'
};
 
#endif /* _ELF_DWARF_H */
/arc.h
0,0 → 1,54
/* ARC ELF support for BFD.
Copyright (C) 1995, 1997 Free Software Foundation, Inc.
Contributed by Doug Evans, (dje@cygnus.com)
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the ARC ELF ABI. */
 
#ifndef _ELF_ARC_H
#define _ELF_ARC_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_arc_reloc_type)
RELOC_NUMBER (R_ARC_NONE, 0)
RELOC_NUMBER (R_ARC_32, 1)
RELOC_NUMBER (R_ARC_B26, 2)
RELOC_NUMBER (R_ARC_B22_PCREL, 3)
EMPTY_RELOC (R_ARC_max)
END_RELOC_NUMBERS
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* Four bit ARC machine type field. */
#define EF_ARC_MACH 0x0000000f
 
/* Various CPU types. */
#define E_ARC_MACH_BASE 0x00000000
#define E_ARC_MACH_UNUSED1 0x00000001
#define E_ARC_MACH_UNUSED2 0x00000002
#define E_ARC_MACH_UNUSED4 0x00000003
 
/* Leave bits 0xf0 alone in case we ever have more than 16 cpu types.
Highly unlikely, but what the heck. */
 
/* File contains position independent code. */
#define EF_ARC_PIC 0x00000100
 
#endif /* _ELF_ARC_H */
/mcore.h
0,0 → 1,47
/* Motorola MCore support for BFD.
Copyright (C) 1995, 1999 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the MCore ELF ABI. */
#ifndef _ELF_MORE_H
#define _ELF_MORE_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_mcore_reloc_type)
RELOC_NUMBER (R_MCORE_NONE, 0)
RELOC_NUMBER (R_MCORE_ADDR32, 1)
RELOC_NUMBER (R_MCORE_PCRELIMM8BY4, 2)
RELOC_NUMBER (R_MCORE_PCRELIMM11BY2, 3)
RELOC_NUMBER (R_MCORE_PCRELIMM4BY2, 4)
RELOC_NUMBER (R_MCORE_PCREL32, 5)
RELOC_NUMBER (R_MCORE_PCRELJSR_IMM11BY2, 6)
RELOC_NUMBER (R_MCORE_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_MCORE_GNU_VTENTRY, 8)
RELOC_NUMBER (R_MCORE_RELATIVE, 9)
RELOC_NUMBER (R_MCORE_COPY, 10)
RELOC_NUMBER (R_MCORE_GLOB_DAT, 11)
RELOC_NUMBER (R_MCORE_JUMP_SLOT, 12)
EMPTY_RELOC (R_MCORE_max)
END_RELOC_NUMBERS
 
/* Section Attributes. */
#define SHF_MCORE_NOREAD 0x80000000
 
#endif /* _ELF_MCORE_H */
/mips.h
0,0 → 1,900
/* MIPS ELF support for BFD.
Copyright (C) 1993, 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
 
By Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>, from
information in the System V Application Binary Interface, MIPS
Processor Supplement.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the MIPS ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_MIPS_H
#define _ELF_MIPS_H
 
#include "elf/reloc-macros.h"
 
/* Relocation types. */
START_RELOC_NUMBERS (elf_mips_reloc_type)
RELOC_NUMBER (R_MIPS_NONE, 0)
RELOC_NUMBER (R_MIPS_16, 1)
RELOC_NUMBER (R_MIPS_32, 2)
RELOC_NUMBER (R_MIPS_REL32, 3)
RELOC_NUMBER (R_MIPS_26, 4)
RELOC_NUMBER (R_MIPS_HI16, 5)
RELOC_NUMBER (R_MIPS_LO16, 6)
RELOC_NUMBER (R_MIPS_GPREL16, 7)
RELOC_NUMBER (R_MIPS_LITERAL, 8)
RELOC_NUMBER (R_MIPS_GOT16, 9)
RELOC_NUMBER (R_MIPS_PC16, 10)
RELOC_NUMBER (R_MIPS_CALL16, 11)
RELOC_NUMBER (R_MIPS_GPREL32, 12)
/* The remaining relocs are defined on Irix, although they are not
in the MIPS ELF ABI. */
RELOC_NUMBER (R_MIPS_UNUSED1, 13)
RELOC_NUMBER (R_MIPS_UNUSED2, 14)
RELOC_NUMBER (R_MIPS_UNUSED3, 15)
RELOC_NUMBER (R_MIPS_SHIFT5, 16)
RELOC_NUMBER (R_MIPS_SHIFT6, 17)
RELOC_NUMBER (R_MIPS_64, 18)
RELOC_NUMBER (R_MIPS_GOT_DISP, 19)
RELOC_NUMBER (R_MIPS_GOT_PAGE, 20)
RELOC_NUMBER (R_MIPS_GOT_OFST, 21)
RELOC_NUMBER (R_MIPS_GOT_HI16, 22)
RELOC_NUMBER (R_MIPS_GOT_LO16, 23)
RELOC_NUMBER (R_MIPS_SUB, 24)
RELOC_NUMBER (R_MIPS_INSERT_A, 25)
RELOC_NUMBER (R_MIPS_INSERT_B, 26)
RELOC_NUMBER (R_MIPS_DELETE, 27)
RELOC_NUMBER (R_MIPS_HIGHER, 28)
RELOC_NUMBER (R_MIPS_HIGHEST, 29)
RELOC_NUMBER (R_MIPS_CALL_HI16, 30)
RELOC_NUMBER (R_MIPS_CALL_LO16, 31)
RELOC_NUMBER (R_MIPS_SCN_DISP, 32)
RELOC_NUMBER (R_MIPS_REL16, 33)
RELOC_NUMBER (R_MIPS_ADD_IMMEDIATE, 34)
RELOC_NUMBER (R_MIPS_PJUMP, 35)
RELOC_NUMBER (R_MIPS_RELGOT, 36)
RELOC_NUMBER (R_MIPS_JALR, 37)
RELOC_NUMBER (R_MIPS_max, 38)
/* These relocs are used for the mips16. */
RELOC_NUMBER (R_MIPS16_26, 100)
RELOC_NUMBER (R_MIPS16_GPREL, 101)
/* These are GNU extensions to handle embedded-pic. */
RELOC_NUMBER (R_MIPS_PC32, 248)
RELOC_NUMBER (R_MIPS_PC64, 249)
RELOC_NUMBER (R_MIPS_GNU_REL16_S2, 250)
RELOC_NUMBER (R_MIPS_GNU_REL_LO16, 251)
RELOC_NUMBER (R_MIPS_GNU_REL_HI16, 252)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_MIPS_GNU_VTINHERIT, 253)
RELOC_NUMBER (R_MIPS_GNU_VTENTRY, 254)
END_RELOC_NUMBERS
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* At least one .noreorder directive appears in the source. */
#define EF_MIPS_NOREORDER 0x00000001
 
/* File contains position independent code. */
#define EF_MIPS_PIC 0x00000002
 
/* Code in file uses the standard calling sequence for calling
position independent code. */
#define EF_MIPS_CPIC 0x00000004
 
/* Code in file uses new ABI (-n32 on Irix 6). */
#define EF_MIPS_ABI2 0x00000020
 
/* Indicates code compiled for a 64-bit machine in 32-bit mode.
(regs are 32-bits wide.) */
#define EF_MIPS_32BITMODE 0x00000100
 
/* Four bit MIPS architecture field. */
#define EF_MIPS_ARCH 0xf0000000
 
/* -mips1 code. */
#define E_MIPS_ARCH_1 0x00000000
 
/* -mips2 code. */
#define E_MIPS_ARCH_2 0x10000000
 
/* -mips3 code. */
#define E_MIPS_ARCH_3 0x20000000
 
/* -mips4 code. */
#define E_MIPS_ARCH_4 0x30000000
 
/* The ABI of the file. Also see EF_MIPS_ABI2 above. */
#define EF_MIPS_ABI 0x0000F000
 
/* The original o32 abi. */
#define E_MIPS_ABI_O32 0x00001000
 
/* O32 extended to work on 64 bit architectures */
#define E_MIPS_ABI_O64 0x00002000
 
/* EABI in 32 bit mode */
#define E_MIPS_ABI_EABI32 0x00003000
 
/* EABI in 64 bit mode */
#define E_MIPS_ABI_EABI64 0x00004000
 
 
/* Machine variant if we know it. This field was invented at Cygnus,
but it is hoped that other vendors will adopt it. If some standard
is developed, this code should be changed to follow it. */
 
#define EF_MIPS_MACH 0x00FF0000
 
/* Cygnus is choosing values between 80 and 9F;
00 - 7F should be left for a future standard;
the rest are open. */
 
#define E_MIPS_MACH_3900 0x00810000
 
#define E_MIPS_MACH_4010 0x00820000
#define E_MIPS_MACH_4100 0x00830000
#define E_MIPS_MACH_4650 0x00850000
#define E_MIPS_MACH_4111 0x00880000
 
/* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these
values have a special meaning. */
 
/* Defined and allocated common symbol. Value is virtual address. If
relocated, alignment must be preserved. */
#define SHN_MIPS_ACOMMON 0xff00
 
/* Defined and allocated text symbol. Value is virtual address.
Occur in the dynamic symbol table of Alpha OSF/1 and Irix 5 executables. */
#define SHN_MIPS_TEXT 0xff01
 
/* Defined and allocated data symbol. Value is virtual address.
Occur in the dynamic symbol table of Alpha OSF/1 and Irix 5 executables. */
#define SHN_MIPS_DATA 0xff02
 
/* Small common symbol. */
#define SHN_MIPS_SCOMMON 0xff03
 
/* Small undefined symbol. */
#define SHN_MIPS_SUNDEFINED 0xff04
/* Processor specific section types. */
 
/* Section contains the set of dynamic shared objects used when
statically linking. */
#define SHT_MIPS_LIBLIST 0x70000000
 
/* I'm not sure what this is, but it's used on Irix 5. */
#define SHT_MIPS_MSYM 0x70000001
 
/* Section contains list of symbols whose definitions conflict with
symbols defined in shared objects. */
#define SHT_MIPS_CONFLICT 0x70000002
 
/* Section contains the global pointer table. */
#define SHT_MIPS_GPTAB 0x70000003
 
/* Section contains microcode information. The exact format is
unspecified. */
#define SHT_MIPS_UCODE 0x70000004
 
/* Section contains some sort of debugging information. The exact
format is unspecified. It's probably ECOFF symbols. */
#define SHT_MIPS_DEBUG 0x70000005
 
/* Section contains register usage information. */
#define SHT_MIPS_REGINFO 0x70000006
 
/* ??? */
#define SHT_MIPS_PACKAGE 0x70000007
 
/* ??? */
#define SHT_MIPS_PACKSYM 0x70000008
 
/* ??? */
#define SHT_MIPS_RELD 0x70000009
 
/* Section contains interface information. */
#define SHT_MIPS_IFACE 0x7000000b
 
/* Section contains description of contents of another section. */
#define SHT_MIPS_CONTENT 0x7000000c
 
/* Section contains miscellaneous options. */
#define SHT_MIPS_OPTIONS 0x7000000d
 
/* ??? */
#define SHT_MIPS_SHDR 0x70000010
 
/* ??? */
#define SHT_MIPS_FDESC 0x70000011
 
/* ??? */
#define SHT_MIPS_EXTSYM 0x70000012
 
/* ??? */
#define SHT_MIPS_DENSE 0x70000013
 
/* ??? */
#define SHT_MIPS_PDESC 0x70000014
 
/* ??? */
#define SHT_MIPS_LOCSYM 0x70000015
 
/* ??? */
#define SHT_MIPS_AUXSYM 0x70000016
 
/* ??? */
#define SHT_MIPS_OPTSYM 0x70000017
 
/* ??? */
#define SHT_MIPS_LOCSTR 0x70000018
 
/* ??? */
#define SHT_MIPS_LINE 0x70000019
 
/* ??? */
#define SHT_MIPS_RFDESC 0x7000001a
 
/* ??? */
#define SHT_MIPS_DELTASYM 0x7000001b
 
/* ??? */
#define SHT_MIPS_DELTAINST 0x7000001c
 
/* ??? */
#define SHT_MIPS_DELTACLASS 0x7000001d
 
/* DWARF debugging section. */
#define SHT_MIPS_DWARF 0x7000001e
 
/* ??? */
#define SHT_MIPS_DELTADECL 0x7000001f
 
/* List of libraries the binary depends on. Includes a time stamp, version
number. */
#define SHT_MIPS_SYMBOL_LIB 0x70000020
 
/* Events section. */
#define SHT_MIPS_EVENTS 0x70000021
 
/* ??? */
#define SHT_MIPS_TRANSLATE 0x70000022
 
/* ??? */
#define SHT_MIPS_PIXIE 0x70000023
 
/* ??? */
#define SHT_MIPS_XLATE 0x70000024
 
/* ??? */
#define SHT_MIPS_XLATE_DEBUG 0x70000025
 
/* ??? */
#define SHT_MIPS_WHIRL 0x70000026
 
/* ??? */
#define SHT_MIPS_EH_REGION 0x70000027
 
/* ??? */
#define SHT_MIPS_XLATE_OLD 0x70000028
 
/* ??? */
#define SHT_MIPS_PDR_EXCEPTION 0x70000029
 
 
/* A section of type SHT_MIPS_LIBLIST contains an array of the
following structure. The sh_link field is the section index of the
string table. The sh_info field is the number of entries in the
section. */
typedef struct
{
/* String table index for name of shared object. */
unsigned long l_name;
/* Time stamp. */
unsigned long l_time_stamp;
/* Checksum of symbol names and common sizes. */
unsigned long l_checksum;
/* String table index for version. */
unsigned long l_version;
/* Flags. */
unsigned long l_flags;
} Elf32_Lib;
 
/* The external version of Elf32_Lib. */
typedef struct
{
unsigned char l_name[4];
unsigned char l_time_stamp[4];
unsigned char l_checksum[4];
unsigned char l_version[4];
unsigned char l_flags[4];
} Elf32_External_Lib;
 
/* The l_flags field of an Elf32_Lib structure may contain the
following flags. */
 
/* Require an exact match at runtime. */
#define LL_EXACT_MATCH 0x00000001
 
/* Ignore version incompatibilities at runtime. */
#define LL_IGNORE_INT_VER 0x00000002
 
/* Require matching minor version number. */
#define LL_REQUIRE_MINOR 0x00000004
 
/* ??? */
#define LL_EXPORTS 0x00000008
 
/* Delay loading of this library until really needed. */
#define LL_DELAY_LOAD 0x00000010
 
/* ??? Delta C++ stuff ??? */
#define LL_DELTA 0x00000020
 
 
/* A section of type SHT_MIPS_CONFLICT is an array of indices into the
.dynsym section. Each element has the following type. */
typedef unsigned long Elf32_Conflict;
typedef unsigned char Elf32_External_Conflict[4];
 
typedef unsigned long Elf64_Conflict;
typedef unsigned char Elf64_External_Conflict[8];
 
/* A section of type SHT_MIPS_GPTAB contains information about how
much GP space would be required for different -G arguments. This
information is only used so that the linker can provide informative
suggestions as to the best -G value to use. The sh_info field is
the index of the section for which this information applies. The
contents of the section are an array of the following union. The
first element uses the gt_header field. The remaining elements use
the gt_entry field. */
typedef union
{
struct
{
/* -G value actually used for this object file. */
unsigned long gt_current_g_value;
/* Unused. */
unsigned long gt_unused;
} gt_header;
struct
{
/* If this -G argument has been used... */
unsigned long gt_g_value;
/* ...this many GP section bytes would be required. */
unsigned long gt_bytes;
} gt_entry;
} Elf32_gptab;
 
/* The external version of Elf32_gptab. */
 
typedef union
{
struct
{
unsigned char gt_current_g_value[4];
unsigned char gt_unused[4];
} gt_header;
struct
{
unsigned char gt_g_value[4];
unsigned char gt_bytes[4];
} gt_entry;
} Elf32_External_gptab;
 
/* A section of type SHT_MIPS_REGINFO contains the following
structure. */
typedef struct
{
/* Mask of general purpose registers used. */
unsigned long ri_gprmask;
/* Mask of co-processor registers used. */
unsigned long ri_cprmask[4];
/* GP register value for this object file. */
long ri_gp_value;
} Elf32_RegInfo;
 
/* The external version of the Elf_RegInfo structure. */
typedef struct
{
unsigned char ri_gprmask[4];
unsigned char ri_cprmask[4][4];
unsigned char ri_gp_value[4];
} Elf32_External_RegInfo;
 
/* MIPS ELF .reginfo swapping routines. */
extern void bfd_mips_elf32_swap_reginfo_in
PARAMS ((bfd *, const Elf32_External_RegInfo *, Elf32_RegInfo *));
extern void bfd_mips_elf32_swap_reginfo_out
PARAMS ((bfd *, const Elf32_RegInfo *, Elf32_External_RegInfo *));
/* Processor specific section flags. */
 
/* This section must be in the global data area. */
#define SHF_MIPS_GPREL 0x10000000
 
/* This section should be merged. */
#define SHF_MIPS_MERGE 0x20000000
 
/* This section contains 32 bit addresses. */
#define SHF_MIPS_ADDR32 0x40000000
 
/* This section contains 64 bit addresses. */
#define SHF_MIPS_ADDR64 0x80000000
 
/* This section may not be stripped. */
#define SHF_MIPS_NOSTRIP 0x08000000
 
/* This section is local to threads. */
#define SHF_MIPS_LOCAL 0x04000000
 
/* Linker should generate implicit weak names for this section. */
#define SHF_MIPS_NAMES 0x02000000
/* Processor specific program header types. */
 
/* Register usage information. Identifies one .reginfo section. */
#define PT_MIPS_REGINFO 0x70000000
 
/* Runtime procedure table. */
#define PT_MIPS_RTPROC 0x70000001
 
/* Options (for what ???). */
#define PT_MIPS_OPTIONS 0x70000002
/* Processor specific dynamic array tags. */
 
/* 32 bit version number for runtime linker interface. */
#define DT_MIPS_RLD_VERSION 0x70000001
 
/* Time stamp. */
#define DT_MIPS_TIME_STAMP 0x70000002
 
/* Checksum of external strings and common sizes. */
#define DT_MIPS_ICHECKSUM 0x70000003
 
/* Index of version string in string table. */
#define DT_MIPS_IVERSION 0x70000004
 
/* 32 bits of flags. */
#define DT_MIPS_FLAGS 0x70000005
 
/* Base address of the segment. */
#define DT_MIPS_BASE_ADDRESS 0x70000006
 
/* ??? */
#define DT_MIPS_MSYM 0x70000007
 
/* Address of .conflict section. */
#define DT_MIPS_CONFLICT 0x70000008
 
/* Address of .liblist section. */
#define DT_MIPS_LIBLIST 0x70000009
 
/* Number of local global offset table entries. */
#define DT_MIPS_LOCAL_GOTNO 0x7000000a
 
/* Number of entries in the .conflict section. */
#define DT_MIPS_CONFLICTNO 0x7000000b
 
/* Number of entries in the .liblist section. */
#define DT_MIPS_LIBLISTNO 0x70000010
 
/* Number of entries in the .dynsym section. */
#define DT_MIPS_SYMTABNO 0x70000011
 
/* Index of first external dynamic symbol not referenced locally. */
#define DT_MIPS_UNREFEXTNO 0x70000012
 
/* Index of first dynamic symbol in global offset table. */
#define DT_MIPS_GOTSYM 0x70000013
 
/* Number of page table entries in global offset table. */
#define DT_MIPS_HIPAGENO 0x70000014
 
/* Address of run time loader map, used for debugging. */
#define DT_MIPS_RLD_MAP 0x70000016
 
/* Delta C++ class definition. */
#define DT_MIPS_DELTA_CLASS 0x70000017
 
/* Number of entries in DT_MIPS_DELTA_CLASS. */
#define DT_MIPS_DELTA_CLASS_NO 0x70000018
 
/* Delta C++ class instances. */
#define DT_MIPS_DELTA_INSTANCE 0x70000019
 
/* Number of entries in DT_MIPS_DELTA_INSTANCE. */
#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
 
/* Delta relocations. */
#define DT_MIPS_DELTA_RELOC 0x7000001b
 
/* Number of entries in DT_MIPS_DELTA_RELOC. */
#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
 
/* Delta symbols that Delta relocations refer to. */
#define DT_MIPS_DELTA_SYM 0x7000001d
 
/* Number of entries in DT_MIPS_DELTA_SYM. */
#define DT_MIPS_DELTA_SYM_NO 0x7000001e
 
/* Delta symbols that hold class declarations. */
#define DT_MIPS_DELTA_CLASSSYM 0x70000020
 
/* Number of entries in DT_MIPS_DELTA_CLASSSYM. */
#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
 
/* Flags indicating information about C++ flavor. */
#define DT_MIPS_CXX_FLAGS 0x70000022
 
/* Pixie information (???). */
#define DT_MIPS_PIXIE_INIT 0x70000023
 
/* ??? */
#define DT_MIPS_SYMBOL_LIB 0x70000024
 
/* ??? */
#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
 
/* ??? */
#define DT_MIPS_LOCAL_GOTIDX 0x70000026
 
/* ??? */
#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
 
/* ??? */
#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
 
/* Address of `.MIPS.options'. */
#define DT_MIPS_OPTIONS 0x70000029
 
/* Address of `.interface'. */
#define DT_MIPS_INTERFACE 0x7000002a
 
/* ??? */
#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
 
/* Size of the .interface section. */
#define DT_MIPS_INTERFACE_SIZE 0x7000002c
 
/* Size of rld_text_resolve function stored in the GOT. */
#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
 
/* Default suffix of DSO to be added by rld on dlopen() calls. */
#define DT_MIPS_PERF_SUFFIX 0x7000002e
 
/* Size of compact relocation section (O32). */
#define DT_MIPS_COMPACT_SIZE 0x7000002f
 
/* GP value for auxiliary GOTs. */
#define DT_MIPS_GP_VALUE 0x70000030
 
/* Address of auxiliary .dynamic. */
#define DT_MIPS_AUX_DYNAMIC 0x70000031
/* Flags which may appear in a DT_MIPS_FLAGS entry. */
 
/* No flags. */
#define RHF_NONE 0x00000000
 
/* Uses shortcut pointers. */
#define RHF_QUICKSTART 0x00000001
 
/* Hash size is not a power of two. */
#define RHF_NOTPOT 0x00000002
 
/* Ignore LD_LIBRARY_PATH. */
#define RHS_NO_LIBRARY_REPLACEMENT \
0x00000004
 
#define RHF_NO_MOVE 0x00000008
#define RHF_SGI_ONLY 0x00000010
#define RHF_GUARANTEE_INIT 0x00000020
#define RHF_DELTA_C_PLUS_PLUS 0x00000040
#define RHF_GUARANTEE_START_INIT 0x00000080
#define RHF_PIXIE 0x00000100
#define RHF_DEFAULT_DELAY_LOAD 0x00000200
#define RHF_REQUICKSTART 0x00000400
#define RHF_REQUICKSTARTED 0x00000800
#define RHF_CORD 0x00001000
#define RHF_NO_UNRES_UNDEF 0x00002000
#define RHF_RLD_ORDER_SAFE 0x00004000
/* Special values for the st_other field in the symbol table. These
are used in an Irix 5 dynamic symbol table. */
 
#define STO_DEFAULT STV_DEFAULT
#define STO_INTERNAL STV_INTERNAL
#define STO_HIDDEN STV_HIDDEN
#define STO_PROTECTED STV_PROTECTED
 
/* This value is used for a mips16 .text symbol. */
#define STO_MIPS16 0xf0
/* The 64-bit MIPS ELF ABI uses an unusual reloc format. Each
relocation entry specifies up to three actual relocations, all at
the same address. The first relocation which required a symbol
uses the symbol in the r_sym field. The second relocation which
requires a symbol uses the symbol in the r_ssym field. If all
three relocations require a symbol, the third one uses a zero
value. */
 
/* An entry in a 64 bit SHT_REL section. */
 
typedef struct
{
/* Address of relocation. */
unsigned char r_offset[8];
/* Symbol index. */
unsigned char r_sym[4];
/* Special symbol. */
unsigned char r_ssym[1];
/* Third relocation. */
unsigned char r_type3[1];
/* Second relocation. */
unsigned char r_type2[1];
/* First relocation. */
unsigned char r_type[1];
} Elf64_Mips_External_Rel;
 
typedef struct
{
/* Address of relocation. */
bfd_vma r_offset;
/* Symbol index. */
unsigned long r_sym;
/* Special symbol. */
unsigned char r_ssym;
/* Third relocation. */
unsigned char r_type3;
/* Second relocation. */
unsigned char r_type2;
/* First relocation. */
unsigned char r_type;
} Elf64_Mips_Internal_Rel;
 
/* An entry in a 64 bit SHT_RELA section. */
 
typedef struct
{
/* Address of relocation. */
unsigned char r_offset[8];
/* Symbol index. */
unsigned char r_sym[4];
/* Special symbol. */
unsigned char r_ssym[1];
/* Third relocation. */
unsigned char r_type3[1];
/* Second relocation. */
unsigned char r_type2[1];
/* First relocation. */
unsigned char r_type[1];
/* Addend. */
unsigned char r_addend[8];
} Elf64_Mips_External_Rela;
 
typedef struct
{
/* Address of relocation. */
bfd_vma r_offset;
/* Symbol index. */
unsigned long r_sym;
/* Special symbol. */
unsigned char r_ssym;
/* Third relocation. */
unsigned char r_type3;
/* Second relocation. */
unsigned char r_type2;
/* First relocation. */
unsigned char r_type;
/* Addend. */
bfd_signed_vma r_addend;
} Elf64_Mips_Internal_Rela;
 
/* Values found in the r_ssym field of a relocation entry. */
 
/* No relocation. */
#define RSS_UNDEF 0
 
/* Value of GP. */
#define RSS_GP 1
 
/* Value of GP in object being relocated. */
#define RSS_GP0 2
 
/* Address of location being relocated. */
#define RSS_LOC 3
/* A SHT_MIPS_OPTIONS section contains a series of options, each of
which starts with this header. */
 
typedef struct
{
/* Type of option. */
unsigned char kind[1];
/* Size of option descriptor, including header. */
unsigned char size[1];
/* Section index of affected section, or 0 for global option. */
unsigned char section[2];
/* Information specific to this kind of option. */
unsigned char info[4];
} Elf_External_Options;
 
typedef struct
{
/* Type of option. */
unsigned char kind;
/* Size of option descriptor, including header. */
unsigned char size;
/* Section index of affected section, or 0 for global option. */
unsigned short section;
/* Information specific to this kind of option. */
unsigned long info;
} Elf_Internal_Options;
 
/* MIPS ELF option header swapping routines. */
extern void bfd_mips_elf_swap_options_in
PARAMS ((bfd *, const Elf_External_Options *, Elf_Internal_Options *));
extern void bfd_mips_elf_swap_options_out
PARAMS ((bfd *, const Elf_Internal_Options *, Elf_External_Options *));
 
/* Values which may appear in the kind field of an Elf_Options
structure. */
 
/* Undefined. */
#define ODK_NULL 0
 
/* Register usage and GP value. */
#define ODK_REGINFO 1
 
/* Exception processing information. */
#define ODK_EXCEPTIONS 2
 
/* Section padding information. */
#define ODK_PAD 3
 
/* Hardware workarounds performed. */
#define ODK_HWPATCH 4
 
/* Fill value used by the linker. */
#define ODK_FILL 5
 
/* Reserved space for desktop tools. */
#define ODK_TAGS 6
 
/* Hardware workarounds, AND bits when merging. */
#define ODK_HWAND 7
 
/* Hardware workarounds, OR bits when merging. */
#define ODK_HWOR 8
 
/* GP group to use for text/data sections. */
#define ODK_GP_GROUP 9
 
/* ID information. */
#define ODK_IDENT 10
 
/* In the 32 bit ABI, an ODK_REGINFO option is just a Elf32_RegInfo
structure. In the 64 bit ABI, it is the following structure. The
info field of the options header is not used. */
 
typedef struct
{
/* Mask of general purpose registers used. */
unsigned char ri_gprmask[4];
/* Padding. */
unsigned char ri_pad[4];
/* Mask of co-processor registers used. */
unsigned char ri_cprmask[4][4];
/* GP register value for this object file. */
unsigned char ri_gp_value[8];
} Elf64_External_RegInfo;
 
typedef struct
{
/* Mask of general purpose registers used. */
unsigned long ri_gprmask;
/* Padding. */
unsigned long ri_pad;
/* Mask of co-processor registers used. */
unsigned long ri_cprmask[4];
/* GP register value for this object file. */
bfd_vma ri_gp_value;
} Elf64_Internal_RegInfo;
 
typedef struct
{
/* The hash value computed from the name of the corresponding
dynamic symbol. */
unsigned char ms_hash_value[4];
/* Contains both the dynamic relocation index and the symbol flags
field. The macros ELF32_MS_REL_INDEX and ELF32_MS_FLAGS are used
to access the individual values. The dynamic relocation index
identifies the first entry in the .rel.dyn section that
references the dynamic symbol corresponding to this msym entry.
If the index is 0, no dynamic relocations are associated with the
symbol. The symbol flags field is reserved for future use. */
unsigned char ms_info[4];
} Elf32_External_Msym;
 
typedef struct
{
/* The hash value computed from the name of the corresponding
dynamic symbol. */
unsigned long ms_hash_value;
/* Contains both the dynamic relocation index and the symbol flags
field. The macros ELF32_MS_REL_INDEX and ELF32_MS_FLAGS are used
to access the individual values. The dynamic relocation index
identifies the first entry in the .rel.dyn section that
references the dynamic symbol corresponding to this msym entry.
If the index is 0, no dynamic relocations are associated with the
symbol. The symbol flags field is reserved for future use. */
unsigned long ms_info;
} Elf32_Internal_Msym;
 
#define ELF32_MS_REL_INDEX(i) ((i) >> 8)
#define ELF32_MS_FLAGS(i) (i) & 0xff)
#define ELF32_MS_INFO(r, f) (((r) << 8) + ((f) & 0xff))
 
/* MIPS ELF reginfo swapping routines. */
extern void bfd_mips_elf64_swap_reginfo_in
PARAMS ((bfd *, const Elf64_External_RegInfo *, Elf64_Internal_RegInfo *));
extern void bfd_mips_elf64_swap_reginfo_out
PARAMS ((bfd *, const Elf64_Internal_RegInfo *, Elf64_External_RegInfo *));
 
/* Masks for the info work of an ODK_EXCEPTIONS descriptor. */
#define OEX_FPU_MIN 0x1f /* FPEs which must be enabled. */
#define OEX_FPU_MAX 0x1f00 /* FPEs which may be enabled. */
#define OEX_PAGE0 0x10000 /* Page zero must be mapped. */
#define OEX_SMM 0x20000 /* Force sequential memory mode. */
#define OEX_FPDBUG 0x40000 /* Force floating-point debug mode. */
#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults. */
 
/* Masks of the FP exceptions for OEX_FPU_MIN and OEX_FPU_MAX. */
#define OEX_FPU_INVAL 0x10 /* Invalid operation exception. */
#define OEX_FPU_DIV0 0x08 /* Division by zero exception. */
#define OEX_FPU_OFLO 0x04 /* Overflow exception. */
#define OEX_FPU_UFLO 0x02 /* Underflow exception. */
#define OEX_FPU_INEX 0x01 /* Inexact exception. */
 
/* Masks for the info word of an ODK_PAD descriptor. */
#define OPAD_PREFIX 0x01
#define OPAD_POSTFIX 0x02
#define OPAD_SYMBOL 0x04
 
/* Masks for the info word of an ODK_HWPATCH descriptor. */
#define OHW_R4KEOP 0x01 /* R4000 end-of-page patch. */
#define OHW_R8KPFETCH 0x02 /* May need R8000 prefetch patch. */
#define OHW_R5KEOP 0x04 /* R5000 end-of-page patch. */
#define OHW_R5KCVTL 0x08 /* R5000 cvt.[ds].l bug (clean == 1). */
 
/* Masks for the info word of an ODK_IDENT/ODK_GP_GROUP descriptor. */
#define OGP_GROUP 0x0000ffff /* GP group number. */
#define OGP_SELF 0xffff0000 /* Self-contained GP groups. */
 
/* Masks for the info word of an ODK_HWAND/ODK_HWOR descriptor. */
#define OHWA0_R4KEOP_CHECKED 0x00000001
#define OHWA0_R4KEOP_CLEAN 0x00000002
 
#endif /* _ELF_MIPS_H */
/sparc.h
0,0 → 1,153
/* SPARC ELF support for BFD.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
By Doug Evans, Cygnus Support, <dje@cygnus.com>.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_SPARC_H
#define _ELF_SPARC_H
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* These are defined by Sun. */
 
#define EF_SPARC_32PLUS_MASK 0xffff00 /* bits indicating V8+ type */
#define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */
#define EF_SPARC_SUN_US1 0x000200 /* Sun UltraSPARC1 extensions */
#define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */
#define EF_SPARC_SUN_US3 0x000800 /* Sun UltraSPARCIII extensions */
 
#define EF_SPARC_LEDATA 0x800000 /* little endian data */
 
/* This name is used in the V9 ABI. */
#define EF_SPARC_EXT_MASK 0xffff00 /* reserved for vendor extensions */
 
/* V9 memory models */
#define EF_SPARCV9_MM 0x3 /* memory model mask */
#define EF_SPARCV9_TSO 0x0 /* total store ordering */
#define EF_SPARCV9_PSO 0x1 /* partial store ordering */
#define EF_SPARCV9_RMO 0x2 /* relaxed store ordering */
 
/* Section indices. */
 
#define SHN_BEFORE 0xff00 /* used with SHF_ORDERED */
#define SHN_AFTER 0xff01 /* used with SHF_ORDERED */
 
/* Section flags. */
 
#define SHF_EXCLUDE 0x80000000 /* exclude from linking */
#define SHF_ORDERED 0x40000000 /* treat sh_link,sh_info specially */
 
/* Symbol types. */
 
#define STT_REGISTER 13 /* global reg reserved to app. */
 
#include "elf/reloc-macros.h"
 
/* Relocation types. */
START_RELOC_NUMBERS (elf_sparc_reloc_type)
RELOC_NUMBER (R_SPARC_NONE, 0)
RELOC_NUMBER (R_SPARC_8, 1)
RELOC_NUMBER (R_SPARC_16, 2)
RELOC_NUMBER (R_SPARC_32, 3)
RELOC_NUMBER (R_SPARC_DISP8, 4)
RELOC_NUMBER (R_SPARC_DISP16, 5)
RELOC_NUMBER (R_SPARC_DISP32, 6)
RELOC_NUMBER (R_SPARC_WDISP30, 7)
RELOC_NUMBER (R_SPARC_WDISP22, 8)
RELOC_NUMBER (R_SPARC_HI22, 9)
RELOC_NUMBER (R_SPARC_22, 10)
RELOC_NUMBER (R_SPARC_13, 11)
RELOC_NUMBER (R_SPARC_LO10, 12)
RELOC_NUMBER (R_SPARC_GOT10, 13)
RELOC_NUMBER (R_SPARC_GOT13, 14)
RELOC_NUMBER (R_SPARC_GOT22, 15)
RELOC_NUMBER (R_SPARC_PC10, 16)
RELOC_NUMBER (R_SPARC_PC22, 17)
RELOC_NUMBER (R_SPARC_WPLT30, 18)
RELOC_NUMBER (R_SPARC_COPY, 19)
RELOC_NUMBER (R_SPARC_GLOB_DAT, 20)
RELOC_NUMBER (R_SPARC_JMP_SLOT, 21)
RELOC_NUMBER (R_SPARC_RELATIVE, 22)
RELOC_NUMBER (R_SPARC_UA32, 23)
 
/* ??? These 6 relocs are new but not currently used. For binary
compatility in the sparc64-elf toolchain, we leave them out.
A non-binary upward compatible change is expected for sparc64-elf. */
#ifndef SPARC64_OLD_RELOCS
/* ??? New relocs on the UltraSPARC. Not sure what they're for yet. */
RELOC_NUMBER (R_SPARC_PLT32, 24)
RELOC_NUMBER (R_SPARC_HIPLT22, 25)
RELOC_NUMBER (R_SPARC_LOPLT10, 26)
RELOC_NUMBER (R_SPARC_PCPLT32, 27)
RELOC_NUMBER (R_SPARC_PCPLT22, 28)
RELOC_NUMBER (R_SPARC_PCPLT10, 29)
#endif
 
/* v9 relocs */
RELOC_NUMBER (R_SPARC_10, 30)
RELOC_NUMBER (R_SPARC_11, 31)
RELOC_NUMBER (R_SPARC_64, 32)
RELOC_NUMBER (R_SPARC_OLO10, 33)
RELOC_NUMBER (R_SPARC_HH22, 34)
RELOC_NUMBER (R_SPARC_HM10, 35)
RELOC_NUMBER (R_SPARC_LM22, 36)
RELOC_NUMBER (R_SPARC_PC_HH22, 37)
RELOC_NUMBER (R_SPARC_PC_HM10, 38)
RELOC_NUMBER (R_SPARC_PC_LM22, 39)
RELOC_NUMBER (R_SPARC_WDISP16, 40)
RELOC_NUMBER (R_SPARC_WDISP19, 41)
RELOC_NUMBER (R_SPARC_UNUSED_42, 42)
RELOC_NUMBER (R_SPARC_7, 43)
RELOC_NUMBER (R_SPARC_5, 44)
RELOC_NUMBER (R_SPARC_6, 45)
RELOC_NUMBER (R_SPARC_DISP64, 46)
RELOC_NUMBER (R_SPARC_PLT64, 47)
RELOC_NUMBER (R_SPARC_HIX22, 48)
RELOC_NUMBER (R_SPARC_LOX10, 49)
RELOC_NUMBER (R_SPARC_H44, 50)
RELOC_NUMBER (R_SPARC_M44, 51)
RELOC_NUMBER (R_SPARC_L44, 52)
RELOC_NUMBER (R_SPARC_REGISTER, 53)
RELOC_NUMBER (R_SPARC_UA64, 54)
RELOC_NUMBER (R_SPARC_UA16, 55)
 
/* little endian data relocs */
RELOC_NUMBER (R_SPARC_REV32, 56)
 
EMPTY_RELOC (R_SPARC_max_std)
 
RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251)
 
EMPTY_RELOC (R_SPARC_max)
END_RELOC_NUMBERS
 
/* Relocation macros. */
 
#define ELF64_R_TYPE_DATA(info) \
(((bfd_signed_vma)(ELF64_R_TYPE(info) >> 8) ^ 0x800000) - 0x800000)
#define ELF64_R_TYPE_ID(info) \
((info) & 0xff)
#define ELF64_R_TYPE_INFO(data, type) \
(((bfd_vma) ((data) & 0xffffff) << 8) | (bfd_vma) (type))
 
/* Values for Elf64_Dyn.d_tag. */
 
#define DT_SPARC_REGISTER 0x70000001
 
#endif /* _ELF_SPARC_H */
/pj.h
0,0 → 1,45
/* picoJava ELF support for BFD.
Copyright (C) 1999 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_PJ_H
#define _ELF_PJ_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
 
START_RELOC_NUMBERS (elf_pj_reloc_type)
RELOC_NUMBER (R_PJ_NONE, 0)
RELOC_NUMBER (R_PJ_DATA_DIR32, 1)
RELOC_NUMBER (R_PJ_CODE_REL32, 2)
RELOC_NUMBER (R_PJ_CODE_REL16, 3)
RELOC_NUMBER (R_PJ_CODE_DIR32, 6)
RELOC_NUMBER (R_PJ_CODE_DIR16, 7)
RELOC_NUMBER (R_PJ_CODE_LO16, 13)
RELOC_NUMBER (R_PJ_CODE_HI16, 14)
RELOC_NUMBER (R_PJ_GNU_VTINHERIT, 15)
RELOC_NUMBER (R_PJ_GNU_VTENTRY, 16)
EMPTY_RELOC (R_PJ_max)
END_RELOC_NUMBERS
 
#define EF_PICOJAVA_ARCH 0x0000000f
#define EF_PICOJAVA_NEWCALLS 0x00000010
#define EF_PICOJAVA_GNUCALLS 0x00000020 /* The (currently) non standard GNU calling convention */
 
#endif
/fr30.h
0,0 → 1,43
/* FR30 ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_FR30_H
#define _ELF_FR30_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_fr30_reloc_type)
RELOC_NUMBER (R_FR30_NONE, 0)
RELOC_NUMBER (R_FR30_8, 1)
RELOC_NUMBER (R_FR30_20, 2)
RELOC_NUMBER (R_FR30_32, 3)
RELOC_NUMBER (R_FR30_48, 4)
RELOC_NUMBER (R_FR30_6_IN_4, 5)
RELOC_NUMBER (R_FR30_8_IN_8, 6)
RELOC_NUMBER (R_FR30_9_IN_8, 7)
RELOC_NUMBER (R_FR30_10_IN_8, 8)
RELOC_NUMBER (R_FR30_9_PCREL, 9)
RELOC_NUMBER (R_FR30_12_PCREL, 10)
RELOC_NUMBER (R_FR30_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_FR30_GNU_VTENTRY, 12)
EMPTY_RELOC (R_FR30_max)
END_RELOC_NUMBERS
 
#endif /* _ELF_FR30_H */
/d10v.h
0,0 → 1,38
/* d10v ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_D10V_H
#define _ELF_D10V_H
 
#include "elf/reloc-macros.h"
 
/* Relocation types. */
START_RELOC_NUMBERS (elf_d10v_reloc_type)
RELOC_NUMBER (R_D10V_NONE, 0)
RELOC_NUMBER (R_D10V_10_PCREL_R, 1)
RELOC_NUMBER (R_D10V_10_PCREL_L, 2)
RELOC_NUMBER (R_D10V_16, 3)
RELOC_NUMBER (R_D10V_18, 4)
RELOC_NUMBER (R_D10V_18_PCREL, 5)
RELOC_NUMBER (R_D10V_32, 6)
RELOC_NUMBER (R_D10V_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_D10V_GNU_VTENTRY, 8)
END_RELOC_NUMBERS
 
#endif
/sh.h
0,0 → 1,84
/* SH ELF support for BFD.
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_SH_H
#define _ELF_SH_H
 
/* Processor specific flags for the ELF header e_flags field. */
 
#define EF_SH_MACH_MASK 0x1f
#define EF_SH_UNKNOWN 0 /* For backwards compatibility. */
#define EF_SH1 1
#define EF_SH2 2
#define EF_SH3 3
#define EF_SH_HAS_DSP(flags) ((flags) & 4)
#define EF_SH_DSP 4
#define EF_SH3_DSP 5
#define EF_SH_HAS_FP(flags) ((flags) & 8)
#define EF_SH3E 8
#define EF_SH4 9
 
#define EF_SH_MERGE_MACH(mach1, mach2) \
(((((mach1) == EF_SH3 || (mach1) == EF_SH_UNKNOWN) && (mach2) == EF_SH_DSP) \
|| ((mach1) == EF_SH_DSP \
&& ((mach2) == EF_SH3 || (mach2) == EF_SH_UNKNOWN))) \
? EF_SH3_DSP \
: (((mach1) < EF_SH3 && (mach2) == EF_SH_UNKNOWN) \
|| ((mach2) < EF_SH3 && (mach1) == EF_SH_UNKNOWN)) \
? EF_SH3 \
: (((mach1) == EF_SH3E && (mach2) == EF_SH_UNKNOWN) \
|| ((mach2) == EF_SH3E && (mach1) == EF_SH_UNKNOWN)) \
? EF_SH4 \
: ((mach1) > (mach2) ? (mach1) : (mach2)))
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
/* Relocations 25ff are GNU extensions.
25..33 are used for relaxation and use the same constants as COFF uses. */
START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_NONE, 0)
RELOC_NUMBER (R_SH_DIR32, 1)
RELOC_NUMBER (R_SH_REL32, 2)
RELOC_NUMBER (R_SH_DIR8WPN, 3)
RELOC_NUMBER (R_SH_IND12W, 4)
RELOC_NUMBER (R_SH_DIR8WPL, 5)
RELOC_NUMBER (R_SH_DIR8WPZ, 6)
RELOC_NUMBER (R_SH_DIR8BP, 7)
RELOC_NUMBER (R_SH_DIR8W, 8)
RELOC_NUMBER (R_SH_DIR8L, 9)
FAKE_RELOC (R_SH_FIRST_INVALID_RELOC, 10)
FAKE_RELOC (R_SH_LAST_INVALID_RELOC, 24)
RELOC_NUMBER (R_SH_SWITCH16, 25)
RELOC_NUMBER (R_SH_SWITCH32, 26)
RELOC_NUMBER (R_SH_USES, 27)
RELOC_NUMBER (R_SH_COUNT, 28)
RELOC_NUMBER (R_SH_ALIGN, 29)
RELOC_NUMBER (R_SH_CODE, 30)
RELOC_NUMBER (R_SH_DATA, 31)
RELOC_NUMBER (R_SH_LABEL, 32)
RELOC_NUMBER (R_SH_SWITCH8, 33)
RELOC_NUMBER (R_SH_GNU_VTINHERIT, 34)
RELOC_NUMBER (R_SH_GNU_VTENTRY, 35)
RELOC_NUMBER (R_SH_LOOP_START, 36)
RELOC_NUMBER (R_SH_LOOP_END, 37)
EMPTY_RELOC (R_SH_max)
END_RELOC_NUMBERS
 
#endif
/d30v.h
0,0 → 1,42
/* d30v ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_D30V_H
#define _ELF_D30V_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_d30v_reloc_type)
RELOC_NUMBER (R_D30V_NONE, 0)
RELOC_NUMBER (R_D30V_6, 1)
RELOC_NUMBER (R_D30V_9_PCREL, 2)
RELOC_NUMBER (R_D30V_9_PCREL_R, 3)
RELOC_NUMBER (R_D30V_15, 4)
RELOC_NUMBER (R_D30V_15_PCREL, 5)
RELOC_NUMBER (R_D30V_15_PCREL_R, 6)
RELOC_NUMBER (R_D30V_21, 7)
RELOC_NUMBER (R_D30V_21_PCREL, 8)
RELOC_NUMBER (R_D30V_21_PCREL_R, 9)
RELOC_NUMBER (R_D30V_32, 10)
RELOC_NUMBER (R_D30V_32_PCREL, 11)
RELOC_NUMBER (R_D30V_32_NORMAL, 12)
END_RELOC_NUMBERS
 
#endif
/internal.h
0,0 → 1,312
/* ELF support for BFD.
Copyright (C) 1991, 92, 93, 94, 95, 97, 1998 Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
Programming Support Tools".
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
 
/* This file is part of ELF support for BFD, and contains the portions
that describe how ELF is represented internally in the BFD library.
I.E. it describes the in-memory representation of ELF. It requires
the elf-common.h file which contains the portions that are common to
both the internal and external representations. */
 
 
/* NOTE that these structures are not kept in the same order as they appear
in the object file. In some cases they've been reordered for more optimal
packing under various circumstances. */
 
#ifndef _ELF_INTERNAL_H
#define _ELF_INTERNAL_H
 
/* ELF Header */
 
#define EI_NIDENT 16 /* Size of e_ident[] */
 
typedef struct elf_internal_ehdr {
unsigned char e_ident[EI_NIDENT]; /* ELF "magic number" */
bfd_vma e_entry; /* Entry point virtual address */
bfd_size_type e_phoff; /* Program header table file offset */
bfd_size_type e_shoff; /* Section header table file offset */
unsigned long e_version; /* Identifies object file version */
unsigned long e_flags; /* Processor-specific flags */
unsigned short e_type; /* Identifies object file type */
unsigned short e_machine; /* Specifies required architecture */
unsigned short e_ehsize; /* ELF header size in bytes */
unsigned short e_phentsize; /* Program header table entry size */
unsigned short e_phnum; /* Program header table entry count */
unsigned short e_shentsize; /* Section header table entry size */
unsigned short e_shnum; /* Section header table entry count */
unsigned short e_shstrndx; /* Section header string table index */
} Elf_Internal_Ehdr;
 
#define elf32_internal_ehdr elf_internal_ehdr
#define Elf32_Internal_Ehdr Elf_Internal_Ehdr
#define elf64_internal_ehdr elf_internal_ehdr
#define Elf64_Internal_Ehdr Elf_Internal_Ehdr
 
/* Program header */
 
struct elf_internal_phdr {
unsigned long p_type; /* Identifies program segment type */
unsigned long p_flags; /* Segment flags */
bfd_vma p_offset; /* Segment file offset */
bfd_vma p_vaddr; /* Segment virtual address */
bfd_vma p_paddr; /* Segment physical address */
bfd_vma p_filesz; /* Segment size in file */
bfd_vma p_memsz; /* Segment size in memory */
bfd_vma p_align; /* Segment alignment, file & memory */
};
 
typedef struct elf_internal_phdr Elf_Internal_Phdr;
#define elf32_internal_phdr elf_internal_phdr
#define Elf32_Internal_Phdr Elf_Internal_Phdr
#define elf64_internal_phdr elf_internal_phdr
#define Elf64_Internal_Phdr Elf_Internal_Phdr
 
/* Section header */
 
typedef struct elf_internal_shdr {
unsigned int sh_name; /* Section name, index in string tbl */
unsigned int sh_type; /* Type of section */
bfd_vma sh_flags; /* Miscellaneous section attributes */
bfd_vma sh_addr; /* Section virtual addr at execution */
bfd_size_type sh_size; /* Size of section in bytes */
bfd_size_type sh_entsize; /* Entry size if section holds table */
unsigned long sh_link; /* Index of another section */
unsigned long sh_info; /* Additional section information */
file_ptr sh_offset; /* Section file offset */
unsigned int sh_addralign; /* Section alignment */
 
/* The internal rep also has some cached info associated with it. */
asection * bfd_section; /* Associated BFD section. */
PTR contents; /* Section contents. */
} Elf_Internal_Shdr;
 
#define elf32_internal_shdr elf_internal_shdr
#define Elf32_Internal_Shdr Elf_Internal_Shdr
#define elf64_internal_shdr elf_internal_shdr
#define Elf64_Internal_Shdr Elf_Internal_Shdr
 
/* Symbol table entry */
 
struct elf_internal_sym {
bfd_vma st_value; /* Value of the symbol */
bfd_vma st_size; /* Associated symbol size */
unsigned long st_name; /* Symbol name, index in string tbl */
unsigned char st_info; /* Type and binding attributes */
unsigned char st_other; /* No defined meaning, 0 */
unsigned short st_shndx; /* Associated section index */
};
 
typedef struct elf_internal_sym Elf_Internal_Sym;
 
#define elf32_internal_sym elf_internal_sym
#define elf64_internal_sym elf_internal_sym
#define Elf32_Internal_Sym Elf_Internal_Sym
#define Elf64_Internal_Sym Elf_Internal_Sym
 
/* Note segments */
 
typedef struct elf_internal_note {
unsigned long namesz; /* Size of entry's owner string */
unsigned long descsz; /* Size of the note descriptor */
unsigned long type; /* Interpretation of the descriptor */
char * namedata; /* Start of the name+desc data */
char * descdata; /* Start of the desc data */
bfd_vma descpos; /* File offset of the descdata */
} Elf_Internal_Note;
#define Elf32_Internal_Note Elf_Internal_Note
#define elf32_internal_note elf_internal_note
 
/* Relocation Entries */
 
typedef struct elf_internal_rel {
bfd_vma r_offset; /* Location at which to apply the action */
/* This needs to support 64-bit values in elf64. */
bfd_vma r_info; /* index and type of relocation */
} Elf_Internal_Rel;
 
#define elf32_internal_rel elf_internal_rel
#define Elf32_Internal_Rel Elf_Internal_Rel
#define elf64_internal_rel elf_internal_rel
#define Elf64_Internal_Rel Elf_Internal_Rel
 
typedef struct elf_internal_rela {
bfd_vma r_offset; /* Location at which to apply the action */
bfd_vma r_info; /* Index and Type of relocation */
bfd_signed_vma r_addend; /* Constant addend used to compute value */
} Elf_Internal_Rela;
 
#define elf32_internal_rela elf_internal_rela
#define elf64_internal_rela elf_internal_rela
#define Elf32_Internal_Rela Elf_Internal_Rela
#define Elf64_Internal_Rela Elf_Internal_Rela
 
/* dynamic section structure */
 
typedef struct elf_internal_dyn {
/* This needs to support 64-bit values in elf64. */
bfd_vma d_tag; /* entry tag value */
union {
/* This needs to support 64-bit values in elf64. */
bfd_vma d_val;
bfd_vma d_ptr;
} d_un;
} Elf_Internal_Dyn;
 
#define elf32_internal_dyn elf_internal_dyn
#define elf64_internal_dyn elf_internal_dyn
#define Elf32_Internal_Dyn Elf_Internal_Dyn
#define Elf64_Internal_Dyn Elf_Internal_Dyn
 
/* This structure appears in a SHT_GNU_verdef section. */
 
typedef struct elf_internal_verdef {
unsigned short vd_version; /* Version number of structure. */
unsigned short vd_flags; /* Flags (VER_FLG_*). */
unsigned short vd_ndx; /* Version index. */
unsigned short vd_cnt; /* Number of verdaux entries. */
unsigned long vd_hash; /* Hash of name. */
unsigned long vd_aux; /* Offset to verdaux entries. */
unsigned long vd_next; /* Offset to next verdef. */
 
/* These fields are set up when BFD reads in the structure. FIXME:
It would be cleaner to store these in a different structure. */
bfd *vd_bfd; /* BFD. */
const char *vd_nodename; /* Version name. */
struct elf_internal_verdef *vd_nextdef; /* vd_next as pointer. */
struct elf_internal_verdaux *vd_auxptr; /* vd_aux as pointer. */
unsigned int vd_exp_refno; /* Used by the linker. */
} Elf_Internal_Verdef;
 
/* This structure appears in a SHT_GNU_verdef section. */
 
typedef struct elf_internal_verdaux {
unsigned long vda_name; /* String table offset of name. */
unsigned long vda_next; /* Offset to next verdaux. */
 
/* These fields are set up when BFD reads in the structure. FIXME:
It would be cleaner to store these in a different structure. */
const char *vda_nodename; /* vda_name as pointer. */
struct elf_internal_verdaux *vda_nextptr; /* vda_next as pointer. */
} Elf_Internal_Verdaux;
 
/* This structure appears in a SHT_GNU_verneed section. */
 
typedef struct elf_internal_verneed {
unsigned short vn_version; /* Version number of structure. */
unsigned short vn_cnt; /* Number of vernaux entries. */
unsigned long vn_file; /* String table offset of library name. */
unsigned long vn_aux; /* Offset to vernaux entries. */
unsigned long vn_next; /* Offset to next verneed. */
 
/* These fields are set up when BFD reads in the structure. FIXME:
It would be cleaner to store these in a different structure. */
bfd *vn_bfd; /* BFD. */
const char *vn_filename; /* vn_file as pointer. */
struct elf_internal_vernaux *vn_auxptr; /* vn_aux as pointer. */
struct elf_internal_verneed *vn_nextref; /* vn_nextref as pointer. */
} Elf_Internal_Verneed;
 
/* This structure appears in a SHT_GNU_verneed section. */
 
typedef struct elf_internal_vernaux {
unsigned long vna_hash; /* Hash of dependency name. */
unsigned short vna_flags; /* Flags (VER_FLG_*). */
unsigned short vna_other; /* Unused. */
unsigned long vna_name; /* String table offset to version name. */
unsigned long vna_next; /* Offset to next vernaux. */
 
/* These fields are set up when BFD reads in the structure. FIXME:
It would be cleaner to store these in a different structure. */
const char *vna_nodename; /* vna_name as pointer. */
struct elf_internal_vernaux *vna_nextptr; /* vna_next as pointer. */
} Elf_Internal_Vernaux;
 
/* This structure appears in a SHT_GNU_versym section. This is not a
standard ELF structure; ELF just uses Elf32_Half. */
 
typedef struct elf_internal_versym {
unsigned short vs_vers;
} Elf_Internal_Versym;
 
/* Structure for syminfo section. */
typedef struct
{
unsigned short int si_boundto;
unsigned short int si_flags;
} Elf_Internal_Syminfo;
 
 
#define elf32_internal_verdef elf_internal_verdef
#define elf64_internal_verdef elf_internal_verdef
#define elf32_internal_verdaux elf_internal_verdaux
#define elf64_internal_verdaux elf_internal_verdaux
#define elf32_internal_verneed elf_internal_verneed
#define elf64_internal_verneed elf_internal_verneed
#define elf32_internal_vernaux elf_internal_vernaux
#define elf64_internal_vernaux elf_internal_vernaux
#define elf32_internal_versym elf_internal_versym
#define elf64_internal_versym elf_internal_versym
 
#define Elf32_Internal_Verdef Elf_Internal_Verdef
#define Elf64_Internal_Verdef Elf_Internal_Verdef
#define Elf32_Internal_Verdaux Elf_Internal_Verdaux
#define Elf64_Internal_Verdaux Elf_Internal_Verdaux
#define Elf32_Internal_Verneed Elf_Internal_Verneed
#define Elf64_Internal_Verneed Elf_Internal_Verneed
#define Elf32_Internal_Vernaux Elf_Internal_Vernaux
#define Elf64_Internal_Vernaux Elf_Internal_Vernaux
#define Elf32_Internal_Versym Elf_Internal_Versym
#define Elf64_Internal_Versym Elf_Internal_Versym
#define Elf32_Internal_Syminfo Elf_Internal_Syminfo
#define Elf64_Internal_Syminfo Elf_Internal_Syminfo
 
/* This structure is used to describe how sections should be assigned
to program segments. */
 
struct elf_segment_map
{
/* Next program segment. */
struct elf_segment_map *next;
/* Program segment type. */
unsigned long p_type;
/* Program segment flags. */
unsigned long p_flags;
/* Program segment physical address. */
bfd_vma p_paddr;
/* Whether the p_flags field is valid; if not, the flags are based
on the section flags. */
unsigned int p_flags_valid : 1;
/* Whether the p_paddr field is valid; if not, the physical address
is based on the section lma values. */
unsigned int p_paddr_valid : 1;
/* Whether this segment includes the file header. */
unsigned int includes_filehdr : 1;
/* Whether this segment includes the program headers. */
unsigned int includes_phdrs : 1;
/* Number of sections (may be 0). */
unsigned int count;
/* Sections. Actual number of elements is in count field. */
asection *sections[1];
};
 
#endif /* _ELF_INTERNAL_H */
/arm.h
0,0 → 1,129
/* ARM ELF support for BFD.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_ARM_H
#define _ELF_ARM_H
 
#include "elf/reloc-macros.h"
 
/* Processor specific flags for the ELF header e_flags field. */
#define EF_ARM_RELEXEC 0x01
#define EF_ARM_HASENTRY 0x02
#define EF_INTERWORK 0x04
#define EF_APCS_26 0x08
#define EF_APCS_FLOAT 0x10
#define EF_PIC 0x20
#define EF_ALIGN8 0x40 /* 8-bit structure alignment is in use. */
#define EF_NEW_ABI 0x80
#define EF_OLD_ABI 0x100
#define EF_SOFT_FLOAT 0x200
 
/* Other constants defined in the ARM ELF spec. version A-08. */
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */
#define EF_ARM_EABIMASK 0xFF000000
 
#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
#define EF_ARM_EABI_UNKNOWN 0x00000000
#define EF_ARM_EABI_VER1 0x01000000
 
/* Local aliases for some flags to match names used by COFF port. */
#define F_INTERWORK EF_INTERWORK
#define F_APCS26 EF_APCS_26
#define F_APCS_FLOAT EF_APCS_FLOAT
#define F_PIC EF_PIC
#define F_SOFT_FLOAT EF_SOFT_FLOAT
 
/* Additional symbol types for Thumb. */
#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
 
/* ARM-specific values for sh_flags. */
#define SHF_ENTRYSECT 0x10000000 /* Section contains an entry point. */
#define SHF_COMDEF 0x80000000 /* Section may be multiply defined in the input to a link step. */
 
/* ARM-specific program header flags. */
#define PF_ARM_SB 0x10000000 /* Segment contains the location addressed by the static base. */
#define PF_ARM_PI 0x20000000 /* Segment is position-independent. */
#define PF_ARM_ABS 0x40000000 /* Segment must be loaded at its base address. */
 
/* Relocation types. */
 
START_RELOC_NUMBERS (elf_arm_reloc_type)
RELOC_NUMBER (R_ARM_NONE, 0)
RELOC_NUMBER (R_ARM_PC24, 1)
RELOC_NUMBER (R_ARM_ABS32, 2)
RELOC_NUMBER (R_ARM_REL32, 3)
#ifdef OLD_ARM_ABI
RELOC_NUMBER (R_ARM_ABS8, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_THM_PC22, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_AMP_VCALL9, 10)
RELOC_NUMBER (R_ARM_THM_PC11, 11) /* Cygnus extension to abi: Thumb unconditional branch. */
RELOC_NUMBER (R_ARM_THM_PC9, 12) /* Cygnus extension to abi: Thumb conditional branch. */
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 13)
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 14)
#else /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_PC13, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_ABS8, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_THM_PC22, 10)
RELOC_NUMBER (R_ARM_THM_PC8, 11)
RELOC_NUMBER (R_ARM_AMP_VCALL9, 12)
RELOC_NUMBER (R_ARM_SWI24, 13)
RELOC_NUMBER (R_ARM_THM_SWI8, 14)
RELOC_NUMBER (R_ARM_XPC25, 15)
RELOC_NUMBER (R_ARM_THM_XPC22, 16)
#endif /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */
RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */
RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* Create PLT entry. */
RELOC_NUMBER (R_ARM_RELATIVE, 23) /* Adjust by program base. */
RELOC_NUMBER (R_ARM_GOTOFF, 24) /* 32 bit offset to GOT. */
RELOC_NUMBER (R_ARM_GOTPC, 25) /* 32 bit PC relative offset to GOT. */
RELOC_NUMBER (R_ARM_GOT32, 26) /* 32 bit GOT entry. */
RELOC_NUMBER (R_ARM_PLT32, 27) /* 32 bit PLT address. */
#ifdef OLD_ARM_ABI
FAKE_RELOC (FIRST_INVALID_RELOC, 28)
FAKE_RELOC (LAST_INVALID_RELOC, 249)
#else /* not OLD_ARM_ABI */
FAKE_RELOC (FIRST_INVALID_RELOC1, 28)
FAKE_RELOC (LAST_INVALID_RELOC1, 99)
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100)
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101)
RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */
RELOC_NUMBER (R_ARM_THM_PC9, 103) /* Cygnus extension to abi: Thumb conditional branch. */
FAKE_RELOC (FIRST_INVALID_RELOC2, 104)
FAKE_RELOC (LAST_INVALID_RELOC2, 248)
RELOC_NUMBER (R_ARM_RXPC25, 249)
#endif /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_RSBREL32, 250)
RELOC_NUMBER (R_ARM_THM_RPC22, 251)
RELOC_NUMBER (R_ARM_RREL32, 252)
RELOC_NUMBER (R_ARM_RABS32, 253)
RELOC_NUMBER (R_ARM_RPC24, 254)
RELOC_NUMBER (R_ARM_RBASE, 255)
END_RELOC_NUMBERS
 
#endif /* _ELF_ARM_H */
/i370.h
0,0 → 1,46
/* i370 ELF support for BFD.
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the i370 ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_I370_H
#define _ELF_I370_H
 
/* Processor specific section headers, sh_type field */
 
#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
entries in this section \
based on the address \
specified in the associated \
symbol table entry. */
 
#define EF_I370_RELOCATABLE 0x00010000 /* i370 -mrelocatable flag */
#define EF_I370_RELOCATABLE_LIB 0x00008000 /* i370 -mrelocatable-lib flag */
/* Processor specific section flags, sh_flags field */
 
#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \
this section from executable \
and shared objects that it \
builds when those objects \
are not to be furhter \
relocated. */
#endif /* _ELF_I370_H */
 
 
/external.h
0,0 → 1,256
/* ELF support for BFD.
Copyright (C) 1991, 92, 93, 95, 97, 98, 1999 Free Software Foundation, Inc.
 
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
Programming Support Tools".
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
 
/* This file is part of ELF support for BFD, and contains the portions
that describe how ELF is represented externally by the BFD library.
I.E. it describes the in-file representation of ELF. It requires
the elf-common.h file which contains the portions that are common to
both the internal and external representations. */
 
/* The 64-bit stuff is kind of random. Perhaps someone will publish a
spec someday. */
 
#ifndef _ELF_EXTERNAL_H
#define _ELF_EXTERNAL_H
 
/* ELF Header (32-bit implementations) */
 
typedef struct {
unsigned char e_ident[16]; /* ELF "magic number" */
unsigned char e_type[2]; /* Identifies object file type */
unsigned char e_machine[2]; /* Specifies required architecture */
unsigned char e_version[4]; /* Identifies object file version */
unsigned char e_entry[4]; /* Entry point virtual address */
unsigned char e_phoff[4]; /* Program header table file offset */
unsigned char e_shoff[4]; /* Section header table file offset */
unsigned char e_flags[4]; /* Processor-specific flags */
unsigned char e_ehsize[2]; /* ELF header size in bytes */
unsigned char e_phentsize[2]; /* Program header table entry size */
unsigned char e_phnum[2]; /* Program header table entry count */
unsigned char e_shentsize[2]; /* Section header table entry size */
unsigned char e_shnum[2]; /* Section header table entry count */
unsigned char e_shstrndx[2]; /* Section header string table index */
} Elf32_External_Ehdr;
 
typedef struct {
unsigned char e_ident[16]; /* ELF "magic number" */
unsigned char e_type[2]; /* Identifies object file type */
unsigned char e_machine[2]; /* Specifies required architecture */
unsigned char e_version[4]; /* Identifies object file version */
unsigned char e_entry[8]; /* Entry point virtual address */
unsigned char e_phoff[8]; /* Program header table file offset */
unsigned char e_shoff[8]; /* Section header table file offset */
unsigned char e_flags[4]; /* Processor-specific flags */
unsigned char e_ehsize[2]; /* ELF header size in bytes */
unsigned char e_phentsize[2]; /* Program header table entry size */
unsigned char e_phnum[2]; /* Program header table entry count */
unsigned char e_shentsize[2]; /* Section header table entry size */
unsigned char e_shnum[2]; /* Section header table entry count */
unsigned char e_shstrndx[2]; /* Section header string table index */
} Elf64_External_Ehdr;
 
/* Program header */
 
typedef struct {
unsigned char p_type[4]; /* Identifies program segment type */
unsigned char p_offset[4]; /* Segment file offset */
unsigned char p_vaddr[4]; /* Segment virtual address */
unsigned char p_paddr[4]; /* Segment physical address */
unsigned char p_filesz[4]; /* Segment size in file */
unsigned char p_memsz[4]; /* Segment size in memory */
unsigned char p_flags[4]; /* Segment flags */
unsigned char p_align[4]; /* Segment alignment, file & memory */
} Elf32_External_Phdr;
 
typedef struct {
unsigned char p_type[4]; /* Identifies program segment type */
unsigned char p_flags[4]; /* Segment flags */
unsigned char p_offset[8]; /* Segment file offset */
unsigned char p_vaddr[8]; /* Segment virtual address */
unsigned char p_paddr[8]; /* Segment physical address */
unsigned char p_filesz[8]; /* Segment size in file */
unsigned char p_memsz[8]; /* Segment size in memory */
unsigned char p_align[8]; /* Segment alignment, file & memory */
} Elf64_External_Phdr;
 
/* Section header */
 
typedef struct {
unsigned char sh_name[4]; /* Section name, index in string tbl */
unsigned char sh_type[4]; /* Type of section */
unsigned char sh_flags[4]; /* Miscellaneous section attributes */
unsigned char sh_addr[4]; /* Section virtual addr at execution */
unsigned char sh_offset[4]; /* Section file offset */
unsigned char sh_size[4]; /* Size of section in bytes */
unsigned char sh_link[4]; /* Index of another section */
unsigned char sh_info[4]; /* Additional section information */
unsigned char sh_addralign[4]; /* Section alignment */
unsigned char sh_entsize[4]; /* Entry size if section holds table */
} Elf32_External_Shdr;
 
typedef struct {
unsigned char sh_name[4]; /* Section name, index in string tbl */
unsigned char sh_type[4]; /* Type of section */
unsigned char sh_flags[8]; /* Miscellaneous section attributes */
unsigned char sh_addr[8]; /* Section virtual addr at execution */
unsigned char sh_offset[8]; /* Section file offset */
unsigned char sh_size[8]; /* Size of section in bytes */
unsigned char sh_link[4]; /* Index of another section */
unsigned char sh_info[4]; /* Additional section information */
unsigned char sh_addralign[8]; /* Section alignment */
unsigned char sh_entsize[8]; /* Entry size if section holds table */
} Elf64_External_Shdr;
 
/* Symbol table entry */
 
typedef struct {
unsigned char st_name[4]; /* Symbol name, index in string tbl */
unsigned char st_value[4]; /* Value of the symbol */
unsigned char st_size[4]; /* Associated symbol size */
unsigned char st_info[1]; /* Type and binding attributes */
unsigned char st_other[1]; /* No defined meaning, 0 */
unsigned char st_shndx[2]; /* Associated section index */
} Elf32_External_Sym;
 
typedef struct {
unsigned char st_name[4]; /* Symbol name, index in string tbl */
unsigned char st_info[1]; /* Type and binding attributes */
unsigned char st_other[1]; /* No defined meaning, 0 */
unsigned char st_shndx[2]; /* Associated section index */
unsigned char st_value[8]; /* Value of the symbol */
unsigned char st_size[8]; /* Associated symbol size */
} Elf64_External_Sym;
 
/* Note segments */
 
typedef struct {
unsigned char namesz[4]; /* Size of entry's owner string */
unsigned char descsz[4]; /* Size of the note descriptor */
unsigned char type[4]; /* Interpretation of the descriptor */
char name[1]; /* Start of the name+desc data */
} Elf_External_Note;
 
/* Relocation Entries */
typedef struct {
unsigned char r_offset[4]; /* Location at which to apply the action */
unsigned char r_info[4]; /* index and type of relocation */
} Elf32_External_Rel;
 
typedef struct {
unsigned char r_offset[4]; /* Location at which to apply the action */
unsigned char r_info[4]; /* index and type of relocation */
unsigned char r_addend[4]; /* Constant addend used to compute value */
} Elf32_External_Rela;
 
typedef struct {
unsigned char r_offset[8]; /* Location at which to apply the action */
unsigned char r_info[8]; /* index and type of relocation */
} Elf64_External_Rel;
 
typedef struct {
unsigned char r_offset[8]; /* Location at which to apply the action */
unsigned char r_info[8]; /* index and type of relocation */
unsigned char r_addend[8]; /* Constant addend used to compute value */
} Elf64_External_Rela;
 
/* dynamic section structure */
 
typedef struct {
unsigned char d_tag[4]; /* entry tag value */
union {
unsigned char d_val[4];
unsigned char d_ptr[4];
} d_un;
} Elf32_External_Dyn;
 
typedef struct {
unsigned char d_tag[8]; /* entry tag value */
union {
unsigned char d_val[8];
unsigned char d_ptr[8];
} d_un;
} Elf64_External_Dyn;
 
/* The version structures are currently size independent. They are
named without a 32 or 64. If that ever changes, these structures
will need to be renamed. */
 
/* This structure appears in a SHT_GNU_verdef section. */
 
typedef struct {
unsigned char vd_version[2];
unsigned char vd_flags[2];
unsigned char vd_ndx[2];
unsigned char vd_cnt[2];
unsigned char vd_hash[4];
unsigned char vd_aux[4];
unsigned char vd_next[4];
} Elf_External_Verdef;
 
/* This structure appears in a SHT_GNU_verdef section. */
 
typedef struct {
unsigned char vda_name[4];
unsigned char vda_next[4];
} Elf_External_Verdaux;
 
/* This structure appears in a SHT_GNU_verneed section. */
 
typedef struct {
unsigned char vn_version[2];
unsigned char vn_cnt[2];
unsigned char vn_file[4];
unsigned char vn_aux[4];
unsigned char vn_next[4];
} Elf_External_Verneed;
 
/* This structure appears in a SHT_GNU_verneed section. */
 
typedef struct {
unsigned char vna_hash[4];
unsigned char vna_flags[2];
unsigned char vna_other[2];
unsigned char vna_name[4];
unsigned char vna_next[4];
} Elf_External_Vernaux;
 
/* This structure appears in a SHT_GNU_versym section. This is not a
standard ELF structure; ELF just uses Elf32_Half. */
 
typedef struct {
unsigned char vs_vers[2];
}
#ifdef __GNUC__
__attribute__ ((packed))
#endif
Elf_External_Versym;
 
/* Structure for syminfo section. */
typedef struct
{
unsigned char si_boundto[2];
unsigned char si_flags[2];
} Elf_External_Syminfo;
 
#endif /* _ELF_EXTERNAL_H */
/ppc.h
0,0 → 1,127
/* PPC ELF support for BFD.
Copyright (C) 1995, 1998 Free Software Foundation, Inc.
 
By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
in the System V Application Binary Interface, PowerPC Processor Supplement
and the PowerPC Embedded Application Binary Interface (eabi).
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the PPC ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_PPC_H
#define _ELF_PPC_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_ppc_reloc_type)
RELOC_NUMBER (R_PPC_NONE, 0)
RELOC_NUMBER (R_PPC_ADDR32, 1)
RELOC_NUMBER (R_PPC_ADDR24, 2)
RELOC_NUMBER (R_PPC_ADDR16, 3)
RELOC_NUMBER (R_PPC_ADDR16_LO, 4)
RELOC_NUMBER (R_PPC_ADDR16_HI, 5)
RELOC_NUMBER (R_PPC_ADDR16_HA, 6)
RELOC_NUMBER (R_PPC_ADDR14, 7)
RELOC_NUMBER (R_PPC_ADDR14_BRTAKEN, 8)
RELOC_NUMBER (R_PPC_ADDR14_BRNTAKEN, 9)
RELOC_NUMBER (R_PPC_REL24, 10)
RELOC_NUMBER (R_PPC_REL14, 11)
RELOC_NUMBER (R_PPC_REL14_BRTAKEN, 12)
RELOC_NUMBER (R_PPC_REL14_BRNTAKEN, 13)
RELOC_NUMBER (R_PPC_GOT16, 14)
RELOC_NUMBER (R_PPC_GOT16_LO, 15)
RELOC_NUMBER (R_PPC_GOT16_HI, 16)
RELOC_NUMBER (R_PPC_GOT16_HA, 17)
RELOC_NUMBER (R_PPC_PLTREL24, 18)
RELOC_NUMBER (R_PPC_COPY, 19)
RELOC_NUMBER (R_PPC_GLOB_DAT, 20)
RELOC_NUMBER (R_PPC_JMP_SLOT, 21)
RELOC_NUMBER (R_PPC_RELATIVE, 22)
RELOC_NUMBER (R_PPC_LOCAL24PC, 23)
RELOC_NUMBER (R_PPC_UADDR32, 24)
RELOC_NUMBER (R_PPC_UADDR16, 25)
RELOC_NUMBER (R_PPC_REL32, 26)
RELOC_NUMBER (R_PPC_PLT32, 27)
RELOC_NUMBER (R_PPC_PLTREL32, 28)
RELOC_NUMBER (R_PPC_PLT16_LO, 29)
RELOC_NUMBER (R_PPC_PLT16_HI, 30)
RELOC_NUMBER (R_PPC_PLT16_HA, 31)
RELOC_NUMBER (R_PPC_SDAREL16, 32)
RELOC_NUMBER (R_PPC_SECTOFF, 33)
RELOC_NUMBER (R_PPC_SECTOFF_LO, 34)
RELOC_NUMBER (R_PPC_SECTOFF_HI, 35)
RELOC_NUMBER (R_PPC_SECTOFF_HA, 36)
 
/* The remaining relocs are from the Embedded ELF ABI, and are not
in the SVR4 ELF ABI. */
RELOC_NUMBER (R_PPC_EMB_NADDR32, 101)
RELOC_NUMBER (R_PPC_EMB_NADDR16, 102)
RELOC_NUMBER (R_PPC_EMB_NADDR16_LO, 103)
RELOC_NUMBER (R_PPC_EMB_NADDR16_HI, 104)
RELOC_NUMBER (R_PPC_EMB_NADDR16_HA, 105)
RELOC_NUMBER (R_PPC_EMB_SDAI16, 106)
RELOC_NUMBER (R_PPC_EMB_SDA2I16, 107)
RELOC_NUMBER (R_PPC_EMB_SDA2REL, 108)
RELOC_NUMBER (R_PPC_EMB_SDA21, 109)
RELOC_NUMBER (R_PPC_EMB_MRKREF, 110)
RELOC_NUMBER (R_PPC_EMB_RELSEC16, 111)
RELOC_NUMBER (R_PPC_EMB_RELST_LO, 112)
RELOC_NUMBER (R_PPC_EMB_RELST_HI, 113)
RELOC_NUMBER (R_PPC_EMB_RELST_HA, 114)
RELOC_NUMBER (R_PPC_EMB_BIT_FLD, 115)
RELOC_NUMBER (R_PPC_EMB_RELSDA, 116)
 
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_PPC_GNU_VTINHERIT, 253)
RELOC_NUMBER (R_PPC_GNU_VTENTRY, 254)
 
/* This is a phony reloc to handle any old fashioned TOC16 references
that may still be in object files. */
RELOC_NUMBER (R_PPC_TOC16, 255)
 
EMPTY_RELOC (R_PPC_max)
END_RELOC_NUMBERS
 
 
/* Processor specific flags for the ELF header e_flags field. */
 
#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
 
/* CYGNUS local bits below */
#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag */
#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag */
 
/* Processor specific section headers, sh_type field */
 
#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
entries in this section \
based on the address \
specified in the associated \
symbol table entry. */
 
/* Processor specific section flags, sh_flags field */
 
#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \
this section from executable \
and shared objects that it \
builds when those objects \
are not to be furhter \
relocated. */
#endif /* _ELF_PPC_H */
/m32r.h
0,0 → 1,68
/* M32R ELF support for BFD.
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_M32R_H
#define _ELF_M32R_H
 
#include "elf/reloc-macros.h"
 
/* Relocations. */
START_RELOC_NUMBERS (elf_m32r_reloc_type)
RELOC_NUMBER (R_M32R_NONE, 0)
RELOC_NUMBER (R_M32R_16, 1)
RELOC_NUMBER (R_M32R_32, 2)
RELOC_NUMBER (R_M32R_24, 3)
RELOC_NUMBER (R_M32R_10_PCREL, 4)
RELOC_NUMBER (R_M32R_18_PCREL, 5)
RELOC_NUMBER (R_M32R_26_PCREL, 6)
RELOC_NUMBER (R_M32R_HI16_ULO, 7)
RELOC_NUMBER (R_M32R_HI16_SLO, 8)
RELOC_NUMBER (R_M32R_LO16, 9)
RELOC_NUMBER (R_M32R_SDA16, 10)
RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12)
EMPTY_RELOC (R_M32R_max)
END_RELOC_NUMBERS
 
/* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these
values have a special meaning. */
 
/* Small common symbol. */
#define SHN_M32R_SCOMMON 0xff00
 
/* Processor specific section flags. */
 
/* This section contains sufficient relocs to be relaxed.
When relaxing, even relocs of branch instructions the assembler could
complete must be present because relaxing may cause the branch target to
move. */
#define SHF_M32R_CAN_RELAX 0x10000000
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* Two bit m32r architecture field. */
#define EF_M32R_ARCH 0x30000000
 
/* m32r code. */
#define E_M32R_ARCH 0x00000000
/* m32rx code. */
#define E_M32RX_ARCH 0x10000000
 
#endif
/dwarf2.h
0,0 → 1,638
/* Declarations and definitions of codes relating to the DWARF symbolic
debugging information format.
Copyright (C) 1992, 1993, 1995, 1996, 1999 Free Software Foundation, Inc.
 
Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
Office (AJPO), Florida State Unviversity and Silicon Graphics Inc.
provided support for this effort -- June 21, 1995.
 
Derived from the DWARF 1 implementation written by Ron Guilmette
(rfg@netcom.com), November 1990.
 
This file is part of GNU CC.
 
GNU CC is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
 
GNU CC is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
 
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file is derived from the DWARF specification (a public document)
Revision 2.0.0 (July 27, 1993) developed by the UNIX International
Programming Languages Special Interest Group (UI/PLSIG) and distributed
by UNIX International. Copies of this specification are available from
UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. */
 
#ifndef _ELF_DWARF2_H
#define _ELF_DWARF2_H
 
/* Structure found in the .debug_line section. */
typedef struct
{
unsigned char li_length [4];
unsigned char li_version [2];
unsigned char li_prologue_length [4];
unsigned char li_min_insn_length [1];
unsigned char li_default_is_stmt [1];
unsigned char li_line_base [1];
unsigned char li_line_range [1];
unsigned char li_opcode_base [1];
}
DWARF2_External_LineInfo;
 
typedef struct
{
unsigned long li_length;
unsigned short li_version;
unsigned int li_prologue_length;
unsigned char li_min_insn_length;
unsigned char li_default_is_stmt;
int li_line_base;
unsigned char li_line_range;
unsigned char li_opcode_base;
}
DWARF2_Internal_LineInfo;
 
/* Structure found in .debug_pubnames section. */
typedef struct
{
unsigned char pn_length [4];
unsigned char pn_version [2];
unsigned char pn_offset [4];
unsigned char pn_size [4];
}
DWARF2_External_PubNames;
 
typedef struct
{
unsigned long pn_length;
unsigned short pn_version;
unsigned long pn_offset;
unsigned long pn_size;
}
DWARF2_Internal_PubNames;
 
/* Strcuture found in .debug_info section. */
typedef struct
{
unsigned char cu_length [4];
unsigned char cu_version [2];
unsigned char cu_abbrev_offset [4];
unsigned char cu_pointer_size [1];
}
DWARF2_External_CompUnit;
 
typedef struct
{
unsigned long cu_length;
unsigned short cu_version;
unsigned long cu_abbrev_offset;
unsigned char cu_pointer_size;
}
DWARF2_Internal_CompUnit;
 
typedef struct
{
unsigned char ar_length [4];
unsigned char ar_version [2];
unsigned char ar_info_offset [4];
unsigned char ar_pointer_size [1];
unsigned char ar_segment_size [1];
}
DWARF2_External_ARange;
 
typedef struct
{
unsigned long ar_length;
unsigned short ar_version;
unsigned long ar_info_offset;
unsigned char ar_pointer_size;
unsigned char ar_segment_size;
}
DWARF2_Internal_ARange;
 
 
/* Tag names and codes. */
 
enum dwarf_tag
{
DW_TAG_padding = 0x00,
DW_TAG_array_type = 0x01,
DW_TAG_class_type = 0x02,
DW_TAG_entry_point = 0x03,
DW_TAG_enumeration_type = 0x04,
DW_TAG_formal_parameter = 0x05,
DW_TAG_imported_declaration = 0x08,
DW_TAG_label = 0x0a,
DW_TAG_lexical_block = 0x0b,
DW_TAG_member = 0x0d,
DW_TAG_pointer_type = 0x0f,
DW_TAG_reference_type = 0x10,
DW_TAG_compile_unit = 0x11,
DW_TAG_string_type = 0x12,
DW_TAG_structure_type = 0x13,
DW_TAG_subroutine_type = 0x15,
DW_TAG_typedef = 0x16,
DW_TAG_union_type = 0x17,
DW_TAG_unspecified_parameters = 0x18,
DW_TAG_variant = 0x19,
DW_TAG_common_block = 0x1a,
DW_TAG_common_inclusion = 0x1b,
DW_TAG_inheritance = 0x1c,
DW_TAG_inlined_subroutine = 0x1d,
DW_TAG_module = 0x1e,
DW_TAG_ptr_to_member_type = 0x1f,
DW_TAG_set_type = 0x20,
DW_TAG_subrange_type = 0x21,
DW_TAG_with_stmt = 0x22,
DW_TAG_access_declaration = 0x23,
DW_TAG_base_type = 0x24,
DW_TAG_catch_block = 0x25,
DW_TAG_const_type = 0x26,
DW_TAG_constant = 0x27,
DW_TAG_enumerator = 0x28,
DW_TAG_file_type = 0x29,
DW_TAG_friend = 0x2a,
DW_TAG_namelist = 0x2b,
DW_TAG_namelist_item = 0x2c,
DW_TAG_packed_type = 0x2d,
DW_TAG_subprogram = 0x2e,
DW_TAG_template_type_param = 0x2f,
DW_TAG_template_value_param = 0x30,
DW_TAG_thrown_type = 0x31,
DW_TAG_try_block = 0x32,
DW_TAG_variant_part = 0x33,
DW_TAG_variable = 0x34,
DW_TAG_volatile_type = 0x35,
/* SGI/MIPS Extensions */
DW_TAG_MIPS_loop = 0x4081,
/* GNU extensions */
DW_TAG_format_label = 0x4101, /* for FORTRAN 77 and Fortran 90 */
DW_TAG_function_template = 0x4102, /* for C++ */
DW_TAG_class_template = 0x4103 /* for C++ */
};
 
#define DW_TAG_lo_user 0x4080
#define DW_TAG_hi_user 0xffff
 
/* flag that tells whether entry has a child or not */
#define DW_children_no 0
#define DW_children_yes 1
 
/* Form names and codes. */
enum dwarf_form
{
DW_FORM_addr = 0x01,
DW_FORM_block2 = 0x03,
DW_FORM_block4 = 0x04,
DW_FORM_data2 = 0x05,
DW_FORM_data4 = 0x06,
DW_FORM_data8 = 0x07,
DW_FORM_string = 0x08,
DW_FORM_block = 0x09,
DW_FORM_block1 = 0x0a,
DW_FORM_data1 = 0x0b,
DW_FORM_flag = 0x0c,
DW_FORM_sdata = 0x0d,
DW_FORM_strp = 0x0e,
DW_FORM_udata = 0x0f,
DW_FORM_ref_addr = 0x10,
DW_FORM_ref1 = 0x11,
DW_FORM_ref2 = 0x12,
DW_FORM_ref4 = 0x13,
DW_FORM_ref8 = 0x14,
DW_FORM_ref_udata = 0x15,
DW_FORM_indirect = 0x16
};
 
/* Attribute names and codes. */
 
enum dwarf_attribute
{
DW_AT_sibling = 0x01,
DW_AT_location = 0x02,
DW_AT_name = 0x03,
DW_AT_ordering = 0x09,
DW_AT_subscr_data = 0x0a,
DW_AT_byte_size = 0x0b,
DW_AT_bit_offset = 0x0c,
DW_AT_bit_size = 0x0d,
DW_AT_element_list = 0x0f,
DW_AT_stmt_list = 0x10,
DW_AT_low_pc = 0x11,
DW_AT_high_pc = 0x12,
DW_AT_language = 0x13,
DW_AT_member = 0x14,
DW_AT_discr = 0x15,
DW_AT_discr_value = 0x16,
DW_AT_visibility = 0x17,
DW_AT_import = 0x18,
DW_AT_string_length = 0x19,
DW_AT_common_reference = 0x1a,
DW_AT_comp_dir = 0x1b,
DW_AT_const_value = 0x1c,
DW_AT_containing_type = 0x1d,
DW_AT_default_value = 0x1e,
DW_AT_inline = 0x20,
DW_AT_is_optional = 0x21,
DW_AT_lower_bound = 0x22,
DW_AT_producer = 0x25,
DW_AT_prototyped = 0x27,
DW_AT_return_addr = 0x2a,
DW_AT_start_scope = 0x2c,
DW_AT_stride_size = 0x2e,
DW_AT_upper_bound = 0x2f,
DW_AT_abstract_origin = 0x31,
DW_AT_accessibility = 0x32,
DW_AT_address_class = 0x33,
DW_AT_artificial = 0x34,
DW_AT_base_types = 0x35,
DW_AT_calling_convention = 0x36,
DW_AT_count = 0x37,
DW_AT_data_member_location = 0x38,
DW_AT_decl_column = 0x39,
DW_AT_decl_file = 0x3a,
DW_AT_decl_line = 0x3b,
DW_AT_declaration = 0x3c,
DW_AT_discr_list = 0x3d,
DW_AT_encoding = 0x3e,
DW_AT_external = 0x3f,
DW_AT_frame_base = 0x40,
DW_AT_friend = 0x41,
DW_AT_identifier_case = 0x42,
DW_AT_macro_info = 0x43,
DW_AT_namelist_items = 0x44,
DW_AT_priority = 0x45,
DW_AT_segment = 0x46,
DW_AT_specification = 0x47,
DW_AT_static_link = 0x48,
DW_AT_type = 0x49,
DW_AT_use_location = 0x4a,
DW_AT_variable_parameter = 0x4b,
DW_AT_virtuality = 0x4c,
DW_AT_vtable_elem_location = 0x4d,
/* SGI/MIPS Extensions */
DW_AT_MIPS_fde = 0x2001,
DW_AT_MIPS_loop_begin = 0x2002,
DW_AT_MIPS_tail_loop_begin = 0x2003,
DW_AT_MIPS_epilog_begin = 0x2004,
DW_AT_MIPS_loop_unroll_factor = 0x2005,
DW_AT_MIPS_software_pipeline_depth = 0x2006,
DW_AT_MIPS_linkage_name = 0x2007,
DW_AT_MIPS_stride = 0x2008,
DW_AT_MIPS_abstract_name = 0x2009,
DW_AT_MIPS_clone_origin = 0x200a,
DW_AT_MIPS_has_inlines = 0x200b,
/* GNU extensions. */
DW_AT_sf_names = 0x2101,
DW_AT_src_info = 0x2102,
DW_AT_mac_info = 0x2103,
DW_AT_src_coords = 0x2104,
DW_AT_body_begin = 0x2105,
DW_AT_body_end = 0x2106
};
 
#define DW_AT_lo_user 0x2000 /* implementation-defined range start */
#define DW_AT_hi_user 0x3ff0 /* implementation-defined range end */
 
/* Location atom names and codes. */
 
enum dwarf_location_atom
{
DW_OP_addr = 0x03,
DW_OP_deref = 0x06,
DW_OP_const1u = 0x08,
DW_OP_const1s = 0x09,
DW_OP_const2u = 0x0a,
DW_OP_const2s = 0x0b,
DW_OP_const4u = 0x0c,
DW_OP_const4s = 0x0d,
DW_OP_const8u = 0x0e,
DW_OP_const8s = 0x0f,
DW_OP_constu = 0x10,
DW_OP_consts = 0x11,
DW_OP_dup = 0x12,
DW_OP_drop = 0x13,
DW_OP_over = 0x14,
DW_OP_pick = 0x15,
DW_OP_swap = 0x16,
DW_OP_rot = 0x17,
DW_OP_xderef = 0x18,
DW_OP_abs = 0x19,
DW_OP_and = 0x1a,
DW_OP_div = 0x1b,
DW_OP_minus = 0x1c,
DW_OP_mod = 0x1d,
DW_OP_mul = 0x1e,
DW_OP_neg = 0x1f,
DW_OP_not = 0x20,
DW_OP_or = 0x21,
DW_OP_plus = 0x22,
DW_OP_plus_uconst = 0x23,
DW_OP_shl = 0x24,
DW_OP_shr = 0x25,
DW_OP_shra = 0x26,
DW_OP_xor = 0x27,
DW_OP_bra = 0x28,
DW_OP_eq = 0x29,
DW_OP_ge = 0x2a,
DW_OP_gt = 0x2b,
DW_OP_le = 0x2c,
DW_OP_lt = 0x2d,
DW_OP_ne = 0x2e,
DW_OP_skip = 0x2f,
DW_OP_lit0 = 0x30,
DW_OP_lit1 = 0x31,
DW_OP_lit2 = 0x32,
DW_OP_lit3 = 0x33,
DW_OP_lit4 = 0x34,
DW_OP_lit5 = 0x35,
DW_OP_lit6 = 0x36,
DW_OP_lit7 = 0x37,
DW_OP_lit8 = 0x38,
DW_OP_lit9 = 0x39,
DW_OP_lit10 = 0x3a,
DW_OP_lit11 = 0x3b,
DW_OP_lit12 = 0x3c,
DW_OP_lit13 = 0x3d,
DW_OP_lit14 = 0x3e,
DW_OP_lit15 = 0x3f,
DW_OP_lit16 = 0x40,
DW_OP_lit17 = 0x41,
DW_OP_lit18 = 0x42,
DW_OP_lit19 = 0x43,
DW_OP_lit20 = 0x44,
DW_OP_lit21 = 0x45,
DW_OP_lit22 = 0x46,
DW_OP_lit23 = 0x47,
DW_OP_lit24 = 0x48,
DW_OP_lit25 = 0x49,
DW_OP_lit26 = 0x4a,
DW_OP_lit27 = 0x4b,
DW_OP_lit28 = 0x4c,
DW_OP_lit29 = 0x4d,
DW_OP_lit30 = 0x4e,
DW_OP_lit31 = 0x4f,
DW_OP_reg0 = 0x50,
DW_OP_reg1 = 0x51,
DW_OP_reg2 = 0x52,
DW_OP_reg3 = 0x53,
DW_OP_reg4 = 0x54,
DW_OP_reg5 = 0x55,
DW_OP_reg6 = 0x56,
DW_OP_reg7 = 0x57,
DW_OP_reg8 = 0x58,
DW_OP_reg9 = 0x59,
DW_OP_reg10 = 0x5a,
DW_OP_reg11 = 0x5b,
DW_OP_reg12 = 0x5c,
DW_OP_reg13 = 0x5d,
DW_OP_reg14 = 0x5e,
DW_OP_reg15 = 0x5f,
DW_OP_reg16 = 0x60,
DW_OP_reg17 = 0x61,
DW_OP_reg18 = 0x62,
DW_OP_reg19 = 0x63,
DW_OP_reg20 = 0x64,
DW_OP_reg21 = 0x65,
DW_OP_reg22 = 0x66,
DW_OP_reg23 = 0x67,
DW_OP_reg24 = 0x68,
DW_OP_reg25 = 0x69,
DW_OP_reg26 = 0x6a,
DW_OP_reg27 = 0x6b,
DW_OP_reg28 = 0x6c,
DW_OP_reg29 = 0x6d,
DW_OP_reg30 = 0x6e,
DW_OP_reg31 = 0x6f,
DW_OP_breg0 = 0x70,
DW_OP_breg1 = 0x71,
DW_OP_breg2 = 0x72,
DW_OP_breg3 = 0x73,
DW_OP_breg4 = 0x74,
DW_OP_breg5 = 0x75,
DW_OP_breg6 = 0x76,
DW_OP_breg7 = 0x77,
DW_OP_breg8 = 0x78,
DW_OP_breg9 = 0x79,
DW_OP_breg10 = 0x7a,
DW_OP_breg11 = 0x7b,
DW_OP_breg12 = 0x7c,
DW_OP_breg13 = 0x7d,
DW_OP_breg14 = 0x7e,
DW_OP_breg15 = 0x7f,
DW_OP_breg16 = 0x80,
DW_OP_breg17 = 0x81,
DW_OP_breg18 = 0x82,
DW_OP_breg19 = 0x83,
DW_OP_breg20 = 0x84,
DW_OP_breg21 = 0x85,
DW_OP_breg22 = 0x86,
DW_OP_breg23 = 0x87,
DW_OP_breg24 = 0x88,
DW_OP_breg25 = 0x89,
DW_OP_breg26 = 0x8a,
DW_OP_breg27 = 0x8b,
DW_OP_breg28 = 0x8c,
DW_OP_breg29 = 0x8d,
DW_OP_breg30 = 0x8e,
DW_OP_breg31 = 0x8f,
DW_OP_regx = 0x90,
DW_OP_fbreg = 0x91,
DW_OP_bregx = 0x92,
DW_OP_piece = 0x93,
DW_OP_deref_size = 0x94,
DW_OP_xderef_size = 0x95,
DW_OP_nop = 0x96
};
 
#define DW_OP_lo_user 0x80 /* implementation-defined range start */
#define DW_OP_hi_user 0xff /* implementation-defined range end */
 
/* Type encodings. */
 
enum dwarf_type
{
DW_ATE_void = 0x0,
DW_ATE_address = 0x1,
DW_ATE_boolean = 0x2,
DW_ATE_complex_float = 0x3,
DW_ATE_float = 0x4,
DW_ATE_signed = 0x5,
DW_ATE_signed_char = 0x6,
DW_ATE_unsigned = 0x7,
DW_ATE_unsigned_char = 0x8
};
 
#define DW_ATE_lo_user 0x80
#define DW_ATE_hi_user 0xff
 
/* Array ordering names and codes. */
enum dwarf_array_dim_ordering
{
DW_ORD_row_major = 0,
DW_ORD_col_major = 1
};
 
/* access attribute */
enum dwarf_access_attribute
{
DW_ACCESS_public = 1,
DW_ACCESS_protected = 2,
DW_ACCESS_private = 3
};
 
/* visibility */
enum dwarf_visibility_attribute
{
DW_VIS_local = 1,
DW_VIS_exported = 2,
DW_VIS_qualified = 3
};
 
/* virtuality */
enum dwarf_virtuality_attribute
{
DW_VIRTUALITY_none = 0,
DW_VIRTUALITY_virtual = 1,
DW_VIRTUALITY_pure_virtual = 2
};
 
/* case sensitivity */
enum dwarf_id_case
{
DW_ID_case_sensitive = 0,
DW_ID_up_case = 1,
DW_ID_down_case = 2,
DW_ID_case_insensitive = 3
};
 
/* calling convention */
enum dwarf_calling_convention
{
DW_CC_normal = 0x1,
DW_CC_program = 0x2,
DW_CC_nocall = 0x3
};
 
#define DW_CC_lo_user 0x40
#define DW_CC_hi_user 0xff
 
/* inline attribute */
enum dwarf_inline_attribute
{
DW_INL_not_inlined = 0,
DW_INL_inlined = 1,
DW_INL_declared_not_inlined = 2,
DW_INL_declared_inlined = 3
};
 
/* descriminant lists */
enum dwarf_descrim_list
{
DW_DSC_label = 0,
DW_DSC_range = 1
};
 
/* line number opcodes */
enum dwarf_line_number_ops
{
DW_LNS_extended_op = 0,
DW_LNS_copy = 1,
DW_LNS_advance_pc = 2,
DW_LNS_advance_line = 3,
DW_LNS_set_file = 4,
DW_LNS_set_column = 5,
DW_LNS_negate_stmt = 6,
DW_LNS_set_basic_block = 7,
DW_LNS_const_add_pc = 8,
DW_LNS_fixed_advance_pc = 9
};
 
/* line number extended opcodes */
enum dwarf_line_number_x_ops
{
DW_LNE_end_sequence = 1,
DW_LNE_set_address = 2,
DW_LNE_define_file = 3
};
 
/* call frame information */
enum dwarf_call_frame_info
{
DW_CFA_advance_loc = 0x40,
DW_CFA_offset = 0x80,
DW_CFA_restore = 0xc0,
DW_CFA_nop = 0x00,
DW_CFA_set_loc = 0x01,
DW_CFA_advance_loc1 = 0x02,
DW_CFA_advance_loc2 = 0x03,
DW_CFA_advance_loc4 = 0x04,
DW_CFA_offset_extended = 0x05,
DW_CFA_restore_extended = 0x06,
DW_CFA_undefined = 0x07,
DW_CFA_same_value = 0x08,
DW_CFA_register = 0x09,
DW_CFA_remember_state = 0x0a,
DW_CFA_restore_state = 0x0b,
DW_CFA_def_cfa = 0x0c,
DW_CFA_def_cfa_register = 0x0d,
DW_CFA_def_cfa_offset = 0x0e,
/* SGI/MIPS specific */
DW_CFA_MIPS_advance_loc8 = 0x1d
};
 
#define DW_CIE_ID 0xffffffff
#define DW_CIE_VERSION 1
 
#define DW_CFA_extended 0
#define DW_CFA_low_user 0x1c
#define DW_CFA_high_user 0x3f
 
#define DW_CHILDREN_no 0x00
#define DW_CHILDREN_yes 0x01
 
#define DW_ADDR_none 0
 
/* Source language names and codes. */
 
enum dwarf_source_language
{
DW_LANG_C89 = 0x0001,
DW_LANG_C = 0x0002,
DW_LANG_Ada83 = 0x0003,
DW_LANG_C_plus_plus = 0x0004,
DW_LANG_Cobol74 = 0x0005,
DW_LANG_Cobol85 = 0x0006,
DW_LANG_Fortran77 = 0x0007,
DW_LANG_Fortran90 = 0x0008,
DW_LANG_Pascal83 = 0x0009,
DW_LANG_Modula2 = 0x000a,
DW_LANG_Java = 0x9af4,
DW_LANG_Mips_Assembler = 0x8001
};
 
 
#define DW_LANG_lo_user 0x8000 /* implementation-defined range start */
#define DW_LANG_hi_user 0xffff /* implementation-defined range start */
 
/* Names and codes for macro information. */
 
enum dwarf_macinfo_record_type
{
DW_MACINFO_define = 1,
DW_MACINFO_undef = 2,
DW_MACINFO_start_file = 3,
DW_MACINFO_end_file = 4,
DW_MACINFO_vendor_ext = 255
};
 
#endif /* _ELF_DWARF2_H */
/alpha.h
0,0 → 1,108
/* ALPHA ELF support for BFD.
Copyright (C) 1996, 1998 Free Software Foundation, Inc.
 
By Eric Youngdale, <eric@aib.com>. No processor supplement available
for this platform.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the ALPHA ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_ALPHA_H
#define _ELF_ALPHA_H
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* All addresses must be below 2GB. */
#define EF_ALPHA_32BIT 0x00000001
 
/* All relocations needed for relaxation with code movement are present. */
#define EF_ALPHA_CANRELAX 0x00000002
 
/* Processor specific section flags. */
 
/* This section must be in the global data area. */
#define SHF_ALPHA_GPREL 0x10000000
 
/* Section contains some sort of debugging information. The exact
format is unspecified. It's probably ECOFF symbols. */
#define SHT_ALPHA_DEBUG 0x70000001
 
/* Section contains register usage information. */
#define SHT_ALPHA_REGINFO 0x70000002
 
/* A section of type SHT_MIPS_REGINFO contains the following
structure. */
typedef struct
{
/* Mask of general purpose registers used. */
unsigned long ri_gprmask;
/* Mask of co-processor registers used. */
unsigned long ri_cprmask[4];
/* GP register value for this object file. */
long ri_gp_value;
} Elf64_RegInfo;
 
/* Special values for the st_other field in the symbol table. */
 
#define STO_ALPHA_NOPV 0x80
#define STO_ALPHA_STD_GPLOAD 0x88
 
#include "elf/reloc-macros.h"
 
/* Alpha relocs. */
START_RELOC_NUMBERS (elf_alpha_reloc_type)
RELOC_NUMBER (R_ALPHA_NONE, 0) /* No reloc */
RELOC_NUMBER (R_ALPHA_REFLONG, 1) /* Direct 32 bit */
RELOC_NUMBER (R_ALPHA_REFQUAD, 2) /* Direct 64 bit */
RELOC_NUMBER (R_ALPHA_GPREL32, 3) /* GP relative 32 bit */
RELOC_NUMBER (R_ALPHA_LITERAL, 4) /* GP relative 16 bit w/optimization */
RELOC_NUMBER (R_ALPHA_LITUSE, 5) /* Optimization hint for LITERAL */
RELOC_NUMBER (R_ALPHA_GPDISP, 6) /* Add displacement to GP */
RELOC_NUMBER (R_ALPHA_BRADDR, 7) /* PC+4 relative 23 bit shifted */
RELOC_NUMBER (R_ALPHA_HINT, 8) /* PC+4 relative 16 bit shifted */
RELOC_NUMBER (R_ALPHA_SREL16, 9) /* PC relative 16 bit */
RELOC_NUMBER (R_ALPHA_SREL32, 10) /* PC relative 32 bit */
RELOC_NUMBER (R_ALPHA_SREL64, 11) /* PC relative 64 bit */
 
/* Inherited these from ECOFF, but they are not particularly useful
and are depreciated. And not implemented in the BFD, btw. */
RELOC_NUMBER (R_ALPHA_OP_PUSH, 12) /* OP stack push */
RELOC_NUMBER (R_ALPHA_OP_STORE, 13) /* OP stack pop and store */
RELOC_NUMBER (R_ALPHA_OP_PSUB, 14) /* OP stack subtract */
RELOC_NUMBER (R_ALPHA_OP_PRSHIFT, 15) /* OP stack right shift */
 
RELOC_NUMBER (R_ALPHA_GPVALUE, 16)
RELOC_NUMBER (R_ALPHA_GPRELHIGH, 17)
RELOC_NUMBER (R_ALPHA_GPRELLOW, 18)
RELOC_NUMBER (R_ALPHA_IMMED_GP_16, 19)
RELOC_NUMBER (R_ALPHA_IMMED_GP_HI32, 20)
RELOC_NUMBER (R_ALPHA_IMMED_SCN_HI32, 21)
RELOC_NUMBER (R_ALPHA_IMMED_BR_HI32, 22)
RELOC_NUMBER (R_ALPHA_IMMED_LO32, 23)
 
/* These relocations are specific to shared libraries. */
RELOC_NUMBER (R_ALPHA_COPY, 24) /* Copy symbol at runtime */
RELOC_NUMBER (R_ALPHA_GLOB_DAT, 25) /* Create GOT entry */
RELOC_NUMBER (R_ALPHA_JMP_SLOT, 26) /* Create PLT entry */
RELOC_NUMBER (R_ALPHA_RELATIVE, 27) /* Adjust by program base */
 
EMPTY_RELOC (R_ALPHA_max)
END_RELOC_NUMBERS
 
#endif /* _ELF_ALPHA_H */
/m68k.h
0,0 → 1,58
/* MC68k ELF support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_M68K_H
#define _ELF_M68K_H
 
#include "elf/reloc-macros.h"
 
/* Relocation types. */
START_RELOC_NUMBERS (elf_m68k_reloc_type)
RELOC_NUMBER (R_68K_NONE, 0) /* No reloc */
RELOC_NUMBER (R_68K_32, 1) /* Direct 32 bit */
RELOC_NUMBER (R_68K_16, 2) /* Direct 16 bit */
RELOC_NUMBER (R_68K_8, 3) /* Direct 8 bit */
RELOC_NUMBER (R_68K_PC32, 4) /* PC relative 32 bit */
RELOC_NUMBER (R_68K_PC16, 5) /* PC relative 16 bit */
RELOC_NUMBER (R_68K_PC8, 6) /* PC relative 8 bit */
RELOC_NUMBER (R_68K_GOT32, 7) /* 32 bit PC relative GOT entry */
RELOC_NUMBER (R_68K_GOT16, 8) /* 16 bit PC relative GOT entry */
RELOC_NUMBER (R_68K_GOT8, 9) /* 8 bit PC relative GOT entry */
RELOC_NUMBER (R_68K_GOT32O, 10) /* 32 bit GOT offset */
RELOC_NUMBER (R_68K_GOT16O, 11) /* 16 bit GOT offset */
RELOC_NUMBER (R_68K_GOT8O, 12) /* 8 bit GOT offset */
RELOC_NUMBER (R_68K_PLT32, 13) /* 32 bit PC relative PLT address */
RELOC_NUMBER (R_68K_PLT16, 14) /* 16 bit PC relative PLT address */
RELOC_NUMBER (R_68K_PLT8, 15) /* 8 bit PC relative PLT address */
RELOC_NUMBER (R_68K_PLT32O, 16) /* 32 bit PLT offset */
RELOC_NUMBER (R_68K_PLT16O, 17) /* 16 bit PLT offset */
RELOC_NUMBER (R_68K_PLT8O, 18) /* 8 bit PLT offset */
RELOC_NUMBER (R_68K_COPY, 19) /* Copy symbol at runtime */
RELOC_NUMBER (R_68K_GLOB_DAT, 20) /* Create GOT entry */
RELOC_NUMBER (R_68K_JMP_SLOT, 21) /* Create PLT entry */
RELOC_NUMBER (R_68K_RELATIVE, 22) /* Adjust by program base */
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_68K_GNU_VTENTRY, 24)
EMPTY_RELOC (R_68K_max)
END_RELOC_NUMBERS
 
#define EF_CPU32 0x00810000
 
#endif
/reloc-macros.h
0,0 → 1,116
/* Generic relocation support for BFD.
Copyright (C) 1998 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* These macros are used by the various *.h target specific header
files to either generate an enum containing all the known relocations
for that target, or if RELOC_MACROS_GEN_FUNC is defined, a recognition
function is generated instead. (This is used by binutils/readelf.c)
 
Given a header file like this:
 
START_RELOC_NUMBERS (foo)
RELOC_NUMBER (R_foo_NONE, 0)
RELOC_NUMBER (R_foo_32, 1)
FAKE_RELOC (R_foo_illegal, 2)
EMPTY_RELOC (R_foo_max)
END_RELOC_NUMBERS
 
Then the following will be produced by default (ie if
RELOC_MACROS_GEN_FUNC is *not* defined).
 
enum foo
{
foo = -1,
R_foo_NONE = 0,
R_foo_32 = 1,
R_foo_illegal = 2,
R_foo_max
};
 
If RELOC_MACROS_GEN_FUNC *is* defined, then instead the
following function will be generated:
 
static const char * foo PARAMS ((unsigned long rtype));
static const char *
foo (rtype)
unsigned long rtype;
{
switch (rtype)
{
case 0: return "R_foo_NONE";
case 1: return "R_foo_32";
default: return NULL;
}
}
*/
#ifndef _RELOC_MACROS_H
#define _RELOC_MACROS_H
 
#ifdef RELOC_MACROS_GEN_FUNC
 
/* This function takes the relocation number and returns the
string version name of the name of that relocation. If
the relocation is not recognised, NULL is returned. */
 
#define START_RELOC_NUMBERS(name) \
static const char * name PARAMS ((unsigned long rtype)); \
static const char * \
name (rtype) \
unsigned long rtype; \
{ \
switch (rtype) \
{
 
#ifdef __STDC__
#define RELOC_NUMBER(name, number) case number : return #name ;
#else
#define RELOC_NUMBER(name, number) case number : return "name" ;
#endif
 
#define FAKE_RELOC(name, number)
#define EMPTY_RELOC(name)
#define END_RELOC_NUMBERS \
default: return NULL; \
} \
}
 
 
#else /* Default to generating enum. */
 
/* Some compilers cannot cope with an enum that ends with a trailing
comma, so START_RELOC_NUMBERS creates a fake reloc entry, (initialised
to -1 so that the first real entry will still default to 0). Further
entries then prepend a comma to their definitions, creating a list
of enumerator entries that will satisfy these compilers. */
#ifdef __STDC__
#define START_RELOC_NUMBERS(name) enum name { _##name = -1
#else
#define START_RELOC_NUMBERS(name) enum name { name = -1
#endif
#define RELOC_NUMBER(name, number) , name = number
#define FAKE_RELOC(name, number) , name = number
#define EMPTY_RELOC(name) , name
#define END_RELOC_NUMBERS };
 
#endif
 
#endif /* RELOC_MACROS_H */
/i960.h
0,0 → 1,38
/* Intel 960 ELF support for BFD.
Copyright (C) 1999 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_I960_H
#define _ELF_I960_H
 
#include "elf/reloc-macros.h"
 
 
START_RELOC_NUMBERS (elf_i960_reloc_type)
RELOC_NUMBER (R_960_NONE, 0)
RELOC_NUMBER (R_960_12, 1)
RELOC_NUMBER (R_960_32, 2)
RELOC_NUMBER (R_960_IP24, 3)
RELOC_NUMBER (R_960_SUB, 4)
RELOC_NUMBER (R_960_OPTCALL, 5)
RELOC_NUMBER (R_960_OPTCALLX, 6)
RELOC_NUMBER (R_960_OPTCALLXA, 7)
EMPTY_RELOC (R_960_max)
END_RELOC_NUMBERS
 
#endif /* _ELF_I960_H */
/hppa.h
0,0 → 1,336
/* HPPA ELF support for BFD.
Copyright (C) 1993, 1994, 1999 Free Software Foundation, Inc.
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
/* This file holds definitions specific to the HPPA ELF ABI. Note
that most of this is not actually implemented by BFD. */
 
#ifndef _ELF_HPPA_H
#define _ELF_HPPA_H
 
/* Processor specific flags for the ELF header e_flags field. */
 
/* Trap null address dereferences. */
#define EF_PARISC_TRAPNIL 0x00010000
 
/* .PARISC.archext section is present. */
#define EF_PARISC_EXT 0x00020000
 
/* Program expects little-endian mode. */
#define EF_PARISC_LSB 0x00040000
 
/* Program expects wide mode. */
#define EF_PARISC_WIDE 0x00080000
 
/* Do not allow kernel-assisted branch prediction. */
#define EF_PARISC_NO_KABP 0x00100000
 
/* Allow lazy swap for dynamically allocated program segments. */
#define EF_PARISC_LAZYSWAP 0x00400000
 
/* Architecture version */
#define EF_PARISC_ARCH 0x0000ffff
 
#define EFA_PARISC_1_0 0x020b
#define EFA_PARISC_1_1 0x0210
#define EFA_PARISC_2_0 0x0214
 
/* Special section indices. */
/* A symbol that has been declared as a tentative definition in an ANSI C
compilation. */
#define SHN_PARISC_ANSI_COMMON 0xff00
 
/* A symbol that has been declared as a common block using the
huge memory model. */
#define SHN_PARISC_HUGE_COMMON 0xff01
 
/* Processor specific section types. */
 
/* Section contains product specific extension bits. */
#define SHT_PARISC_EXT 0x70000000
 
/* Section contains unwind table entries. */
#define SHT_PARISC_UNWIND 0x70000001
 
/* Section contains debug information for optimized code. */
#define SHT_PARISC_DOC 0x70000002
 
/* Section contains code annotations. */
#define SHT_PARISC_ANNOT 0x70000003
 
/* These are strictly for compatibility with the older elf32-hppa
implementation. Hopefully we can eliminate them in the future. */
/* Optional section holding argument location/relocation info. */
#define SHT_PARISC_SYMEXTN SHT_LOPROC+8
 
/* Option section for linker stubs. */
#define SHT_PARISC_STUBS SHT_LOPROC+9
 
/* Processor specific section flags. */
 
/* Section contains code compiled for static branch prediction. */
#define SHF_PARISC_SBP 0x80000000
 
/* Section should be allocated from from GP. */
#define SHF_PARISC_HUGE 0x40000000
 
/* Section should go near GP. */
#define SHF_PARISC_SHORT 0x20000000
 
 
/* Identifies the entry point of a millicode routine. */
#define STT_PARISC_MILLI 13
 
/* ELF/HPPA relocation types */
 
/* Note: PA-ELF is defined to use only RELA relocations. */
#include "elf/reloc-macros.h"
 
START_RELOC_NUMBERS (elf_hppa_reloc_type)
RELOC_NUMBER (R_PARISC_NONE, 0) /* No reloc */
 
/* These relocation types do simple base + offset relocations. */
 
RELOC_NUMBER (R_PARISC_DIR32, 1)
RELOC_NUMBER (R_PARISC_DIR21L, 2)
RELOC_NUMBER (R_PARISC_DIR17R, 3)
RELOC_NUMBER (R_PARISC_DIR17F, 4)
RELOC_NUMBER (R_PARISC_DIR14R, 6)
 
/* PC-relative relocation types
Typically used for calls.
Note PCREL17C and PCREL17F differ only in overflow handling.
PCREL17C never reports a relocation error.
 
When supporting argument relocations, function calls must be
accompanied by parameter relocation information. This information is
carried in the ten high-order bits of the addend field. The remaining
22 bits of of the addend field are sign-extended to form the Addend.
 
Note the code to build argument relocations depends on the
addend being zero. A consequence of this limitation is GAS
can not perform relocation reductions for function symbols. */
 
RELOC_NUMBER (R_PARISC_PCREL32, 9)
RELOC_NUMBER (R_PARISC_PCREL21L, 10)
RELOC_NUMBER (R_PARISC_PCREL17R, 11)
RELOC_NUMBER (R_PARISC_PCREL17F, 12)
RELOC_NUMBER (R_PARISC_PCREL17C, 13)
RELOC_NUMBER (R_PARISC_PCREL14R, 14)
RELOC_NUMBER (R_PARISC_PCREL14F, 15)
 
/* DP-relative relocation types. */
RELOC_NUMBER (R_PARISC_DPREL21L, 18)
RELOC_NUMBER (R_PARISC_DPREL14WR, 19)
RELOC_NUMBER (R_PARISC_DPREL14DR, 20)
RELOC_NUMBER (R_PARISC_DPREL14R, 22)
RELOC_NUMBER (R_PARISC_DPREL14F, 23)
 
/* Data linkage table (DLT) relocation types
 
SOM DLT_REL fixup requests are used to for static data references
from position-independent code within shared libraries. They are
similar to the GOT relocation types in some SVR4 implementations. */
 
RELOC_NUMBER (R_PARISC_DLTREL21L, 26)
RELOC_NUMBER (R_PARISC_DLTREL14R, 30)
RELOC_NUMBER (R_PARISC_DLTREL14F, 31)
 
/* DLT indirect relocation types */
RELOC_NUMBER (R_PARISC_DLTIND21L, 34)
RELOC_NUMBER (R_PARISC_DLTIND14R, 38)
RELOC_NUMBER (R_PARISC_DLTIND14F, 39)
 
/* Base relative relocation types. Ugh. These imply lots of state */
RELOC_NUMBER (R_PARISC_SETBASE, 40)
RELOC_NUMBER (R_PARISC_SECREL32, 41)
RELOC_NUMBER (R_PARISC_BASEREL21L, 42)
RELOC_NUMBER (R_PARISC_BASEREL17R, 43)
RELOC_NUMBER (R_PARISC_BASEREL17F, 44)
RELOC_NUMBER (R_PARISC_BASEREL14R, 46)
RELOC_NUMBER (R_PARISC_BASEREL14F, 47)
 
/* Segment relative relocation types. */
RELOC_NUMBER (R_PARISC_SEGBASE, 48)
RELOC_NUMBER (R_PARISC_SEGREL32, 49)
 
/* Offsets from the PLT. */
RELOC_NUMBER (R_PARISC_PLTOFF21L, 50)
RELOC_NUMBER (R_PARISC_PLTOFF14R, 54)
RELOC_NUMBER (R_PARISC_PLTOFF14F, 55)
 
RELOC_NUMBER (R_PARISC_LTOFF_FPTR32, 57)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 58)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 62)
 
RELOC_NUMBER (R_PARISC_FPTR64, 64)
 
/* Plabel relocation types. */
RELOC_NUMBER (R_PARISC_PLABEL32, 65)
RELOC_NUMBER (R_PARISC_PLABEL21L, 66)
RELOC_NUMBER (R_PARISC_PLABEL14R, 70)
 
/* PCREL relocations. */
RELOC_NUMBER (R_PARISC_PCREL64, 72)
RELOC_NUMBER (R_PARISC_PCREL22C, 73)
RELOC_NUMBER (R_PARISC_PCREL22F, 74)
RELOC_NUMBER (R_PARISC_PCREL14WR, 75)
RELOC_NUMBER (R_PARISC_PCREL14DR, 76)
RELOC_NUMBER (R_PARISC_PCREL16F, 77)
RELOC_NUMBER (R_PARISC_PCREL16WF, 78)
RELOC_NUMBER (R_PARISC_PCREL16DF, 79)
 
 
RELOC_NUMBER (R_PARISC_DIR64, 80)
RELOC_NUMBER (R_PARISC_DIR64WR, 81)
RELOC_NUMBER (R_PARISC_DIR64DR, 82)
RELOC_NUMBER (R_PARISC_DIR14WR, 83)
RELOC_NUMBER (R_PARISC_DIR14DR, 84)
RELOC_NUMBER (R_PARISC_DIR16F, 85)
RELOC_NUMBER (R_PARISC_DIR16WF, 86)
RELOC_NUMBER (R_PARISC_DIR16DF, 87)
 
RELOC_NUMBER (R_PARISC_GPREL64, 88)
 
RELOC_NUMBER (R_PARISC_DLTREL14WR, 91)
RELOC_NUMBER (R_PARISC_DLTREL14DR, 92)
RELOC_NUMBER (R_PARISC_GPREL16F, 93)
RELOC_NUMBER (R_PARISC_GPREL16WF, 94)
RELOC_NUMBER (R_PARISC_GPREL16DF, 95)
 
 
RELOC_NUMBER (R_PARISC_LTOFF64, 96)
RELOC_NUMBER (R_PARISC_DLTIND14WR, 99)
RELOC_NUMBER (R_PARISC_DLTIND14DR, 100)
RELOC_NUMBER (R_PARISC_LTOFF16F, 101)
RELOC_NUMBER (R_PARISC_LTOFF16WF, 102)
RELOC_NUMBER (R_PARISC_LTOFF16DF, 103)
 
RELOC_NUMBER (R_PARISC_SECREL64, 104)
 
RELOC_NUMBER (R_PARISC_BASEREL14WR, 107)
RELOC_NUMBER (R_PARISC_BASEREL14DR, 108)
 
RELOC_NUMBER (R_PARISC_SEGREL64, 112)
 
RELOC_NUMBER (R_PARISC_PLTOFF14WR, 115)
RELOC_NUMBER (R_PARISC_PLTOFF14DR, 116)
RELOC_NUMBER (R_PARISC_PLTOFF16F, 117)
RELOC_NUMBER (R_PARISC_PLTOFF16WF, 118)
RELOC_NUMBER (R_PARISC_PLTOFF16DF, 119)
 
RELOC_NUMBER (R_PARISC_LTOFF_FPTR64, 120)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F, 125)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
 
 
RELOC_NUMBER (R_PARISC_COPY, 128)
RELOC_NUMBER (R_PARISC_IPLT, 129)
RELOC_NUMBER (R_PARISC_EPLT, 130)
 
RELOC_NUMBER (R_PARISC_TPREL32, 153)
RELOC_NUMBER (R_PARISC_TPREL21L, 154)
RELOC_NUMBER (R_PARISC_TPREL14R, 158)
 
RELOC_NUMBER (R_PARISC_LTOFF_TP21L, 162)
RELOC_NUMBER (R_PARISC_LTOFF_TP14R, 166)
RELOC_NUMBER (R_PARISC_LTOFF_TP14F, 167)
 
RELOC_NUMBER (R_PARISC_TPREL64, 216)
RELOC_NUMBER (R_PARISC_TPREL14WR, 219)
RELOC_NUMBER (R_PARISC_TPREL14DR, 220)
RELOC_NUMBER (R_PARISC_TPREL16F, 221)
RELOC_NUMBER (R_PARISC_TPREL16WF, 222)
RELOC_NUMBER (R_PARISC_TPREL16DF, 223)
 
RELOC_NUMBER (R_PARISC_LTOFF_TP64, 224)
RELOC_NUMBER (R_PARISC_LTOFF_TP14WR, 227)
RELOC_NUMBER (R_PARISC_LTOFF_TP14DR, 228)
RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229)
RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230)
RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231)
EMPTY_RELOC (R_PARISC_UNIMPLEMENTED)
END_RELOC_NUMBERS
 
#ifndef RELOC_MACROS_GEN_FUNC
typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
#endif
 
#define PT_PARISC_ARCHEXT 0x70000000
#define PT_PARISC_UNWIND 0x70000001
#define PF_PARISC_SBP 0x08000000
#define PF_HP_PAGE_SIZE 0x00100000
#define PF_HP_FAR_SHARED 0x00200000
#define PF_HP_NEAR_SHARED 0x00400000
#define PF_HP_CODE 0x01000000
#define PF_HP_MODIFY 0x02000000
#define PF_HP_LAZYSWAP 0x04000000
#define PF_HP_SBP 0x08000000
 
/* Processor specific dynamic array tags. */
 
#define DT_HP_LOAD_MAP (DT_LOOS + 0x0)
#define DT_HP_DLD_FLAGS (DT_LOOS + 0x1)
#define DT_HP_DLD_HOOK (DT_LOOS + 0x2)
#define DT_HP_UX10_INIT (DT_LOOS + 0x3)
#define DT_HP_UX10_INITSZ (DT_LOOS + 0x4)
#define DT_HP_PREINIT (DT_LOOS + 0x5)
#define DT_HP_PREINITSZ (DT_LOOS + 0x6)
#define DT_HP_NEEDED (DT_LOOS + 0x7)
#define DT_HP_TIME_STAMP (DT_LOOS + 0x8)
#define DT_HP_CHECKSUM (DT_LOOS + 0x9)
#define DT_HP_GST_SIZE (DT_LOOS + 0xa)
#define DT_HP_GST_VERSION (DT_LOOS + 0xb)
#define DT_HP_GST_HASHVAL (DT_LOOS + 0xc)
 
/* Values for DT_HP_DLD_FLAGS. */
#define DT_HP_DEBUG_PRIVATE 0x0001 /* Map text private */
#define DT_HP_DEBUG_CALLBACK 0x0002 /* Callback */
#define DT_HP_DEBUG_CALLBACK_BOR 0x0004 /* BOR callback */
#define DT_HP_NO_ENVVAR 0x0008 /* No env var */
#define DT_HP_BIND_NOW 0x0010 /* Bind now */
#define DT_HP_BIND_NONFATAL 0x0020 /* Bind non-fatal */
#define DT_HP_BIND_VERBOSE 0x0040 /* Bind verbose */
#define DT_HP_BIND_RESTRICTED 0x0080 /* Bind restricted */
#define DT_HP_BIND_SYMBOLIC 0x0100 /* Bind symbolic */
#define DT_HP_RPATH_FIRST 0x0200 /* RPATH first */
#define DT_HP_BIND_DEPTH_FIRST 0x0400 /* Bind depth-first */
 
/* Program header extensions. */
#define PT_HP_TLS (PT_LOOS + 0x0)
#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
#define PT_HP_PARALLEL (PT_LOOS + 0x10)
#define PT_HP_FASTBIND (PT_LOOS + 0x11)
 
/* Additional symbol types. */
#define STT_HP_OPAQUE (STT_LOOS + 0x1)
#define STT_HP_STUB (STT_LOOS + 0x2)
 
#endif /* _ELF_HPPA_H */
/avr.h
0,0 → 1,58
/* AVR ELF support for BFD.
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Denis Chertykov <denisc@overta.ru>
 
This file is part of BFD, the Binary File Descriptor library.
 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
 
#ifndef _ELF_AVR_H
#define _ELF_AVR_H
 
#include "elf/reloc-macros.h"
 
/* Processor specific flags for the ELF header e_flags field. */
#define EF_AVR_MACH 0xf
 
#define E_AVR_MACH_AVR1 1
#define E_AVR_MACH_AVR2 2
#define E_AVR_MACH_AVR3 3
#define E_AVR_MACH_AVR4 4
 
/* Relocations. */
START_RELOC_NUMBERS (elf_avr_reloc_type)
RELOC_NUMBER (R_AVR_NONE, 0)
RELOC_NUMBER (R_AVR_32, 1)
RELOC_NUMBER (R_AVR_7_PCREL, 2)
RELOC_NUMBER (R_AVR_13_PCREL, 3)
RELOC_NUMBER (R_AVR_16, 4)
RELOC_NUMBER (R_AVR_16_PM, 5)
RELOC_NUMBER (R_AVR_LO8_LDI, 6)
RELOC_NUMBER (R_AVR_HI8_LDI, 7)
RELOC_NUMBER (R_AVR_HH8_LDI, 8)
RELOC_NUMBER (R_AVR_LO8_LDI_NEG, 9)
RELOC_NUMBER (R_AVR_HI8_LDI_NEG, 10)
RELOC_NUMBER (R_AVR_HH8_LDI_NEG, 11)
RELOC_NUMBER (R_AVR_LO8_LDI_PM, 12)
RELOC_NUMBER (R_AVR_HI8_LDI_PM, 13)
RELOC_NUMBER (R_AVR_HH8_LDI_PM, 14)
RELOC_NUMBER (R_AVR_LO8_LDI_PM_NEG, 15)
RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16)
RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17)
RELOC_NUMBER (R_AVR_CALL, 18)
EMPTY_RELOC (R_AVR_max)
END_RELOC_NUMBERS
 
#endif /* _ELF_AVR_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.