tom@tnosoes.UUCP (Tom Vijlbrief) (08/23/89)
I found a bug in either gcc-ld++ or gas1.34.
The following program dumps core when assembled with gas,
but not when assembled with the sun as.
Deleting 'static' eliminates the problem.
I'm running this on a Sun 3/60 which has a debugging malloc package.
The assembler output differs, the assemblers use a different alignment:
Sun as:
00000088 T __GLOBAL_$I$t_c
U ___builtin_new
000000a0 b _debug
00000002 C _gBlue_table
0000009c D _gColor_len
00000002 C _gGreen_table
00000002 C _gRed_table
00000054 T _main
U _malloc
U _malloc_debug
0000000a t _mydebug_PSmydebug
U _write
00000000 t gcc_compiled.
gcc-as:
0000008a T __GLOBAL_$I$t_c
U ___builtin_new
000000a4 b _debug
00000002 C _gBlue_table
000000a0 D _gColor_len
00000002 C _gGreen_table
00000002 C _gRed_table
00000056 T _main
U _malloc
U _malloc_debug
0000000a t _mydebug_PSmydebug
U _write
00000000 t gcc_compiled.
===================t.c============================
class mydebug {
public:
mydebug() { malloc_debug(2); write(2, "Running\n", 8); }
};
static mydebug debug;
main()
{
malloc(36);
malloc(38);
}
==============================
g++ t.c /usr/lib/debug/malloc.o -v
g++ version 1.35.0
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 t.c /tmp/cca26492.cpp
GNU CPP version 1.35
/usr/local/lib/gcc-cc1plus /tmp/cca26492.cpp -quiet -dumpbase t.c -noreg -version -o /tmp/cca26492.s
GNU C++ version 1.35.0 (68k, MIT syntax) compiled by GNU C version 1.35.
In method struct mydebug *mydebug::mydebug ():
t.c:3: warning: implicit declaration of function `malloc_debug'
t.c:3: warning: implicit declaration of function `write'
In function int main ():
t.c:10: warning: implicit declaration of function `malloc'
/usr/local/lib/gcc-as -mc68020 /tmp/cca26492.s -o t.o
/usr/local/lib/gcc-ld++ -C /usr/local/lib/crt0+.o /lib/Mcrt1.o t.o /usr/lib/debug/malloc.o -lg++ /usr/local/lib/gcc-gnulib -lc
tom@sunflare:~/src/CC> a.out
Running
Bad free list pointer (0x2090e)
IOT trap (core dumped)
========================
replace gcc-as with as:
===========================
tom@sunflare:~/src/CC>
g++ t.c /usr/lib/debug/malloc.o -v
g++ version 1.35.0
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 t.c /tmp/cca26499.cpp
GNU CPP version 1.35
/usr/local/lib/gcc-cc1plus /tmp/cca26499.cpp -quiet -dumpbase t.c -noreg -version -o /tmp/cca26499.s
GNU C++ version 1.35.0 (68k, MIT syntax) compiled by GNU C version 1.35.
In method struct mydebug *mydebug::mydebug ():
t.c:3: warning: implicit declaration of function `malloc_debug'
t.c:3: warning: implicit declaration of function `write'
In function int main ():
t.c:10: warning: implicit declaration of function `malloc'
as -mc68020 /tmp/cca26499.s -o t.o
/usr/local/lib/gcc-ld++ -C /usr/local/lib/crt0+.o /lib/Mcrt1.o t.o /usr/lib/debug/malloc.o -lg++ /usr/local/lib/gcc-gnulib -lc
tom@sunflare:~/src/CC> a.out
Running
tom@sunflare:~/src/CC>
===============================================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23 Phone: +31 34 63 562 11
3769 ZG Soesterberg E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands or: uunet!mcvax!tnosoes!tom
===============================================================================