]> pd.if.org Git - zpackage/commitdiff
switch to new elf header
authorNathan Wagner <nw@hydaspes.if.org>
Sat, 24 Sep 2016 18:02:27 +0000 (18:02 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Sat, 24 Sep 2016 18:02:27 +0000 (18:02 +0000)
elf/elf.h [new file with mode: 0644]
elf/soname.c

diff --git a/elf/elf.h b/elf/elf.h
new file mode 100644 (file)
index 0000000..d201dfc
--- /dev/null
+++ b/elf/elf.h
@@ -0,0 +1,547 @@
+#ifndef ELF_H_
+#define ELF_H_ 1
+
+#include <stdint.h>
+
+typedef uint32_t Elf32_Addr;
+typedef uint32_t Elf32_Off;
+typedef uint16_t Elf32_Half;
+typedef uint32_t Elf32_Word;
+typedef int32_t Elf32_Sword;
+
+typedef uint64_t Elf64_Addr;
+typedef uint64_t Elf64_Off;
+typedef uint16_t Elf64_Half;
+typedef uint32_t Elf64_Word;
+typedef int32_t Elf64_Sword;
+typedef uint64_t Elf64_Xword;
+typedef int64_t Elf64_Sxword;
+
+#define EI_NIDENT 16
+
+typedef struct {
+       unsigned char   e_ident[EI_NIDENT];
+       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;
+} Elf32_Ehdr;
+
+typedef struct {
+       unsigned char   e_ident[EI_NIDENT];
+       Elf64_Half      e_type;
+       Elf64_Half      e_machine;
+       Elf64_Word      e_version;
+       Elf64_Addr      e_entry;
+       Elf64_Off       e_phoff;
+       Elf64_Off       e_shoff;
+       Elf64_Word      e_flags;
+       Elf64_Half      e_ehsize;
+       Elf64_Half      e_phentsize;
+       Elf64_Half      e_phnum;
+       Elf64_Half      e_shentsize;
+       Elf64_Half      e_shnum;
+       Elf64_Half      e_shstrndx;
+} Elf64_Ehdr;
+
+
+typedef struct {
+       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;
+} Elf32_Shdr;
+
+typedef struct {
+       Elf64_Word      sh_name;
+       Elf64_Word      sh_type;
+       Elf64_Xword     sh_flags;
+       Elf64_Addr      sh_addr;
+       Elf64_Off       sh_offset;
+       Elf64_Xword     sh_size;
+       Elf64_Word      sh_link;
+       Elf64_Word      sh_info;
+       Elf64_Xword     sh_addralign;
+       Elf64_Xword     sh_entsize;
+} Elf64_Shdr;
+
+typedef struct {
+       Elf32_Word      ch_type;
+       Elf32_Word      ch_size;
+       Elf32_Word      ch_addralign;
+} Elf32_Chdr;
+
+typedef struct {
+       Elf64_Word      ch_type;
+       Elf64_Word      ch_reserved;
+       Elf64_Xword     ch_size;
+       Elf64_Xword     ch_addralign;
+} Elf64_Chdr;
+
+typedef struct {
+       Elf32_Word      st_name;
+       Elf32_Addr      st_value;
+       Elf32_Word      st_size;
+       unsigned char   st_info;
+       unsigned char   st_other;
+       Elf32_Half      st_shndx;
+} Elf32_Sym;
+
+typedef struct {
+       Elf64_Word      st_name;
+       unsigned char   st_info;
+       unsigned char   st_other;
+       Elf64_Half      st_shndx;
+       Elf64_Addr      st_value;
+       Elf64_Xword     st_size;
+} Elf64_Sym;
+
+
+typedef struct {
+       Elf32_Addr      r_offset;
+       Elf32_Word      r_info;
+} Elf32_Rel;
+
+typedef struct {
+       Elf32_Addr      r_offset;
+       Elf32_Word      r_info;
+       Elf32_Sword     r_addend;
+} Elf32_Rela;
+
+typedef struct {
+       Elf64_Addr      r_offset;
+       Elf64_Xword     r_info;
+} Elf64_Rel;
+
+typedef struct {
+       Elf64_Addr      r_offset;
+       Elf64_Xword     r_info;
+       Elf64_Sxword    r_addend;
+} Elf64_Rela;
+
+typedef struct {
+       Elf32_Sword     d_tag;
+       union {
+               Elf32_Word      d_val;
+               Elf32_Addr      d_ptr;
+       } d_un;
+} Elf32_Dyn;
+
+/* extern Elf32_Dyn    _DYNAMIC[]; */
+
+typedef struct {
+       Elf64_Sxword    d_tag;
+       union {
+               Elf64_Xword     d_val;
+               Elf64_Addr      d_ptr;
+       } d_un;
+} Elf64_Dyn;
+
+/* extern Elf64_Dyn    _DYNAMIC[]; */
+
+#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
+#define DT_SYMTAB_SHNDX 34
+#define DT_LOOS 0x6000000D
+#define DT_HIOS 0x6ffff000
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+
+#define DF_ORIGIN      0x1
+#define DF_SYMBOLIC    0x2
+#define DF_TEXTREL     0x4
+#define DF_BIND_NOW    0x8
+#define DF_STATIC_TLS  0x10
+
+#define ELF32_R_SYM(i) ((i)>>8)
+#define ELF32_R_TYPE(i)   ((unsigned char)(i))
+#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
+
+#define ELF64_R_SYM(i)    ((i)>>32)
+#define ELF64_R_TYPE(i)   ((i)&0xffffffffL)
+#define ELF64_R_INFO(s,t) (((s)<<32)+((t)&0xffffffffL))
+
+#define ELF32_ST_BIND(i)   ((i)>>4)
+#define ELF32_ST_TYPE(i)   ((i)&0xf)
+#define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
+
+#define ELF64_ST_BIND(i)   ((i)>>4)
+#define ELF64_ST_TYPE(i)   ((i)&0xf)
+#define ELF64_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
+
+#define ELF32_ST_VISIBILITY(o) ((o)&0x3)
+#define ELF64_ST_VISIBILITY(o) ((o)&0x3)
+
+#define STB_GLOBAL     1
+#define STB_WEAK       2
+#define STB_LOOS       10
+#define STB_HIOS       12
+#define STB_LOPROC     13
+#define STB_HIPROC     15
+
+#define STT_NOTYPE     0
+#define STT_OBJECT     1
+#define STT_FUNC       2
+#define STT_SECTION    3
+#define STT_FILE       4
+#define STT_COMMON     5
+#define STT_TLS        6
+#define STT_LOOS       10
+#define STT_HIOS       12
+#define STT_LOPROC     13
+#define STT_HIPROC     15
+
+#define STV_DEFAULT    0
+#define STV_INTERNAL   1
+#define STV_HIDDEN     2
+#define STV_PROTECTED  3
+
+#define GRP_COMDAT     0x1
+#define GRP_MASKOS     0x0ff00000
+#define GRP_MASKPROC   0xf0000000
+
+#define ELFCOMPRESS_ZLIB       1
+#define ELFCOMPRESS_LOOS       0x60000000
+#define ELFCOMPRESS_HIOS       0x6fffffff
+#define ELFCOMPRESS_LOPROC     0x70000000
+#define ELFCOMPRESS_HIPROC     0x7fffffff
+
+#define SHT_NULL       0
+#define SHT_PROGBITS   1
+#define SHT_SYMTAB     2
+#define SHT_STRTAB     3
+#define SHT_RELA       4
+#define SHT_HASH       5
+#define SHT_DYNAMIC    6
+#define SHT_NOTE       7
+#define SHT_NOBITS     8
+#define SHT_REL        9
+#define SHT_SHLIB      10
+#define SHT_DYNSYM     11
+#define SHT_INIT_ARRAY 14
+#define SHT_FINI_ARRAY 15
+#define SHT_PREINIT_ARRAY      16
+#define SHT_GROUP      17
+#define SHT_SYMTAB_SHNDX       18
+#define SHT_LOOS       0x60000000
+#define SHT_HIOS       0x6fffffff
+#define SHT_LOPROC     0x70000000
+#define SHT_HIPROC     0x7fffffff
+#define SHT_LOUSER     0x80000000
+#define SHT_HIUSER     0xffffffff
+
+#define SHF_WRITE      0x1
+#define SHF_ALLOC      0x2
+#define SHF_EXECINSTR  0x4
+#define SHF_MERGE      0x10
+#define SHF_STRINGS    0x20
+#define SHF_INFO_LINK  0x40
+#define SHF_LINK_ORDER 0x80
+#define SHF_OS_NONCONFORMING   0x100
+#define SHF_GROUP      0x200
+#define SHF_TLS        0x400
+#define SHF_COMPRESSED 0x800
+#define SHF_MASKOS     0x0ff00000
+#define SHF_MASKPROC   0xf0000000
+
+#define SHN_UNDEF      0
+#define SHN_LORESERVE  0xff00
+#define SHN_LOPROC     0xff00
+#define SHN_HIPROC     0xff1f
+#define SHN_LOOS       0xff20
+#define SHN_HIOS       0xff3f
+#define SHN_ABS        0xfff1
+#define SHN_COMMON     0xfff2
+#define SHN_XINDEX     0xffff
+#define SHN_HIRESERVE  0xffff
+
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_LOOS 0xfe00
+#define ET_HIOS 0xfeff
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_IAMCU 6
+#define EM_860 7
+#define EM_MIPS 8
+#define EM_S370 9
+#define EM_MIPS_RS3_LE 10
+#define EM_PARISC 15
+#define EM_VPP500 17
+#define EM_SPARC32PLUS 18
+#define EM_960 19
+#define EM_PPC 20
+#define EM_PPC64 21
+#define EM_S390 22
+#define EM_SPU 23
+#define EM_V800 36
+#define EM_FR20 37
+#define EM_RH32 38
+#define EM_RCE 39
+#define EM_ARM 40
+#define EM_ALPHA 41
+#define EM_SH 42
+#define EM_SPARCV9 43
+#define EM_TRICORE 44
+#define EM_ARC 45
+#define EM_H8_300 46
+#define EM_H8_300H 47
+#define EM_H8S 48
+#define EM_H8_500 49
+#define EM_IA_64 50
+#define EM_MIPS_X 51
+#define EM_COLDFIRE 52
+#define EM_68HC12 53
+#define EM_MMA 54
+#define EM_PCP 55
+#define EM_NCPU 56
+#define EM_NDR1 57
+#define EM_STARCORE 58
+#define EM_ME16 59
+#define EM_ST100 60
+#define EM_TINYJ 61
+#define EM_X86_64 62
+#define EM_PDSP 63
+#define EM_PDP10 64
+#define EM_PDP11 65
+#define EM_FX66 66
+#define EM_ST9PLUS 67
+#define EM_ST7 68
+#define EM_68HC16 69
+#define EM_68HC11 70
+#define EM_68HC08 71
+#define EM_68HC05 72
+#define EM_SVX 73
+#define EM_ST19 74
+#define EM_VAX 75
+#define EM_CRIS 76
+#define EM_JAVELIN 77
+#define EM_FIREPATH 78
+#define EM_ZSP 79
+#define EM_MMIX 80
+#define EM_HUANY 81
+#define EM_PRISM 82
+#define EM_AVR 83
+#define EM_FR30 84
+#define EM_D10V 85
+#define EM_D30V 86
+#define EM_V850 87
+#define EM_M32R 88
+#define EM_MN10300 89
+#define EM_MN10200 90
+#define EM_PJ 91
+#define EM_OPENRISC 92
+#define EM_ARC_COMPACT 93
+#define EM_XTENSA 94
+#define EM_VIDEOCORE 95
+#define EM_TMM_GPP 96
+#define EM_NS32K 97
+#define EM_TPC 98
+#define EM_SNP1K 99
+#define EM_ST200 100
+#define EM_IP2K 101
+#define EM_MAX 102
+#define EM_CR 103
+#define EM_F2MC16 104
+#define EM_MSP430 105
+#define EM_BLACKFIN 106
+#define EM_SE_C33 107
+#define EM_SEP 108
+#define EM_ARCA 109
+#define EM_UNICORE 110
+#define EM_EXCESS 111
+#define EM_DXP 112
+#define EM_ALTERA_NIOS2 113
+#define EM_CRX 114
+#define EM_XGATE 115
+#define EM_C166 116
+#define EM_M16C 117
+#define EM_DSPIC30F 118
+#define EM_CE 119
+#define EM_M32C 120
+#define EM_TSK3000 131
+#define EM_RS08 132
+#define EM_SHARC 133
+#define EM_ECOG2 134
+#define EM_SCORE7 135
+#define EM_DSP24 136
+#define EM_VIDEOCORE3 137
+#define EM_LATTICEMICO32 138
+#define EM_SE_C17 139
+#define EM_TI_C6000 140
+#define EM_TI_C2000 141
+#define EM_TI_C5500 142
+#define EM_TI_ARP32 143
+#define EM_TI_PRU 144
+#define EM_MMDSP_PLUS 160
+#define EM_MMDSP_PLUS 160
+#define EM_CYPRESS_M8C 161
+#define EM_R32C 162
+#define EM_TRIMEDIA 163
+#define EM_QDSP6 164
+#define EM_8051 165
+#define EM_STXP7X 166
+#define EM_NDS32 167
+#define EM_ECOG1 168
+#define EM_ECOG1X 168
+#define EM_MAXQ30 169
+#define EM_XIMO16 170
+#define EM_MANIK 171
+#define EM_CRAYNV2 172
+#define EM_RX 173
+#define EM_METAG 174
+#define EM_MCST_ELBRUS 175
+#define EM_ECOG16 176
+#define EM_CR16 177
+#define EM_ETPU 178
+#define EM_SLE9X 179
+#define EM_L10M 180
+#define EM_K10M 181
+#define EM_AARCH64     183
+#define EM_AVR32       185
+#define EM_STM8        186
+#define EM_TILE64      187
+#define EM_TILEPRO     188
+#define EM_MICROBLAZE  189
+#define EM_CUDA        190
+#define EM_TILEGX      191
+#define EM_CLOUDSHIELD 192
+#define EM_COREA_1ST   193
+#define EM_COREA_2ND   194
+#define EM_ARC_COMPACT2        195
+#define EM_OPEN8       196
+#define EM_RL78        197
+#define EM_VIDEOCORE5  198
+#define EM_78KOR       199
+#define EM_56800EX     200
+#define EM_BA1 201
+#define EM_BA2 202
+#define EM_XCORE       203
+#define EM_MCHP_PIC    204
+#define EM_INTEL205    205
+#define EM_INTEL206    206
+#define EM_INTEL207    207
+#define EM_INTEL208    208
+#define EM_INTEL209    209
+#define EM_KM32        210
+#define EM_KMX32       211
+#define EM_KMX16       212
+#define EM_KMX8        213
+#define EM_KVARC       214
+#define EM_CDP 215
+#define EM_COGE        216
+#define EM_COOL        217
+#define EM_NORC        218
+#define EM_CSR_KALIMBA 219
+#define EM_Z80 220
+#define EM_VISIUM      221
+#define EM_FT32        222
+#define EM_MOXIE       223
+#define EM_AMDGPU      224
+#define EM_RISCV       243
+
+#define EV_NONE        0
+#define EV_CURRENT     1
+
+#define EI_MAG0        0
+#define EI_MAG1        1
+#define EI_MAG2        2
+#define EI_MAG3        3
+#define EI_CLASS       4
+#define EI_DATA        5
+#define EI_VERSION     6
+#define EI_OSABI       7
+#define EI_ABIVERSION  8
+#define EI_PAD 9
+#define EI_NIDENT      16
+
+#define ELFMAG0        0x7f
+#define ELFMAG1        'E'
+#define ELFMAG2        'L'
+#define ELFMAG3        'F'
+
+#define ELFCLASSNONE   0
+#define ELFCLASS32     1
+#define ELFCLASS64     2
+
+#define ELFDATANONE    0
+#define ELFDATA2LSB    1
+#define ELFDATA2MSB    2
+
+#define ELFOSABI_NONE  0
+#define ELFOSABI_HPUX  1
+#define ELFOSABI_NETBSD        2
+#define ELFOSABI_GNU   3
+#define ELFOSABI_LINUX 3
+#define ELFOSABI_SOLARIS       6
+#define ELFOSABI_AIX   7
+#define ELFOSABI_IRIX  8
+#define ELFOSABI_FREEBSD       9
+#define ELFOSABI_TRU64 10
+#define ELFOSABI_MODESTO       11
+#define ELFOSABI_OPENBSD       12
+#define ELFOSABI_OPENVMS       13
+#define ELFOSABI_NSK   14
+#define ELFOSABI_AROS  15
+#define ELFOSABI_FENIXOS       16
+#define ELFOSABI_CLOUDABI      17
+#define ELFOSABI_OPENVOS       18
+
+#endif
index 72d465ade86ba66398fd209251b80e9ad7055151..8b6c451275f8a8e42d8f50cb58b028d380a7cc07 100644 (file)
@@ -9,7 +9,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <elf.h>
+
+#include "elf.h"
 
 int main(int ac, char **av) {
        void *elfbase;