elf revision 80588
168349Sobrien 268349Sobrien#------------------------------------------------------------------------------ 368349Sobrien# elf: file(1) magic for ELF executables 468349Sobrien# 568349Sobrien# We have to check the byte order flag to see what byte order all the 668349Sobrien# other stuff in the header is in. 768349Sobrien# 868349Sobrien# MIPS R3000 may also be for MIPS R2000. 968349Sobrien# What're the correct byte orders for the nCUBE and the Fujitsu VPP500? 1068349Sobrien# 1168349Sobrien# updated by Daniel Quinlan (quinlan@yggdrasil.com) 1268349Sobrien0 string \177ELF ELF 1368349Sobrien>4 byte 0 invalid class 1468349Sobrien>4 byte 1 32-bit 1569216Sobrien# only for MIPS 1668349Sobrien>>18 beshort 8 1769216Sobrien>>18 beshort 10 1868349Sobrien>>>36 belong &0x20 N32 1968349Sobrien>4 byte 2 64-bit 2068349Sobrien>5 byte 0 invalid byte order 2168349Sobrien>5 byte 1 LSB 2269216Sobrien# only for MIPS R3000_BE 2369216Sobrien>>18 leshort 8 2469216Sobrien# only for 32-bit 2569216Sobrien>>>4 byte 1 2669216Sobrien>>>>36 lelong&0xf0000000 0x00000000 mips-1 2769216Sobrien>>>>36 lelong&0xf0000000 0x10000000 mips-2 2869216Sobrien>>>>36 lelong&0xf0000000 0x20000000 mips-3 2969216Sobrien>>>>36 lelong&0xf0000000 0x30000000 mips-4 3069216Sobrien>>>>36 lelong&0xf0000000 0x40000000 mips-5 3169216Sobrien>>>>36 lelong&0xf0000000 0x50000000 mips-6 3269216Sobrien# only for 64-bit 3369216Sobrien>>>4 byte 2 3469216Sobrien>>>>48 lelong&0xf0000000 0x00000000 mips-1 3569216Sobrien>>>>48 lelong&0xf0000000 0x10000000 mips-2 3669216Sobrien>>>>48 lelong&0xf0000000 0x20000000 mips-3 3769216Sobrien>>>>48 lelong&0xf0000000 0x30000000 mips-4 3869216Sobrien>>>>48 lelong&0xf0000000 0x40000000 mips-5 3969216Sobrien>>>>48 lelong&0xf0000000 0x50000000 mips-6 4068349Sobrien>>16 leshort 0 no file type, 4168349Sobrien>>16 leshort 1 relocatable, 4268349Sobrien>>16 leshort 2 executable, 4368349Sobrien>>16 leshort 3 shared object, 4468349Sobrien# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de> 4568349Sobrien# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> 4668349Sobrien>>16 leshort 4 core file 4768349Sobrien>>>(0x38+0xcc) string >\0 of '%s' 4868349Sobrien>>>(0x38+0x10) lelong >0 (signal %d), 4968349Sobrien>>16 leshort &0xff00 processor-specific, 5068349Sobrien>>18 leshort 0 no machine, 5168349Sobrien>>18 leshort 1 AT&T WE32100 - invalid byte order, 5268349Sobrien>>18 leshort 2 SPARC - invalid byte order, 5368349Sobrien>>18 leshort 3 Intel 80386, 5468349Sobrien>>18 leshort 4 Motorola 68000 - invalid byte order, 5568349Sobrien>>18 leshort 5 Motorola 88000 - invalid byte order, 5668349Sobrien>>18 leshort 6 Intel 80486, 5768349Sobrien>>18 leshort 7 Intel 80860, 5869216Sobrien# "officially" big endian, but binutils bfd only emits magic #8 for MIPS. 5969216Sobrien>>18 leshort 8 MIPS R3000_LE [bfd bug], 6068349Sobrien>>18 leshort 9 Amdahl - invalid byte order, 6168349Sobrien>>18 leshort 10 MIPS R3000_LE, 6268349Sobrien>>18 leshort 11 RS6000 - invalid byte order, 6368349Sobrien>>18 leshort 15 PA-RISC - invalid byte order, 6474784Sobrien>>>50 leshort 0x0214 2.0 6574784Sobrien>>>48 leshort &0x0008 (LP64), 6668349Sobrien>>18 leshort 16 nCUBE, 6768349Sobrien>>18 leshort 17 Fujitsu VPP500, 6868349Sobrien>>18 leshort 18 SPARC32PLUS, 6968349Sobrien>>18 leshort 20 PowerPC, 7068349Sobrien>>18 leshort 36 NEC V800, 7168349Sobrien>>18 leshort 37 Fujitsu FR20, 7268349Sobrien>>18 leshort 38 TRW RH-32, 7368349Sobrien>>18 leshort 39 Motorola RCE, 7475937Sobrien>>18 leshort 40 ARM, 7568349Sobrien>>18 leshort 41 Alpha, 7668349Sobrien>>18 leshort 42 Hitachi SH, 7768349Sobrien>>18 leshort 43 SPARC V9 - invalid byte order, 7868349Sobrien>>18 leshort 44 Siemens Tricore Embedded Processor, 7968349Sobrien>>18 leshort 45 Argonaut RISC Core, Argonaut Technologies Inc., 8068349Sobrien>>18 leshort 46 Hitachi H8/300, 8168349Sobrien>>18 leshort 47 Hitachi H8/300H, 8268349Sobrien>>18 leshort 48 Hitachi H8S, 8368349Sobrien>>18 leshort 49 Hitachi H8/500, 8468349Sobrien>>18 leshort 50 IA-64 (Intel 64 bit architecture) 8568349Sobrien>>18 leshort 51 Stanford MIPS-X, 8668349Sobrien>>18 leshort 52 Motorola Coldfire, 8768349Sobrien>>18 leshort 53 Motorola M68HC12, 8868349Sobrien>>18 leshort 75 Digital VAX, 8968349Sobrien>>18 leshort 0x9026 Alpha (unofficial), 9068349Sobrien>>20 lelong 0 invalid version 9168349Sobrien>>20 lelong 1 version 1 9268349Sobrien>>36 lelong 1 MathCoPro/FPU/MAU Required 9368349Sobrien>5 byte 2 MSB 9468349Sobrien# only for MIPS R3000_BE 9568349Sobrien>>18 beshort 8 9668349Sobrien# only for 32-bit 9768349Sobrien>>>4 byte 1 9868349Sobrien>>>>36 belong&0xf0000000 0x00000000 mips-1 9968349Sobrien>>>>36 belong&0xf0000000 0x10000000 mips-2 10068349Sobrien>>>>36 belong&0xf0000000 0x20000000 mips-3 10168349Sobrien>>>>36 belong&0xf0000000 0x30000000 mips-4 10268349Sobrien>>>>36 belong&0xf0000000 0x40000000 mips-5 10368349Sobrien>>>>36 belong&0xf0000000 0x50000000 mips-6 10468349Sobrien# only for 64-bit 10568349Sobrien>>>4 byte 2 10668349Sobrien>>>>48 belong&0xf0000000 0x00000000 mips-1 10768349Sobrien>>>>48 belong&0xf0000000 0x10000000 mips-2 10868349Sobrien>>>>48 belong&0xf0000000 0x20000000 mips-3 10968349Sobrien>>>>48 belong&0xf0000000 0x30000000 mips-4 11068349Sobrien>>>>48 belong&0xf0000000 0x40000000 mips-5 11168349Sobrien>>>>48 belong&0xf0000000 0x50000000 mips-6 11268349Sobrien>>16 beshort 0 no file type, 11368349Sobrien>>16 beshort 1 relocatable, 11468349Sobrien>>16 beshort 2 executable, 11568349Sobrien>>16 beshort 3 shared object, 11668349Sobrien>>16 beshort 4 core file, 11768349Sobrien>>>(0x38+0xcc) string >\0 of '%s' 11868349Sobrien>>>(0x38+0x10) belong >0 (signal %d), 11968349Sobrien>>16 beshort &0xff00 processor-specific, 12068349Sobrien>>18 beshort 0 no machine, 12168349Sobrien>>18 beshort 1 AT&T WE32100, 12268349Sobrien>>18 beshort 2 SPARC, 12368349Sobrien>>18 beshort 3 Intel 80386 - invalid byte order, 12468349Sobrien>>18 beshort 4 Motorola 68000, 12568349Sobrien>>18 beshort 5 Motorola 88000, 12668349Sobrien>>18 beshort 6 Intel 80486 - invalid byte order, 12768349Sobrien>>18 beshort 7 Intel 80860, 12868349Sobrien>>18 beshort 8 MIPS R3000_BE, 12968349Sobrien>>18 beshort 9 Amdahl, 13068349Sobrien>>18 beshort 10 MIPS R3000_LE - invalid byte order, 13168349Sobrien>>18 beshort 11 RS6000, 13274784Sobrien>>18 beshort 15 PA-RISC 13374784Sobrien>>>50 beshort 0x0214 2.0 13474784Sobrien>>>48 beshort &0x0008 (LP64) 13568349Sobrien>>18 beshort 16 nCUBE, 13668349Sobrien>>18 beshort 17 Fujitsu VPP500, 13768349Sobrien>>18 beshort 18 SPARC32PLUS, 13868349Sobrien>>>36 belong&0xffff00 &0x000100 V8+ Required, 13968349Sobrien>>>36 belong&0xffff00 &0x000200 Sun UltraSPARC1 Extensions Required, 14068349Sobrien>>>36 belong&0xffff00 &0x000400 HaL R1 Extensions Required, 14168349Sobrien>>>36 belong&0xffff00 &0x000800 Sun UltraSPARC3 Extensions Required, 14268349Sobrien>>18 beshort 20 PowerPC or cisco 4500, 14368349Sobrien>>18 beshort 21 cisco 7500, 14468349Sobrien>>18 beshort 24 cisco SVIP, 14568349Sobrien>>18 beshort 25 cisco 7200, 14668349Sobrien>>18 beshort 36 NEC V800 or cisco 12000, 14768349Sobrien>>18 beshort 37 Fujitsu FR20, 14868349Sobrien>>18 beshort 38 TRW RH-32, 14968349Sobrien>>18 beshort 39 Motorola RCE, 15075937Sobrien>>18 beshort 40 ARM, 15168349Sobrien>>18 beshort 41 Alpha, 15268349Sobrien>>18 beshort 42 Hitachi SH, 15368349Sobrien>>18 beshort 43 SPARC V9, 15468349Sobrien>>18 beshort 44 Siemens Tricore Embedded Processor, 15568349Sobrien>>18 beshort 45 Argonaut RISC Core, Argonaut Technologies Inc., 15668349Sobrien>>18 beshort 46 Hitachi H8/300, 15768349Sobrien>>18 beshort 47 Hitachi H8/300H, 15868349Sobrien>>18 beshort 48 Hitachi H8S, 15968349Sobrien>>18 beshort 49 Hitachi H8/500, 16068349Sobrien>>18 beshort 50 Intel Merced Processor, 16168349Sobrien>>18 beshort 51 Stanford MIPS-X, 16268349Sobrien>>18 beshort 52 Motorola Coldfire, 16368349Sobrien>>18 beshort 53 Motorola M68HC12, 16480588Sobrien>>18 beshort 73 Cray NV1, 16568349Sobrien>>18 beshort 75 Digital VAX, 16668349Sobrien>>18 beshort 0x9026 Alpha (unofficial), 16768349Sobrien>>20 belong 0 invalid version 16868349Sobrien>>20 belong 1 version 1 16968349Sobrien>>36 belong 1 MathCoPro/FPU/MAU Required 17080588Sobrien>8 string >\0 (%s) 17180588Sobrien>8 string \0 17280588Sobrien>>7 byte 0 (SYSV) 17380588Sobrien>>7 byte 1 (HP-UX) 17480588Sobrien>>7 byte 2 (NetBSD) 17580588Sobrien>>7 byte 3 (GNU/Linux) 17680588Sobrien>>7 byte 4 (GNU/Hurd) 17780588Sobrien>>7 byte 5 (86Open) 17880588Sobrien>>7 byte 6 (Solaris) 17980588Sobrien>>7 byte 7 (Monterey) 18080588Sobrien>>7 byte 8 (IRIX) 18180588Sobrien>>7 byte 9 (FreeBSD) 18280588Sobrien>>7 byte 10 (Tru64) 18380588Sobrien>>7 byte 11 (Novell Modesto) 18480588Sobrien>>7 byte 12 (OpenBSD) 18580588Sobrien>>7 byte 97 (ARM) 18680588Sobrien>>7 byte 255 (embedded) 187