RetroArch
|
Go to the source code of this file.
Classes | |
struct | elfhdr |
struct | Elf32_Shdr |
struct | elf32_sym |
struct | Elf32_Rel |
struct | Elf32_Rela |
struct | Elf32_Phdr |
struct | Elf32_Dyn |
Macros | |
#define | EI_MAG0 0 /* file ID */ |
#define | EI_MAG1 1 /* file ID */ |
#define | EI_MAG2 2 /* file ID */ |
#define | EI_MAG3 3 /* file ID */ |
#define | EI_CLASS 4 /* file class */ |
#define | EI_DATA 5 /* data encoding */ |
#define | EI_VERSION 6 /* ELF header version */ |
#define | EI_OSABI 7 /* OS/ABI specific ELF extensions */ |
#define | EI_ABIVERSION 8 /* ABI target version */ |
#define | EI_PAD 9 /* start of pad bytes */ |
#define | EI_NIDENT 16 /* Size of e_ident[] */ |
#define | ELFMAG0 0x7f /* e_ident[EI_MAG0] */ |
#define | ELFMAG1 'E' /* e_ident[EI_MAG1] */ |
#define | ELFMAG2 'L' /* e_ident[EI_MAG2] */ |
#define | ELFMAG3 'F' /* e_ident[EI_MAG3] */ |
#define | ELFMAG "\177ELF" /* magic */ |
#define | SELFMAG 4 /* size of magic */ |
#define | ELFCLASSNONE 0 /* invalid */ |
#define | ELFCLASS32 1 /* 32-bit objs */ |
#define | ELFCLASS64 2 /* 64-bit objs */ |
#define | ELFCLASSNUM 3 /* number of classes */ |
#define | ELFDATANONE 0 /* invalid */ |
#define | ELFDATA2LSB 1 /* Little-Endian */ |
#define | ELFDATA2MSB 2 /* Big-Endian */ |
#define | ELFDATANUM 3 /* number of data encode defines */ |
#define | ELFOSABI_NONE 0 /* No extension specified */ |
#define | ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */ |
#define | ELFOSABI_NETBSD 2 /* NetBSD */ |
#define | ELFOSABI_LINUX 3 /* Linux */ |
#define | ELFOSABI_SOLARIS 6 /* Sun Solaris */ |
#define | ELFOSABI_AIX 7 /* AIX */ |
#define | ELFOSABI_IRIX 8 /* IRIX */ |
#define | ELFOSABI_FREEBSD 9 /* FreeBSD */ |
#define | ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */ |
#define | ELFOSABI_MODESTO 11 /* Novell Modesto */ |
#define | ELFOSABI_OPENBSD 12 /* OpenBSD */ |
#define | ELFABIVERSION 0 |
#define | IS_ELF(ehdr) |
#define | ET_NONE 0 /* No file type */ |
#define | ET_REL 1 /* relocatable file */ |
#define | ET_EXEC 2 /* executable file */ |
#define | ET_DYN 3 /* shared object file */ |
#define | ET_CORE 4 /* core file */ |
#define | ET_NUM 5 /* number of types */ |
#define | ET_LOOS 0xfe00 /* reserved range for operating */ |
#define | ET_HIOS 0xfeff /* system specific e_type */ |
#define | ET_LOPROC 0xff00 /* reserved range for processor */ |
#define | ET_HIPROC 0xffff /* specific e_type */ |
#define | EM_NONE 0 /* No Machine */ |
#define | EM_M32 1 /* AT&T WE 32100 */ |
#define | EM_SPARC 2 /* SPARC */ |
#define | EM_386 3 /* Intel 80386 */ |
#define | EM_68K 4 /* Motorola 68000 */ |
#define | EM_88K 5 /* Motorola 88000 */ |
#define | EM_860 7 /* Intel 80860 */ |
#define | EM_MIPS 8 /* MIPS R3000 Big-Endian only */ |
#define | EM_S370 9 /* IBM System/370 Processor */ |
#define | EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ |
#define | EM_PARISC 15 /* HPPA */ |
#define | EM_VPP500 17 /* Fujitsu VPP500 */ |
#define | EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */ |
#define | EM_960 19 /* Intel 80960 */ |
#define | EM_PPC 20 /* PowerPC */ |
#define | EM_PPC64 21 /* 64-bit PowerPC */ |
#define | EM_S390 22 /* IBM System/390 Processor */ |
#define | EM_V800 36 /* NEC V800 */ |
#define | EM_FR20 37 /* Fujitsu FR20 */ |
#define | EM_RH32 38 /* TRW RH-32 */ |
#define | EM_RCE 39 /* Motorola RCE */ |
#define | EM_ARM 40 /* Advanced Risc Machines ARM */ |
#define | EM_ALPHA 41 /* Digital Alpha */ |
#define | EM_SH 42 /* Hitachi SH */ |
#define | EM_SPARCV9 43 /* SPARC Version 9 */ |
#define | EM_TRICORE 44 /* Siemens TriCore embedded processor */ |
#define | EM_ARC 45 /* Argonaut RISC Core */ |
#define | EM_H8_300 46 /* Hitachi H8/300 */ |
#define | EM_H8_300H 47 /* Hitachi H8/300H */ |
#define | EM_H8S 48 /* Hitachi H8S */ |
#define | EM_H8_500 49 /* Hitachi H8/500 */ |
#define | EM_IA_64 50 /* Intel Merced */ |
#define | EM_MIPS_X 51 /* Stanford MIPS-X */ |
#define | EM_COLDFIRE 52 /* Motorola Coldfire */ |
#define | EM_68HC12 53 /* Motorola M68HC12 */ |
#define | EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/ |
#define | EM_PCP 55 /* Siemens PCP */ |
#define | EM_NCPU 56 /* Sony nCPU embedded RISC */ |
#define | EM_NDR1 57 /* Denso NDR1 microprocessor */ |
#define | EM_STARCORE 58 /* Motorola Start*Core processor */ |
#define | EM_ME16 59 /* Toyota ME16 processor */ |
#define | EM_ST100 60 /* STMicroelectronic ST100 processor */ |
#define | EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/ |
#define | EM_X86_64 62 /* AMD x86-64 */ |
#define | EM_PDSP 63 /* Sony DSP Processor */ |
#define | EM_FX66 66 /* Siemens FX66 microcontroller */ |
#define | EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */ |
#define | EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */ |
#define | EM_68HC16 69 /* Motorola MC68HC16 microcontroller */ |
#define | EM_68HC11 70 /* Motorola MC68HC11 microcontroller */ |
#define | EM_68HC08 71 /* Motorola MC68HC08 microcontroller */ |
#define | EM_68HC05 72 /* Motorola MC68HC05 microcontroller */ |
#define | EM_SVX 73 /* Silicon Graphics SVx */ |
#define | EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */ |
#define | EM_VAX 75 /* Digital VAX */ |
#define | EM_CHRIS 76 /* Axis Communications embedded proc. */ |
#define | EM_JAVELIN 77 /* Infineon Technologies emb. proc. */ |
#define | EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */ |
#define | EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */ |
#define | EM_MMIX 80 /* Donald Knuth's edu 64-bit proc. */ |
#define | EM_HUANY 81 /* Harvard University mach-indep objs */ |
#define | EM_PRISM 82 /* SiTera Prism */ |
#define | EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ |
#define | EM_FR30 84 /* Fujitsu FR30 */ |
#define | EM_D10V 85 /* Mitsubishi DV10V */ |
#define | EM_D30V 86 /* Mitsubishi DV30V */ |
#define | EM_V850 87 /* NEC v850 */ |
#define | EM_M32R 88 /* Mitsubishi M32R */ |
#define | EM_MN10300 89 /* Matsushita MN10200 */ |
#define | EM_MN10200 90 /* Matsushita MN10200 */ |
#define | EM_PJ 91 /* picoJava */ |
#define | EM_NUM 92 /* number of machine types */ |
#define | EV_NONE 0 /* Invalid */ |
#define | EV_CURRENT 1 /* Current */ |
#define | EV_NUM 2 /* number of versions */ |
#define | SHN_UNDEF 0 /* undefined */ |
#define | SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */ |
#define | SHN_LOPROC 0xff00 /* reserved range for processor */ |
#define | SHN_HIPROC 0xff1f /* specific section indexes */ |
#define | SHN_LOOS 0xff20 /* reserved range for operating */ |
#define | SHN_HIOS 0xff3f /* specific semantics */ |
#define | SHN_ABS 0xfff1 /* absolute value */ |
#define | SHN_COMMON 0xfff2 /* common symbol */ |
#define | SHN_XINDEX 0xffff /* Index is an extra table */ |
#define | SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */ |
#define | SHT_NULL 0 /* inactive */ |
#define | SHT_PROGBITS 1 /* program defined information */ |
#define | SHT_SYMTAB 2 /* symbol table section */ |
#define | SHT_STRTAB 3 /* string table section */ |
#define | SHT_RELA 4 /* relocation section with addends*/ |
#define | SHT_HASH 5 /* symbol hash table section */ |
#define | SHT_DYNAMIC 6 /* dynamic section */ |
#define | SHT_NOTE 7 /* note section */ |
#define | SHT_NOBITS 8 /* no space section */ |
#define | SHT_REL 9 /* relation section without addends */ |
#define | SHT_SHLIB 10 /* reserved - purpose unknown */ |
#define | SHT_DYNSYM 11 /* dynamic symbol table section */ |
#define | SHT_INIT_ARRAY 14 /* Array of constructors */ |
#define | SHT_FINI_ARRAY 15 /* Array of destructors */ |
#define | SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ |
#define | SHT_GROUP 17 /* Section group */ |
#define | SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ |
#define | SHT_NUM 19 /* number of section types */ |
#define | SHT_LOOS 0x60000000 /* Start OS-specific */ |
#define | SHT_HIOS 0x6fffffff /* End OS-specific */ |
#define | SHT_LOPROC 0x70000000 /* reserved range for processor */ |
#define | SHT_HIPROC 0x7fffffff /* specific section header types */ |
#define | SHT_LOUSER 0x80000000 /* reserved range for application */ |
#define | SHT_HIUSER 0xffffffff /* specific indexes */ |
#define | ELF_BSS ".bss" /* uninitialized data */ |
#define | ELF_COMMENT ".comment" /* version control information */ |
#define | ELF_DATA ".data" /* initialized data */ |
#define | ELF_DATA1 ".data1" /* initialized data */ |
#define | ELF_DEBUG ".debug" /* debug */ |
#define | ELF_DYNAMIC ".dynamic" /* dynamic linking information */ |
#define | ELF_DYNSTR ".dynstr" /* dynamic string table */ |
#define | ELF_DYNSYM ".dynsym" /* dynamic symbol table */ |
#define | ELF_FINI ".fini" /* termination code */ |
#define | ELF_FINI_ARRAY ".fini_array" /* Array of destructors */ |
#define | ELF_GOT ".got" /* global offset table */ |
#define | ELF_HASH ".hash" /* symbol hash table */ |
#define | ELF_INIT ".init" /* initialization code */ |
#define | ELF_INIT_ARRAY ".init_array" /* Array of constuctors */ |
#define | ELF_INTERP ".interp" /* Pathname of program interpreter */ |
#define | ELF_LINE ".line" /* Symbolic line numnber information */ |
#define | ELF_NOTE ".note" /* Contains note section */ |
#define | ELF_PLT ".plt" /* Procedure linkage table */ |
#define | ELF_PREINIT_ARRAY ".preinit_array" /* Array of pre-constructors */ |
#define | ELF_REL_DATA ".rel.data" /* relocation data */ |
#define | ELF_REL_FINI ".rel.fini" /* relocation termination code */ |
#define | ELF_REL_INIT ".rel.init" /* relocation initialization code */ |
#define | ELF_REL_DYN ".rel.dyn" /* relocaltion dynamic link info */ |
#define | ELF_REL_RODATA ".rel.rodata" /* relocation read-only data */ |
#define | ELF_REL_TEXT ".rel.text" /* relocation code */ |
#define | ELF_RODATA ".rodata" /* read-only data */ |
#define | ELF_RODATA1 ".rodata1" /* read-only data */ |
#define | ELF_SHSTRTAB ".shstrtab" /* section header string table */ |
#define | ELF_STRTAB ".strtab" /* string table */ |
#define | ELF_SYMTAB ".symtab" /* symbol table */ |
#define | ELF_SYMTAB_SHNDX ".symtab_shndx"/* symbol table section index */ |
#define | ELF_TBSS ".tbss" /* thread local uninit data */ |
#define | ELF_TDATA ".tdata" /* thread local init data */ |
#define | ELF_TDATA1 ".tdata1" /* thread local init data */ |
#define | ELF_TEXT ".text" /* code */ |
#define | SHF_WRITE 0x1 /* Writable */ |
#define | SHF_ALLOC 0x2 /* occupies memory */ |
#define | SHF_EXECINSTR 0x4 /* executable */ |
#define | SHF_MERGE 0x10 /* Might be merged */ |
#define | SHF_STRINGS 0x20 /* Contains NULL terminated strings */ |
#define | SHF_INFO_LINK 0x40 /* sh_info contains SHT index */ |
#define | SHF_LINK_ORDER 0x80 /* Preserve order after combining*/ |
#define | SHF_OS_NONCONFORMING 0x100 /* Non-standard OS specific handling */ |
#define | SHF_GROUP 0x200 /* Member of section group */ |
#define | SHF_TLS 0x400 /* Thread local storage */ |
#define | SHF_MASKOS 0x0ff00000 /* OS specific */ |
#define | SHF_MASKPROC 0xf0000000 /* reserved bits for processor */ |
#define | GRP_COMDAT 0x1 /* COMDAT group */ |
#define | GRP_MASKOS 0x0ff00000 /* Mask OS specific flags */ |
#define | GRP_MASKPROC 0xf0000000 /* Mask processor specific flags */ |
#define | STN_UNDEF 0 /* undefined */ |
#define | ELF32_ST_BIND(x) ((x) >> 4) |
#define | ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf) |
#define | ELF32_ST_INFO(b, t) (((b) << 4) + ((t) & 0xf)) |
#define | ELF32_ST_VISIBILITY(x) ((x) & 0x3) |
#define | STB_LOCAL 0 /* Local symbol */ |
#define | STB_GLOBAL 1 /* Global symbol */ |
#define | STB_WEAK 2 /* like global - lower precedence */ |
#define | STB_NUM 3 /* number of symbol bindings */ |
#define | STB_LOOS 10 /* reserved range for operating */ |
#define | STB_HIOS 12 /* system specific symbol bindings */ |
#define | STB_LOPROC 13 /* reserved range for processor */ |
#define | STB_HIPROC 15 /* specific symbol bindings */ |
#define | STT_NOTYPE 0 /* not specified */ |
#define | STT_OBJECT 1 /* data object */ |
#define | STT_FUNC 2 /* function */ |
#define | STT_SECTION 3 /* section */ |
#define | STT_FILE 4 /* file */ |
#define | STT_NUM 5 /* number of symbol types */ |
#define | STT_TLS 6 /* Thread local storage symbol */ |
#define | STT_LOOS 10 /* reserved range for operating */ |
#define | STT_HIOS 12 /* system specific symbol types */ |
#define | STT_LOPROC 13 /* reserved range for processor */ |
#define | STT_HIPROC 15 /* specific symbol types */ |
#define | STV_DEFAULT 0 /* Normal visibility rules */ |
#define | STV_INTERNAL 1 /* Processor specific hidden class */ |
#define | STV_HIDDEN 2 /* Symbol unavailable in other mods */ |
#define | STV_PROTECTED 3 /* Not preemptible, not exported */ |
#define | ELF32_R_SYM(i) ((i) >> 8) |
#define | ELF32_R_TYPE(i) ((unsigned char) (i)) |
#define | ELF32_R_INFO(s, t) (((s) << 8) + (unsigned char)(t)) |
#define | PT_NULL 0 /* unused */ |
#define | PT_LOAD 1 /* loadable segment */ |
#define | PT_DYNAMIC 2 /* dynamic linking section */ |
#define | PT_INTERP 3 /* the RTLD */ |
#define | PT_NOTE 4 /* auxiliary information */ |
#define | PT_SHLIB 5 /* reserved - purpose undefined */ |
#define | PT_PHDR 6 /* program header */ |
#define | PT_TLS 7 /* Thread local storage template */ |
#define | PT_NUM 8 /* Number of segment types */ |
#define | PT_LOOS 0x60000000 /* reserved range for operating */ |
#define | PT_HIOS 0x6fffffff /* system specific segment types */ |
#define | PT_LOPROC 0x70000000 /* reserved range for processor */ |
#define | PT_HIPROC 0x7fffffff /* specific segment types */ |
#define | PF_X 0x1 /* Executable */ |
#define | PF_W 0x2 /* Writable */ |
#define | PF_R 0x4 /* Readable */ |
#define | PF_MASKOS 0x0ff00000 /* OS specific segment flags */ |
#define | PF_MASKPROC 0xf0000000 /* reserved bits for processor */ |
#define | DT_NULL 0 /* marks end of _DYNAMIC array */ |
#define | DT_NEEDED 1 /* string table offset of needed lib */ |
#define | DT_PLTRELSZ 2 /* size of relocation entries in PLT */ |
#define | DT_PLTGOT 3 /* address PLT/GOT */ |
#define | DT_HASH 4 /* address of symbol hash table */ |
#define | DT_STRTAB 5 /* address of string table */ |
#define | DT_SYMTAB 6 /* address of symbol table */ |
#define | DT_RELA 7 /* address of relocation table */ |
#define | DT_RELASZ 8 /* size of relocation table */ |
#define | DT_RELAENT 9 /* size of relocation entry */ |
#define | DT_STRSZ 10 /* size of string table */ |
#define | DT_SYMENT 11 /* size of symbol table entry */ |
#define | DT_INIT 12 /* address of initialization func. */ |
#define | DT_FINI 13 /* address of termination function */ |
#define | DT_SONAME 14 /* string table offset of shared obj */ |
#define | DT_RPATH 15 /* string table offset of library search path */ |
#define | DT_SYMBOLIC 16 /* start sym search in shared obj. */ |
#define | DT_REL 17 /* address of rel. tbl. w addends */ |
#define | DT_RELSZ 18 /* size of DT_REL relocation table */ |
#define | DT_RELENT 19 /* size of DT_REL relocation entry */ |
#define | DT_PLTREL 20 /* PLT referenced relocation entry */ |
#define | DT_DEBUG 21 /* bugger */ |
#define | DT_TEXTREL 22 /* Allow rel. mod. to unwritable seg */ |
#define | DT_JMPREL 23 /* add. of PLT's relocation entries */ |
#define | DT_BIND_NOW 24 /* Process relocations of object */ |
#define | DT_INIT_ARRAY 25 /* Array with addresses of init fct */ |
#define | DT_FINI_ARRAY 26 /* Array with addresses of fini fct */ |
#define | DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */ |
#define | DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */ |
#define | DT_RUNPATH 29 /* Library search path */ |
#define | DT_FLAGS 30 /* Flags for the object being loaded */ |
#define | DT_ENCODING 32 /* Start of encoded range */ |
#define | DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/ |
#define | DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */ |
#define | DT_NUM 34 /* Number used. */ |
#define | DT_LOOS 0x60000000 /* reserved range for OS */ |
#define | DT_HIOS 0x6fffffff /* specific dynamic array tags */ |
#define | DT_LOPROC 0x70000000 /* reserved range for processor */ |
#define | DT_HIPROC 0x7fffffff /* specific dynamic array tags */ |
#define | DF_ORIGIN 0x01 /* Object may use DF_ORIGIN */ |
#define | DF_SYMBOLIC 0x02 /* Symbol resolutions starts here */ |
#define | DF_TEXTRE 0x04 /* Object contains text relocations */ |
#define | DF_BIND_NOW 0x08 /* No lazy binding for this object */ |
#define | DF_STATIC_TLS 0x10 /* Static thread local storage */ |
#define | ELF_TARG_VER 1 /* The ver for which this code is intended */ |
#define | EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */ |
#define | EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/ |
#define | EF_PPC_RELOCATABLE_LIB |
#define | R_PPC_NONE 0 |
#define | R_PPC_ADDR32 1 /* 32bit absolute address */ |
#define | R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */ |
#define | R_PPC_ADDR16 3 /* 16bit absolute address */ |
#define | R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */ |
#define | R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */ |
#define | R_PPC_ADDR16_HA 6 /* adjusted high 16bit */ |
#define | R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */ |
#define | R_PPC_ADDR14_BRTAKEN 8 |
#define | R_PPC_ADDR14_BRNTAKEN 9 |
#define | R_PPC_REL24 10 /* PC relative 26 bit */ |
#define | R_PPC_REL14 11 /* PC relative 16 bit */ |
#define | R_PPC_REL14_BRTAKEN 12 |
#define | R_PPC_REL14_BRNTAKEN 13 |
#define | R_PPC_GOT16 14 |
#define | R_PPC_GOT16_LO 15 |
#define | R_PPC_GOT16_HI 16 |
#define | R_PPC_GOT16_HA 17 |
#define | R_PPC_PLTREL24 18 |
#define | R_PPC_COPY 19 |
#define | R_PPC_GLOB_DAT 20 |
#define | R_PPC_JMP_SLOT 21 |
#define | R_PPC_RELATIVE 22 |
#define | R_PPC_LOCAL24PC 23 |
#define | R_PPC_UADDR32 24 |
#define | R_PPC_UADDR16 25 |
#define | R_PPC_REL32 26 |
#define | R_PPC_PLT32 27 |
#define | R_PPC_PLTREL32 28 |
#define | R_PPC_PLT16_LO 29 |
#define | R_PPC_PLT16_HI 30 |
#define | R_PPC_PLT16_HA 31 |
#define | R_PPC_SDAREL16 32 |
#define | R_PPC_SECTOFF 33 |
#define | R_PPC_SECTOFF_LO 34 |
#define | R_PPC_SECTOFF_HI 35 |
#define | R_PPC_SECTOFF_HA 36 |
#define | R_PPC_NUM 37 |
#define | R_PPC_EMB_NADDR32 101 |
#define | R_PPC_EMB_NADDR16 102 |
#define | R_PPC_EMB_NADDR16_LO 103 |
#define | R_PPC_EMB_NADDR16_HI 104 |
#define | R_PPC_EMB_NADDR16_HA 105 |
#define | R_PPC_EMB_SDAI16 106 |
#define | R_PPC_EMB_SDA2I16 107 |
#define | R_PPC_EMB_SDA2REL 108 |
#define | R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */ |
#define | R_PPC_EMB_MRKREF 110 |
#define | R_PPC_EMB_RELSEC16 111 |
#define | R_PPC_EMB_RELST_LO 112 |
#define | R_PPC_EMB_RELST_HI 113 |
#define | R_PPC_EMB_RELST_HA 114 |
#define | R_PPC_EMB_BIT_FLD 115 |
#define | R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */ |
#define | R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */ |
#define | R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */ |
#define | R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */ |
#define | R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */ |
#define | R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */ |
#define | R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */ |
#define | R_PPC_TOC16 255 |
Typedefs | |
typedef uint32_t | Elf32_Addr |
typedef uint32_t | Elf32_Off |
typedef int32_t | Elf32_Sword |
typedef uint32_t | Elf32_Word |
typedef uint16_t | Elf32_Half |
typedef struct elfhdr | Elf32_Ehdr |
typedef struct elf32_sym | Elf32_Sym |
Functions | |
unsigned long | elf_hash (const unsigned char *name) |
Variables | |
Elf32_Dyn | _DYNAMIC [] |
#define DF_BIND_NOW 0x08 /* No lazy binding for this object */ |
#define DF_ORIGIN 0x01 /* Object may use DF_ORIGIN */ |
#define DF_STATIC_TLS 0x10 /* Static thread local storage */ |
#define DF_SYMBOLIC 0x02 /* Symbol resolutions starts here */ |
#define DF_TEXTRE 0x04 /* Object contains text relocations */ |
#define DT_BIND_NOW 24 /* Process relocations of object */ |
#define DT_DEBUG 21 /* bugger */ |
#define DT_ENCODING 32 /* Start of encoded range */ |
#define DT_FINI 13 /* address of termination function */ |
#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */ |
#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */ |
#define DT_HIOS 0x6fffffff /* specific dynamic array tags */ |
#define DT_HIPROC 0x7fffffff /* specific dynamic array tags */ |
#define DT_INIT 12 /* address of initialization func. */ |
#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */ |
#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */ |
#define DT_JMPREL 23 /* add. of PLT's relocation entries */ |
#define DT_LOOS 0x60000000 /* reserved range for OS */ |
#define DT_LOPROC 0x70000000 /* reserved range for processor */ |
#define DT_NUM 34 /* Number used. */ |
#define DT_PLTGOT 3 /* address PLT/GOT */ |
#define DT_PLTREL 20 /* PLT referenced relocation entry */ |
#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/ |
#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */ |
#define DT_RELAENT 9 /* size of relocation entry */ |
#define DT_RUNPATH 29 /* Library search path */ |
#define DT_TEXTREL 22 /* Allow rel. mod. to unwritable seg */ |
#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */ |
#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/ |
#define EF_PPC_RELOCATABLE_LIB |
#define EI_ABIVERSION 8 /* ABI target version */ |
#define EI_CLASS 4 /* file class */ |
#define EI_MAG0 0 /* file ID */ |
#define EI_MAG1 1 /* file ID */ |
#define EI_MAG2 2 /* file ID */ |
#define EI_MAG3 3 /* file ID */ |
#define EI_NIDENT 16 /* Size of e_ident[] */ |
#define EI_OSABI 7 /* OS/ABI specific ELF extensions */ |
#define EI_PAD 9 /* start of pad bytes */ |
#define EI_VERSION 6 /* ELF header version */ |
#define ELF32_R_SYM | ( | i | ) | ((i) >> 8) |
#define ELF32_R_TYPE | ( | i | ) | ((unsigned char) (i)) |
#define ELF_BSS ".bss" /* uninitialized data */ |
#define ELF_COMMENT ".comment" /* version control information */ |
#define ELF_DATA ".data" /* initialized data */ |
#define ELF_DATA1 ".data1" /* initialized data */ |
#define ELF_DEBUG ".debug" /* debug */ |
#define ELF_DYNAMIC ".dynamic" /* dynamic linking information */ |
#define ELF_DYNSYM ".dynsym" /* dynamic symbol table */ |
#define ELF_FINI ".fini" /* termination code */ |
#define ELF_FINI_ARRAY ".fini_array" /* Array of destructors */ |
#define ELF_HASH ".hash" /* symbol hash table */ |
#define ELF_INIT ".init" /* initialization code */ |
#define ELF_INIT_ARRAY ".init_array" /* Array of constuctors */ |
#define ELF_INTERP ".interp" /* Pathname of program interpreter */ |
#define ELF_LINE ".line" /* Symbolic line numnber information */ |
#define ELF_NOTE ".note" /* Contains note section */ |
#define ELF_PLT ".plt" /* Procedure linkage table */ |
#define ELF_PREINIT_ARRAY ".preinit_array" /* Array of pre-constructors */ |
#define ELF_REL_DATA ".rel.data" /* relocation data */ |
#define ELF_REL_FINI ".rel.fini" /* relocation termination code */ |
#define ELF_REL_INIT ".rel.init" /* relocation initialization code */ |
#define ELF_REL_TEXT ".rel.text" /* relocation code */ |
#define ELF_RODATA ".rodata" /* read-only data */ |
#define ELF_RODATA1 ".rodata1" /* read-only data */ |
#define ELF_STRTAB ".strtab" /* string table */ |
#define ELF_SYMTAB ".symtab" /* symbol table */ |
#define ELF_TARG_VER 1 /* The ver for which this code is intended */ |
#define ELF_TEXT ".text" /* code */ |
#define ELFABIVERSION 0 |
#define ELFCLASS32 1 /* 32-bit objs */ |
#define ELFCLASS64 2 /* 64-bit objs */ |
#define ELFCLASSNONE 0 /* invalid */ |
#define ELFCLASSNUM 3 /* number of classes */ |
#define ELFDATA2LSB 1 /* Little-Endian */ |
#define ELFDATA2MSB 2 /* Big-Endian */ |
#define ELFDATANONE 0 /* invalid */ |
#define ELFMAG "\177ELF" /* magic */ |
#define ELFMAG0 0x7f /* e_ident[EI_MAG0] */ |
#define ELFMAG1 'E' /* e_ident[EI_MAG1] */ |
#define ELFOSABI_AIX 7 /* AIX */ |
#define ELFOSABI_FREEBSD 9 /* FreeBSD */ |
#define ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */ |
#define ELFOSABI_IRIX 8 /* IRIX */ |
#define ELFOSABI_LINUX 3 /* Linux */ |
#define ELFOSABI_MODESTO 11 /* Novell Modesto */ |
#define ELFOSABI_NETBSD 2 /* NetBSD */ |
#define ELFOSABI_NONE 0 /* No extension specified */ |
#define ELFOSABI_OPENBSD 12 /* OpenBSD */ |
#define ELFOSABI_SOLARIS 6 /* Sun Solaris */ |
#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */ |
#define EM_386 3 /* Intel 80386 */ |
#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */ |
#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */ |
#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */ |
#define EM_68HC12 53 /* Motorola M68HC12 */ |
#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */ |
#define EM_68K 4 /* Motorola 68000 */ |
#define EM_860 7 /* Intel 80860 */ |
#define EM_88K 5 /* Motorola 88000 */ |
#define EM_960 19 /* Intel 80960 */ |
#define EM_ALPHA 41 /* Digital Alpha */ |
#define EM_ARC 45 /* Argonaut RISC Core */ |
#define EM_ARM 40 /* Advanced Risc Machines ARM */ |
#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */ |
#define EM_CHRIS 76 /* Axis Communications embedded proc. */ |
#define EM_COLDFIRE 52 /* Motorola Coldfire */ |
#define EM_D10V 85 /* Mitsubishi DV10V */ |
#define EM_D30V 86 /* Mitsubishi DV30V */ |
#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */ |
#define EM_FR20 37 /* Fujitsu FR20 */ |
#define EM_FR30 84 /* Fujitsu FR30 */ |
#define EM_FX66 66 /* Siemens FX66 microcontroller */ |
#define EM_H8_300 46 /* Hitachi H8/300 */ |
#define EM_H8_300H 47 /* Hitachi H8/300H */ |
#define EM_H8_500 49 /* Hitachi H8/500 */ |
#define EM_H8S 48 /* Hitachi H8S */ |
#define EM_HUANY 81 /* Harvard University mach-indep objs */ |
#define EM_IA_64 50 /* Intel Merced */ |
#define EM_JAVELIN 77 /* Infineon Technologies emb. proc. */ |
#define EM_M32 1 /* AT&T WE 32100 */ |
#define EM_M32R 88 /* Mitsubishi M32R */ |
#define EM_ME16 59 /* Toyota ME16 processor */ |
#define EM_MIPS 8 /* MIPS R3000 Big-Endian only */ |
#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ |
#define EM_MIPS_X 51 /* Stanford MIPS-X */ |
#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/ |
#define EM_MMIX 80 /* Donald Knuth's edu 64-bit proc. */ |
#define EM_MN10200 90 /* Matsushita MN10200 */ |
#define EM_MN10300 89 /* Matsushita MN10200 */ |
#define EM_NCPU 56 /* Sony nCPU embedded RISC */ |
#define EM_NDR1 57 /* Denso NDR1 microprocessor */ |
#define EM_NONE 0 /* No Machine */ |
#define EM_PARISC 15 /* HPPA */ |
#define EM_PCP 55 /* Siemens PCP */ |
#define EM_PDSP 63 /* Sony DSP Processor */ |
#define EM_PJ 91 /* picoJava */ |
#define EM_PPC 20 /* PowerPC */ |
#define EM_PPC64 21 /* 64-bit PowerPC */ |
#define EM_PRISM 82 /* SiTera Prism */ |
#define EM_RCE 39 /* Motorola RCE */ |
#define EM_RH32 38 /* TRW RH-32 */ |
#define EM_S370 9 /* IBM System/370 Processor */ |
#define EM_S390 22 /* IBM System/390 Processor */ |
#define EM_SH 42 /* Hitachi SH */ |
#define EM_SPARC 2 /* SPARC */ |
#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */ |
#define EM_SPARCV9 43 /* SPARC Version 9 */ |
#define EM_ST100 60 /* STMicroelectronic ST100 processor */ |
#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */ |
#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */ |
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */ |
#define EM_STARCORE 58 /* Motorola Start*Core processor */ |
#define EM_SVX 73 /* Silicon Graphics SVx */ |
#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/ |
#define EM_TRICORE 44 /* Siemens TriCore embedded processor */ |
#define EM_V800 36 /* NEC V800 */ |
#define EM_V850 87 /* NEC v850 */ |
#define EM_VAX 75 /* Digital VAX */ |
#define EM_VPP500 17 /* Fujitsu VPP500 */ |
#define EM_X86_64 62 /* AMD x86-64 */ |
#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */ |
#define ET_EXEC 2 /* executable file */ |
#define ET_HIOS 0xfeff /* system specific e_type */ |
#define ET_HIPROC 0xffff /* specific e_type */ |
#define ET_LOOS 0xfe00 /* reserved range for operating */ |
#define ET_LOPROC 0xff00 /* reserved range for processor */ |
#define ET_REL 1 /* relocatable file */ |
#define EV_CURRENT 1 /* Current */ |
#define EV_NONE 0 /* Invalid */ |
#define EV_NUM 2 /* number of versions */ |
#define GRP_COMDAT 0x1 /* COMDAT group */ |
#define GRP_MASKOS 0x0ff00000 /* Mask OS specific flags */ |
#define GRP_MASKPROC 0xf0000000 /* Mask processor specific flags */ |
#define IS_ELF | ( | ehdr | ) |
#define PF_MASKOS 0x0ff00000 /* OS specific segment flags */ |
#define PF_MASKPROC 0xf0000000 /* reserved bits for processor */ |
#define PF_R 0x4 /* Readable */ |
#define PF_W 0x2 /* Writable */ |
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d ®2 endm macro vzip8 reg2 vzip d d ®2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge PF_X 0x1 /* Executable */ |
#define PT_DYNAMIC 2 /* dynamic linking section */ |
#define PT_HIOS 0x6fffffff /* system specific segment types */ |
#define PT_HIPROC 0x7fffffff /* specific segment types */ |
#define PT_INTERP 3 /* the RTLD */ |
#define PT_LOAD 1 /* loadable segment */ |
#define PT_LOOS 0x60000000 /* reserved range for operating */ |
#define PT_LOPROC 0x70000000 /* reserved range for processor */ |
#define PT_NOTE 4 /* auxiliary information */ |
#define PT_NULL 0 /* unused */ |
#define PT_NUM 8 /* Number of segment types */ |
#define PT_PHDR 6 /* program header */ |
#define PT_SHLIB 5 /* reserved - purpose undefined */ |
#define PT_TLS 7 /* Thread local storage template */ |
#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */ |
#define R_PPC_ADDR14_BRNTAKEN 9 |
#define R_PPC_ADDR14_BRTAKEN 8 |
#define R_PPC_ADDR16 3 /* 16bit absolute address */ |
#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */ |
#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */ |
#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */ |
#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */ |
#define R_PPC_ADDR32 1 /* 32bit absolute address */ |
#define R_PPC_COPY 19 |
#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */ |
#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */ |
#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */ |
#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */ |
#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */ |
#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */ |
#define R_PPC_EMB_BIT_FLD 115 |
#define R_PPC_EMB_MRKREF 110 |
#define R_PPC_EMB_NADDR16 102 |
#define R_PPC_EMB_NADDR16_HA 105 |
#define R_PPC_EMB_NADDR16_HI 104 |
#define R_PPC_EMB_NADDR16_LO 103 |
#define R_PPC_EMB_NADDR32 101 |
#define R_PPC_EMB_RELSEC16 111 |
#define R_PPC_EMB_RELST_HA 114 |
#define R_PPC_EMB_RELST_HI 113 |
#define R_PPC_EMB_RELST_LO 112 |
#define R_PPC_EMB_SDA2I16 107 |
#define R_PPC_EMB_SDA2REL 108 |
#define R_PPC_EMB_SDAI16 106 |
#define R_PPC_GLOB_DAT 20 |
#define R_PPC_GOT16 14 |
#define R_PPC_GOT16_HA 17 |
#define R_PPC_GOT16_HI 16 |
#define R_PPC_GOT16_LO 15 |
#define R_PPC_JMP_SLOT 21 |
#define R_PPC_LOCAL24PC 23 |
#define R_PPC_NONE 0 |
#define R_PPC_NUM 37 |
#define R_PPC_PLT16_HA 31 |
#define R_PPC_PLT16_HI 30 |
#define R_PPC_PLT16_LO 29 |
#define R_PPC_PLT32 27 |
#define R_PPC_PLTREL24 18 |
#define R_PPC_PLTREL32 28 |
#define R_PPC_REL14 11 /* PC relative 16 bit */ |
#define R_PPC_REL14_BRNTAKEN 13 |
#define R_PPC_REL14_BRTAKEN 12 |
#define R_PPC_REL24 10 /* PC relative 26 bit */ |
#define R_PPC_REL32 26 |
#define R_PPC_RELATIVE 22 |
#define R_PPC_SDAREL16 32 |
#define R_PPC_SECTOFF 33 |
#define R_PPC_SECTOFF_HA 36 |
#define R_PPC_SECTOFF_HI 35 |
#define R_PPC_SECTOFF_LO 34 |
#define R_PPC_TOC16 255 |
#define R_PPC_UADDR16 25 |
#define R_PPC_UADDR32 24 |
#define SELFMAG 4 /* size of magic */ |
#define SHF_ALLOC 0x2 /* occupies memory */ |
#define SHF_EXECINSTR 0x4 /* executable */ |
#define SHF_GROUP 0x200 /* Member of section group */ |
#define SHF_INFO_LINK 0x40 /* sh_info contains SHT index */ |
#define SHF_LINK_ORDER 0x80 /* Preserve order after combining*/ |
#define SHF_MASKOS 0x0ff00000 /* OS specific */ |
#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */ |
#define SHF_MERGE 0x10 /* Might be merged */ |
#define SHF_OS_NONCONFORMING 0x100 /* Non-standard OS specific handling */ |
#define SHF_STRINGS 0x20 /* Contains NULL terminated strings */ |
#define SHF_TLS 0x400 /* Thread local storage */ |
#define SHF_WRITE 0x1 /* Writable */ |
#define SHN_ABS 0xfff1 /* absolute value */ |
#define SHN_COMMON 0xfff2 /* common symbol */ |
#define SHN_HIOS 0xff3f /* specific semantics */ |
#define SHN_HIPROC 0xff1f /* specific section indexes */ |
#define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */ |
#define SHN_LOOS 0xff20 /* reserved range for operating */ |
#define SHN_LOPROC 0xff00 /* reserved range for processor */ |
#define SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */ |
#define SHN_UNDEF 0 /* undefined */ |
#define SHN_XINDEX 0xffff /* Index is an extra table */ |
#define SHT_DYNAMIC 6 /* dynamic section */ |
#define SHT_DYNSYM 11 /* dynamic symbol table section */ |
#define SHT_FINI_ARRAY 15 /* Array of destructors */ |
#define SHT_GROUP 17 /* Section group */ |
#define SHT_HASH 5 /* symbol hash table section */ |
#define SHT_HIOS 0x6fffffff /* End OS-specific */ |
#define SHT_HIPROC 0x7fffffff /* specific section header types */ |
#define SHT_HIUSER 0xffffffff /* specific indexes */ |
#define SHT_INIT_ARRAY 14 /* Array of constructors */ |
#define SHT_LOOS 0x60000000 /* Start OS-specific */ |
#define SHT_LOPROC 0x70000000 /* reserved range for processor */ |
#define SHT_LOUSER 0x80000000 /* reserved range for application */ |
#define SHT_NOBITS 8 /* no space section */ |
#define SHT_NOTE 7 /* note section */ |
#define SHT_NULL 0 /* inactive */ |
#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */ |
#define SHT_PROGBITS 1 /* program defined information */ |
#define SHT_REL 9 /* relation section without addends */ |
#define SHT_RELA 4 /* relocation section with addends*/ |
#define SHT_SHLIB 10 /* reserved - purpose unknown */ |
#define SHT_SYMTAB 2 /* symbol table section */ |
#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */ |
#define STB_GLOBAL 1 /* Global symbol */ |
#define STB_HIOS 12 /* system specific symbol bindings */ |
#define STB_HIPROC 15 /* specific symbol bindings */ |
#define STB_LOCAL 0 /* Local symbol */ |
#define STB_NUM 3 /* number of symbol bindings */ |
#define STB_WEAK 2 /* like global - lower precedence */ |
#define STN_UNDEF 0 /* undefined */ |
#define STT_FILE 4 /* file */ |
#define STT_FUNC 2 /* function */ |
#define STT_HIOS 12 /* system specific symbol types */ |
#define STT_HIPROC 15 /* specific symbol types */ |
#define STT_NOTYPE 0 /* not specified */ |
#define STT_SECTION 3 /* section */ |
#define STT_TLS 6 /* Thread local storage symbol */ |
#define STV_DEFAULT 0 /* Normal visibility rules */ |
#define STV_INTERNAL 1 /* Processor specific hidden class */ |
#define STV_PROTECTED 3 /* Not preemptible, not exported */ |
typedef uint32_t Elf32_Addr |
typedef struct elfhdr Elf32_Ehdr |
typedef uint16_t Elf32_Half |
typedef int32_t Elf32_Sword |
typedef uint32_t Elf32_Word |
unsigned long elf_hash | ( | const unsigned char * | name | ) |
Elf32_Dyn _DYNAMIC[] |