Subject: bin/1910: /etc/magic changes for SGI MIPSLE-LE ECOFF inconsistent with Ultrix
To: None <gnats-bugs@gnats.netbsd.org>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: netbsd-bugs
Date: 01/07/1996 08:20:47
>Number:         1910
>Category:       bin
>Synopsis:       magdir/sgi changes for SGI/mips wrong for pmax LE mips
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people (Utility Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jan  7 11:50:13 1996
>Last-Modified:
>Originator:     Jonathan Stone
>Organization:
	stanford dsg
>Release:        NetBSD-current at 1995-12-22
>Environment:
	
System: NetBSD Reno.DSG.Stanford.EDU 1.1A NetBSD 1.1A (NEWCONF) #20: Sun Jan 7 05:21:40 PST 1996 jonathan@Reno.DSG.Stanford.EDU:/usr/src/sys/arch/pmax/compile/NEWCONF pmax


>Description:

NetBSD's pmax port runs on a little-endian MIPS machine (Decstations).
The NetBSD /usr/bin/file  command used to correctly identify such
binaries as being Ultrix/pmax ECOFF binaries.

It appears that someone incorporated file-1.37.

This version of file  has support for  SGI (big-endian mips) magic numbers.
Supporting SGI magic numbers is laudable.  However, whoever wrote this
(presumably for file-1.3&) apparently didn't realize that those magic
numbers are inappropriate (or wrong) for little-endian MIPS machines.
Indeed, the comments in magdir/sgi say as much: it's correct for
SGI's big-endian product line.


On NetBSD/pmax, identification of Ultrix/mips (little-endian files),
which now appear as being

	MIPSEL-LE COFF executable (paged) stripped - version 10.2

which is bogus in several ways:

1. The name is wrong. These are ECOFF binaries, not COFF.
   (that applies to the other mips COFF binaries, too.)

2. The name MIPSEL-LE is bogus, or at least big-endian
   biased. The corresponding name in /etc/magic for big-endian
   header, big-endian content ECOFF binaries is "MIPSEB".
   The appropriate name for little-endian-header, little-endian
   content mips/ecoff files should be "MIPSEL", not "MIPSEL-LE".
   HOwever, the /etc/magic entry uses "MIPSEL" to mean big-endian
   header, little-endian content.

   Surely, if native big-endian ECOFF mips files are "MIPSEB",,
   native little-endian ECOFF mips files should be "MIPSEL".


3. The version number for native-little-endian ecoff appears
   byte-swapped; it should be 2.10, not 10.2.

>How-To-Repeat:

	/usr/bin/file any-ultrix/RISC-pmax-binary.
>Fix:

The comment in /etc/magic saying  changes need to be
made to src/cmd/file/magdir should be altered for NetBSD, where
the source is in /usr/src/bin/file/magdir.


The following should be submitted to the maintainers of file:

Rename magdir/sgi to magdir/mips, since SGI is not the only vendor
of MIPS chips.

Change all occurences of COFF to ECOFF in magdir/mips.
Change all occurences of "MIPSEL" to "MIPSEL-BE" in magdir/mips.
(It's not clear to me that "MIPSEB-LE" and "MIPSEL-BE" are the
 right way around.)

Change all occurences of "MIPSEL-LE" to "MIPSEL" in magdir/mips.

>Audit-Trail:
>Unformatted: