Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Nov 1998 00:25:31 +1030 (CST)
From:      Kris Kennaway <kkennawa@physics.adelaide.edu.au>
To:        "Jordan K. Hubbard" <jkh@time.cdrom.com>
Cc:        grog@lemis.com, current@FreeBSD.ORG
Subject:   world stuff which doesnt compile with egcs (was Re: newer gcc?)
Message-ID:  <Pine.OSF.4.05.9811110010270.19783-100000@bragg>
In-Reply-To: <Pine.OSF.4.05.9811101205130.9655-100000@spectrum.physics.adelaide.edu.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 10 Nov 1998, Kris Kennaway wrote:

> On Mon, 9 Nov 1998, Jordan K. Hubbard wrote:
> 
> > > The reason i was asking is that i may bmake it and stick it into my tree,
> > 
> > That's a bit premature.  I'd be more interested if you could even build
> > the world from egcs installed in /usr/local.
> 
> >From memory (I don't have the list with me), the following things do not
> compile with the current egcs port and die with various errors:
> 
> lib/libc
> lib/libc_r
> lib/libstand
> games/bs
> games/<one other one>

games/rogue
sbin/vinum (one simple patch included, doesnt fix the second problem)
libexec/rtld-elf/

> gnu/lib/libg++
> gnu/lib/libstd++
> gnu/usr.bin/groff
> sys/<lots of stuff> - the boot code dies with errors, and the modules die
> because of the -elf directive or something

This was incorrect: the only thing which fails to compile now is
sys/i386/loader. The rest (including modules, etc) must have been transient
failures at the time I tested which have since been fixed. Some of the modules
give me warnings about extra format arguments as does the kernel when I
compile it under ELF; will I notice anything different with such an
egcs-compiled module (or kernel)?

> lkm/* because of -aout

Following is a list of the exact point at which the above die. One of the
vinum errors was caused by what I presume to be a typo'ed variable (I couldnt
find any definition of the datatype it was barfing on). The other one I
couldnt find any easy fix in my quick browsing of the code (hey, I'm a
physicist, not a C programmer! :) - no doubt Greg will be able to identify any
simple solution.

Note that assert.c seems to cause problems whenever it's used (libc, libc_r,
libstand). The three gnu breakages are caused by differences in the c++
support between gcc and egcs, apparently (I didnt bother to include the output
figuring probably no-one cared :)

************
*** lib/libc
************

--- assert.o ---
/usr2/src/lib/libc/../libc/gen/assert.c:43: parse error before string constant
/usr2/src/lib/libc/../libc/gen/assert.c:46: parse error before `{'
/usr2/src/lib/libc/../libc/gen/assert.c:50: conflicting types for `abort'
/usr/include/stdlib.h:85: previous declaration of `abort'
/usr2/src/lib/libc/../libc/gen/assert.c:50: warning: data definition has no type or storage class
/usr2/src/lib/libc/../libc/gen/assert.c:52: parse error before `}'
*** Error code 1

**************
*** lib/libc_r
**************

- as for libc

************
*** games/bs
************

(probably egcs breakage?)

cc -O2 -pipe -mpentium -march=pentium   -c bs.c
{standard input}: Assembler messages:
{standard input}:650: Error: base/index register must be 32 bit register
{standard input}:651: Error: base/index register must be 32 bit register
{standard input}:652: Error: base/index register must be 32 bit register
{standard input}:653: Error: base/index register must be 32 bit register
{standard input}:654: Error: base/index register must be 32 bit register

***************
*** games/rogue
***************

cc -O2 -pipe -mpentium -march=pentium -DUNIX -fwritable-strings   -c message.c
message.c:56: initializer element for `msgs[0]' is not constant
message.c:56: initializer element for `msgs[1]' is not constant
message.c:56: initializer element for `msgs[2]' is not constant
message.c:56: initializer element for `msgs[3]' is not constant
message.c:56: initializer element for `msgs[4]' is not constant

**************
*** sbin/vinum
**************

In file included from /usr2/src/sys/modules/vinum/../../../lkm/vinum/vinumhdr.h:91,
                 from /usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c:44:
/usr2/src/sys/modules/vinum/../../../lkm/vinum/vinumext.h:44: warning: type defaults to `int' in declaration of `debug'
/usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c: In function `vinumstart':
/usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c:209: incompatible type for argument 2 of `logrq'
/usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c: In function `launch_requests':
/usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c:386: incompatible type for argument 2 of `logrq'
/usr2/src/sys/modules/vinum/../../../lkm/vinum/request.c:414: incompatible type for argument 2 of `logrq'
*** Error code 1                                                               

cc -I/usr2/src/sys/modules/vinum/../../../lkm/vinum -O -g -I/usr/include/machine -DDEBUG -Wall -Wno-unused -Wno-parentheses  -DKERNEL -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit  -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes  -Wpointer-arith -Winline -Wuninitialized -Wformat  -ansi -DKLD_MODULE -nostdinc -I- -I/usr2/src/sys/modules/vinum/../../../lkm/vinum -I/usr/include/machine -I/usr2/src/sys/modules/vinum -I/usr2/src/sys/modules/vinum/@ -c /usr2/src/sys/modules/vinum/../../../lkm/vinum/util.c
In file included from /usr2/src/sys/modules/vinum/../../../lkm/vinum/vinumhdr.h:91,
                 from /usr2/src/sys/modules/vinum/../../../lkm/vinum/util.c:41:
/usr2/src/sys/modules/vinum/../../../lkm/vinum/vinumext.h:44: warning: type defaults to `int' in declaration of `debug'
/usr2/src/sys/modules/vinum/../../../lkm/vinum/util.c: In function `VolState':
/usr2/src/sys/modules/vinum/../../../lkm/vinum/util.c:157: conversion to incomplete type

--- util.c~     Wed Sep 16 15:26:21 1998
+++ util.c      Tue Nov 10 23:31:45 1998
@@ -154,7 +154,7 @@
     int i;
     for (i = 0; i < STATECOUNT(vol); i++)
        if (strcmp(text, volstatetext[i]) == 0)             /* found it */
-           return (enum volstate) i;
+           return (enum volumestate) i;
     return -1;
 }                                                                          

gnu/lib/libg++
gnu/lib/libstdc++
gnu/usr.bin/groff

*********************
*** libexec/rtld-elf/
*********************

map_object.o(.text+0x107): undefined reference to `__eprintf'

*******************
*** sys/i386/loader
*******************

cc -nostdlib -static -Ttext 0x1000 -o loader.sym /usr2/src/sys/boot/i386/loader/../btx/lib/crt0.o main.o conf.o bcache.o boot.o commands.o console.o devopen.o interp.o interp_backslash.o interp_parse.o load_aout.o load_elf.o ls.o misc.o module.o panic.o isapnp.o pnp.o vers.o   -lstand /usr2/src/sys/boot/i386/loader/../libi386/libi386.a -lstand
cc: 0x1000: No such file or directory

****************
*** lib/libstand
****************

assert.c:33: parse error before string constant
assert.c:36: warning: type defaults to `int' in declaration of `exit'
assert.c:36: warning: data definition has no type or storage class
assert.c:37: parse error before `}'

lkm/ (lack of -aout directive for egcs)

Kris


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.OSF.4.05.9811110010270.19783-100000>