URI: 
       elf.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
       ---
       elf.h (1809B)
       ---
            1 #define EI_NIDENT               16
            2 
            3 typedef struct elf Elf;
            4 typedef struct elfhdr Elfhdr;
            5 typedef struct elfphdr Elfphdr;
            6 typedef struct elfsec Elfsec;
            7 typedef struct elfsym Elfsym;
            8 typedef struct elfpack Elfpack;
            9 typedef struct elfunpack Elfunpack;
           10 typedef struct elfrel Elfrel;
           11 
           12 struct elfhdr {
           13         unsigned char ident[EI_NIDENT];
           14         unsigned short type;
           15         unsigned short machine;
           16         unsigned long version;
           17         unsigned long long entry;
           18         unsigned long long phoff;
           19         unsigned long long shoff;
           20         unsigned long flags;
           21         unsigned short ehsize;
           22 
           23         unsigned short phentsize;
           24         unsigned short phnum;
           25 
           26         unsigned short shentsize;
           27         unsigned short shnum;
           28         unsigned short shstrndx;
           29 };
           30 
           31 struct elfphdr {
           32         unsigned long type;
           33         unsigned long flags;
           34         unsigned long long offset;
           35 
           36         unsigned long long vaddr;
           37         unsigned long long paddr;
           38 
           39         unsigned long long filesz;
           40         unsigned long long memsz;
           41         unsigned long long align;
           42 };
           43 
           44 struct elfsec {
           45         char *name;
           46         char *strtbl;
           47 
           48         unsigned long sh_name;
           49         unsigned long type;
           50         unsigned long long flags;
           51         unsigned long long addr;
           52         unsigned long long offset;
           53         unsigned long long size;
           54         unsigned long link;
           55         unsigned long info;
           56         unsigned long long addralign;
           57         unsigned long long entsize;
           58 };
           59 
           60 struct elfrel {
           61         Elfsym *sym;
           62         Elfsec *sec;
           63 
           64         unsigned long long off;
           65         unsigned long info;
           66         long addend;
           67 };
           68 
           69 struct elfsym {
           70         char *name;
           71         Elfsec *symsec;
           72 
           73         unsigned long st_name;
           74         unsigned char info;
           75         unsigned char other;
           76         unsigned short shndx;
           77         unsigned long long value;
           78         unsigned long long size;
           79 };
           80 
           81 struct elf {
           82         Elfhdr hdr;
           83         Elfphdr *phdr;
           84         int is32;
           85 
           86         Elfsec *secs;
           87         int nsec;
           88         int secstrtbl;
           89 
           90         Elfsym *syms;
           91         int nsym;
           92 
           93         Elfrel *rels;
           94         int nrel;
           95 
           96         Elfpack *pack;
           97         Elfunpack *unpack;
           98 };
           99 
          100 struct arch {
          101         char *name;
          102         int mach;
          103         int endian;
          104         int type;
          105         int is32;
          106 };
          107 
          108 /* globals */
          109 extern struct arch elfarchs[];