* m10300-dis.c (print_insn_mn10300): 0xf7 opcode prefix specifies
[deliverable/binutils-gdb.git] / binutils / readelf.h
1 /* readelf.h -- This file contains structures similar to those found in
2 include/elf/internal.h. These structures however, match the layout of
3 the information in the file, rather than being optimised for internal
4 storage.
5
6 Copyright (C) 1998 Free Software Foundation, Inc.
7
8 This file is part of GNU Binutils.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
23 \f
24 #ifndef _READELF_H
25 #define _READELF_H
26
27 #include "bfd.h"
28 #include "elf/common.h"
29 #include "elf/ppc.h"
30 #include "elf/m32r.h"
31 #include "elf/mips.h"
32
33 /* The type 'bfd_vma' is used in places where the 64 bit version of the
34 structure has a 64 bit wide field, and the 32 bit version has a 32 bit wide
35 field. It does not necessarily imply that the field contains an address. */
36
37 #define EI_NIDENT 16
38
39 /* The ELF file header. This appears at the start of every ELF file. */
40 typedef struct
41 {
42 unsigned char e_ident [EI_NIDENT]; /* Magic number and other info */
43 unsigned short e_type; /* Object file type */
44 unsigned short e_machine; /* Architecture */
45 unsigned long e_version; /* Object file version */
46 bfd_vma e_entry; /* Entry point virtual address */
47 bfd_vma e_phoff; /* Program header table file offset */
48 bfd_vma e_shoff; /* Section header table file offset */
49 unsigned long e_flags; /* Processor-specific flags */
50 unsigned short e_ehsize; /* ELF header size in bytes */
51 unsigned short e_phentsize; /* Program header table entry size */
52 unsigned short e_phnum; /* Program header table entry count */
53 unsigned short e_shentsize; /* Section header table entry size */
54 unsigned short e_shnum; /* Section header table entry count */
55 unsigned short e_shstrndx; /* Section header string table index */
56 }
57 Elf_Ehdr;
58
59 /* Program Segment Header. (Might be wrong for 64 bit ELF formats). */
60 typedef struct
61 {
62 unsigned long p_type; /* Segment type */
63 bfd_vma p_offset; /* Segment file offset */
64 bfd_vma p_vaddr; /* Segment virtual address */
65 bfd_vma p_paddr; /* Segment physical address */
66 unsigned long p_filesz; /* Segment size in file */
67 unsigned long p_memsz; /* Segment size in memory */
68 unsigned long p_flags; /* Segment flags */
69 unsigned long p_align; /* Segment alignment */
70 }
71 Elf_Phdr;
72
73 /* Section header. */
74 typedef struct
75 {
76 unsigned long sh_name; /* Section name (string tbl index) */
77 unsigned long sh_type; /* Section type */
78 bfd_vma sh_flags; /* Section flags */
79 bfd_vma sh_addr; /* Section virtual addr at execution */
80 bfd_vma sh_offset; /* Section file offset */
81 unsigned long sh_size; /* Section size in bytes */
82 unsigned long sh_link; /* Link to another section */
83 unsigned long sh_info; /* Additional section information */
84 bfd_vma sh_addralign; /* Section alignment */
85 bfd_vma sh_entsize; /* Entry size if section holds table */
86 }
87 Elf_Shdr;
88
89 /* Symbol table entry. (Might be incorrect for 64 bit ELF formats) */
90 typedef struct
91 {
92 unsigned long st_name; /* Symbol name (string tbl index) */
93 bfd_vma st_value; /* Symbol value */
94 bfd_vma st_size; /* Symbol size */
95 unsigned char st_info; /* Symbol type and binding */
96 unsigned char st_other; /* No defined meaning, 0 */
97 unsigned short st_shndx; /* Section index */
98 }
99 Elf_Sym;
100
101 /* Version definition sections. */
102 typedef struct
103 {
104 unsigned short vd_version; /* Version number of structure. */
105 unsigned short vd_flags; /* Flags (VER_FLG_*). */
106 unsigned short vd_ndx; /* Version index. */
107 unsigned short vd_cnt; /* Number of verdaux entries. */
108 unsigned long vd_hash; /* Hash of name. */
109 unsigned long vd_aux; /* Offset to verdaux entries. */
110 unsigned long vd_next; /* Offset to next verdef. */
111 }
112 Elf_Verdef;
113
114 /* Auxialiary version information. */
115 typedef struct
116 {
117 unsigned long vda_name; /* String table offset of name. */
118 unsigned long vda_next; /* Offset to next verdaux. */
119 }
120 Elf_Verdaux;
121
122 /* Version dependency section. */
123 typedef struct
124 {
125 unsigned short vn_version; /* Version number of structure. */
126 unsigned short vn_cnt; /* Number of vernaux entries. */
127 unsigned long vn_file; /* String table offset of library name. */
128 unsigned long vn_aux; /* Offset to vernaux entries. */
129 unsigned long vn_next; /* Offset to next verneed. */
130 }
131 Elf_Verneed;
132
133 /* Auxiliary needed version information. */
134 typedef struct
135 {
136 unsigned long vna_hash; /* Hash of dependency name. */
137 unsigned short vna_flags; /* Flags (VER_FLG_*). */
138 unsigned short vna_other; /* Unused. */
139 unsigned long vna_name; /* String table offset to version name. */
140 unsigned long vna_next; /* Offset to next vernaux. */
141 }
142 Elf_Vernaux;
143
144 /* Relocation table entry without addend. */
145 typedef struct
146 {
147 bfd_vma r_offset; /* Location at which to apply the action */
148 bfd_vma r_info; /* index and type of relocation */
149 }
150 Elf_Rel;
151
152 /* Relocation table entry with addend. */
153 typedef struct
154 {
155 bfd_vma r_offset; /* Location at which to apply the action */
156 bfd_vma r_info; /* Index and Type of relocation */
157 bfd_signed_vma r_addend; /* Constant addend used to compute value */
158 }
159 Elf_Rela;
160
161 /* Dynamic section entry. */
162 typedef struct
163 {
164 signed long d_tag; /* Dynamic entry type */
165 union
166 {
167 bfd_vma d_val; /* Integer value */
168 bfd_vma d_ptr; /* Address value */
169 } d_un;
170 }
171 Elf_Dyn;
172
173
174 #define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
175
176 #endif /* _READELF_H */
This page took 0.032688 seconds and 4 git commands to generate.