1# $OpenBSD: elf,v 1.19 2021/04/28 04:41:14 drahn Exp $ 2 3#------------------------------------------------------------------------------ 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# updated by Daniel Quinlan (quinlan@yggdrasil.com) 120 string \177ELF ELF 13>4 byte 0 invalid class 14>4 byte 1 32-bit 15>4 byte 2 64-bit 16>5 byte 0 invalid byte order 17>5 byte 1 LSB 18>>16 leshort 0 no file type, 19!:mime application/octet-stream 20>>16 leshort 1 relocatable, 21!:mime application/x-object 22>>16 leshort 2 executable, 23!:mime application/x-executable 24>>16 leshort 3 shared object, 25!:mime application/x-sharedlib 26# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de> 27# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> 28>>16 leshort 4 core file 29!:mime application/x-coredump 30# Core file detection is not reliable. 31#>>>(0x38+0xcc) string >\0 of '%s' 32#>>>(0x38+0x10) lelong >0 (signal %d), 33>>16 leshort &0xff00 processor-specific, 34>>18 leshort 0 no machine, 35>>18 leshort 1 AT&T WE32100 - invalid byte order, 36>>18 leshort 2 SPARC - invalid byte order, 37>>18 leshort 3 Intel 80386, 38>>18 leshort 4 Motorola 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>>>36 lelong &0x20 N32 50>>18 leshort 10 MIPS, 51>>>36 lelong &0x20 N32 52>>18 leshort 8 53# only for 32-bit 54>>>4 byte 1 55>>>>36 lelong&0xf0000000 0x00000000 MIPS-I 56>>>>36 lelong&0xf0000000 0x10000000 MIPS-II 57>>>>36 lelong&0xf0000000 0x20000000 MIPS-III 58>>>>36 lelong&0xf0000000 0x30000000 MIPS-IV 59>>>>36 lelong&0xf0000000 0x40000000 MIPS-V 60>>>>36 lelong&0xf0000000 0x50000000 MIPS32 61>>>>36 lelong&0xf0000000 0x60000000 MIPS64 62>>>>36 lelong&0xf0000000 0x70000000 MIPS32 rel2 63>>>>36 lelong&0xf0000000 0x80000000 MIPS64 rel2 64# only for 64-bit 65>>>4 byte 2 66>>>>48 lelong&0xf0000000 0x00000000 MIPS-I 67>>>>48 lelong&0xf0000000 0x10000000 MIPS-II 68>>>>48 lelong&0xf0000000 0x20000000 MIPS-III 69>>>>48 lelong&0xf0000000 0x30000000 MIPS-IV 70>>>>48 lelong&0xf0000000 0x40000000 MIPS-V 71>>>>48 lelong&0xf0000000 0x50000000 MIPS32 72>>>>48 lelong&0xf0000000 0x60000000 MIPS64 73>>>>48 lelong&0xf0000000 0x70000000 MIPS32 rel2 74>>>>48 lelong&0xf0000000 0x80000000 MIPS64 rel2 75>>18 leshort 9 Amdahl - invalid byte order, 76>>18 leshort 10 MIPS (deprecated), 77>>18 leshort 11 RS6000 - invalid byte order, 78>>18 leshort 15 PA-RISC - invalid byte order, 79>>>50 leshort 0x0214 2.0 80>>>48 leshort &0x0008 (LP64), 81>>18 leshort 16 nCUBE, 82>>18 leshort 17 Fujitsu VPP500, 83>>18 leshort 18 SPARC32PLUS, 84>>18 leshort 20 PowerPC, 85>>18 leshort 22 IBM S/390, 86>>18 leshort 36 NEC V800, 87>>18 leshort 37 Fujitsu FR20, 88>>18 leshort 38 TRW RH-32, 89>>18 leshort 39 Motorola RCE, 90>>18 leshort 40 ARM, 91>>18 leshort 41 Alpha, 92>>18 leshort 0xa390 IBM S/390 (obsolete), 93>>18 leshort 42 Renesas SH, 94>>18 leshort 43 SPARC V9 - invalid byte order, 95>>18 leshort 44 Siemens Tricore Embedded Processor, 96>>18 leshort 45 Argonaut RISC Core, Argonaut Technologies Inc., 97>>18 leshort 46 Renesas H8/300, 98>>18 leshort 47 Renesas H8/300H, 99>>18 leshort 48 Renesas H8S, 100>>18 leshort 49 Renesas H8/500, 101>>18 leshort 50 IA-64, 102>>18 leshort 51 Stanford MIPS-X, 103>>18 leshort 52 Motorola Coldfire, 104>>18 leshort 53 Motorola M68HC12, 105>>18 leshort 54 Fujitsu MMA, 106>>18 leshort 55 Siemens PCP, 107>>18 leshort 56 Sony nCPU, 108>>18 leshort 57 Denso NDR1, 109>>18 leshort 58 Start*Core, 110>>18 leshort 59 Toyota ME16, 111>>18 leshort 60 ST100, 112>>18 leshort 61 Tinyj emb., 113>>18 leshort 62 x86-64, 114>>18 leshort 63 Sony DSP, 115>>18 leshort 66 FX66, 116>>18 leshort 67 ST9+ 8/16 bit, 117>>18 leshort 68 ST7 8 bit, 118>>18 leshort 69 MC68HC16, 119>>18 leshort 70 MC68HC11, 120>>18 leshort 71 MC68HC08, 121>>18 leshort 72 MC68HC05, 122>>18 leshort 73 SGI SVx, 123>>18 leshort 74 ST19 8 bit, 124>>18 leshort 75 Digital VAX, 125>>18 leshort 76 Axis cris, 126>>18 leshort 77 Infineon 32-bit embedded, 127>>18 leshort 78 Element 14 64-bit DSP, 128>>18 leshort 79 LSI Logic 16-bit DSP, 129>>18 leshort 80 MMIX, 130>>18 leshort 81 Harvard machine-independent, 131>>18 leshort 82 SiTera Prism, 132>>18 leshort 83 Atmel AVR 8-bit, 133>>18 leshort 84 Fujitsu FR30, 134>>18 leshort 85 Mitsubishi D10V, 135>>18 leshort 86 Mitsubishi D30V, 136>>18 leshort 87 NEC v850, 137>>18 leshort 88 Renesas M32R, 138>>18 leshort 89 Matsushita MN10300, 139>>18 leshort 90 Matsushita MN10200, 140>>18 leshort 91 picoJava, 141>>18 leshort 92 OpenRISC, 142>>18 leshort 93 ARC Cores Tangent-A5, 143>>18 leshort 0x3426 OpenRISC (obsolete), 144>>18 leshort 0x8472 OpenRISC (obsolete), 145>>18 leshort 94 Tensilica Xtensa, 146>>18 leshort 97 NatSemi 32k, 147>>18 leshort 106 Analog Devices Blackfin, 148>>18 leshort 0x9026 Alpha (unofficial), 149>>18 leshort 183 AArch64, 150>>18 leshort 243 RISC-V, 151>>20 lelong 0 invalid version 152>>20 lelong 1 version 1 153>>36 lelong 1 MathCoPro/FPU/MAU Required 154>5 byte 2 MSB 155>>16 beshort 0 no file type, 156!:mime application/octet-stream 157>>16 beshort 1 relocatable, 158!:mime application/x-object 159>>16 beshort 2 executable, 160!:mime application/x-executable 161>>16 beshort 3 shared object, 162!:mime application/x-sharedlib 163>>16 beshort 4 core file, 164!:mime application/x-coredump 165#>>>(0x38+0xcc) string >\0 of '%s' 166#>>>(0x38+0x10) belong >0 (signal %d), 167>>16 beshort &0xff00 processor-specific, 168>>18 beshort 0 no machine, 169>>18 beshort 1 AT&T WE32100, 170>>18 beshort 2 SPARC, 171>>18 beshort 3 Intel 80386 - invalid byte order, 172>>18 beshort 4 Motorola 173>>>36 belong &0x01000000 68000, 174>>>36 belong &0x00810000 CPU32, 175>>>36 belong 0 68020, 176>>18 beshort 5 Motorola 88000, 177>>18 beshort 6 Intel 80486 - invalid byte order, 178>>18 beshort 7 Intel 80860, 179# only for MIPS - see comment in little-endian section above. 180>>18 beshort 8 MIPS, 181>>>36 belong &0x20 N32 182>>18 beshort 10 MIPS, 183>>>36 belong &0x20 N32 184>>18 beshort 8 185# only for 32-bit 186>>>4 byte 1 187>>>>36 belong&0xf0000000 0x00000000 MIPS-I 188>>>>36 belong&0xf0000000 0x10000000 MIPS-II 189>>>>36 belong&0xf0000000 0x20000000 MIPS-III 190>>>>36 belong&0xf0000000 0x30000000 MIPS-IV 191>>>>36 belong&0xf0000000 0x40000000 MIPS-V 192>>>>36 belong&0xf0000000 0x50000000 MIPS32 193>>>>36 belong&0xf0000000 0x60000000 MIPS64 194>>>>36 belong&0xf0000000 0x70000000 MIPS32 rel2 195>>>>36 belong&0xf0000000 0x80000000 MIPS64 rel2 196# only for 64-bit 197>>>4 byte 2 198>>>>48 belong&0xf0000000 0x00000000 MIPS-I 199>>>>48 belong&0xf0000000 0x10000000 MIPS-II 200>>>>48 belong&0xf0000000 0x20000000 MIPS-III 201>>>>48 belong&0xf0000000 0x30000000 MIPS-IV 202>>>>48 belong&0xf0000000 0x40000000 MIPS-V 203>>>>48 belong&0xf0000000 0x50000000 MIPS32 204>>>>48 belong&0xf0000000 0x60000000 MIPS64 205>>>>48 belong&0xf0000000 0x70000000 MIPS32 rel2 206>>>>48 belong&0xf0000000 0x80000000 MIPS64 rel2 207>>18 beshort 9 Amdahl, 208>>18 beshort 10 MIPS (deprecated), 209>>18 beshort 11 RS6000, 210>>18 beshort 15 PA-RISC 211>>>50 beshort 0x0214 2.0 212>>>48 beshort &0x0008 (LP64) 213>>18 beshort 16 nCUBE, 214>>18 beshort 17 Fujitsu VPP500, 215>>18 beshort 18 SPARC32PLUS, 216>>>36 belong&0xffff00 &0x000100 V8+ Required, 217>>>36 belong&0xffff00 &0x000200 Sun UltraSPARC1 Extensions Required, 218>>>36 belong&0xffff00 &0x000400 HaL R1 Extensions Required, 219>>>36 belong&0xffff00 &0x000800 Sun UltraSPARC3 Extensions Required, 220>>18 beshort 20 PowerPC or cisco 4500, 221>>18 beshort 21 64-bit PowerPC or cisco 7500, 222>>18 beshort 22 IBM S/390, 223>>18 beshort 23 Cell SPU, 224>>18 beshort 24 cisco SVIP, 225>>18 beshort 25 cisco 7200, 226>>18 beshort 36 NEC V800 or cisco 12000, 227>>18 beshort 37 Fujitsu FR20, 228>>18 beshort 38 TRW RH-32, 229>>18 beshort 39 Motorola RCE, 230>>18 beshort 40 ARM, 231>>18 beshort 41 Alpha, 232>>18 beshort 42 Renesas SH, 233>>18 beshort 43 SPARC V9, 234>>18 beshort 44 Siemens Tricore Embedded Processor, 235>>18 beshort 45 Argonaut RISC Core, Argonaut Technologies Inc., 236>>18 beshort 46 Renesas H8/300, 237>>18 beshort 47 Renesas H8/300H, 238>>18 beshort 48 Renesas H8S, 239>>18 beshort 49 Renesas H8/500, 240>>18 beshort 50 IA-64, 241>>18 beshort 51 Stanford MIPS-X, 242>>18 beshort 52 Motorola Coldfire, 243>>18 beshort 53 Motorola M68HC12, 244>>18 beshort 73 Cray NV1, 245>>18 beshort 75 Digital VAX, 246>>18 beshort 88 Renesas M32R, 247>>18 leshort 92 OpenRISC, 248>>18 leshort 0x3426 OpenRISC (obsolete), 249>>18 leshort 0x8472 OpenRISC (obsolete), 250>>18 beshort 94 Tensilica Xtensa, 251>>18 beshort 97 NatSemi 32k, 252>>18 beshort 0x18ad AVR32 (unofficial), 253>>18 beshort 0x9026 Alpha (unofficial), 254>>18 beshort 0xa390 IBM S/390 (obsolete), 255>>20 belong 0 invalid version 256>>20 belong 1 version 1 257>>36 belong 1 MathCoPro/FPU/MAU Required 258