Apply patches from file-3.37-8.
authorjbj <devnull@localhost>
Tue, 1 Oct 2002 19:17:55 +0000 (19:17 +0000)
committerjbj <devnull@localhost>
Tue, 1 Oct 2002 19:17:55 +0000 (19:17 +0000)
CVS patchset: 5744
CVS date: 2002/10/01 19:17:55

file/Localstuff
file/Magdir/elf
file/file.c
file/magic.mime
file/readelf.c

index bd008c1..2b5ca8f 100644 (file)
@@ -5,3 +5,12 @@
 # Id: Localstuff,v 1.3 1995/01/21 21:09:00 christos Exp 
 # Add any locally observed files here.  Remember:
 # text if readable, executable if runnable binary, data if unreadable.
+
+# XXX promoted from tex so that *.tfm is not mis-identified as mc68k file.
+# There is no way to detect TeX Font Metric (*.tfm) files without
+# breaking them apart and reading the data.  The following patterns
+# match most *.tfm files generated by METAFONT or afm2tfm.
+2      string          \000\021        TeX font metric data
+>33    string          >\0             (%s)
+2      string          \000\022        TeX font metric data
+>33    string          >\0             (%s)
index 53a6bc9..182ee85 100644 (file)
@@ -5,38 +5,45 @@
 # We have to check the byte order flag to see what byte order all the
 # other stuff in the header is in.
 #
-# MIPS R3000 may also be for MIPS R2000.
 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
 #
 # updated by Daniel Quinlan (quinlan@yggdrasil.com)
 0      string          \177ELF         ELF
 >4     byte            0               invalid class
 >4     byte            1               32-bit
-# only for MIPS
+# only for MIPS - in the future, the ABI field of e_flags should be used.
 >>18   beshort         8
 >>18   beshort         10
 >>>36   belong          &0x20           N32
 >4     byte            2               64-bit
 >5     byte            0               invalid byte order
 >5     byte            1               LSB
-# only for MIPS R3000_BE
+# The official e_machine number for MIPS is now #8, regardless of endianness.
+# The second number (#10) will be deprecated later. For now, we still
+# say something if #10 is encountered, but only gory details for #8.
 >>18    leshort                8
 # only for 32-bit
 >>>4   byte            1
->>>>36  lelong&0xf0000000       0x00000000      mips-1
->>>>36  lelong&0xf0000000       0x10000000      mips-2
->>>>36  lelong&0xf0000000       0x20000000      mips-3
->>>>36  lelong&0xf0000000       0x30000000      mips-4
->>>>36  lelong&0xf0000000       0x40000000      mips-5
->>>>36  lelong&0xf0000000       0x50000000      mips-6
+>>>>36  lelong&0xf0000000      0x00000000      MIPS-I
+>>>>36  lelong&0xf0000000      0x10000000      MIPS-II
+>>>>36  lelong&0xf0000000      0x20000000      MIPS-III
+>>>>36  lelong&0xf0000000      0x30000000      MIPS-IV
+>>>>36  lelong&0xf0000000      0x40000000      MIPS-V
+>>>>36  lelong&0xf0000000      0x60000000      MIPS32
+>>>>36  lelong&0xf0000000      0x70000000      MIPS64
+>>>>36  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  lelong&0xf0000000      0x90000000      MIPS64 rel2
 # only for 64-bit
 >>>4   byte            2
->>>>48  lelong&0xf0000000       0x00000000      mips-1
->>>>48  lelong&0xf0000000       0x10000000      mips-2
->>>>48  lelong&0xf0000000       0x20000000      mips-3
->>>>48  lelong&0xf0000000       0x30000000      mips-4
->>>>48  lelong&0xf0000000       0x40000000      mips-5
->>>>48  lelong&0xf0000000       0x50000000      mips-6
+>>>>48  lelong&0xf0000000      0x00000000      MIPS-I
+>>>>48  lelong&0xf0000000      0x10000000      MIPS-II
+>>>>48  lelong&0xf0000000      0x20000000      MIPS-III
+>>>>48  lelong&0xf0000000      0x30000000      MIPS-IV
+>>>>48  lelong&0xf0000000      0x40000000      MIPS-V
+>>>>48  lelong&0xf0000000      0x60000000      MIPS32
+>>>>48  lelong&0xf0000000      0x70000000      MIPS64 
+>>>>48  lelong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>48  lelong&0xf0000000      0x90000000      MIPS64 rel2
 >>16   leshort         0               no file type,
 >>16   leshort         1               relocatable,
 >>16   leshort         2               executable,
 # Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
 # corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
 >>16   leshort         4               core file
