Martin Schoenert writes:
'gcc' does not seem to cause any problems. Unfortunately for our user in
Zimbabwe, getting GNU C would be a major undertaking.
Walnut Creek CDROM (firstname.lastname@example.org) delivers very quickly. I got
alot of GNU source and Solaris binaries on CDROM from them (including gcc),
and it only took 3 days from California to Canada. Prices seem reasonable
too, and they serve world wide, as I recall.
The problems you had in 'system.c' were probably caused by a conflict
between the declaration of 'signal' in 'system.c' and the Solaris include
files. In this case just building with
'make COPTS=-DSYS_HAS_SIGNAL_PROTO' should also solve it.
Could you check, whether this is true?
Well I gave it a try, but this did not work for me. The
trouble I had was with conflicting prototypes for time. Here is the
make target I used:
> @echo "'sun-sparc-solaris2.3-gcc' for SUN under Solaris2.3(SunOS5.3) with gcc 2.6" 274a276,280 > sun-sparc-solaris2.3-gcc: > @$(MAKE) system.o CC=gcc CFLAGS="$(COPTS) -O6 -DSYS_IS_USG -DSYS_HAS_TIME_PROTO -DSOLARIS2" > @$(MAKE) gap CC=gcc CFLAGS="$(COPTS) -O6" SYS_FILE=system.o LOPTS="$(LOPTS)" (The rest of the diff is just the RCS $Id: 2.html,v 1.2 2004/04/21 15:05:23 felsch Exp $ field and a modified clean target.)
The reason for the '-DSOLARIS2' is that I had to omit a couple of
prototypes in 'system.c'. Here is part of a context diff of
system.c to illustrate the change I made:
*************** *** 1478,1486 **** --- 1478,1489 ---- #ifndef SYS_HAS_SIGNAL_PROTO /* ANSI/TRAD decl. from H&S 19.6 */ extern sig_handler_t * signal P(( int, sig_handler_t * )); extern int getpid P(( void )); + #ifndef SOLARIS2 extern int kill P(( int, int )); #endif + #endif + #ifndef SYS_HAS_READ_PROTO /* UNIX decl. from 'man' */ extern int read P(( int, char *, int )); extern int write P(( int, char *, int )); *************** *** 2431,2437 **** --- 2434,2442 ---- #ifndef SYS_HAS_SIGNAL_PROTO /* ANSI/TRAD decl. from H&S 19.6 */ extern sig_handler_t * signal P(( int, sig_handler_t * )); extern int getpid P(( void )); + #ifndef SOLARIS2 extern int kill P(( int, int )); + #endif #endif
#ifndef SYS_TIME_H /* time functions */
I confess I do not know why this was necessary, but it did work.
I should point out that this is from patch level 0, not patch
level 1, which I have yet to load onto my Sparc.
I hope this information will be of some help to you or to
our friend in Zimbabwe. If there is anything else I can tell you
please let me know.