[gnu.gcc.bug] Bug in 'robotussin' - 'reloc reference to ignored symbol'

dtynan@altos86.Altos.COM (Dermot Tynan) (07/21/89)

I'm running Altos System V.3d (similar to V.3.1), on a 2000/386.  Everything
compiles just fine (gld, bison, gcc, etc).  Until I get to 'gawk'.  The
compiler runs out of steam (probably due to the large macros).  So, I use'
gcc instead.  The following problem occurs:

Script started on Thu Jul 20 13:08:20 1989
1 altos86# ls -lF /lib/crt?.o
-rw-rw-r--   1 bin      sys          496 Feb 12  1988 /lib/crt0.o
-rw-rw-r--   1 bin      sys          604 Feb 12  1988 /lib/crt1.o
-rw-rw-r--   1 bin      sys          364 Feb 12  1988 /lib/crtn.o
2 altos86# gnu robotussin /lib/crt0.o /usr/local/lib/gcc-crt0.o
3 altos86# gnu robotussin /lib/crt1.o /usr/local/lib/gcc-crt1.o
robotussin: Oops! possible bug - reloc reference to ignored symbol
4 altos86# gnu robotussin /lib/crtn.o /usr/local/lib/gcc-crtn.o
5 altos86# cd gawk
6 altos86# make
	gcc -o gawk -O -DUSG        awk1.o awk2.o awk3.o awk4.o awk5.o awk6.o awk7.o awk8.o awk9.o  version.o awka.o  awk.tab.o regex.o   -lm 
ld: premature end of file in symbols of /usr/local/lib/gcc-crt1.o
*** Error code 1

Stop.
8 altos86# exit
9 altos86# 
script done on Thu Jul 20 13:10:23 1989

Symbols from /lib/crt1.o:

Name                  Value   Class        Type         Size   Line  Section

crt1.s              |        | file |                  |      |     |
_start              |       0|extern|                  |      |     |.text
_mcount             |      58|extern|                  |      |     |.text
environ             |      60|extern|                  |      |     |.bss
_istart             |      92|static|                  |      |     |.init
main                |       0|extern|                  |      |     |
exit                |       0|extern|                  |      |     |

I have no idea what the problem here is, but I'll look into it further.
In the meantime, has anyone else seen this problem?  What is crt1.o used
for, that isn't covered in 'crt0.o'.  Thanks...
						- Der
-- 
	dtynan@altos86.Altos.COM		(408) 946-6700 x4237
	Dermot Tynan,  Altos Computer Systems,  San Jose, CA   95134

    "Far and few, far and few, are the lands where the Jumblies live..."

james@bigtex.cactus.org (James Van Artsdalen) (07/22/89)

In <3553@altos86.Altos.COM>, dtynan@altos86.Altos.COM (Dermot Tynan) wrote:

> 1 altos86# ls -lF /lib/crt?.o
> -rw-rw-r--   1 bin      sys          496 Feb 12  1988 /lib/crt0.o
> -rw-rw-r--   1 bin      sys          604 Feb 12  1988 /lib/crt1.o
> -rw-rw-r--   1 bin      sys          364 Feb 12  1988 /lib/crtn.o
> 2 altos86# gnu robotussin /lib/crt0.o /usr/local/lib/gcc-crt0.o
> 3 altos86# gnu robotussin /lib/crt1.o /usr/local/lib/gcc-crt1.o
> robotussin: Oops! possible bug - reloc reference to ignored symbol
> 4 altos86# gnu robotussin /lib/crtn.o /usr/local/lib/gcc-crtn.o

robotussin doesn't handle the .init section in COFF files.  It doesn't
need to, because GNU ld doesn't handle shared libraries.  It appears
that the .init section is not used except by shared libraries.

> In the meantime, has anyone else seen this problem?  What is crt1.o used
> for, that isn't covered in 'crt0.o'.

crt1.o and crtn.o are required for using shared libraries.  crt0.o may
be used if you don't use shared libraries.  Since GNU ld doesn't handle
SysV shared libraries, there's no point in robotussining crt1.o or crtn.o.
Just use crt0.o.
-- 
James R. Van Artsdalen          james@bigtex.cactus.org   "Live Free or Die"
Dell Computer Co    9505 Arboretum Blvd Austin TX 78759         512-338-8789