This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Analysis of remaining xm-host headers
- To: gcc at gcc dot gnu dot org
- Subject: Analysis of remaining xm-host headers
- From: "Zack Weinberg" <zackw at stanford dot edu>
- Date: Wed, 14 Mar 2001 00:43:54 -0800
There are 25 xm-host headers remaining. This is what's in each, with
some analysis. I'd appreciate commentary from port maintainers; even
so much as a "the last one of those was switched off in 1997" would do.
xm-interix.h: The only xm header left at top level. Defines
DO_GLOBAL_CTORS_BODY and DO_GLOBAL_DTORS_BODY. Both belong in
interix.h - this is target configuration.
alpha/xm-alpha-interix.h: Overrides HOST_WIDE_INT to long long; uses
__int64 instead of long long if not __GNUC__. This is because 'long'
is 32 bits on alpha-interix, which strikes me as too broken to live,
but never mind. We may be stuck with this.
alpha/xm-vms.h: Overrides HOST_WIDE_INT to long long (what's a
sensible OS like VMS doing with 32-bit longs on an Alpha?!) Sets
*_EXIT_CODE, VMS, OBJECT_SUFFIX, EXECUTABLE_SUFFIX, INCLUDE_DEFAULTS,
defines a whole pile of HAVE_* macros, #defines unlink to remove,
includes several system headers and then #undefs FILE_TYPE. We are
probably stuck with most of this - let's see what the ACT people do to
it.
i370/xm-mvs.h: Defines FATAL_EXIT_CODE. I don't see a better way to
do that.
i386/xm-beos.h, rs6000/xm-beos.h: A shocking amount of crud which
makes sense only if beos can't run configure. I'm 99% sure this is
not the case. The only necessary bits appear to be the
include-directory adjustments, and an unconditional #define
USE_C_ALLOCA. On the latter, aomment explains that beos stacks are
permanently limited to 64KB, but it says "may change after DR9" so it
may be obsolete.
i386/xm-cygwin.h, i386/xm-djgpp.h, i386/xm-mingw32.h: Pile of macro
definitions to teach GCC about DOS style file systems and a couple
more tweaks. Should be tidiable down to just
HAVE_DOS_BASED_FILE_SYSTEM and a couple others; we need
machine-independent work first, though.
i386/xm-i386-interix.h: Sets HOST_WIDEST_INT to __int64 if we don't
have gcc. Can be handled in hwint.h, we have the machinery to detect
__int64 already.
i386/xm-isc.h: #defines REAL_VALUE_ATOF to strtod if not
REAL_ARITHMETIC. Unlikely to be necessary still.
i386/xm-next.h, m68k/xm-next.h, m88k/xm-m88k.h: Overrides
OBSTACK_CHUNK_SIZE. Rationale not clear, probably a marginal
performance tweak - less important now most allocations go through the
garbage collector.
i386/xm-sco.h, i386/xm-sco5.h: Overrides IO_BUFFER_SIZE. Again,
dubious performance tweak. Harmless, though.
i386/xm-osf1elf.h, ns32k/xm-pc532-min.h: Defines HZ. The
machine-independent timing logic has a tangle of ifdefs which need to
go away, then this can too.
i386/xm-vsta.h: Sets PATH_SEPARATOR. No explanation. What's a VSTA?
m68hc11/xm-m68hc11.h: Sets inhibit_libc. Move to m68hc11.h?
m68k/xm-plexus.h: Some nonsense with size_t, definitely not necessary
anymore.
mips/xm-iris5.h: Undefines HAVE_INTTYPES_H, warning of a clash with
sys/types.h. Are we actually using <inttypes.h> for anything?
romp/xm-romp.h: Defines FUNCTION_CONVERSION_BUG if __HIGHC__. Not
sure what's going on here. Also defines bcopy (incorrectly) - can go
away as soon as Kaveh finishes getting rid of bcopy.
rs6000/xm-darwin.h: Shuts off HAVE_DESIGNATED_INITIALIZERS,
complaining of bugs in Apple's version of GCC. Could we maybe be more
conservative about acceptable version ranges instead?
vax/xm-vms.h: All the cruft that was in alpha/xm-vms.h, minus the
64-bit nonsense, plus a whole bunch more working around lossage in
VAXC, its RTL, or the old old old VMS linker. My vote is blow away
this entire port.
Basically, we're down to: historical baggage, things that could be
cleaned up with a moderate amount of work in the machine-independent
code, and genuinely necessary code.
zw