[gnu.g++.bug] latest g++ test release fails to build on Sequent Symmetry

scott%prism@GATECH.EDU (Scott Holt) (08/25/89)

I am attempting to build the latest test release of g++ obtained from
yahi.stanford.edu on 8/24 at around 2:00. The version of gcc being used
is 1.35.96, also obtained from yahi.stanford.edu.

The problem occurs in attempting to link cc1plus. ld++ aborts with the
following error:

	unex-addr.c:7: Undefined symobol start referenced from text.

Previous versions of g++(1.35.1-) have compiled fine as did the last
announced test release (it did not load cc1plus using ld++). There
were no problems building gcc.

The version of gcc being used has one patch to the i386.md file to
correct a problem with floating point code. I can provide this if you
think it matters...

attached is the transcript of the failed make.

- Scott Holt
  Ga Tech - OCS

------
	gcc -g -DSOS -DESKIT -O -I. -I./config  -DSTANDARD_STARTFILE_PREFIX=\"/h
ydra3/scott/gnutest/lib/\"  -DSTANDARD_EXEC_PREFIX=\"/hydra3/scott/gnutest/lib/g
cc-\" -c gcc.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config malloc.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config version.c
	gcc -g -DSOS -DESKIT -O -X -o g++ gcc.o version.o obstack.o  malloc.o 
	if cmp -s tm.h config/tm-sun3+.h; then  OPTS='-Dmc68020 -DSUN3=3 -DTARGE
T=SUN3';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/li
b"';  elif cmp -s tm.h config/tm-sun3-fpa+.h; then  OPTS='-Dmc68020 -DSUN3=3 -DT
ARGET=SUN3';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/loca
l/lib"';  elif cmp -s tm.h config/tm-sun3-nfp+.h; then  OPTS='-Dmc68020 -DSUN3=3
 -DTARGET=SUN3';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/
local/lib"';  elif cmp -s tm.h config/tm-sun2+.h; then  OPTS='-Dmc68010 -DSUN2=2
 -DTARGET=SUN2';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/
local/lib"';  elif cmp -s tm.h config/tm-sun4os3+.h; then  OPTS='-DSUN4=4 -DTARG
ET=SUN4';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/l
ib"';  elif cmp -s tm.h config/tm-sun4os4+.h; then  OPTS='-DSUN4=4 -DTARGET=SUN4
';  DFLTS='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/lib"';  
elif cmp -s tm.h config/tm-sparc+.h; then  OPTS='-DSUN4=4 -DTARGET=SUN4';  DFLTS
='"/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/lib"';  elif cmp 
-s tm.h config/tm-encore.h; then  CRT0_OPTIONS='-DUMAX';  DFLTS='"/hydra3/scott/
gnutest/lib", "/lib", "/usr/lib", "/usr/local/lib"';  elif cmp -s tm.h config/tm
-hp9k320g+.h; then  OPTS='-Dmc68020 -DNON_NATIVE -DUSG'  DFLTS='"/hydra3/scott/g
nutest/lib/gnu", "/lib", "/usr/lib", "/usr/local/lib"';  elif cmp -s tm.h config
/tm-altos3068.h; then  OPTS='-DCOFF_ENCAPSULATE -DNON_NATIVE -DUSG -DPORTAR';  e
lif cmp -s tm.h tm-i386gas+.h; then  OPTS='-DUSG -DCOFF_ENCAPSULATE -DNON_NATIVE
 -DPORTAR';  else  OPTS='-DTARGET=-1';  DFLTS='"/hydra3/scott/gnutest/lib", "/li
b", "/usr/lib", "/usr/local/lib"';  fi;  echo $OPTS $DFLTS;  if [ "$DFLTS" = "" 
] ;  then  gcc -c -v $OPTS  -g -DSOS -DESKIT -O -g -DSOS -DESKIT -O newld.c ;  e
lse  gcc -c -v $OPTS -DSTANDARD_SEARCH_DIRS="$DFLTS"  -g -DSOS -DESKIT -O -g -DS
OS -DESKIT -O newld.c ;  fi
-DTARGET=-1 "/hydra3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/lib"
gcc version 1.35.96
 /hydra3/scott/gnutest/lib/gcc-cpp -v -DTARGET=-1 -DSTANDARD_SEARCH_DIRS="/hydra
3/scott/gnutest/lib", "/lib", "/usr/lib", "/usr/local/lib" -DSOS -DESKIT -DSOS -
DESKIT -undef -D__GNUC__ -Dunix -Di386 -Dsequent -D__unix__ -D__i386__ -D__seque
nt__ -D__OPTIMIZE__ newld.c /tmp/cc022354.cpp
GNU CPP version 1.35.96
 /hydra3/scott/gnutest/lib/gcc-cc1 /tmp/cc022354.cpp -quiet -dumpbase newld.c -g
 -O -version -o /tmp/cc022354.s
