]> granicus.if.org Git - file/commitdiff
centralize coff magic by Joerg Jenderek.
authorChristos Zoulas <christos@zoulas.com>
Wed, 30 Sep 2015 20:32:35 +0000 (20:32 +0000)
committerChristos Zoulas <christos@zoulas.com>
Wed, 30 Sep 2015 20:32:35 +0000 (20:32 +0000)
magic/Magdir/coff [new file with mode: 0644]
magic/Magdir/hitachi-sh
magic/Magdir/intel
magic/Magdir/msdos
magic/Makefile.am

diff --git a/magic/Magdir/coff b/magic/Magdir/coff
new file mode 100644 (file)
index 0000000..9908835
--- /dev/null
@@ -0,0 +1,77 @@
+
+#------------------------------------------------------------------------------
+# $File:$
+# coff: file(1) magic for Common Object Files not specific to known cpu types or manufactures
+#
+# COFF
+#
+# by Joerg Jenderek at Oct 2015
+# https://en.wikipedia.org/wiki/COFF
+# https://de.wikipedia.org/wiki/Common_Object_File_Format
+# http://www.delorie.com/djgpp/doc/coff/filhdr.html
+
+# display name+variables+flags of Common Object Files Format (32bit)
+# Maybe used also in adi,att3b,clipper,hitachi-sh,hp,ibm6000,intel,
+# mips,motorola,msdos,osf1,sharc,varied.out,vax
+0      name                            display-coff
+# test for unused flag bits (0x8000,0x0800,0x0400,0x0200,x0080) in f_flags
+>18    uleshort&0x8E80 0               
+>>0    clear           x
+# f_magic - magic number
+# DJGPP, 80386 COFF executable, MS Windows COFF Intel 80386 object file (./intel)
+>>0    uleshort        0x014C          Intel 80386
+# Hitachi SH big-endian COFF (./hitachi-sh)
+>>0    uleshort        0x0500          Hitachi SH big-endian
+# Hitachi SH little-endian COFF (./hitachi-sh)
+>>0    uleshort        0x0550          Hitachi SH little-endian
+# executable (RISC System/6000 V3.1) or obj module (./ibm6000)
+#>>0   uleshort        0x01DF          
+# TODO for other COFFs
+#>>0   uleshort        0xABCD          COFF_TEMPLATE
+>>0    default         x
+>>>0   uleshort        x               type 0x%04x
+>>0    uleshort        x               COFF
+# F_EXEC flag bit
+>>18   leshort         ^0x0002         object file
+#!:mime        application/x-coff
+#!:ext cof/o/obj/lib
+>>18   leshort         &0x0002         executable
+#!:mime        application/x-coffexec
+# F_RELFLG flag bit,static object
+>>18   leshort         &0x0001         \b, no relocation info
+# F_LNNO flag bit
+>>18   leshort         &0x0004         \b, no line number info
+# F_LSYMS flag bit
+>>18   leshort         &0x0008         \b, stripped
+>>18   leshort         ^0x0008         \b, not stripped
+# flags in other COFF versions
+#0x0010    F_FDPR_PROF 
+#0x0020    F_FDPR_OPTI
+#0x0040    F_DSA
+# F_AR32WR flag bit
+#>>>18 leshort         &0x0100         \b, 32 bit little endian
+#0x1000    F_DYNLOAD 
+#0x2000    F_SHROBJ
+#0x4000    F_LOADONLY
+# f_nscns - number of sections
+>>2    uleshort        <2              \b, %d section
+>>2    uleshort        >1              \b, %d sections
+# f_timdat - file time & date stamp only for little endian
+#>>4   date            x               \b, %s
+# f_symptr - symbol table pointer, only for not stripped
+>>8    ulelong         >0              \b, symbol offset=0x%x
+# f_nsyms - number of symbols, only for not stripped
+>>12   ulelong         >0              \b, %d symbols
+# f_opthdr - optional header size 
+>>16   uleshort        >0              \b, optional header size %d
+# at offset 20 can be optional header, extra bytes FILHSZ-20 because
+# do not rely on sizeof(FILHDR) to give the correct size for header.
+# or first section header
+# additional variables for other COFF files
+# >20  beshort         0407            (impure)
+# >20  beshort         0410            (pure)
+# >20  beshort         0413            (demand paged)
+# >20  beshort         0421            (standalone)
+# >22  leshort         >0              - version %d
+# >168 string          .lowmem         Apple toolbox
+
index 1af89eed980091e790a589cc137c7f4d45251a7b..ad192cee9905c697105649c084ec4e85f820a3ed 100644 (file)
@@ -1,22 +1,28 @@
 
 #------------------------------------------------------------------------------
-# $File: hitachi-sh,v 1.5 2009/09/19 16:28:09 christos Exp $
+# $File: hitachi-sh,v 1.6 2013/01/29 19:31:33 christos Exp $
 # hitach-sh: file(1) magic for Hitachi Super-H
 #
 # Super-H COFF
 #
+# updated by Joerg Jenderek at Oct 2015
+# https://en.wikipedia.org/wiki/COFF
+# https://de.wikipedia.org/wiki/Common_Object_File_Format
+# http://www.delorie.com/djgpp/doc/coff/filhdr.html
 # below test line conflicts with 2nd NTFS filesystem sector 
