]> git.ipfire.org Git - thirdparty/gcc.git/blame - libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
d: Import dmd b8384668f, druntime e6caaab9, phobos 5ab9ad256 (v2.098.0-beta.1)
[thirdparty/gcc.git] / libphobos / libdruntime / core / sys / netbsd / sys / elf32.d
CommitLineData
b4c522fa
IB
1/**
2 * D header file for NetBSD.
3 *
4 * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h
5 */
6module core.sys.netbsd.sys.elf32;
7
8version (NetBSD):
9extern (C):
10pure:
11nothrow:
12
13import core.stdc.stdint;
14public import core.sys.netbsd.sys.elf_common;
15
16alias uint16_t Elf32_Half;
17alias uint32_t Elf32_Word;
18alias int32_t Elf32_Sword;
19alias uint64_t Elf32_Lword;
20alias uint32_t Elf32_Addr;
21alias uint32_t Elf32_Off;
22alias Elf32_Word Elf32_Hashelt;
23alias Elf32_Word Elf32_Size;
24alias Elf32_Sword Elf32_Ssize;
25
26struct Elf32_Ehdr
27{
0da83a16 28 char[EI_NIDENT] e_ident = 0;
b4c522fa
IB
29 Elf32_Half e_type;
30 Elf32_Half e_machine;
31 Elf32_Word e_version;
32 Elf32_Addr e_entry;
33 Elf32_Off e_phoff;
34 Elf32_Off e_shoff;
35 Elf32_Word e_flags;
36 Elf32_Half e_ehsize;
37 Elf32_Half e_phentsize;
38 Elf32_Half e_phnum;
39 Elf32_Half e_shentsize;
40 Elf32_Half e_shnum;
41 Elf32_Half e_shstrndx;
42}
43
44struct Elf32_Shdr
45{
46 Elf32_Word sh_name;
47 Elf32_Word sh_type;
48 Elf32_Word sh_flags;
49 Elf32_Addr sh_addr;
50 Elf32_Off sh_offset;
51 Elf32_Word sh_size;
52 Elf32_Word sh_link;
53 Elf32_Word sh_info;
54 Elf32_Word sh_addralign;
55 Elf32_Word sh_entsize;
56}
57
58struct Elf32_Phdr
59{
60 Elf32_Word p_type;
61 Elf32_Off p_offset;
62 Elf32_Addr p_vaddr;
63 Elf32_Addr p_paddr;
64 Elf32_Word p_filesz;
65 Elf32_Word p_memsz;
66 Elf32_Word p_flags;
67 Elf32_Word p_align;
68}
69
70struct Elf32_Dyn
71{
72 Elf32_Sword d_tag;
73 union _d_un
74 {
75 Elf32_Word d_val;
76 Elf32_Addr d_ptr;
77 } _d_un d_un;
78}
79
80struct Elf32_Rel
81{
82 Elf32_Addr r_offset;
83 Elf32_Word r_info;
84}
85
86struct Elf32_Rela
87{
88 Elf32_Addr r_offset;
89 Elf32_Word r_info;
90 Elf32_Sword r_addend;
91}
92
93extern (D)
94{
95 auto ELF32_R_SYM(V)(V val) { return val >> 8; }
96 auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
97 auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
98}
99
100alias Elf_Note Elf32_Nhdr;
101
102struct Elf32_Move
103{
104 Elf32_Lword m_value;
105 Elf32_Word m_info;
106 Elf32_Word m_poffset;
107 Elf32_Half m_repeat;
108 Elf32_Half m_stride;
109}
110
111extern (D)
112{
113 auto ELF32_M_SYM(I)(I info) { return info >> 8; }
114 auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
5fee5ec3 115 auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
b4c522fa
IB
116}
117
118struct Elf32_Cap
119{
120 Elf32_Word c_tag;
121 union _c_un
122 {
123 Elf32_Word c_val;
124 Elf32_Addr c_ptr;
125 } _c_un c_un;
126}
127
128struct Elf32_Sym
129{
130 Elf32_Word st_name;
131 Elf32_Addr st_value;
132 Elf32_Word st_size;
133 ubyte st_info;
134 ubyte st_other;
135 Elf32_Half st_shndx;
136}
137
138extern (D)
139{
140 auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
141 auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
142 auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
143 auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
144}
145
146struct Elf32_Verdef
147{
148 Elf32_Half vd_version;
149 Elf32_Half vd_flags;
150 Elf32_Half vd_ndx;
151 Elf32_Half vd_cnt;
152 Elf32_Word vd_hash;
153 Elf32_Word vd_aux;
154 Elf32_Word vd_next;
155}
156
157struct Elf32_Verdaux
158{
159 Elf32_Word vda_name;
160 Elf32_Word vda_next;
161}
162
163struct Elf32_Verneed
164{
165 Elf32_Half vn_version;
166 Elf32_Half vn_cnt;
167 Elf32_Word vn_file;
168 Elf32_Word vn_aux;
169 Elf32_Word vn_next;
170}
171
172struct Elf32_Vernaux
173{
174 Elf32_Word vna_hash;
175 Elf32_Half vna_flags;
176 Elf32_Half vna_other;
177 Elf32_Word vna_name;
178 Elf32_Word vna_next;
179}
180
181alias Elf32_Half Elf32_Versym;
182
183struct Elf32_Syminfo
184{
185 Elf32_Half si_boundto;
186 Elf32_Half si_flags;
187}