Subject: Some problems compiling libg++-2.6.2 on NetBSD1.0 i486
To: None <bug-lib-g++@prep.ai.mit, current-users@NetBSD.ORG>
From: Douglas Thomas Crosher <dtc@scrooge.ee.swin.oz.au>
List: current-users
Date: 03/03/1995 02:32:09
Some problems with the compilation of libg++-2.6.2 with gcc-2.6.3 on
NetBSD1.0 i486 are described blow. Some hacks are described.
The script libio/gen_params generates some incorrect values in the
file libio/_G_config.h :
1.
The script seems to assume the system defines uint16_t,
uint32_t and uint64_t. However NetBSD does not define these so the
script screws them up. Those affected are:
A. _G_uint16_t set to: unsigned
should be: unsigned short
( Note: This is causes errors compiling libg++/src/Fix.cc;
It does not need to be patched and will compile
and pass the test if this problem is fixed. )
B. _G_uint32_t set to: unsigned
should be: unsigned int
C. _G_uint64_t set to: unsigned
should be: unsigned long long
2.
The other major problem is that the typedef for _G_fpos_t is
defined in terms of quad_t early in _G_config.h; at this point quad_t
is not defined so the compilation breaks. On NetBSD i486 a quad_t is
a long long; as a hack just replace quad_t with long long.
3.
Another small difference I noticed was in the definition
of _G_int8_t. Not sure if this is a real problem?
set to: signed int
perhaps it should be: __signed int
Hack to work around these problems:
-----------------------------------
Let libg++ compile until it generates the erroneous _G_config.h file,
then edit this file making the above changes and continue with the
compilation. The corrected lines from _G_config.h are:
typedef long long _G_fpos_t;
typedef __signed char _G_int8_t;
typedef unsigned short _G_uint16_t;
typedef unsigned int _G_uint32_t;
typedef unsigned long long _G_uint64_t;
Information that may help produce a fixed gen-params.c
------------------------------------------------------
NetBSD defines u_int16_t, u_int32_t, u_int64_t, and int8_t
in <machine/types>.
<sys/types.h> includes <machine/types.h>
<stdio.h>, <stdlib.h> and <unistd.h> include <sys/types.h>
Regards
Douglas Crosher