elf 10 KB

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