elfshdr.h - scc - simple c99 compiler
HTML git clone git://git.simple-cc.org/scc
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
elfshdr.h (4290B)
---
1 /* See http://www.sco.com/developers/gabi/latest/contents.html */
2
3 /* Special Section Indexes */
4 #define SHN_UNDEF 0 /* undefined */
5 #define SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */
6 #define SHN_LOPROC 0xff00 /* reserved range for processor */
7 #define SHN_HIPROC 0xff1f /* specific section indexes */
8 #define SHN_ABS 0xfff1 /* absolute value */
9 #define SHN_COMMON 0xfff2 /* common symbol */
10 #define SHN_XINDEX 0xffff /* Escape -- index stored elsewhere. */
11 #define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */
12
13 /* sh_type */
14 #define SHT_NULL 0 /* inactive */
15 #define SHT_PROGBITS 1 /* program defined information */
16 #define SHT_SYMTAB 2 /* symbol table section */
17 #define SHT_STRTAB 3 /* string table section */
18 #define SHT_RELA 4 /* relocation section with addends*/
19 #define SHT_HASH 5 /* symbol hash table section */
20 #define SHT_DYNAMIC 6 /* dynamic section */
21 #define SHT_NOTE 7 /* note section */
22 #define SHT_NOBITS 8 /* no space section */
23 #define SHT_REL 9 /* relation section without addends */
24 #define SHT_SHLIB 10 /* reserved - purpose unknown */
25 #define SHT_DYNSYM 11 /* dynamic symbol table section */
26 #define SHT_NUM 12 /* number of section types */
27 #define SHT_INIT_ARRAY 14 /* pointers to init functions */
28 #define SHT_FINI_ARRAY 15 /* pointers to termination functions */
29 #define SHT_PREINIT_ARRAY 16 /* ptrs to funcs called before init */
30 #define SHT_GROUP 17 /* defines a section group */
31 #define SHT_SYMTAB_SHNDX 18 /* Section indexes (see SHN_XINDEX). */
32 #define SHT_LOOS 0x60000000 /* reserved range for OS specific */
33 #define SHT_SUNW_dof 0x6ffffff4 /* used by dtrace */
34 #define SHT_GNU_LIBLIST 0x6ffffff7 /* libraries to be prelinked */
35 #define SHT_SUNW_move 0x6ffffffa /* inf for partially init'ed symbols */
36 #define SHT_SUNW_syminfo 0x6ffffffc /* ad symbol information */
37 #define SHT_GNU_VERDEF 0x6ffffffd /* symbol versioning inf */
38 #define SHT_GNU_VERNEED 0x6ffffffe /* symbol versioning req */
39 #define SHT_GNU_VERSYM 0x6fffffff /* symbol versioning table */
40 #define SHT_HIOS 0x6fffffff /* section header types */
41 #define SHT_LOPROC 0x70000000 /* reserved range for processor */
42 #define SHT_HIPROC 0x7fffffff /* specific section header types */
43 #define SHT_LOUSER 0x80000000 /* reserved range for application */
44 #define SHT_HIUSER 0xffffffff /* specific indexes */
45
46 #define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table section */
47
48 /* Section Attribute Flags - sh_flags */
49 #define SHF_WRITE 0x1 /* Writable */
50 #define SHF_ALLOC 0x2 /* occupies memory */
51 #define SHF_EXECINSTR 0x4 /* executable */
52 #define SHF_MERGE 0x10 /* may be merged */
53 #define SHF_STRINGS 0x20 /* contains strings */
54 #define SHF_INFO_LINK 0x40 /* sh_info holds section index */
55 #define SHF_LINK_ORDER 0x80 /* ordering requirements */
56 #define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required */
57 #define SHF_GROUP 0x200 /* member of section group */
58 #define SHF_TLS 0x400 /* thread local storage */
59 #define SHF_COMPRESSED 0x800 /* contains compressed data */
60 #define SHF_MASKOS 0x0ff00000 /* OS-specific semantics */
61 #define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */
62 /* specific section attributes */
63
64 #define ELFS32SZ 40
65 #define ELFS64SZ 64
66
67 typedef struct elf32_shdr Elf32_Shdr;
68 typedef struct elf64_shdr Elf64_Shdr;
69
70 /* Section Header */
71 struct elf32_shdr {
72 Elf32_Word sh_name; /* section name */
73 Elf32_Word sh_type; /* type */
74 Elf32_Word sh_flags; /* flags */
75 Elf32_Addr sh_addr; /* address */
76 Elf32_Off sh_offset; /* file offset */
77 Elf32_Word sh_size; /* section size */
78 Elf32_Word sh_link; /* section header table index link */
79 Elf32_Word sh_info; /* extra information */
80 Elf32_Word sh_addralign; /* address alignment */
81 Elf32_Word sh_entsize; /* section entry size */
82 };
83
84 struct elf64_shdr {
85 Elf64_Word sh_name; /* section name */
86 Elf64_Word sh_type; /* section type */
87 Elf64_Xword sh_flags; /* section flags */
88 Elf64_Addr sh_addr; /* virtual address */
89 Elf64_Off sh_offset; /* file offset */
90 Elf64_Xword sh_size; /* section size */
91 Elf64_Word sh_link; /* link to another */
92 Elf64_Word sh_info; /* misc info */
93 Elf64_Xword sh_addralign; /* memory alignment */
94 Elf64_Xword sh_entsize; /* table entry size */
95 };