-0      beshort         0x0500          Hitachi SH big-endian COFF
 # 2nd NTFS filesystem sector often starts with 0x05004e00 for unicode string 5 NTLDR
-#0     ubelong&0xFFFFNMPQ      0x0500NMPQ     Hitachi SH big-endian COFF
->18    beshort&0x0002  =0x0000         object
->18    beshort&0x0002  =0x0002         executable
->18    beshort&0x0008  =0x0008         \b, stripped
->18    beshort&0x0008  =0x0000         \b, not stripped
-#
-0      leshort         0x0550          Hitachi SH little-endian COFF
->18    leshort&0x0002  =0x0000         object
->18    leshort&0x0002  =0x0002         executable
->18    leshort&0x0008  =0x0008         \b, stripped
->18    leshort&0x0008  =0x0000         \b, not stripped
+# and Portable Gaming Notation Compressed format (*.WID http://pgn.freeservers.com/)
+0      beshort         0x0500          
+# test for unused flag bits (0x8000,0x0800,0x0400,0x0200,x0080) in f_flags
+>18    ubeshort&0x8E80 0               
+# use big endian variant of subroutine to display name+variables+flags
+# for common object formated files 
+>>0    use                             \^display-coff
+
+0      leshort         0x0550          
+# test for unused flag bits in f_flags
+>18    uleshort&0x8E80 0               
+# use little endian variant of subroutine to 
+# display name+variables+flags for common object formated files 
+>>0    use                             display-coff
 
index 28f9064c0aac48ec44b17c22da3ae3643977a8f5..82af0f0fd53dfff5cd16c6217823a44779caf23b 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: intel,v 1.11 2013/02/06 14:18:52 christos Exp $
+# $File: intel,v 1.12 2014/04/30 21:41:02 christos Exp $
 # intel:  file(1) magic for x86 Unix
 #
 # Various flavors of x86 UNIX executable/object (other than Xenix, which
 0      leshort         =0522           iAPX 286 executable large model (COFF)
 >12    lelong          >0              not stripped
 #>22   leshort         >0              - version %d
+# updated by Joerg Jenderek at Oct 2015
+# https://de.wikipedia.org/wiki/Common_Object_File_Format
+# http://www.delorie.com/djgpp/doc/coff/filhdr.html
+# ./msdos (version 5.25) labeled the next entry as "MS Windows COFF Intel 80386 object file"
+# ./intel (version 5.25) label labeled the next entry as "80386 COFF executable"
 # SGI labeled the next entry as "iAPX 386 executable" --Dan Quinlan
-0      leshort         =0514           80386 COFF executable
->12    lelong          >0              not stripped
->22    leshort         >0              - version %d
+0      leshort         =0514           
+# use subroutine to display name+flags+variables for common object formated files 
+>0     use                             display-coff
+#>12   lelong          >0              not stripped
+# no hint found, that at offset 22 is version
+#>22   leshort         >0              - version %d
 
 # rom: file(1) magic for BIOS ROM Extensions found in intel machines
 #      mapped into memory between 0xC0000 and 0xFFFFF
index ea8f8384d9f9999124340fbee6f6f31ee630680b..98465209c04250e93ae45e1d80dfc084b8d94b24 100644 (file)
@@ -1,6 +1,6 @@
 
 #------------------------------------------------------------------------------
-# $File: msdos,v 1.100 2014/06/03 19:17:27 christos Exp $
+# $File: msdos,v 1.101 2015/08/24 05:08:48 christos Exp $
 # msdos:  file(1) magic for MS-DOS files
 #
 
 100    search/0xffff   say
 >100   regex/c =^[\ \t]{0,10}say\ ['"]                 OS/2 REXX batch file text
 
-0      leshort         0x14c   MS Windows COFF Intel 80386 object file
+# updated by Joerg Jenderek at Oct 2015
+# https://de.wikipedia.org/wiki/Common_Object_File_Format
+# http://www.delorie.com/djgpp/doc/coff/filhdr.html
+# ./intel already labeled COFF type 0x14c=0514 as "80386 COFF executable"
+#0     leshort         0x14c   MS Windows COFF Intel 80386 object file
 #>4    ledate          x       stamp %s
 0      leshort         0x166   MS Windows COFF MIPS R4000 object file
 #>4    ledate          x       stamp %s
index d10f1873f07ba4914d94d7fab20a9f0dd9f2a65e..d4a7a8f917237eb1d3889a90d26212fb083ec55f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $File: Makefile.am,v 1.102 2015/01/28 01:05:21 christos Exp $
+# $File: Makefile.am,v 1.103 2015/03/17 15:15:12 christos Exp $
 #
 MAGIC_FRAGMENT_BASE = Magdir
 MAGIC_DIR = $(top_srcdir)/magic
@@ -50,6 +50,7 @@ $(MAGIC_FRAGMENT_DIR)/citrus \
 $(MAGIC_FRAGMENT_DIR)/clarion \
 $(MAGIC_FRAGMENT_DIR)/claris \
 $(MAGIC_FRAGMENT_DIR)/clipper \
+$(MAGIC_FRAGMENT_DIR)/coff \
 $(MAGIC_FRAGMENT_DIR)/commands \
 $(MAGIC_FRAGMENT_DIR)/communications \
 $(MAGIC_FRAGMENT_DIR)/compress \