->>>(0x38+0xcc) string  >\0             of '%s'
->>>(0x38+0x10) lelong  >0              (signal %d),
+# Core file detection is not reliable.
+#>>>(0x38+0xcc) string >\0             of '%s'
+#>>>(0x38+0x10) lelong >0              (signal %d),
 >>16   leshort         &0xff00         processor-specific,
 >>18   leshort         0               no machine,
 >>18   leshort         1               AT&T WE32100 - invalid byte order,
 >>18   leshort         2               SPARC - invalid byte order,
 >>18   leshort         3               Intel 80386,
->>18   leshort         4               Motorola 68000 - invalid byte order,
+>>18   leshort         4               Motorola
+>>>36  lelong          &0x01000000     68000 - invalid byte order,
+>>>36  lelong          &0x00810000     CPU32 - invalid byte order,
+>>>36  lelong          0               68020 - invalid byte order,
 >>18   leshort         5               Motorola 88000 - invalid byte order,
 >>18   leshort         6               Intel 80486,
 >>18   leshort         7               Intel 80860,
-# "officially" big endian, but binutils bfd only emits magic #8 for MIPS.
->>18   leshort         8               MIPS R3000_LE [bfd bug],
+>>18   leshort         8               MIPS,
 >>18   leshort         9               Amdahl - invalid byte order,
->>18   leshort         10              MIPS R3000_LE,
+>>18   leshort         10              MIPS (deprecated),
 >>18   leshort         11              RS6000 - invalid byte order,
 >>18   leshort         15              PA-RISC - invalid byte order,
 >>>50  leshort         0x0214          2.0
@@ -81,7 +91,7 @@
 >>18   leshort         47              Hitachi H8/300H,
 >>18   leshort         48              Hitachi H8S,
 >>18   leshort         49              Hitachi H8/500,
->>18   leshort         50              IA-64 (Intel 64 bit architecture)
+>>18   leshort         50              IA-64,
 >>18   leshort         51              Stanford MIPS-X,
 >>18   leshort         52              Motorola Coldfire,
 >>18   leshort         53              Motorola M68HC12,
 >>20   lelong          0               invalid version
 >>20   lelong          1               version 1
 >>36   lelong          1               MathCoPro/FPU/MAU Required
+>8     string          >\0             (%s)
+>8     string          \0
+>>7    byte            0               (SYSV)
+>>7    byte            1               (HP-UX)
+>>7    byte            2               (NetBSD)
+>>7    byte            3               (GNU/Linux)
+>>7    byte            4               (GNU/Hurd)
+>>7    byte            5               (86Open)
+>>7    byte            6               (Solaris)
+>>7    byte            7               (Monterey)
+>>7    byte            8               (IRIX)
+>>7    byte            9               (FreeBSD)
+>>7    byte            10              (Tru64)
+>>7    byte            11              (Novell Modesto)
+>>7    byte            12              (OpenBSD)
+>>7    byte            97              (ARM)
+>>7    byte            255             (embedded)
 >5     byte            2               MSB
-# only for MIPS R3000_BE
+# only for MIPS - see comment in little-endian section above.
 >>18    beshort                8
 # only for 32-bit
 >>>4   byte            1
->>>>36  belong&0xf0000000       0x00000000      mips-1
->>>>36  belong&0xf0000000       0x10000000      mips-2
->>>>36  belong&0xf0000000       0x20000000      mips-3
->>>>36  belong&0xf0000000       0x30000000      mips-4
->>>>36  belong&0xf0000000       0x40000000      mips-5
->>>>36  belong&0xf0000000       0x50000000      mips-6
+>>>>36  belong&0xf0000000      0x00000000      MIPS-I
+>>>>36  belong&0xf0000000      0x10000000      MIPS-II
+>>>>36  belong&0xf0000000      0x20000000      MIPS-III
+>>>>36  belong&0xf0000000      0x30000000      MIPS-IV
+>>>>36  belong&0xf0000000      0x40000000      MIPS-V
+>>>>36  belong&0xf0000000      0x60000000      MIPS32
+>>>>36  belong&0xf0000000      0x70000000      MIPS64
+>>>>36  belong&0xf0000000      0x80000000      MIPS32 rel2
+>>>>36  belong&0xf0000000      0x90000000      MIPS64 rel2
 # only for 64-bit
 >>>4   byte            2
->>>>48  belong&0xf0000000       0x00000000      mips-1
->>>>48  belong&0xf0000000       0x10000000      mips-2
->>>>48  belong&0xf0000000       0x20000000      mips-3
->>>>48  belong&0xf0000000       0x30000000      mips-4
->>>>48  belong&0xf0000000       0x40000000      mips-5
->>>>48  belong&0xf0000000       0x50000000      mips-6
+>>>>48 belong&0xf0000000       0x00000000      MIPS-I
+>>>>48 belong&0xf0000000       0x10000000      MIPS-II
+>>>>48 belong&0xf0000000       0x20000000      MIPS-III
+>>>>48 belong&0xf0000000       0x30000000      MIPS-IV
+>>>>48 belong&0xf0000000       0x40000000      MIPS-V
+>>>>48 belong&0xf0000000       0x60000000      MIPS32
+>>>>48 belong&0xf0000000       0x70000000      MIPS64 
+>>>>48 belong&0xf0000000       0x80000000      MIPS32 rel2
+>>>>48 belong&0xf0000000       0x90000000      MIPS64 rel2
 >>16   beshort         0               no file type,
 >>16   beshort         1               relocatable,
 >>16   beshort         2               executable,
 >>16   beshort         3               shared object,
 >>16   beshort         4               core file,