GNU C version 1.35.96 (80386, BSD syntax) compiled by GNU C version 1.35.96.
default target switches: -m80387
 as -o newld.o /tmp/cc022354.s
	gcc -o ld++  newld.o -lg -lc
	if cmp -s tm.h config/tm-vax.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES=';  e
lif cmp -s tm.h config/tm-vaxv.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES=';  elif cm
p -s tm.h config/tm-vms.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES=';  elif cmp -s tm
.h config/tm-hp9k320.h; then  CRT0_OPTIONS='-Umc68000';  elif cmp -s tm.h config
/tm-hp9k320g.h; then  CRT0_OPTIONS='-Umc68000';  elif cmp -s tm.h config/tm-sequ
ent.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES= -DDOT_GLOBAL_START';  elif cmp -s tm.
h config/tm-altos3068.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES= -Umc68000 -Um68k'; 
 elif cmp -s tm.h tm-i386gas+.h; then  CRT0_OPTIONS='-DCRT0_DUMMIES=bogus_fp, -D
DOT_GLOBAL_START';  else  CRT0_OPTIONS='';  fi;  echo $CRT0_OPTIONS;  gcc -Um68k
 $CRT0_OPTIONS -g -DSOS -DESKIT -O -c -I. -I./config crt0.c

	mv crt0.o crt0+.o
	gcc -Um68k -g -c -I. -I./config crt1.c
	mv crt1.o crt1+.o
expect 47 shift/reduce conflicts and 6 reduce/reduce conflicts
	bison -v -d cplus-parse.y
cplus-parse.y contains 47 shift/reduce conflicts and 6 reduce/reduce conflicts.
	gcc -c -g -DSOS -DESKIT -O -I. -I./config -DPARSE_OUTPUT=\"/cplus-parse.
output\" cplus-parse.tab.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-decl.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-typeck.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-tree.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-lex.c
cplus-lex.c: In function get_time_identifier:
cplus-lex.c:669: warning: initialization of pointer from integer lacks a cast
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-class.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-init.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-method.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-cvt.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-search.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config cplus-ptree.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config toplev.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config tree.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config print-tree.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config stor-layout.c
stor-layout.c: In function layout_basetypes:
stor-layout.c:513: warning: initialization of pointer from integer lacks a cast
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config fold-const.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config rtlanal.c
	gcc -g -DSOS -DESKIT -O -X -o genflags genflags.o rtl.o obstack.o  mallo
c.o 
	./genflags md > tmp-insn-flags.h
	./move-if-change tmp-insn-flags.h insn-flags.h
insn-flags.h is unchanged
	touch stamp-flags.h
	gcc -g -DSOS -DESKIT -O -X -o gencodes gencodes.o rtl.o obstack.o  mallo
c.o 
	./gencodes md > tmp-insn-codes.h
	./move-if-change tmp-insn-codes.h insn-codes.h
insn-codes.h is unchanged
	touch stamp-codes.h
	gcc -g -DSOS -DESKIT -O -X -o genconfig genconfig.o rtl.o obstack.o  mal
loc.o 
	./genconfig md > tmp-insn-config.h
	./move-if-change tmp-insn-config.h insn-config.h
insn-config.h is unchanged
	touch stamp-config.h
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config expr.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config stmt.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config expmed.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config explow.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config optabs.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config varasm.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config symout.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config dbxout.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config sdbout.c
	gcc -g -DSOS -DESKIT -O -X -o genemit genemit.o rtl.o obstack.o  malloc.
o 
	./genemit md > tmp-insn-emit.c
	./move-if-change tmp-insn-emit.c insn-emit.c
insn-emit.c is unchanged
	touch stamp-emit.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config integrate.c
	gcc -g -DSOS -DESKIT -O -X -o genpeep genpeep.o rtl.o obstack.o  malloc.
o 
	./genpeep md > tmp-insn-peep.c
	./move-if-change tmp-insn-peep.c insn-peep.c
insn-peep.c is unchanged
	touch stamp-peep.c
	gcc -g -DSOS -DESKIT -O -X -o genrecog genrecog.o rtl.o obstack.o  mallo
c.o 
	./genrecog md > tmp-insn-recog.c
	./move-if-change tmp-insn-recog.c insn-recog.c
insn-recog.c is unchanged
	touch stamp-recog.c
	gcc -g -DSOS -DESKIT -O -X -o genextract genextract.o rtl.o obstack.o  m
alloc.o 
	./genextract md > tmp-insn-extract.c
	./move-if-change tmp-insn-extract.c insn-extract.c
insn-extract.c is unchanged
	touch stamp-extract.c
	gcc -g -DSOS -DESKIT -O -X -o genoutput genoutput.o rtl.o obstack.o  mal
loc.o 
	./genoutput md > tmp-insn-output.c
	./move-if-change tmp-insn-output.c insn-output.c
insn-output.c is unchanged
	touch stamp-output.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config unex-addr.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config unexec.c
	gcc -c -g -DSOS -DESKIT -O  -I. -I./config lastfile.c
	ld++ -C -X -o cc1plus crt0+.o cplus-parse.tab.o cplus-decl.o cplus-typec
