Thread View: gnu.g++.bug
1 messages
1 total messages
Started by Jyrki Kuoppala
Thu, 20 Apr 1989 15:28
G++ on USG 5.2.2 system (Altos 3068)
Author: Jyrki Kuoppala
Date: Thu, 20 Apr 1989 15:28
Date: Thu, 20 Apr 1989 15:28
366 lines
11544 bytes
11544 bytes
Here's a description how I got g++ 1.35.0- up on Altos 3068 (usg 5.2.2
running gcc, gas and GNU binutils). Most of the diffs are pretty
general for USG systems.
Author: Jyrki Kuoppala (jkp@cs.hut.fi)
Last modified: Thu Apr 20 18:12:51 1989
NOTE for Altos 3068 (and perhaps other SysV machines): Altos symlinks
behave differently than bsd ones. If you proceed as the README file
says, you'll have the gcc files instead of g++ files. So, do the
links to the gcc files BEFORE the links to g++ files. First run make
with maketest target ( ln -s ../src-g++/Makefile ; make maketest ),
then ln -s ../src-g++/*.
Renamed cplus-parse.y to cplus-p.y.
also changed cplus-parse.tab.{c,h,o} to cplus-p.tab.{c,h,o} in Makefile
and cplus-parse.output to cplus-p.output
edit cplus-lex.c to include cplus-p.tab.h
Also ld++ should use shorter tmp file name (C++.hacks); now the last
digit gets truncated.
compiled with gcc 1.34.91
When compiling libg++.a (with -g -O):
I get multiply ___CTOR_LIST__ and ___DTOR_LIST__ messages.
nm -p shows:
0000051a x ___CTOR_LIST__
When g++ is compiled with FASCIST_ASSEMBLER defined, all works fine.
Yes, I am using gas, wonder if there's something wrong with my hacked
ld++.
The file name of CursesWindow.cc is too long; make thinks it's a C
file.
I won't include diffs for the ld++ because it's combined from ld.c
from G++ and a newer ld.c from binutils. Perhaps it would be time to
publish the current ld.c and binutils, it's been quite a while since
the last release was made.
diff -cr src-g++/Makefile src-g++.a/Makefile
*** src-g++/Makefile Wed Apr 19 17:38:26 1989
--- src-g++.a/Makefile Thu Apr 20 10:16:11 1989
***************
*** 52,66 ****
# Variables that exist for you to override.
! CFLAGS = -g -DSOS -DESKIT -O
# CFLAGS = -g -O
CC = gcc
BISON = bison
BISONFLAGS = -v -d
! AR = ar
SHELL = /bin/sh
# on sysV, define this as cp.
! INSTALL = install -c
MAKE = make
# Compiler to use for compiling gnulib.
--- 52,67 ----
# Variables that exist for you to override.
! CFLAGS = -I. -DSOS -DESKIT -O -DFASCIST_ASSEMBLER
! #CFLAGS = -g -DSOS -DESKIT -O
# CFLAGS = -g -O
CC = gcc
BISON = bison
BISONFLAGS = -v -d
! AR = /usr/gbin/ar
SHELL = /bin/sh
# on sysV, define this as cp.
! INSTALL = cp
MAKE = make
# Compiler to use for compiling gnulib.
***************
*** 113,119 ****
C_OBJS = c-parse.tab.o c-decl.o c-typeck.o c-convert.o
# Language-specific object files for C++.
! CPLUS_OBJS = cplus-parse.tab.o cplus-decl.o cplus-typeck.o \
cplus-lex.o cplus-class.o cplus-init.o \
cplus-method.o cplus-cvt.o cplus-search.o cplus-ptree.o
--- 114,120 ----
C_OBJS = c-parse.tab.o c-decl.o c-typeck.o c-convert.o
# Language-specific object files for C++.
! CPLUS_OBJS = cplus-p.tab.o cplus-decl.o cplus-typeck.o \
cplus-lex.o cplus-class.o cplus-init.o \
cplus-method.o cplus-cvt.o cplus-search.o cplus-ptree.o
***************
*** 180,185 ****
--- 181,188 ----
OPTS='-DSUN4=4 -DTARGET=SUN4'; \
elif cmp -s tm.h config/tm-encore.h; then \
CRT0_OPTIONS='-DUMAX'; \
+ elif cmp -s tm.h config/tm-altos3068.h; then \
+ OPTS='-DCOFF_ENCAPSULATE -DNON_NATIVE -DUSG -DPORTAR'; \
elif cmp -s tm.h tm-i386gas+.h; then \
OPTS='-DUSG -DCOFF_ENCAPSULATE -DNON_NATIVE -DPORTAR'; \
else \
***************
*** 186,192 ****
OPTS='-DTARGET=-1'; \
fi; \
echo $$OPTS; \
! $(CC) -c $$OPTS $(PROFILE) $(CFLAGS) -DSTANDARD_SEARCH_DIRS="\"$(libdir)\", \"/lib\", \"/usr/lib\", \"/usr/local/lib\"" $(CFLAGS)
ld.o: ld.c
-if cmp -s tm.h config/tm-sun3+.h; then \
--- 189,195 ----
OPTS='-DTARGET=-1'; \
fi; \
echo $$OPTS; \
! $(CC) -c $$OPTS $(PROFILE) $(CFLAGS) -DSTANDARD_SEARCH_DIRS="\"$(libdir)\", \"/lib\", \"/usr/lib\", \"/usr/local/lib\"" $(CFLAGS) newld.c
ld.o: ld.c
-if cmp -s tm.h config/tm-sun3+.h; then \
***************
*** 239,244 ****
--- 242,249 ----
CRT0_OPTIONS='-Umc68000'; \
elif cmp -s tm.h config/tm-sequent.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, -DDOT_GLOBAL_START'; \
else \
***************
*** 267,280 ****
cplus-ptree.o : cplus-ptree.c $(CONFIG_H) $(TREE_H)
new-cplus-method.o : new-cplus-method.c $(CONFIG_H) $(CPLUS_TREE_H)
! cplus-parse.tab.o : cplus-parse.tab.c $(CONFIG_H) $(CPLUS_TREE_H) cplus-parse.h flags.h
! $(CC) -c $(CFLAGS) -Iconfig -DPARSE_OUTPUT=\"$(PWD)/cplus-parse.output\" $<
! cplus-parse.tab.c : cplus-parse.y
@echo expect 41 shift/reduce conflicts and 4 reduce/reduce conflicts
! $(BISON) $(BISONFLAGS) cplus-parse.y
! cplus-lex.o : cplus-lex.c $(CONFIG_H) $(CPLUS_TREE_H) cplus-parse.h cplus-parse.tab.h
rtl.o : rtl.c $(CONFIG_H) $(RTL_H)
# Language-independent files.
--- 272,285 ----
cplus-ptree.o : cplus-ptree.c $(CONFIG_H) $(TREE_H)
new-cplus-method.o : new-cplus-method.c $(CONFIG_H) $(CPLUS_TREE_H)
! cplus-p.tab.o : cplus-p.tab.c $(CONFIG_H) $(CPLUS_TREE_H) cplus-parse.h flags.h
! $(CC) -c $(CFLAGS) -Iconfig -DPARSE_OUTPUT=\"$(PWD)/cplus-p.output\" $<
! cplus-p.tab.c : cplus-p.y
@echo expect 41 shift/reduce conflicts and 4 reduce/reduce conflicts
! $(BISON) $(BISONFLAGS) cplus-p.y
! cplus-lex.o : cplus-lex.c $(CONFIG_H) $(CPLUS_TREE_H) cplus-parse.h cplus-p.tab.h
rtl.o : rtl.c $(CONFIG_H) $(RTL_H)
# Language-independent files.
***************
*** 499,505 ****
# Get rid of every file that's generated from some other file (except INSTALL).
realclean: clean
-rm -f cpp.aux cpp.cps cpp.fns cpp.info cpp.kys cpp.pgs cpp.tps cpp.vrs
! -rm -f cplus-parse.tab.c cplus-parse.output
-rm -f errs gnulib cexp.c TAGS tm-*+.h
-rm -f g++.info* g++.?? g++.??s g++.log g++.toc g++.*aux
-rm -f cccp cpp
--- 504,510 ----
# Get rid of every file that's generated from some other file (except INSTALL).
realclean: clean
-rm -f cpp.aux cpp.cps cpp.fns cpp.info cpp.kys cpp.pgs cpp.tps cpp.vrs
! -rm -f cplus-p.tab.c cplus-p.output
-rm -f errs gnulib cexp.c TAGS tm-*+.h
-rm -f g++.info* g++.?? g++.??s g++.log g++.toc g++.*aux
-rm -f cccp cpp
***************
*** 552,558 ****
TAGS: force
mkdir temp
! -mv cplus-parse.tab.c cexp.c c-*.c temp
etags *.y *.h *.c
mv temp/* .
rmdir temp
--- 557,563 ----
TAGS: force
mkdir temp
! -mv cplus-p.tab.c cexp.c c-*.c temp
etags *.y *.h *.c
mv temp/* .
rmdir temp
diff -cr src-g++/cplus-lex.c src-g++.a/cplus-lex.c
*** src-g++/cplus-lex.c Fri Apr 14 20:07:46 1989
--- src-g++.a/cplus-lex.c Thu Apr 20 11:04:59 1989
***************
*** 25,31 ****
#include <errno.h>
#include "config.h"
#include "tree.h"
! #include "cplus-parse.tab.h"
#include "cplus-parse.h"
#include "cplus-tree.h"
#include "flags.h"
--- 25,31 ----
#include <errno.h>
#include "config.h"
#include "tree.h"
! #include "cplus-p.tab.h"
#include "cplus-parse.h"
#include "cplus-tree.h"
#include "flags.h"
***************
*** 852,858 ****
t = pending_inlines;
pending_inlines = pending_inlines->next;
finput = finput2;
! #ifdef i386
finput2->_ptr = finput2->_base = t->buf;
_bufend(finput2) = t->buf + t->len;
#ifdef sequent
--- 852,858 ----
t = pending_inlines;
pending_inlines = pending_inlines->next;
finput = finput2;
! #if defined(USG) && !defined(hp9000s300)
finput2->_ptr = finput2->_base = t->buf;
_bufend(finput2) = t->buf + t->len;
#ifdef sequent
***************
*** 863,880 ****
finput2->_cnt = t->len - 1;
#else
#ifndef hp9000s300
- #ifdef USG
- setvbuf(finput2,t->buf,_IOFBF,t->len);
- finput2->_cnt = t->len-1;
- #else
setbuffer (finput2, t->buf, t->len);
finput2->_cnt = finput2->_bufsiz - 1;
- #endif /* USG */
#else
setvbuf(finput2,t->buf,_IOFBF,t->len);
finput2->_cnt = t->len-1;
#endif
! #endif
lineno = t->lineno;
input_filename = t->filename;
#ifdef DO_INLINES_THE_OLD_WAY
--- 863,875 ----
finput2->_cnt = t->len - 1;
#else
#ifndef hp9000s300
setbuffer (finput2, t->buf, t->len);
finput2->_cnt = finput2->_bufsiz - 1;
#else
setvbuf(finput2,t->buf,_IOFBF,t->len);
finput2->_cnt = t->len-1;
#endif
! #endif /* USG */
lineno = t->lineno;
input_filename = t->filename;
#ifdef DO_INLINES_THE_OLD_WAY
***************
*** 1655,1661 ****
/* The buffer we used will be freed at the
end of this function. */
pending_inlines = pending_inlines->next;
! #ifdef i386
finput2->_ptr = finput2->_base = t->buf;
_bufend(finput2) = t->buf + t->len;
finput2->_flag = _IOFBF | _IOREAD;
--- 1650,1656 ----
/* The buffer we used will be freed at the
end of this function. */
pending_inlines = pending_inlines->next;
! #if defined(USG) && !defined(hp9000s300)
finput2->_ptr = finput2->_base = t->buf;
_bufend(finput2) = t->buf + t->len;
finput2->_flag = _IOFBF | _IOREAD;
***************
*** 1662,1679 ****
finput2->_cnt = t->len - 1;
#else
#ifndef hp9000s300
- #ifdef USG
- setvbuf(finput2,t->buf,_IOFBF,t->len);
- finput2->_cnt = t->len-1;
- #else
setbuffer (finput2, t->buf, t->len);
finput2->_cnt = finput2->_bufsiz - 1;
- #endif /* USG */
#else
setvbuf(finput2,t->buf,_IOFBF,t->len);
finput2->_cnt = t->len-1;
#endif
! #endif
}
else
{
--- 1657,1669 ----
finput2->_cnt = t->len - 1;
#else
#ifndef hp9000s300
setbuffer (finput2, t->buf, t->len);
finput2->_cnt = finput2->_bufsiz - 1;
#else
setvbuf(finput2,t->buf,_IOFBF,t->len);
finput2->_cnt = t->len-1;
#endif
! #endif /* USG */
}
else
{
diff -cr src-g++/crt0.c src-g++.a/crt0.c
*** src-g++/crt0.c Tue Apr 11 06:44:01 1989
--- src-g++.a/crt0.c Thu Apr 20 08:57:15 1989
***************
*** 197,203 ****
asm(" .set _387_flt,0");
#endif
! #if defined(i386)
_start(arg)
char *arg;
{
--- 197,203 ----
asm(" .set _387_flt,0");
#endif
! #if defined(i386) || defined(ALTOS)
_start(arg)
char *arg;
{
***************
*** 717,723 ****
int status;
{
__do_global_cleanup ();
! #if defined(hp9000s300) || defined(i386)
_cleanup ();
#endif
_exit (status);
--- 717,723 ----
int status;
{
__do_global_cleanup ();
! #if defined(hp9000s300) || defined(i386) || defined(ALTOS)
_cleanup ();
#endif
_exit (status);
jkp@cs.hut.fi
//Jyrki
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads