]> granicus.if.org Git - file/commitdiff
Fixes from Christoph Biedl:
authorChristos Zoulas <christos@zoulas.com>
Thu, 6 Mar 2014 16:37:16 +0000 (16:37 +0000)
committerChristos Zoulas <christos@zoulas.com>
Thu, 6 Mar 2014 16:37:16 +0000 (16:37 +0000)
Inspired by Debian#588953 that rightly complained about poor
recognition of avr32 ELF files: There have been changes since the
original bug submission, file(1) now detects them as

| ELF 32-bit MSB executable, *unknown arch 0xb9* version 1 (SYSV) (...)

but this was an impetus to update the list of "machines" (ELF speak),
or "architectures".

The list was taken from binutils-2.24:include/elf/common.h with some
extra research. Numbers marked "reserved" were excluded.

Additional changes:

* sorted strictly by machine number.
* some missing trailing comma added.
* slight change in Motorola names for clarity.
* fix obviously wrong endianess in 138 = LatticeMico32.
* marked all inofficial numbers as such (unless already "obsolete").
* description trimmed to keep strings short. Perhaps even any
  trailing "familiy" should be dropped for the same reason.

For your information, the two attached files were used as starting
point:

elf-archs-file.magic: The relevant lines in magic/Magic/elf
elf-archs-binutils.magic: The relevant lines in include/elf/common.h,
    sorted, converted into magic

As you can see, several names still differ, and it's not always easy
to judge which is better. The most prominent difference is machine
number 9, "IBM System/370" vs. "Amdahl". There's a reason for both,
and I decided to keep the name currently used by file(1).

Fun fact: file(1) knows more machine numbers than binutils.

magic/Magdir/elf

index 293bd8a751fe7ec778ff920f67f934bef9a6d5a3..0487a24c0840b85e54f4d2515b4a03dfff7eb7f4 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: elf,v 1.63 2013/06/03 18:56:50 christos Exp $
+# $File: elf,v 1.64 2013/08/04 09:31:47 christos Exp $
 # elf:  file(1) magic for ELF executables
 #
 # We have to check the byte order flag to see what byte order all the
 >16    leshort         &0xff00         processor-specific,
 >18    clear           x
 >18    leshort         0               no machine,
->18    leshort         1               AT&T WE32100
->18    leshort         2               SPARC
+>18    leshort         1               AT&T WE32100,
+>18    leshort         2               SPARC,
 >18    leshort         3               Intel 80386,
->18    leshort         4               Motorola
+>18    leshort         4               Motorola m68k,
 >>4    byte            1
 >>>36  lelong          &0x01000000     68000,
 >>>36  lelong          &0x00810000     CPU32,
 >>>36  lelong          0               68020,
->18    leshort         5               Motorola 88000,
+>18    leshort         5               Motorola m88k,
 >18    leshort         6               Intel 80486,
 >18    leshort         7               Intel 80860,
 # The official e_machine number for MIPS is now #8, regardless of endianness.
@@ -96,6 +96,7 @@
 >>>36  lelong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
 >>>36  lelong&0xffff00 0x000400        HaL R1 Extensions Required,
 >>>36  lelong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
+>18    leshort         19              Intel 80960,
 >18    leshort         20              PowerPC or cisco 4500,
 >18    leshort         21              64-bit PowerPC or cisco 7500,
 >18    leshort         22              IBM S/390,
 >>>36  lelong          &0x00800000     BE8
 >>>36  lelong          &0x00400000     LE8
 >18    leshort         41              Alpha,
->18    leshort         0xa390          IBM S/390 (obsolete),
 >18    leshort         42              Renesas SH,
 >18    leshort         43              SPARC V9,
 >>4    byte            2
 >18    leshort         61              Tinyj emb.,
 >18    leshort         62              x86-64,
 >18    leshort         63              Sony DSP,
+>18    leshort         64              DEC PDP-10,
+>18    leshort         65              DEC PDP-11,
 >18    leshort         66              FX66,
 >18    leshort         67              ST9+ 8/16 bit,
 >18    leshort         68              ST7 8 bit,
 >18    leshort         92              OpenRISC,
 >18    leshort         93              ARC Cores Tangent-A5,
 >18    leshort         94              Tensilica Xtensa,
+>18    leshort         95              Alphamosaic VideoCore,
+>18    leshort         96              Thompson Multimedia,
 >18    leshort         97              NatSemi 32k,
+>18    leshort         98              Tenor Network TPC,
+>18    leshort         99              Trebia SNP 1000,
+>18    leshort         100             STMicroelectronics ST200,
+>18    leshort         101             Ubicom IP2022,
+>18    leshort         102             MAX Processor,
+>18    leshort         103             NatSemi CompactRISC,
+>18    leshort         104             Fujitsu F2MC16,
+>18    leshort         105             TI msp430,
 >18    leshort         106             Analog Devices Blackfin,
+>18    leshort         107             S1C33 Family of Seiko Epson,
+>18    leshort         108             Sharp embedded,
+>18    leshort         109             Arca RISC,
+>18    leshort         110             PKU-Unity Ltd.,
+>18    leshort         111             eXcess: 16/32/64-bit,
+>18    leshort         112             Icera Deep Execution Processor,
 >18    leshort         113             Altera Nios II,
->18    beshort         138             LatticeMico32,
+>18    leshort         114             NatSemi CRX,
+>18    leshort         115             Motorola XGATE,
+>18    leshort         116             Infineon C16x/XC16x,
+>18    leshort         117             Renesas M16C series,
+>18    leshort         118             Microchip dsPIC30F,
+>18    leshort         119             Freescale RISC core,
+>18    leshort         120             Renesas M32C series,
+>18    leshort         131             Altium TSK3000 core,
+>18    leshort         132             Freescale RS08,
+>18    leshort         134             Cyan Technology eCOG2,
+>18    leshort         135             Sunplus S+core7 RISC,
+>18    leshort         136             New Japan Radio (NJR) 24-bit DSP,
+>18    leshort         137             Broadcom VideoCore III,
+>18    leshort         138             LatticeMico32,
+>18    leshort         139             Seiko Epson C17 family,
+>18    leshort         140             TI TMS320C6000 DSP family,
+>18    leshort         141             TI TMS320C2000 DSP family,
+>18    leshort         142             TI TMS320C55x DSP family,
+>18    leshort         160             STMicroelectronics 64bit VLIW DSP,
+>18    leshort         161             Cypress M8C,
+>18    leshort         162             Renesas R32C series,
+>18    leshort         163             NXP TriMedia family,
+>18    leshort         164             QUALCOMM DSP6,
+>18    leshort         165             Intel 8051 and variants,
+>18    leshort         166             STMicroelectronics STxP7x family,
+>18    leshort         167             Andes embedded RISC,
+>18    leshort         168             Cyan eCOG1X family,
+>18    leshort         169             Dallas MAXQ30,
+>18    leshort         170             New Japan Radio (NJR) 16-bit DSP,
+>18    leshort         171             M2000 Reconfigurable RISC,
+>18    leshort         172             Cray NV2 vector architecture,
+>18    leshort         173             Renesas RX family,
 >18    leshort         174             META,
+>18    leshort         175             MCST Elbrus,
+>18    leshort         176             Cyan Technology eCOG16 family,
+>18    leshort         177             NatSemi CompactRISC,
+>18    leshort         178             Freescale Extended Time Processing Unit,
+>18    leshort         179             Infineon SLE9X,
+>18    leshort         180             Intel L1OM,
+>18    leshort         181             Intel K1OM,
 >18    leshort         183             ARM aarch64,
+>18    leshort         185             Atmel 32-bit family,
+>18    leshort         186             STMicroeletronics STM8 8-bit,
 >18    leshort         187             Tilera TILE64,
 >18    leshort         188             Tilera TILEPro,
+>18    leshort         189             Xilinx MicroBlaze 32-bit RISC,
+>18    leshort         190             NVIDIA CUDA architecture,
 >18    leshort         191             Tilera TILE-Gx,
+>18    leshort         197             Renesas RL78 family,
+>18    leshort         199             Renesas 78K0R,
+>18    leshort         0x1057          AVR (inofficial),
+>18    leshort         0x1059          MSP430 (inofficial),
+>18    leshort         0x1223          Adapteva Epiphany (inofficial),
+>18    leshort         0x2530          Morpho MT (inofficial),
+>18    leshort         0x3330          FR30 (inofficial),
 >18    leshort         0x3426          OpenRISC (obsolete),
+>18    leshort         0x4688          Infineon C166 (inofficial),
+>18    leshort         0x5441          Cygnus FRV (inofficial),
+>18    leshort         0x5aa5          DLX (inofficial),
+>18    leshort         0x7650          Cygnus D10V (inofficial),
+>18    leshort         0x7676          Cygnus D30V (inofficial),
+>18    leshort         0x8217          Ubicom IP2xxx (inofficial),
 >18    leshort         0x8472          OpenRISC (obsolete),
->18    leshort         0x9026          Alpha (unofficial),
+>18    leshort         0x9025          Cygnus PowerPC (inofficial),
+>18    leshort         0x9026          Alpha (inofficial),
+>18    leshort         0x9041          Cygnus M32R (inofficial),
+>18    leshort         0x9080          Cygnus V850 (inofficial),
+>18    leshort         0xa390          IBM S/390 (obsolete),
+>18    leshort         0xabc7          Old Xtensa (inofficial),
+>18    leshort         0xad45          xstormy16 (inofficial),
+>18    leshort         0xbaab          Old MicroBlaze (inofficial),,
+>18    leshort         0xbeef          Cygnus MN10300 (inofficial),
+>18    leshort         0xdead          Cygnus MN10200 (inofficial),
+>18    leshort         0xf00d          Toshiba MeP (inofficial),
+>18    leshort         0xfeb0          Renesas M32C (inofficial),
+>18    leshort         0xfeba          Vitesse IQ2000 (inofficial),
+>18    leshort         0xfebb          NIOS (inofficial),
+>18    leshort         0xfeed          Moxie (inofficial),
 >18    default         x
 >>18   leshort         x               *unknown arch 0x%x*
 >20    lelong          0               invalid version