->>>(0x38+0xcc) string  >\0             of '%s'
->>>(0x38+0x10) belong  >0              (signal %d),
+#>>>(0x38+0xcc) string >\0             of '%s'
+#>>>(0x38+0x10) belong >0              (signal %d),
 >>16   beshort         &0xff00         processor-specific,
 >>18   beshort         0               no machine,
 >>18   beshort         1               AT&T WE32100,
 >>18   beshort         2               SPARC,
 >>18   beshort         3               Intel 80386 - invalid byte order,
->>18   beshort         4               Motorola 68000,
+>>18   beshort         4               Motorola
+>>>36  belong          &0x01000000     68000,
+>>>36  belong          &0x00810000     CPU32,
+>>>36  belong          0               68020,
 >>18   beshort         5               Motorola 88000,
 >>18   beshort         6               Intel 80486 - invalid byte order,
 >>18   beshort         7               Intel 80860,
->>18   beshort         8               MIPS R3000_BE,
+>>18   beshort         8               MIPS,
 >>18   beshort         9               Amdahl,
->>18   beshort         10              MIPS R3000_LE - invalid byte order,
+>>18   beshort         10              MIPS (deprecated),
 >>18   beshort         11              RS6000,
 >>18   beshort         15              PA-RISC
 >>>50  beshort         0x0214          2.0
 >>18   beshort         47              Hitachi H8/300H,
 >>18   beshort         48              Hitachi H8S,
 >>18   beshort         49              Hitachi H8/500,
->>18   beshort         50              Intel Merced Processor,
+>>18   beshort         50              IA-64,
 >>18   beshort         51              Stanford MIPS-X,
 >>18   beshort         52              Motorola Coldfire,
 >>18   beshort         53              Motorola M68HC12,
index 590c048..c1e1607 100644 (file)
@@ -408,7 +408,8 @@ main(int argc, char **argv)
                        /*@switchbreak@*/ break;
                case 'i':
                        iflag++;
-                       if ((mime = malloc(strlen(magicfile) + 6)) != NULL) {
+                       mime = malloc(strlen(magicfile) + sizeof(".mime"));
+                       if (mime != NULL) {
                                (void)strcpy(mime, magicfile);
                                (void)strcat(mime, ".mime");
                                magicfile = mime;
index 836942a..7bec3fd 100644 (file)
 0      belong          0x2e7261fd      application/x-realaudio
 
 # MPEG Layer 3 sound files
-# Modified the 11/20/97 at 15:59:04 by Christophe Prud'homme <christophe.prudhomme@asci.fr>
-0       belong          0xfffb          audio/x-mp3
+0       beshort                &0xffe0         audio/mpeg
 #MP3 with ID3 tag
-0      string          ID3             audio/x-mp3
+0      string          ID3             audio/mpeg
 # Ogg/Vorbis
 0      string          OggS            audio/x-ogg
 
 0      string          MOVI                            video/sgi
 4      string          moov                            video/quicktime moov
 4      string          mdat                            video/quicktime mdat
+# MNG
+0      string          \x8aMNG                         video/x-mng
 # The contributor claims:
 #   I couldn't find a real magic number for these, however, this
 #   -appears- to work.  Note that it might catch other files, too,
 
 #PNG Image Format
 0      string          \x89PNG                 image/png
+
+# MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string          \x8aMNG                 video/x-mng
index 23881dc..4e0fb74 100644 (file)
@@ -550,7 +550,7 @@ tryelf(int fd, unsigned char *buf, int nbytes)
            return;
 
 
-       cls = buf[4];
+       cls = buf[EI_CLASS];
 
        if (cls == ELFCLASS32) {
                Elf32_Ehdr elfhdr;
@@ -560,7 +560,7 @@ tryelf(int fd, unsigned char *buf, int nbytes)
 
                u.l = 1;
                (void) memcpy(&elfhdr, buf, sizeof elfhdr);
-               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5];
+               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA];
 
                if (getu16(swap, elfhdr.e_type) == ET_CORE) 
 #ifdef ELFCORE
@@ -597,7 +597,7 @@ tryelf(int fd, unsigned char *buf, int nbytes)
 
                u.l = 1;
                (void) memcpy(&elfhdr, buf, sizeof elfhdr);
-               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5];
+               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA];
 
                if (getu16(swap, elfhdr.e_type) == ET_CORE) 
 #ifdef ELFCORE