Subject: re: IMPORTANT: MACHINE_ARCH WRONG ON MIPS PLATFORMS
To: Todd Vierling <tv@pobox.com>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: tech-toolchain
Date: 07/23/1998 12:15:26
Todd Vierling writes:

[snip lots]

>That "fixes" the bfd stuff.  But I never said anything against it; some
>platforms (m68k, sparc, i386) now build an ELF-capable toolchain.

I dont understand. Doesn't it solve the original question?


>Not quite.  You forgot to address how binary pkgs are known to be useable
>across a given ${MACHINE_ARCH} 

Really? As it stands, they aren't.  (Nor are install sets.)
Isn't that what we're disagreeing about?

And at least for release(7), I think we want all three of
mipsel/mipseb/mips, so that mips-arch headers and manages can be
shared.


>- or how ${MACHINE_ARCH} could be used to
>uniquely identify a given binary.    ``Historical precedent'' or not, it's
>_actively_ used for that.

Where, though?  Can you give me some examples?  How do we fix it so
they aren't? If it's toolchain programs, then should be _the same_
program for both mipseb and mipsel (on any given CPU) with runtime
flags to select the endian-ness.


>An architecture is described by both its hardware and its software.  In most
>cases, programs that care about the difference are caring about the
>_software_ architecture.

Nope. At least at compile-time, the mips _software_ in our tree has
been coded so that it's all ambi-endian: the same source code is used
for memory-copy and memory-move on both mipseb and mipsel. 

There are a few ifdefs to handle this (making {ntoh,hton}{h,l} a no-op
on big-endian). Most of it falls out by #ifdef'ing endian-independent
macros for the unaligned-byte load/store instructions.

Which one gets selected is controlled by the CPP predefines in the
toolchain. Which we can (or should be able to) toggle with a single
commandline qualifier.  (historical practice for mips toolchains and
software since they first shipped.)
AFAICT, the rest is handled at install time (or at compile/config
time, for the toolchain default vector).

Can you give some examples of what this breaks? I still dont get it.