Annotation of qemu/roms/ipxe/src/include/elf.h, revision 1.1

1.1     ! root        1: #ifndef ELF_H
        !             2: #define ELF_H
        !             3: 
        !             4: FILE_LICENCE ( GPL2_OR_LATER );
        !             5: 
        !             6: #define EI_NIDENT      16      /* Size of e_ident array. */
        !             7: 
        !             8: /* Values for e_type. */
        !             9: #define ET_NONE                0       /* No file type */
        !            10: #define ET_REL         1       /* Relocatable file */
        !            11: #define ET_EXEC                2       /* Executable file */
        !            12: #define ET_DYN         3       /* Shared object file */
        !            13: #define ET_CORE                4       /* Core file */
        !            14: 
        !            15: /* Values for e_machine (architecute). */
        !            16: #define EM_NONE                 0              /* No machine */
        !            17: #define EM_M32          1              /* AT&T WE 32100 */
        !            18: #define EM_SPARC        2              /* SUN SPARC */
        !            19: #define EM_386          3              /* Intel 80386+ */
        !            20: #define EM_68K          4              /* Motorola m68k family */
        !            21: #define EM_88K          5              /* Motorola m88k family */
        !            22: #define EM_486          6              /* Perhaps disused */
        !            23: #define EM_860          7              /* Intel 80860 */
        !            24: #define EM_MIPS                 8              /* MIPS R3000 big-endian */
        !            25: #define EM_S370                 9              /* IBM System/370 */
        !            26: #define EM_MIPS_RS3_LE 10              /* MIPS R3000 little-endian */
        !            27: 
        !            28: #define EM_PARISC      15              /* HPPA */
        !            29: #define EM_VPP500      17              /* Fujitsu VPP500 */
        !            30: #define EM_SPARC32PLUS 18              /* Sun's "v8plus" */
        !            31: #define EM_960         19              /* Intel 80960 */
        !            32: #define EM_PPC         20              /* PowerPC */
        !            33: #define EM_PPC64       21              /* PowerPC 64-bit */
        !            34: #define EM_S390                22              /* IBM S390 */
        !            35: 
        !            36: #define EM_V800                36              /* NEC V800 series */
        !            37: #define EM_FR20                37              /* Fujitsu FR20 */
        !            38: #define EM_RH32                38              /* TRW RH-32 */
        !            39: #define EM_RCE         39              /* Motorola RCE */
        !            40: #define EM_ARM         40              /* ARM */
        !            41: #define EM_FAKE_ALPHA  41              /* Digital Alpha */
        !            42: #define EM_SH          42              /* Hitachi SH */
        !            43: #define EM_SPARCV9     43              /* SPARC v9 64-bit */
        !            44: #define EM_TRICORE     44              /* Siemens Tricore */
        !            45: #define EM_ARC         45              /* Argonaut RISC Core */
        !            46: #define EM_H8_300      46              /* Hitachi H8/300 */
        !            47: #define EM_H8_300H     47              /* Hitachi H8/300H */
        !            48: #define EM_H8S         48              /* Hitachi H8S */
        !            49: #define EM_H8_500      49              /* Hitachi H8/500 */
        !            50: #define EM_IA_64       50              /* Intel Merced */
        !            51: #define EM_MIPS_X      51              /* Stanford MIPS-X */
        !            52: #define EM_COLDFIRE    52              /* Motorola Coldfire */
        !            53: #define EM_68HC12      53              /* Motorola M68HC12 */
        !            54: #define EM_MMA         54              /* Fujitsu MMA Multimedia Accelerator*/
        !            55: #define EM_PCP         55              /* Siemens PCP */
        !            56: #define EM_NCPU                56              /* Sony nCPU embeeded RISC */
        !            57: #define EM_NDR1                57              /* Denso NDR1 microprocessor */
        !            58: #define EM_STARCORE    58              /* Motorola Start*Core processor */
        !            59: #define EM_ME16                59              /* Toyota ME16 processor */
        !            60: #define EM_ST100       60              /* STMicroelectronic ST100 processor */
        !            61: #define EM_TINYJ       61              /* Advanced Logic Corp. Tinyj emb.fam*/
        !            62: #define EM_X86_64      62              /* AMD x86-64 architecture */
        !            63: #define EM_PDSP                63              /* Sony DSP Processor */
        !            64: 
        !            65: #define EM_FX66                66              /* Siemens FX66 microcontroller */
        !            66: #define EM_ST9PLUS     67              /* STMicroelectronics ST9+ 8/16 mc */
        !            67: #define EM_ST7         68              /* STmicroelectronics ST7 8 bit mc */
        !            68: #define EM_68HC16      69              /* Motorola MC68HC16 microcontroller */
        !            69: #define EM_68HC11      70              /* Motorola MC68HC11 microcontroller */
        !            70: #define EM_68HC08      71              /* Motorola MC68HC08 microcontroller */
        !            71: #define EM_68HC05      72              /* Motorola MC68HC05 microcontroller */
        !            72: #define EM_SVX         73              /* Silicon Graphics SVx */
        !            73: #define EM_AT19                74              /* STMicroelectronics ST19 8 bit mc */
        !            74: #define EM_VAX         75              /* Digital VAX */
        !            75: #define EM_CRIS                76              /* Axis Communications 32-bit embedded processor */
        !            76: #define EM_JAVELIN     77              /* Infineon Technologies 32-bit embedded processor */
        !            77: #define EM_FIREPATH    78              /* Element 14 64-bit DSP Processor */
        !            78: #define EM_ZSP         79              /* LSI Logic 16-bit DSP Processor */
        !            79: #define EM_MMIX                80              /* Donald Knuth's educational 64-bit processor */
        !            80: #define EM_HUANY       81              /* Harvard University machine-independent object files */
        !            81: #define EM_PRISM       82              /* SiTera Prism */
        !            82: #define EM_AVR         83              /* Atmel AVR 8-bit microcontroller */
        !            83: #define EM_FR30                84              /* Fujitsu FR30 */
        !            84: #define EM_D10V                85              /* Mitsubishi D10V */
        !            85: #define EM_D30V                86              /* Mitsubishi D30V */
        !            86: #define EM_V850                87              /* NEC v850 */
        !            87: #define EM_M32R                88              /* Mitsubishi M32R */
        !            88: #define EM_MN10300     89              /* Matsushita MN10300 */
        !            89: #define EM_MN10200     90              /* Matsushita MN10200 */
        !            90: #define EM_PJ          91              /* picoJava */
        !            91: #define EM_OPENRISC    92              /* OpenRISC 32-bit embedded processor */
        !            92: #define EM_ARC_A5      93              /* ARC Cores Tangent-A5 */
        !            93: #define EM_XTENSA      94              /* Tensilica Xtensa Architecture */
        !            94: #define EM_NUM         95
        !            95: 
        !            96: /* Values for p_type. */
        !            97: #define PT_NULL                0       /* Unused entry. */
        !            98: #define PT_LOAD                1       /* Loadable segment. */
        !            99: #define PT_DYNAMIC     2       /* Dynamic linking information segment. */
        !           100: #define PT_INTERP      3       /* Pathname of interpreter. */
        !           101: #define PT_NOTE                4       /* Auxiliary information. */
        !           102: #define PT_SHLIB       5       /* Reserved (not used). */
        !           103: #define PT_PHDR                6       /* Location of program header itself. */
        !           104: 
        !           105: /* Values for p_flags. */
        !           106: #define PF_X           0x1     /* Executable. */
        !           107: #define PF_W           0x2     /* Writable. */
        !           108: #define PF_R           0x4     /* Readable. */
        !           109: 
        !           110: 
        !           111: #define        ELF_PROGRAM_RETURNS_BIT 0x8000000       /* e_flags bit 31 */
        !           112: 
        !           113: #define EI_MAG0                0
        !           114: #define ELFMAG0                0x7f
        !           115: 
        !           116: #define EI_MAG1                1
        !           117: #define ELFMAG1                'E'
        !           118: 
        !           119: #define EI_MAG2                2
        !           120: #define ELFMAG2                'L'
        !           121: 
        !           122: #define EI_MAG3                3
        !           123: #define ELFMAG3                'F'
        !           124: 
        !           125: #define ELFMAG         "\177ELF"
        !           126: #define        SELFMAG         4
        !           127: 
        !           128: #define EI_CLASS       4       /* File class byte index */
        !           129: #define ELFCLASSNONE   0       /* Invalid class */
        !           130: #define ELFCLASS32     1       /* 32-bit objects */
        !           131: #define ELFCLASS64     2       /* 64-bit objects */
        !           132: 
        !           133: #define EI_DATA                5       /* Data encodeing byte index */
        !           134: #define ELFDATANONE    0       /* Invalid data encoding */
        !           135: #define ELFDATA2LSB    1       /* 2's complement little endian */
        !           136: #define ELFDATA2MSB    2       /* 2's complement big endian */
        !           137: 
        !           138: #define EI_VERSION     6       /* File version byte index */
        !           139:                                /* Value must be EV_CURRENT */
        !           140: 
        !           141: #define EV_NONE                0       /* Invalid ELF Version */
        !           142: #define EV_CURRENT     1       /* Current version */
        !           143: 
        !           144: #define ELF32_PHDR_SIZE (8*4)  /* Size of an elf program header */
        !           145: 
        !           146: #ifndef ASSEMBLY
        !           147: 
        !           148: #include <stdint.h>
        !           149: 
        !           150: /*
        !           151:  * ELF definitions common to all 32-bit architectures.
        !           152:  */
        !           153: 
        !           154: typedef uint32_t       Elf32_Addr;
        !           155: typedef uint16_t       Elf32_Half;
        !           156: typedef uint32_t       Elf32_Off;
        !           157: typedef int32_t                Elf32_Sword;
        !           158: typedef uint32_t       Elf32_Word;
        !           159: typedef uint32_t       Elf32_Size;
        !           160: 
        !           161: typedef uint64_t       Elf64_Addr;
        !           162: typedef uint16_t       Elf64_Half;
        !           163: typedef uint64_t       Elf64_Off;
        !           164: typedef int32_t                Elf64_Sword;
        !           165: typedef uint32_t       Elf64_Word;
        !           166: typedef uint64_t       Elf64_Size;
        !           167: 
        !           168: /*
        !           169:  * ELF header.
        !           170:  */
        !           171: typedef struct {
        !           172:        unsigned char   e_ident[EI_NIDENT];     /* File identification. */
        !           173:        Elf32_Half      e_type;         /* File type. */
        !           174:        Elf32_Half      e_machine;      /* Machine architecture. */
        !           175:        Elf32_Word      e_version;      /* ELF format version. */
        !           176:        Elf32_Addr      e_entry;        /* Entry point. */
        !           177:        Elf32_Off       e_phoff;        /* Program header file offset. */
        !           178:        Elf32_Off       e_shoff;        /* Section header file offset. */
        !           179:        Elf32_Word      e_flags;        /* Architecture-specific flags. */
        !           180:        Elf32_Half      e_ehsize;       /* Size of ELF header in bytes. */
        !           181:        Elf32_Half      e_phentsize;    /* Size of program header entry. */
        !           182:        Elf32_Half      e_phnum;        /* Number of program header entries. */
        !           183:        Elf32_Half      e_shentsize;    /* Size of section header entry. */
        !           184:        Elf32_Half      e_shnum;        /* Number of section header entries. */
        !           185:        Elf32_Half      e_shstrndx;     /* Section name strings section. */
        !           186: } Elf32_Ehdr;
        !           187: 
        !           188: typedef struct {
        !           189:        unsigned char   e_ident[EI_NIDENT];     /* File identification. */
        !           190:        Elf64_Half      e_type;         /* File type. */
        !           191:        Elf64_Half      e_machine;      /* Machine architecture. */
        !           192:        Elf64_Word      e_version;      /* ELF format version. */
        !           193:        Elf64_Addr      e_entry;        /* Entry point. */
        !           194:        Elf64_Off       e_phoff;        /* Program header file offset. */
        !           195:        Elf64_Off       e_shoff;        /* Section header file offset. */
        !           196:        Elf64_Word      e_flags;        /* Architecture-specific flags. */
        !           197:        Elf64_Half      e_ehsize;       /* Size of ELF header in bytes. */
        !           198:        Elf64_Half      e_phentsize;    /* Size of program header entry. */
        !           199:        Elf64_Half      e_phnum;        /* Number of program header entries. */
        !           200:        Elf64_Half      e_shentsize;    /* Size of section header entry. */
        !           201:        Elf64_Half      e_shnum;        /* Number of section header entries. */
        !           202:        Elf64_Half      e_shstrndx;     /* Section name strings section. */
        !           203: } Elf64_Ehdr;
        !           204: 
        !           205: /*
        !           206:  * Program header.
        !           207:  */
        !           208: typedef struct {
        !           209:        Elf32_Word      p_type;         /* Entry type. */
        !           210:        Elf32_Off       p_offset;       /* File offset of contents. */
        !           211:        Elf32_Addr      p_vaddr;        /* Virtual address (not used). */
        !           212:        Elf32_Addr      p_paddr;        /* Physical address. */
        !           213:        Elf32_Size      p_filesz;       /* Size of contents in file. */
        !           214:        Elf32_Size      p_memsz;        /* Size of contents in memory. */
        !           215:        Elf32_Word      p_flags;        /* Access permission flags. */
        !           216:        Elf32_Size      p_align;        /* Alignment in memory and file. */
        !           217: } Elf32_Phdr;
        !           218: 
        !           219: typedef struct {
        !           220:        Elf64_Word      p_type;         /* Entry type. */
        !           221:        Elf64_Word      p_flags;        /* Access permission flags. */
        !           222:        Elf64_Off       p_offset;       /* File offset of contents. */
        !           223:        Elf64_Addr      p_vaddr;        /* Virtual address (not used). */
        !           224:        Elf64_Addr      p_paddr;        /* Physical address. */
        !           225:        Elf64_Size      p_filesz;       /* Size of contents in file. */
        !           226:        Elf64_Size      p_memsz;        /* Size of contents in memory. */
        !           227:        Elf64_Size      p_align;        /* Alignment in memory and file. */
        !           228: } Elf64_Phdr;
        !           229: 
        !           230: /* Standardized Elf image notes for booting... The name for all of these is ELFBoot */
        !           231: 
        !           232: #endif /* ASSEMBLY */
        !           233: 
        !           234: #endif /* ELF_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.