Revise to match config renaming.
[deliverable/binutils-gdb.git] / include / elf-internal.h
1 /* ELF support for BFD.
2 Copyright (C) 1991 Free Software Foundation, Inc.
3
4 Written by Fred Fish @ Cygnus Support, from information published
5 in "UNIX System V Release 4, Programmers Guide: ANSI C and
6 Programming Support Tools".
7
8 This file is part of BFD, the Binary File Descriptor library.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
23
24
25 /* This file is part of ELF support for BFD, and contains the portions
26 that describe how ELF is represented internally in the BFD library.
27 I.E. it describes the in-memory representation of ELF. It requires
28 the elf-common.h file which contains the portions that are common to
29 both the internal and external representations. */
30
31 /* Types used by various structures, functions, etc. */
32
33 typedef unsigned long Elf_Addr; /* Unsigned program address */
34 typedef unsigned long Elf_Off; /* Unsigned file offset */
35 typedef long Elf_Sword; /* Signed large integer */
36 typedef unsigned long Elf_Word; /* Unsigned large integer */
37 typedef unsigned short Elf_Half; /* Unsigned medium integer */
38 typedef unsigned char Elf_Char; /* Unsigned tiny integer */
39
40 /* ELF Header */
41
42 #define EI_NIDENT 16 /* Size of e_ident[] */
43
44 typedef struct {
45 unsigned char e_ident[EI_NIDENT]; /* ELF "magic number" */
46 Elf_Half e_type; /* Identifies object file type */
47 Elf_Half e_machine; /* Specifies required architecture */
48 Elf_Word e_version; /* Identifies object file version */
49 Elf_Addr e_entry; /* Entry point virtual address */
50 Elf_Off e_phoff; /* Program header table file offset */
51 Elf_Off e_shoff; /* Section header table file offset */
52 Elf_Word e_flags; /* Processor-specific flags */
53 Elf_Half e_ehsize; /* ELF header size in bytes */
54 Elf_Half e_phentsize; /* Program header table entry size */
55 Elf_Half e_phnum; /* Program header table entry count */
56 Elf_Half e_shentsize; /* Section header table entry size */
57 Elf_Half e_shnum; /* Section header table entry count */
58 Elf_Half e_shstrndx; /* Section header string table index */
59 } Elf_Internal_Ehdr;
60
61 /* Program header */
62
63 typedef struct {
64 Elf_Word p_type; /* Identifies program segment type */
65 Elf_Off p_offset; /* Segment file offset */
66 Elf_Addr p_vaddr; /* Segment virtual address */
67 Elf_Addr p_paddr; /* Segment physical address */
68 Elf_Word p_filesz; /* Segment size in file */
69 Elf_Word p_memsz; /* Segment size in memory */
70 Elf_Word p_flags; /* Segment flags */
71 Elf_Word p_align; /* Segment alignment, file & memory */
72 } Elf_Internal_Phdr;
73
74 /* Section header */
75
76 typedef struct {
77 Elf_Word sh_name; /* Section name, index in string tbl */
78 Elf_Word sh_type; /* Type of section */
79 Elf_Word sh_flags; /* Miscellaneous section attributes */
80 Elf_Addr sh_addr; /* Section virtual addr at execution */
81 Elf_Off sh_offset; /* Section file offset */
82 Elf_Word sh_size; /* Size of section in bytes */
83 Elf_Word sh_link; /* Index of another section */
84 Elf_Word sh_info; /* Additional section information */
85 Elf_Word sh_addralign; /* Section alignment */
86 Elf_Word sh_entsize; /* Entry size if section holds table */
87 } Elf_Internal_Shdr;
88
89 /* Symbol table entry */
90
91 typedef struct {
92 Elf_Word st_name; /* Symbol name, index in string tbl */
93 Elf_Addr st_value; /* Value of the symbol */
94 Elf_Word st_size; /* Associated symbol size */
95 Elf_Char st_info; /* Type and binding attributes */
96 Elf_Char st_other; /* No defined meaning, 0 */
97 Elf_Half st_shndx; /* Associated section index */
98 } Elf_Internal_Sym;
This page took 0.031288 seconds and 4 git commands to generate.