k.o cplus-tree.o  cplus-lex.o cplus-class.o cplus-init.o  cplus-method.o cplus-c
vt.o cplus-search.o cplus-ptree.o toplev.o version.o tree.o print-tree.o stor-la
yout.o fold-const.o  rtl.o rtlanal.o expr.o stmt.o expmed.o explow.o optabs.o va
rasm.o  symout.o dbxout.o sdbout.o emit-rtl.o insn-emit.o  integrate.o jump.o cs
e.o loop.o flow.o stupid.o combine.o  regclass.o local-alloc.o global-alloc.o re
load.o reload1.o caller-save.o  insn-peep.o final.o recog.o insn-recog.o insn-ex
tract.o insn-output.o  unex-addr.o unexec.o lastfile.o /hydra3/scott/gnutest/lib
/gcc-gnulib obstack.o  malloc.o  -lc
unex-addr.c:7: Undefined symbol start referenced from text

*** Error code 1
Make: .  Stop.

schmidt@zola.ics.uci.edu (Doug Schmidt) (08/25/89)

In article <8908242228.AA02310@prism.gatech.edu>, scott%prism (Scott Holt) writes:
>
>I am attempting to build the latest test release of g++ obtained from
>yahi.stanford.edu on 8/24 at around 2:00. The version of gcc being used
>is 1.35.96, also obtained from yahi.stanford.edu.
>
>The problem occurs in attempting to link cc1plus. ld++ aborts with the
>following error:
>
>	unex-addr.c:7: Undefined symobol start referenced from text.
>

This will be a recurring problem until Michael gets all the #ifdef's
necessary to make the unexec feature work on machines other than
Sun 4's.  For now, you might try the following patches:

*** cplus-lex.c~	Thu Aug 24 16:51:21 1989
--- cplus-lex.c	Thu Aug 24 13:44:09 1989
***************
*** 1378,1384 ****
--- 1378,1386 ----
  		  else
  		    strcpy (previous_asm_file_name, "/dev/null");
  		  printf ("\nDumping %s to %s...\n", dump_source_name, dump_file_name);
+ #ifndef HAVE_UNEXEC
  		  unexec (dump_file_name, dump_source_name, &my_edata, 0, 0);
+ #endif
  		  longjmp (toplevel, 1);
  		}
  	    }
*** Makefile.~1~	Wed Aug 23 23:37:09 1989
--- Makefile	Thu Aug 24 16:52:18 1989
***************
*** 292,300 ****
  LDFLAGS = -X
  
  cc1plus: $(CPLUS_OBJS) $(OBJS) $(LIBDEPS) unex-addr.o unexec.o lastfile.o
! #	$(CC) $(CFLAGS) $(LDFLAGS) -o cc1plus $(CPLUS_OBJS) $(OBJS) $(LIBS)
! 	ld++ -C $(LDFLAGS) -o cc1plus crt0+.o $(CPLUS_OBJS) $(OBJS) \
! 	   unex-addr.o unexec.o lastfile.o $(libdir)/gcc-gnulib $(LIBS) -lc
  
  cplus-decl.o : cplus-decl.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h cplus-parse.h
  cplus-typeck.o : cplus-typeck.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
--- 292,300 ----
  LDFLAGS = -X
  
  cc1plus: $(CPLUS_OBJS) $(OBJS) $(LIBDEPS) unex-addr.o unexec.o lastfile.o
! 	$(CC) $(CFLAGS) $(LDFLAGS) -o cc1plus $(CPLUS_OBJS) $(OBJS) $(LIBS)
! #	ld++ -C $(LDFLAGS) -o cc1plus crt0+.o $(CPLUS_OBJS) $(OBJS) \
! #	   unex-addr.o unexec.o lastfile.o $(libdir)/gcc-gnulib $(LIBS) -lc
  
  cplus-decl.o : cplus-decl.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h cplus-parse.h
  cplus-typeck.o : cplus-typeck.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
----------------------------------------

This ought to hold you until things are more complete!

Doug
--
schmidt@ics.uci.edu (ARPA) |   Per me si va nella citta' dolente.
office: (714) 856-4043     |   Per me si va nell'eterno dolore.
                           |   Per me si va tra la perduta gente.
                           |   Lasciate ogni speranza o voi ch'entrate.

tiemann@YAHI.STANFORD.EDU (Michael Tiemann) (08/25/89)

    I am attempting to build the latest test release of g++ obtained from
    yahi.stanford.edu on 8/24 at around 2:00. The version of gcc being used
    is 1.35.96, also obtained from yahi.stanford.edu.

    The problem occurs in attempting to link cc1plus. ld++ aborts with the
    following error:

	    unex-addr.c:7: Undefined symobol start referenced from text.

Write your own version of this function:

    char *
    start_of_text ()
    {
      extern int start () asm ("start");
      return ((char *) start);
    }

to use whatever symbol is the start of text for your program.  It is
"start" for Sun4.  It might be "_start" for Sun3.  It is OS and
machine dependent.

Michael