This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Analysis of remaining xm-host headers


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]