Changeset 666f492 in mainline for kernel/generic/include/lib/elf.h


Ignore:
Timestamp:
2010-05-24T18:42:44Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
da1bafb
Parents:
c555155
Message:

cstyle changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/lib/elf.h

    rc555155 r666f492  
    2727 */
    2828
    29 /** @addtogroup generic 
     29/** @addtogroup generic
    3030 * @{
    3131 */
     
    4242 * current ELF version
    4343 */
    44 #define EV_CURRENT      1
     44#define EV_CURRENT  1
    4545
    4646/**
    4747 * ELF types
    4848 */
    49 #define ET_NONE         0       /* No type */
    50 #define ET_REL          1       /* Relocatable file */
    51 #define ET_EXEC         2       /* Executable */
    52 #define ET_DYN          3       /* Shared object */
    53 #define ET_CORE         4       /* Core */
    54 #define ET_LOPROC       0xff00  /* Processor specific */
    55 #define ET_HIPROC       0xffff  /* Processor specific */
    56 
    57 /** 
     49#define ET_NONE    0       /* No type */
     50#define ET_REL     1       /* Relocatable file */
     51#define ET_EXEC    2       /* Executable */
     52#define ET_DYN     3       /* Shared object */
     53#define ET_CORE    4       /* Core */
     54#define ET_LOPROC  0xff00  /* Processor specific */
     55#define ET_HIPROC  0xffff  /* Processor specific */
     56
     57/**
    5858 * ELF machine types
    5959 */
    60 #define EM_NO           0       /* No machine */
    61 #define EM_SPARC        2       /* SPARC */
    62 #define EM_386          3       /* i386 */
    63 #define EM_MIPS         8       /* MIPS RS3000 */
    64 #define EM_MIPS_RS3_LE  10      /* MIPS RS3000 LE */
    65 #define EM_PPC          20      /* PPC32 */
    66 #define EM_PPC64        21      /* PPC64 */
    67 #define EM_ARM          40      /* ARM */
    68 #define EM_SPARCV9      43      /* SPARC64 */
    69 #define EM_IA_64        50      /* IA-64 */
    70 #define EM_X86_64       62      /* AMD64/EMT64 */
     60#define EM_NO           0   /* No machine */
     61#define EM_SPARC        2   /* SPARC */
     62#define EM_386          3   /* i386 */
     63#define EM_MIPS         8   /* MIPS RS3000 */
     64#define EM_MIPS_RS3_LE  10  /* MIPS RS3000 LE */
     65#define EM_PPC          20  /* PPC32 */
     66#define EM_PPC64        21  /* PPC64 */
     67#define EM_ARM          40  /* ARM */
     68#define EM_SPARCV9      43  /* SPARC64 */
     69#define EM_IA_64        50  /* IA-64 */
     70#define EM_X86_64       62  /* AMD64/EMT64 */
    7171
    7272/**
    7373 * ELF identification indexes
    7474 */
    75 #define EI_MAG0         0
    76 #define EI_MAG1         1
    77 #define EI_MAG2         2
    78 #define EI_MAG3         3
    79 #define EI_CLASS        4               /* File class */
    80 #define EI_DATA         5               /* Data encoding */
    81 #define EI_VERSION      6               /* File version */
    82 #define EI_OSABI        7
    83 #define EI_ABIVERSION   8
    84 #define EI_PAD          9               /* Start of padding bytes */
    85 #define EI_NIDENT       16              /* ELF identification table size */
     75#define EI_MAG0        0
     76#define EI_MAG1        1
     77#define EI_MAG2        2
     78#define EI_MAG3        3
     79#define EI_CLASS       4   /* File class */
     80#define EI_DATA        5   /* Data encoding */
     81#define EI_VERSION     6   /* File version */
     82#define EI_OSABI       7
     83#define EI_ABIVERSION  8
     84#define EI_PAD         9   /* Start of padding bytes */
     85#define EI_NIDENT      16  /* ELF identification table size */
    8686
    8787/**
    8888 * ELF magic number
    8989 */
    90 #define ELFMAG0         0x7f
    91 #define ELFMAG1         'E'
    92 #define ELFMAG2         'L'
    93 #define ELFMAG3         'F'
     90#define ELFMAG0  0x7f
     91#define ELFMAG1  'E'
     92#define ELFMAG2  'L'
     93#define ELFMAG3  'F'
    9494
    9595/**
    9696 * ELF file classes
    9797 */
    98 #define ELFCLASSNONE    0
    99 #define ELFCLASS32      1
    100 #define ELFCLASS64      2
     98#define ELFCLASSNONE  0
     99#define ELFCLASS32    1
     100#define ELFCLASS64    2
    101101
    102102/**
    103103 * ELF data encoding types
    104104 */
    105 #define ELFDATANONE     0
    106 #define ELFDATA2LSB     1               /* Least significant byte first (little endian) */
    107 #define ELFDATA2MSB     2               /* Most signigicant byte first (big endian) */
     105#define ELFDATANONE  0
     106#define ELFDATA2LSB  1  /* Least significant byte first (little endian) */
     107#define ELFDATA2MSB  2  /* Most signigicant byte first (big endian) */
    108108
    109109/**
    110110 * ELF error return codes
    111111 */
    112 #define EE_OK                   0       /* No error */
    113 #define EE_INVALID              1       /* Invalid ELF image */
    114 #define EE_MEMORY               2       /* Cannot allocate address space */
    115 #define EE_INCOMPATIBLE         3       /* ELF image is not compatible with current architecture */
    116 #define EE_UNSUPPORTED          4       /* Non-supported ELF (e.g. dynamic ELFs) */
    117 #define EE_LOADER               5       /* The image is actually a program loader */
    118 #define EE_IRRECOVERABLE        6
     112#define EE_OK             0  /* No error */
     113#define EE_INVALID        1  /* Invalid ELF image */
     114#define EE_MEMORY         2  /* Cannot allocate address space */
     115#define EE_INCOMPATIBLE   3  /* ELF image is not compatible with current architecture */
     116#define EE_UNSUPPORTED    4  /* Non-supported ELF (e.g. dynamic ELFs) */
     117#define EE_LOADER         5  /* The image is actually a program loader */
     118#define EE_IRRECOVERABLE  6
    119119
    120120/**
    121121 * ELF section types
    122122 */
    123 #define SHT_NULL                0
    124 #define SHT_PROGBITS            1
    125 #define SHT_SYMTAB              2
    126 #define SHT_STRTAB              3
    127 #define SHT_RELA                4
    128 #define SHT_HASH                5
    129 #define SHT_DYNAMIC             6
    130 #define SHT_NOTE                7
    131 #define SHT_NOBITS              8
    132 #define SHT_REL                 9
    133 #define SHT_SHLIB               10
    134 #define SHT_DYNSYM              11
    135 #define SHT_LOOS                0x60000000
    136 #define SHT_HIOS                0x6fffffff
    137 #define SHT_LOPROC              0x70000000
    138 #define SHT_HIPROC              0x7fffffff
    139 #define SHT_LOUSER              0x80000000
    140 #define SHT_HIUSER              0xffffffff
     123#define SHT_NULL      0
     124#define SHT_PROGBITS  1
     125#define SHT_SYMTAB    2
     126#define SHT_STRTAB    3
     127#define SHT_RELA      4
     128#define SHT_HASH      5
     129#define SHT_DYNAMIC   6
     130#define SHT_NOTE      7
     131#define SHT_NOBITS    8
     132#define SHT_REL       9
     133#define SHT_SHLIB     10
     134#define SHT_DYNSYM    11
     135#define SHT_LOOS      0x60000000
     136#define SHT_HIOS      0x6fffffff
     137#define SHT_LOPROC    0x70000000
     138#define SHT_HIPROC    0x7fffffff
     139#define SHT_LOUSER    0x80000000
     140#define SHT_HIUSER    0xffffffff
    141141
    142142/**
    143143 * ELF section flags
    144144 */
    145 #define SHF_WRITE               0x1
    146 #define SHF_ALLOC               0x2
    147 #define SHF_EXECINSTR           0x4
    148 #define SHF_TLS                 0x400
    149 #define SHF_MASKPROC            0xf0000000
     145#define SHF_WRITE      0x1
     146#define SHF_ALLOC      0x2
     147#define SHF_EXECINSTR  0x4
     148#define SHF_TLS        0x400
     149#define SHF_MASKPROC   0xf0000000
    150150
    151151/**
    152152 * Symbol binding
    153153 */
    154 #define STB_LOCAL               0
    155 #define STB_GLOBAL              1
    156 #define STB_WEAK                2
    157 #define STB_LOPROC              13
    158 #define STB_HIPROC              15
     154#define STB_LOCAL   0
     155#define STB_GLOBAL  1
     156#define STB_WEAK    2
     157#define STB_LOPROC  13
     158#define STB_HIPROC  15
    159159
    160160/**
    161161 * Symbol types
    162162 */
    163 #define STT_NOTYPE              0
    164 #define STT_OBJECT              1
    165 #define STT_FUNC                2
    166 #define STT_SECTION             3
    167 #define STT_FILE                4
    168 #define STT_LOPROC              13
    169 #define STT_HIPROC              15
     163#define STT_NOTYPE   0
     164#define STT_OBJECT   1
     165#define STT_FUNC     2
     166#define STT_SECTION  3
     167#define STT_FILE     4
     168#define STT_LOPROC   13
     169#define STT_HIPROC   15
    170170
    171171/**
    172172 * Program segment types
    173173 */
    174 #define PT_NULL                 0
    175 #define PT_LOAD                 1
    176 #define PT_DYNAMIC              2
    177 #define PT_INTERP               3
    178 #define PT_NOTE                 4
    179 #define PT_SHLIB                5
    180 #define PT_PHDR                 6
    181 #define PT_LOPROC               0x70000000
    182 #define PT_HIPROC               0x7fffffff
     174#define PT_NULL     0
     175#define PT_LOAD     1
     176#define PT_DYNAMIC  2
     177#define PT_INTERP   3
     178#define PT_NOTE     4
     179#define PT_SHLIB    5
     180#define PT_PHDR     6
     181#define PT_LOPROC   0x70000000
     182#define PT_HIPROC   0x7fffffff
    183183
    184184/**
    185185 * Program segment attributes.
    186186 */
    187 #define PF_X    1
    188 #define PF_W    2
    189 #define PF_R    4
     187#define PF_X  1
     188#define PF_W  2
     189#define PF_R  4
    190190
    191191/**
     
    195195 * ELF object file specifications. They are the only types used
    196196 * in ELF header.
     197 *
    197198 */
    198199typedef uint64_t elf_xword;
     
    206207 *
    207208 * These types are specific for 32-bit format.
     209 *
    208210 */
    209211typedef uint32_t elf32_addr;
     
    214216 *
    215217 * These types are specific for 64-bit format.
     218 *
    216219 */
    217220typedef uint64_t elf64_addr;
     
    235238        elf_half e_shstrndx;
    236239};
     240
    237241struct elf64_header {
    238242        uint8_t e_ident[EI_NIDENT];
     
    252256};
    253257
    254 /*
     258/**
    255259 * ELF segment header.
    256260 * Segments headers are also known as program headers.
     
    266270        elf_word p_align;
    267271};
     272
    268273struct elf64_segment_header {
    269274        elf_word p_type;
     
    277282};
    278283
    279 /*
     284/**
    280285 * ELF section header
    281286 */
     
    292297        elf_word sh_entsize;
    293298};
     299
    294300struct elf64_section_header {
    295301        elf_word sh_name;
     
    305311};
    306312
    307 /*
     313/**
    308314 * ELF symbol table entry
    309315 */
     
    316322        elf_half st_shndx;
    317323};
     324
    318325struct elf64_symbol {
    319326        elf_word st_name;
     
    325332};
    326333
    327 #ifdef __32_BITS__ 
     334#ifdef __32_BITS__
    328335typedef struct elf32_header elf_header_t;
    329336typedef struct elf32_segment_header elf_segment_header_t;
     
    331338typedef struct elf32_symbol elf_symbol_t;
    332339#endif
     340
    333341#ifdef __64_BITS__
    334342typedef struct elf64_header elf_header_t;
     
    340348extern const char *elf_error(unsigned int rc);
    341349
    342 /* Interpreter string used to recognize the program loader */
    343 #define ELF_INTERP_ZSTR "kernel"
     350/** Interpreter string used to recognize the program loader */
     351#define ELF_INTERP_ZSTR  "kernel"
    344352#define ELF_INTERP_ZLEN  sizeof(ELF_INTERP_ZSTR)
    345353
Note: See TracChangeset for help on using the changeset viewer.