elf 7.2 KB

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