Problems compiling gcc 2.7.2

Ian Lance Taylor ian@wasabisystems.com
Wed Apr 7 00:59:00 GMT 2004


Paulo Pinto <paulo.pinto@cern.ch> writes:

> several years ago I developed a compiler that
> generated bytecodes for a stack machine.
> 
> The code was then processed with NASM
> using some macros and the runtime library
> was developed in C.
> 
> I remember that at the time if I used gcc 2.7.2
> I didn't had any problems. But if I used egcs
> the code would run just fine and end with a
> seg fault after returning from main().
> 
> I never cared much about it at the time because
> egcs had just appeared in the scene and
> the generated code run just fine with gcc 2.7.2.
> 
> Now a friend asked me for this compiler and
> I've discover that with the latest versions of
> egcs I still have the same problem as before.
> 
> So I've decided to install gcc 2.7.2 to see if
> it would generate correct code for my compiler.
> 
> But gcc does not compile this old version.
> 
> I get the following error message:
> 
> cc -c  -DIN_GCC   -g     -I. -I. -I./config bc-emit.c
> In file included from bc-emit.c:948:
> bc-typecd.def: In function `bc_emit_instruction':
> bc-typecd.def:17: `SFtype' is promoted to `double' when passed through `...'
> bc-typecd.def:17: (so you should pass `double' not `SFtype' to `va_arg')
> make: *** [bc-emit.o] Error 1
> 
> Does anyone have any idea?

Well, the error message is telling you that the code in gcc 2.7.2 is
incorrect.  The code used SFtype in va_arg, but it should have used
double.

This is not a big deal as bc-emit.c is never used.  You can probably
just delete that function entirely.

You may run into other problems.


But if I were you I would fix your code, not gcc 2.7.2.  If your code
crashes with the original egcs and with the current gcc 3.3.3, it is
very likely that there is a bug in your code.  A segfault after
returning from main generally indicates stack corruption.

Ian



More information about the Gcc-help mailing list