1 2#------------------------------------------------------------------------------ 3# $File: elf,v 1.59 2013/03/21 17:50:02 christos Exp $ 4# elf: file(1) magic for ELF executables 5# 6# We have to check the byte order flag to see what byte order all the 7# other stuff in the header is in. 8# 9# What're the correct byte orders for the nCUBE and the Fujitsu VPP500? 10# 11# Created by: unknown 12# Modified by (1): Daniel Quinlan <quinlan@yggdrasil.com> 13# Modified by (2): Peter Tobias <tobias@server.et-inf.fho-emden.de> (core support) 14# Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support) 15# Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium) 16# Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures) 17 180 name elf-le 19>16 leshort 0 no file type, 20!:mime application/octet-stream 21>16 leshort 1 relocatable, 22!:mime application/x-object 23>16 leshort 2 executable, 24!:mime application/x-executable 25>16 leshort 3 shared object, 26!:mime application/x-sharedlib 27>16 leshort 4 core file 28!:mime application/x-coredump 29# Core file detection is not reliable. 30#>>>(0x38+0xcc) string >\0 of '%s' 31#>>>(0x38+0x10) lelong >0 (signal %d), 32>16 leshort &0xff00 processor-specific, 33>18 leshort 0 no machine, 34>18 leshort 1 AT&T WE32100 35>18 leshort 2 SPARC 36>18 leshort 3 Intel 80386, 37>18 leshort 4 Motorola 38>>4 byte 1 39>>>36 lelong &0x01000000 68000 - invalid byte order, 40>>>36 lelong &0x00810000 CPU32 - invalid byte order, 41>>>36 lelong 0 68020 - invalid byte order, 42>18 leshort 5 Motorola 88000 - invalid byte order, 43>18 leshort 6 Intel 80486, 44>18 leshort 7 Intel 80860, 45# The official e_machine number for MIPS is now #8, regardless of endianness. 46# The second number (#10) will be deprecated later. For now, we still 47# say something if #10 is encountered, but only gory details for #8. 48>18 leshort 8 MIPS, 49>>4 byte 1 50>>>36 lelong &0x20 N32 51>18 leshort 10 MIPS, 52>>4 byte 1 53>>>36 lelong &0x20 N32 54>18 leshort 8 55# only for 32-bit 56>>4 byte 1 57>>>36 lelong&0xf0000000 0x00000000 MIPS-I 58>>>36 lelong&0xf0000000 0x10000000 MIPS-II 59>>>36 lelong&0xf0000000 0x20000000 MIPS-III 60>>>36 lelong&0xf0000000 0x30000000 MIPS-IV 61>>>36 lelong&0xf0000000 0x40000000 MIPS-V 62>>>36 lelong&0xf0000000 0x50000000 MIPS32 63>>>36 lelong&0xf0000000 0x60000000 MIPS64 64>>>36 lelong&0xf0000000 0x70000000 MIPS32 rel2 65>>>36 lelong&0xf0000000 0x80000000 MIPS64 rel2 66# only for 64-bit 67>>4 byte 2 68>>>48 lelong&0xf0000000 0x00000000 MIPS-I 69>>>48 lelong&0xf0000000 0x10000000 MIPS-II 70>>>48 lelong&0xf0000000 0x20000000 MIPS-III 71>>>48 lelong&0xf0000000 0x30000000 MIPS-IV 72>>>48 lelong&0xf0000000 0x40000000 MIPS-V 73>>>48 lelong&0xf0000000 0x50000000 MIPS32 74>>>48 lelong&0xf0000000 0x60000000 MIPS64 75>>>48 lelong&0xf0000000 0x70000000 MIPS32 rel2 76>>>48 lelong&0xf0000000 0x80000000 MIPS64 rel2 77>18 leshort 9 Amdahl - invalid byte order, 78>18 leshort 10 MIPS (deprecated), 79>18 leshort 11 RS6000 - invalid byte order, 80>18 leshort 15 PA-RISC - invalid byte order, 81# only for 32-bit 82>>4 byte 1 83>>>38 leshort 0x0214 2.0 84>>>36 leshort &0x0008 (LP64) 85# only for 64-bit 86>>4 byte 2 87>>>50 leshort 0x0214 2.0 88>>>48 leshort &0x0008 (LP64) 89>18 leshort 16 nCUBE, 90>18 leshort 17 Fujitsu VPP500, 91>18 leshort 18 SPARC32PLUS, 92# only for 32-bit 93>>4 byte 1 94>>>36 lelong&0xffff00 0x000100 V8+ Required, 95>>>36 lelong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required, 96>>>36 lelong&0xffff00 0x000400 HaL R1 Extensions Required, 97>>>36 lelong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required, 98>18 leshort 20 PowerPC or cisco 4500, 99>18 leshort 21 64-bit PowerPC or cisco 7500, 100>18 leshort 22 IBM S/390, 101>18 leshort 23 Cell SPU, 102>18 leshort 24 cisco SVIP, 103>18 leshort 25 cisco 7200, 104>18 leshort 36 NEC V800 or cisco 12000, 105>18 leshort 37 Fujitsu FR20, 106>18 leshort 38 TRW RH-32, 107>18 leshort 39 Motorola RCE, 108>18 leshort 40 ARM, 109>>4 byte 1 110>>>36 lelong&0xff000000 0x04000000 EABI4 111>>>36 lelong&0xff000000 0x05000000 EABI5 112>>>36 lelong &0x00800000 BE8 113>>>36 lelong &0x00400000 LE8 114>18 leshort 41 Alpha, 115>18 leshort 0xa390 IBM S/390 (obsolete), 116>18 leshort 42 Renesas SH, 117>18 leshort 43 SPARC V9, 118>>4 byte 2 119>>>48 lelong&0xffff00 0x000200 Sun UltraSPARC1 Extensions Required, 120>>>48 lelong&0xffff00 0x000400 HaL R1 Extensions Required, 121>>>48 lelong&0xffff00 0x000800 Sun UltraSPARC3 Extensions Required, 122>>>48 lelong&0x3 0 total store ordering, 123>>>48 lelong&0x3 1 partial store ordering, 124>>>48 lelong&0x3 2 relaxed memory ordering, 125>18 leshort 44 Siemens Tricore Embedded Processor, 126>18 leshort 45 Argonaut RISC Core, Argonaut Technologies Inc., 127>18 leshort 46 Renesas H8/300, 128>18 leshort 47 Renesas H8/300H, 129>18 leshort 48 Renesas H8S, 130>18 leshort 49 Renesas H8/500, 131>18 leshort 50 IA-64, 132>18 leshort 51 Stanford MIPS-X, 133>18 leshort 52 Motorola Coldfire, 134>18 leshort 53 Motorola M68HC12, 135>18 leshort 54 Fujitsu MMA, 136>18 leshort 55 Siemens PCP, 137>18 leshort 56 Sony nCPU, 138>18 leshort 57 Denso NDR1, 139>18 leshort 58 Start*Core, 140>18 leshort 59 Toyota ME16, 141>18 leshort 60 ST100, 142>18 leshort 61 Tinyj emb., 143>18 leshort 62 x86-64, 144>18 leshort 63 Sony DSP, 145>18 leshort 66 FX66, 146>18 leshort 67 ST9+ 8/16 bit, 147>18 leshort 68 ST7 8 bit, 148>18 leshort 69 MC68HC16, 149>18 leshort 70 MC68HC11, 150>18 leshort 71 MC68HC08, 151>18 leshort 72 MC68HC05, 152>18 leshort 73 SGI SVx or Cray NV1, 153>18 leshort 74 ST19 8 bit, 154>18 leshort 75 Digital VAX, 155>18 leshort 76 Axis cris, 156>18 leshort 77 Infineon 32-bit embedded, 157>18 leshort 78 Element 14 64-bit DSP, 158>18 leshort 79 LSI Logic 16-bit DSP, 159>18 leshort 80 MMIX, 160>18 leshort 81 Harvard machine-independent, 161>18 leshort 82 SiTera Prism, 162>18 leshort 83 Atmel AVR 8-bit, 163>18 leshort 84 Fujitsu FR30, 164>18 leshort 85 Mitsubishi D10V, 165>18 leshort 86 Mitsubishi D30V, 166>18 leshort 87 NEC v850, 167>18 leshort 88 Renesas M32R, 168>18 leshort 89 Matsushita MN10300, 169>18 leshort 90 Matsushita MN10200, 170>18 leshort 91 picoJava, 171>18 leshort 92 OpenRISC, 172>18 leshort 93 ARC Cores Tangent-A5, 173>18 leshort 94 Tensilica Xtensa, 174>18 leshort 97 NatSemi 32k, 175>18 leshort 106 Analog Devices Blackfin, 176>18 leshort 113 Altera Nios II, 177>18 leshort 174 META, 178>18 leshort 183 ARM aarch64, 179>18 leshort 187 Tilera TILE64, 180>18 leshort 188 Tilera TILEPro, 181>18 leshort 191 Tilera TILE-Gx, 182>18 leshort 0x3426 OpenRISC (obsolete), 183>18 leshort 0x8472 OpenRISC (obsolete), 184>18 leshort 0x9026 Alpha (unofficial), 185>20 lelong 0 invalid version 186>20 lelong 1 version 1 187 1880 string \177ELF ELF 189!:strength *2 190>4 byte 0 invalid class 191>4 byte 1 32-bit 192>4 byte 2 64-bit 193>5 byte 0 invalid byte order 194>5 byte 1 LSB 195>>0 use elf-le 196>5 byte 2 MSB 197>>0 use \^elf-le 198# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed 199# like proper ELF, but extracting the string had bad results. 200>4 byte <0x80 201>>8 string >\0 (%s) 202>8 string \0 203>>7 byte 0 (SYSV) 204>>7 byte 1 (HP-UX) 205>>7 byte 2 (NetBSD) 206>>7 byte 3 (GNU/Linux) 207>>7 byte 4 (GNU/Hurd) 208>>7 byte 5 (86Open) 209>>7 byte 6 (Solaris) 210>>7 byte 7 (Monterey) 211>>7 byte 8 (IRIX) 212>>7 byte 9 (FreeBSD) 213>>7 byte 10 (Tru64) 214>>7 byte 11 (Novell Modesto) 215>>7 byte 12 (OpenBSD) 216>8 string \2 217>>7 byte 13 (OpenVMS) 218>>7 byte 97 (ARM) 219>>7 byte 255 (embedded) 220