| /** |
| * D header file for NetBSD. |
| * |
| * http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/sys/exec_elf.h |
| */ |
| module core.sys.netbsd.sys.elf32; |
| |
| version (NetBSD): |
| extern (C): |
| pure: |
| nothrow: |
| |
| import core.stdc.stdint; |
| public import core.sys.netbsd.sys.elf_common; |
| |
| alias uint16_t Elf32_Half; |
| alias uint32_t Elf32_Word; |
| alias int32_t Elf32_Sword; |
| alias uint64_t Elf32_Lword; |
| alias uint32_t Elf32_Addr; |
| alias uint32_t Elf32_Off; |
| alias Elf32_Word Elf32_Hashelt; |
| alias Elf32_Word Elf32_Size; |
| alias Elf32_Sword Elf32_Ssize; |
| |
| struct Elf32_Ehdr |
| { |
| char[EI_NIDENT] e_ident = 0; |
| Elf32_Half e_type; |
| Elf32_Half e_machine; |
| Elf32_Word e_version; |
| Elf32_Addr e_entry; |
| Elf32_Off e_phoff; |
| Elf32_Off e_shoff; |
| Elf32_Word e_flags; |
| Elf32_Half e_ehsize; |
| Elf32_Half e_phentsize; |
| Elf32_Half e_phnum; |
| Elf32_Half e_shentsize; |
| Elf32_Half e_shnum; |
| Elf32_Half e_shstrndx; |
| } |
| |
| struct Elf32_Shdr |
| { |
| Elf32_Word sh_name; |
| Elf32_Word sh_type; |
| Elf32_Word sh_flags; |
| Elf32_Addr sh_addr; |
| Elf32_Off sh_offset; |
| Elf32_Word sh_size; |
| Elf32_Word sh_link; |
| Elf32_Word sh_info; |
| Elf32_Word sh_addralign; |
| Elf32_Word sh_entsize; |
| } |
| |
| struct Elf32_Phdr |
| { |
| Elf32_Word p_type; |
| Elf32_Off p_offset; |
| Elf32_Addr p_vaddr; |
| Elf32_Addr p_paddr; |
| Elf32_Word p_filesz; |
| Elf32_Word p_memsz; |
| Elf32_Word p_flags; |
| Elf32_Word p_align; |
| } |
| |
| struct Elf32_Dyn |
| { |
| Elf32_Sword d_tag; |
| union _d_un |
| { |
| Elf32_Word d_val; |
| Elf32_Addr d_ptr; |
| } _d_un d_un; |
| } |
| |
| struct Elf32_Rel |
| { |
| Elf32_Addr r_offset; |
| Elf32_Word r_info; |
| } |
| |
| struct Elf32_Rela |
| { |
| Elf32_Addr r_offset; |
| Elf32_Word r_info; |
| Elf32_Sword r_addend; |
| } |
| |
| extern (D) |
| { |
| auto ELF32_R_SYM(V)(V val) { return val >> 8; } |
| auto ELF32_R_TYPE(V)(V val) { return val & 0xff; } |
| auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); } |
| } |
| |
| alias Elf_Note Elf32_Nhdr; |
| |
| struct Elf32_Move |
| { |
| Elf32_Lword m_value; |
| Elf32_Word m_info; |
| Elf32_Word m_poffset; |
| Elf32_Half m_repeat; |
| Elf32_Half m_stride; |
| } |
| |
| extern (D) |
| { |
| auto ELF32_M_SYM(I)(I info) { return info >> 8; } |
| auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; } |
| auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubye)size; } |
| } |
| |
| struct Elf32_Cap |
| { |
| Elf32_Word c_tag; |
| union _c_un |
| { |
| Elf32_Word c_val; |
| Elf32_Addr c_ptr; |
| } _c_un c_un; |
| } |
| |
| struct Elf32_Sym |
| { |
| Elf32_Word st_name; |
| Elf32_Addr st_value; |
| Elf32_Word st_size; |
| ubyte st_info; |
| ubyte st_other; |
| Elf32_Half st_shndx; |
| } |
| |
| extern (D) |
| { |
| auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; } |
| auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; } |
| auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); } |
| auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; } |
| } |
| |
| struct Elf32_Verdef |
| { |
| Elf32_Half vd_version; |
| Elf32_Half vd_flags; |
| Elf32_Half vd_ndx; |
| Elf32_Half vd_cnt; |
| Elf32_Word vd_hash; |
| Elf32_Word vd_aux; |
| Elf32_Word vd_next; |
| } |
| |
| struct Elf32_Verdaux |
| { |
| Elf32_Word vda_name; |
| Elf32_Word vda_next; |
| } |
| |
| struct Elf32_Verneed |
| { |
| Elf32_Half vn_version; |
| Elf32_Half vn_cnt; |
| Elf32_Word vn_file; |
| Elf32_Word vn_aux; |
| Elf32_Word vn_next; |
| } |
| |
| struct Elf32_Vernaux |
| { |
| Elf32_Word vna_hash; |
| Elf32_Half vna_flags; |
| Elf32_Half vna_other; |
| Elf32_Word vna_name; |
| Elf32_Word vna_next; |
| } |
| |
| alias Elf32_Half Elf32_Versym; |
| |
| struct Elf32_Syminfo |
| { |
| Elf32_Half si_boundto; |
| Elf32_Half si_flags; |
| } |