loeffler@bluebell.aca.mcc.com (David D. Loeffler) (06/21/91)
I am using Sun's CC (C++ compiler version 2.0) Sun3/110 with attached hard disk for swap OS 4.0.3 I have applied all 10 fix files. I get a strange Bus error when compiling xwindow.c. Has anyone else seen this? Or am I doing something wrong. I have include the error messsage and some extra info. Thanks, Dave From the directory .../iv/src/lib/IV-X11 ... -r--r--r-- 1 loeffler 16856 Apr 9 17:40 xworld.c.orig -rw-r--r-- 1 loeffler 693 Apr 12 01:50 Imakefile -r--r--r-- 1 loeffler 36243 Apr 16 14:42 xcanvas.c -r--r--r-- 1 loeffler 28883 Apr 16 14:47 xwindow.c <<<< PATCHED by fix1 ... I get this error when compiling .../iv/src/lib/IV-X11/xworld.c compiling ../xwindow.c rm -f xwindow.o xwindow..c /usr/CC/sun3/CC -O -pic -Dcplusplus_2_0 -I.. -I../../../.././src/include -I/usr/ local/X/include -c ../xwindow.c CC ../xwindow.c: cc -c -I/usr/CC/incl -I.. -I../../../.././src/include -I/usr/local/X/include -O -pic xwindo w.c cc: Fatal error in cpp: Bus error *** Error code 1 make: Fatal error: Command failed for target `xwindow.o' Any idea of what the problem might be???? A diff shows: daystar.DDL [140]: diff ../xworld.c ../xworld.c.orig 148a149,152 > case StaticGray: > rgbtable_ = nil; > white_ = (1 << visual_->bits_per_rgb) - 1; > break; 151d154 < break; 394a398,406 > break; > case StaticGray: > unsigned long gray = rescale( > (30 * red + 59 * green + 11 * blue) / 100, 0xffff, white_ > ); > xc.pixel = gray; > xc.red = (unsigned short)rescale(gray, white_, 0xffff); > xc.green = (unsigned short)rescale(gray, white_, 0xffff); > xc.blue = (unsigned short)rescale(gray, white_, 0xffff); daystar.DDL [141]:
loeffler@bluebell.aca.mcc.com (David D. Loeffler) (06/24/91)
Well I would like to thank two people, Charles Garrett and Brian Kennedy
for their replies. They read my rather mangled message (written after
fighting too may sysadmin fires here) and sent solutions which I am
posting below. I used Brian's second option just to finish compiling
the IV-X11 library. That is, I added the +i option for compiling and
ran "make all" all in that directory only. This finished the compile
of the library. Now I am running make all from the iv directory and
all seems to be going well. If I do run into a problem I will setenv
APP_CCDEFINES to +i in the offending directory and continue. The
reason many of the compiles failed later was because the IV-X11 lib
did not exist.
-----------------------------------------------------------------------------
Full-Name: Charles Garrett
To: loeffler@MCC.COM
Subject: Re: Need help compiling InterViews 3.0-beta
Organization: Yale University Computer Science Dept., New Haven, CT 06520-2158
Hi,
Your problem reminds me of one that I had when compiling some
large C++ files. The problem is that the cfront program creates an
intermediate C file with lots of #line declarations for cpp to handle.
In fact some programs will have so many #line declarations that cpp
will crash. I worked around this problem by writing a shell script that
removes #line declarations from files before passing them to the C
compiler. Then I defined the environment variable ccC to call this
script. When ccC is defined, the C++ compiler will use it rather than
the regular cc command. I can't be sure that your problem is the
same one, but it might be something similar, so I will enclose the
files I wrote for this workaround.
--------- file mycc ---------
for A do
case $A in
*.c)
if test -f $A
then
awk -f awkfile < $A > temp
mv temp $A
fi;;
esac
done
cc $*
--------- file awkfile --------
$1 != "#line" {print}
$1 == "#line" && $3 !~ /sweeper|usr|InterViews/ {print}
-------------------------------
Then do:
setenv ccC mycc
Good luck,
Charlie Garrett
-----------------------------------------------------------------------------
To: loeffler@bluebell.aca.mcc.com (David D. Loeffler)
Cc: bmk@csc.ti.com
Subject: Re: Need help compiling InterViews 3.0-beta
Date: Fri, 21 Jun 91 15:57:27 -0500
From: Brian M Kennedy <bmk@ninja.csc.ti.com>
David,
This is almost becoming a faq for Sun users. The cpp shipped with
SunOS 4.0.3 can only handle a certain number of #line directives.
Your alternatives are:
1) Ask Sun for a copy of the SunOS 4.1 version of cpp.
This version has a much higher limit, which I have hit
but I'm sure InterViews would not.
2) Compile with option +i. This option is designed to
produce the intermediate C file; however, it has the
fortunate side-effect of eliminating all #line directives.
3) Get Sun CC 2.1 -- I highly recommend this if you do much
C++ work at all. This version is much more stable, has
much higher arbitrary limits, and works very well with its
dbx and dbxtool (which runs under X now). Note that it is
a much better release than 2.0 was.
4) Use GNU cc as your backend C compiler (by setting the ccC
environment variable to the full pathname of gcc).
GNU cc has no bogus, arbitrary limits.
Hope this helps,
== Brian M. Kennedy <bmk@csc.ti.com> ==
== Computer Systems Laboratory ========
== Computer Science Center ============
== Texas Instruments ==================