Subject: Re: MACHINE_ARCH vs. OBJ_ARCH
To: None <Havard.Eidnes@runit.sintef.no>
From: Todd Vierling <tv@pobox.com>
List: tech-toolchain
Date: 07/26/1998 13:55:02
On Sun, 26 Jul 1998 Havard.Eidnes@runit.sintef.no wrote:

:  o What does a user have to do to determine what OBJ_ARCHs his
:    combination of OS and hardware can run?  In particular, is
:    there some command which can be run to find this information,
:    short of actually trying to run the binaries?

OBJ_ARCH will be available through "sysctl -n hw.obj_arch" very similarly to
"sysctl -n hw.machine_arch".  It would probably be useful to make a uname
option for it as well, i.e. "uname -o", just for user simplicity.

OBJ_ARCH is the definitive answer.  Whatever your system's OBJ_ARCH value is
determines what binaries you can run natively (without supplying the foreign
libc, ld.so, and so forth as for COMPAT_FREEBSD or COMPAT_SUNOS).

Any other NetBSD binaries that you can run that are from a different
OBJ_ARCH would be treated like any other COMPAT_ emulation.  You'd need the
foreign NetBSD OBJ_ARCH's ld.so, libc, and so on.

:  o I assume the output of "uname -m" on NetBSD will be "mips" for
:    all machines with a MIPS processor, irrespective of its
:    endianness or wheter it's a MIPS1 or MIPS3?

Correct.

:  o Are there any plans to have the ability to run both 64-bit and
:    32-bit binaries on the MIPS port?  Do the shared libraries
:    have to exist in both 32-bit and 64-bit variants?  If yes,
:    where should each of them be stored?

You would keep the native (64 bit) libraries in /usr/lib and put the 32 bit
ones somewhere in /emul just like any other COMPAT_ emulation.  I'd imagine
that a COMPAT_MIPS32 sort of module would be created for the task of running
32 bit binaries on a 64 bit system, and it would use something like
/emul/mips32.  (Just my suggestion on the `mips32' name.)

-- 
-- Todd Vierling (Personal tv@pobox.com; Bus. todd_vierling@xn.xerox.com)