elfphdr.h - scc - simple c99 compiler
 (HTM) git clone git://git.simple-cc.org/scc
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
       elfphdr.h (2596B)
       ---
            1 /* See http://www.sco.com/developers/gabi/latest/contents.html */
            2 
            3 /* Segment types - p_type */
            4 #define PT_NULL         0               /* unused */
            5 #define PT_LOAD         1               /* loadable segment */
            6 #define PT_DYNAMIC      2               /* dynamic linking section */
            7 #define PT_INTERP       3               /* the RTLD */
            8 #define PT_NOTE         4               /* auxiliary information */
            9 #define PT_SHLIB        5               /* reserved - purpose undefined */
           10 #define PT_PHDR         6               /* program header */
           11 #define PT_TLS          7               /* thread local storage */
           12 #define PT_LOOS         0x60000000      /* reserved range for OS */
           13 #define PT_HIOS         0x6fffffff      /*  specific segment types */
           14 #define PT_LOPROC       0x70000000      /* reserved range for processor */
           15 #define PT_HIPROC       0x7fffffff      /*  specific segment types */
           16 
           17 #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) /* Frame unwind information */
           18 #define PT_GNU_STACK    (PT_LOOS + 0x474e551) /* Stack flags */
           19 #define PT_GNU_RELRO    (PT_LOOS + 0x474e552) /* Read-only after relocation */
           20 #define PT_GNU_PROPERTY (PT_LOOS + 0x474e553) /* GNU property */
           21 
           22 #define PF_X            1               /* Executable */
           23 #define PF_W            2               /* Writable */
           24 #define PF_R            4               /* Readable */
           25 #define PF_MASKOS       0x0ff00000      /* Operating system specific values */
           26 #define PF_MASKPROC     0xf0000000      /* Processor-specific values */
           27 
           28 #define ELFP32SZ        32
           29 #define ELFP64SZ        56
           30 
           31 typedef struct elf32_phdr Elf32_Phdr;
           32 typedef struct elf64_phdr Elf64_Phdr;
           33 
           34 /* Program Header */
           35 struct elf32_phdr {
           36         Elf32_Word p_type;              /* segment type */
           37         Elf32_Off p_offset;             /* segment offset */
           38         Elf32_Addr p_vaddr;             /* virtual address of segment */
           39         Elf32_Addr p_paddr;             /* physical address - ignored? */
           40         Elf32_Word p_filesz;            /* number of bytes in file for seg. */
           41         Elf32_Word p_memsz;             /* number of bytes in mem. for seg. */
           42         Elf32_Word p_flags;             /* flags */
           43         Elf32_Word p_align;             /* memory alignment */
           44 };
           45 
           46 struct elf64_phdr {
           47         Elf64_Word p_type;              /* entry type */
           48         Elf64_Word p_flags;             /* flags */
           49         Elf64_Off p_offset;             /* offset */
           50         Elf64_Addr p_vaddr;             /* virtual address */
           51         Elf64_Addr p_paddr;             /* physical address */
           52         Elf64_Xword p_filesz;           /* file size */
           53         Elf64_Xword p_memsz;            /* memory size */
           54         Elf64_Xword p_align;            /* memory & file alignment */
           55 };