release branch changes from 11-27 snapshot to egcs-1.0.

From-SVN: r16970
This commit is contained in:
Jeff Law 1997-12-05 15:13:17 -07:00
parent 435bba3a39
commit f2d765451e
39 changed files with 1637 additions and 4227 deletions

View File

@ -1,3 +1,7 @@
Wed Dec 3 07:55:59 1997 Jeffrey A Law (law@cygnus.com)
* configure (gxx_include_dir): Fix thinko.
Tue Dec 2 10:55:34 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (INSTALL_TARGET_CROSS): Define.

54
INSTALL/BUILD Normal file
View File

@ -0,0 +1,54 @@
Building egcs-1.0
Now that egcs is configured, you are ready to build the compiler and
runtime libraries.
We highly recommend that egcs be built using gnu-make; other
versions make work, then again they might not. To be safe build with gnu-make.
Building a native compiler
For a native build issue the command "make bootstrap". This will build
the entire egcs compiler system, which includes the following steps:
Build host tools necessary to build the compiler such as texinfo, bison,
gperf.
Build target tools for use by the compiler such as gas, gld, and binutils.
Perform a 3-stage bootstrap of the compiler.
Perform a comparison test of the stage2 and stage3 compilers.
Build runtime libraries using the stage3 compiler from the previous step.
If you are short on disk space you might consider "make bootstrap-lean"
instead. This is identical to "make bootstrap" except that object files
from the stage1 and stage2 of the 3-stage bootstrap of the compiler are
deleted as soon as they are no longer needed.
Building a cross compiler
We recommend reading the crossgcc FAQ for information about building
cross compilers.
"ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1"
For a cross build, issue the command "make cross", which performs the
following steps:
Build host tools necessary to build the compiler such as texinfo, bison,
gperf.
Build target tools for use by the compiler such as gas, gld, and binutils.
Build the compiler (single stage only).
Build runtime libraries using the compiler from the previous step.
Note that if an error occurs in any step the make process will exit.
Last modified on December 2, 1997.

108
INSTALL/CONFIGURE Normal file
View File

@ -0,0 +1,108 @@
Configuring egcs-1.0
Like most GNU software, egcs must be configured before it can be built.
This document attempts to describe the recommended configuration procedure
for both native and cross targets.
We use srcdir to refer to the toplevel source directory for
egcs; we use objdir to refer to the toplevel build/object
directory for egcs.
First, we highly recommend that egcs be built into a separate
directory than the sources. This is how we generally build egcs; building
where srcdir == objdir should still work, but doesn't get
extensive testing.
Second, when configuring a native system, either "cc" must be in your
path or you must set CC in your environment before running configure.
Otherwise the configuration scripts may fail.
To configure egcs:
% mkdir objdir
% cd objdir
% srcdir/configure [target] [options]
target specification
egcs has code to correctly determine the correct value for
target for nearly all native systems. Therefore, we highly
recommend you not provide a configure target when configuring a
native compiler.
target must be specified when configuring a cross compiler;
examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
options specification
Use options to override several configure time options for
egcs. A partial list of supported options:
--prefix=dirname -- Specify the toplevel installation
directory. This is the recommended way to install the tools into a directory
other than the default. The toplevel installation directory defaults to
/usr/local.
These additional options control where certain parts of the distribution
are installed. Normally you should not need to use these options.
--with-local-prefix=dirname -- Specify the installation
directory for local include files. The default is /usr/local.
--with-gxx-include-dir=dirname -- Specify the installation
directory for g++ header files. The default is /usr/local/include/g++.
--enable-shared -- Build shared versions of the C++ runtime
libraries if supported --disable-shared is the default.
--enable-haifa -- Enable the new Haifa instruction scheduler in the
compiler; the new scheduler can significantly improve code on some targets.
--disable-haifa is currently the default on all platforms except the HPPA.
--with-gnu-as -- Specify that the compiler should assume the GNU
assembler (aka gas) is available.
--with-gnu-ld -- Specify that the compiler should assume the GNU
linker (aka gld) is available.
--with-stabs -- Specify that stabs debugging information should be used
instead of whatever format the host normally uses. Normally GCC uses the
same debug format as the host system.
--enable-multilib -- Specify that multiple target libraries
should be built to support different target variants, calling conventions,
etc. This is the default.
--enable-threads -- Specify that the target supports threads.
This only effects the Objective-C compiler and runtime library.
--enable-threads=lib -- Specify that lib is the
thread support library. This only effects the Objective-C compiler and
runtime library.
--with-cpu=cpu -- Specify which cpu variant the compiler should
generate code for by default. This is currently only supported on the
RS6000/PowerPC ports.
Some options which only apply to building cross compilers:
--with-headers=dir -- Specifies a directory which has target
include files.
--with-libs=dirs -- Specifies a list of directories which contain
the target runtime libraries.
--with-newlib -- Specifies that "newlib" is being used as the target
C library. This causes __eprintf to be omitted from libgcc.a on the
assumption that it will be provided by newlib.
Note that each --enable option has a corresponding --disable option and
that each --with option has a corresponding --without option.
Last modified on December 2, 1997.

322
INSTALL/FAQ Normal file
View File

@ -0,0 +1,322 @@
egcs Frequently Asked Questions
How is egcs be different from gcc2?
Six years ago, gcc version 1 had reached a point of stability. For the
targets it could support, it worked well. It had limitations inherent in
its design that would be difficult to resolve, so a major effort was made
and gcc version 2 was the result. When we had gcc2 in a useful state,
development efforts on gcc1 stopped and we all concentrated on making
gcc2 better than gcc1 could ever be. This is the kind of step forward
we want to make with egcs.
In brief, the three biggest differences between egcs and gcc2 are
these:
More rexamination of basic architectual decisions of
gcc and an interest in adding new optimizations;
working with the groups who have fractured out from gcc2 (like
the Linux folks, the Intel optimizations folks, Fortran folks)
including more front-ends; and finally
An open development model (see below) for the development process.
These three differences will work together to result in a more
useful compiler, a more stable compiler, a central compiler that works
for more people, a compiler that generates better code.
There are a lot of exciting compiler optimizations that have come
out. We want them in gcc. There are a lot of front ends out there for
gcc for languages like Fortran or Pascal. We want them easily
installable by users. After six years of working on gcc2, we've come
to see problems and limitations in the way gcc is architected; it is
time to address these again.
What is an open development model?
With egcs, we are going to try a bazaar style[1] approach to its
development: We're going to be making snapshots publically available
to anyone who wants to try them; we're going to welcome anyone to join
the development mailing list. All of the discussions on the
development mailing list are available via the web. We're going to be
making releases with a much higher frequency than they have been made
in the past: We're shooting for three by the end of 1997.
In addition to weekly snapshots of the egcs development sources, we
are going to look at making the sources readable from a CVS server by
anyone. We want to make it so external maintainers of parts of egcs
are able to commit changes to their part of egcs directly into the
sources without going through an intermediary.
There have been many potential gcc developers who were not able to
participate in gcc development in the past. We these people to help in
any way they can; we ultimately want gcc to be the best compiler in the
world.
A compiler is a complicated piece of software, there will still be
strong central maintainers who will reject patches, who will demand
documentation of implementations, and who will keep the level of
quality as high as it is today. Code that could use wider testing may
be intergrated--code that is simply ill-conceived won't be.
egcs is not the first piece of software to use this open development
process; FreeBSD, the Emacs lisp repository, and Linux are a few
examples of the bazaar style of development.
With egcs, we will be adding new features and optimizations at a
rate that has not been done since the creation of gcc2; these additions
will inevitably have a temporarily destabilizing effect. With the help
of developers working together with this bazaar style development, the
resulting stability and quality levels will be better than we've had
before.
cathedral-vs-bazaar[1]
We've been discussing different development models a lot over the
past few months. The paper which started all of this introduced two
terms: A cathedral development model versus a bazaar
development model. The paper is written by Eric S. Raymond, it is
called `` http://locke.ccil.org/~esr/writings/cathedral.html" The
Cathedral and the Bazaar''. The paper is a useful starting point
for discussions.
bits/libc-lock.h: No such file or directory
egcs includes a tightly integrated libio and libstdc++ implementation which
can cause problems on hosts which have libio integrated into their C library
(most notably Linux).
We believe that we've solved the major technical problems for the most
common versions of libc found on Linux systems. However, some versions
of Linux use pre-release versions of glibc2, which egcs has trouble detecting
and correctly handling.
If you're using one of these pre-release versions of glibc2, you may get
a message "bits/libc-lock.h: No such file or directory" when building egcs.
Unfortunately, to fix this problem you will need to update your C library to
glibc2.0.5c.
Late breaking news: we may have at least a partial solution for these
problems. So this FAQ entry may no longer be needed.
`_IO_stdfile_0_lock' was not declared in this scope
If you get this error, it means either egcs incorrectly guessed what version
of libc is installed on your linux system, or you incorrectly specified a
version of glibc when configuring egcs.
If you did not provide a target name when configuring egcs, then you've
found a bug which needs to be reported. If you did provide a target name at
configure time, then you should reconfigure without specifying a target name.
Problems building the Fortran compiler
The Fortran front end can not be built with most vendor compilers; it must
be built with gcc. As a result, you may get an error if you do not follow
the install instructions carefully.
In particular, instead of using "make" to build egcs, you should use
"make bootstrap" if you are building a native compiler or "make cross"
if you are building a cross compiler.
It has also been reported that the Fortran compiler can not be built
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
binutils or to Red Hat 5.0; we'll provide more information as it becomes
available.
Problems building on MIPS platforms
egcs requires the use of GAS on all versions of Irix, except Irix 6 due
to limitations in older Irix assemblers.
Either of these messages indicates that you are using the MIPS assembler
when instead you should be using GAS.
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
.4byte $LECIE1-$LSCIE1
as0: Error: ./libgcc2.c, line 1:malformed statement
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol in expression
.word $LECIE1-$LSCIE1
For Irix 6, you should use the native assembler as GAS is not supported
on Irix 6.
Problems with exception handling on x86 platforms
If you are using the GNU assembler (aka gas) on an x86 platform and
exception handling is not working correctly, then odds are you're using a
buggy assembler.
We recommend binutils-2.8.0.1.15 or newer.
"ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.tar.gz binutils-2.8.0.1.15 source
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.bin.tar.gz binutils-2.8.0.1.15 x86 binary for libc5
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.glibc.bin.tar.gz binutils-2.8.0.1.15 x86 binary for glibc2
Or, you can try a
ftp://ftp.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz binutils snapshot; however, be aware that the binutils snapshot is untested
and may not work (or even build). Use it at your own risk.
Bootstrap comparison failures on HPs
If you bootstrap the compiler on hpux10 using the HP assembler instead of
gas, every file will fail the comparison test.
The HP asembler inserts timestamps into object files it creates, causing
every file to be different. The location of the timestamp varies for each
object file, so there's no real way to work around this mis-feature.
Odds are your compiler is fine, but there's no way to be certain.
If you use GAS on HPs, then you will not run into this problem because
GAS never inserts timestamps into object files. For this and various other
reasons we highly recommend using GAS on HPs.
Bootstrap loops rebuilding cc1 over and over
When building egcs, the build process loops rebuilding cc1 over and
over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
This is probably a bug somewhere in the egcs Makefile. Until we find and
fix this bug we recommend you use GNU make instead of vendor supplied make
programs.
Dynamic linker is unable to find GCC libraries
This problem manifests itself by programs not finding shared libraries
they depend on when the programs are started. Note this problem often manifests
itself with failures in the libio/libstdc++ tests after configuring with
--enable-shared and building egcs.
GCC does not specify a runpath so that the dynamic linker can find dynamic
libraries at runtime.
The short explaination is that if you always pass a -R option to the
linker, then your programs become dependent on directories which
may be NFS mounted, and programs may hang unnecessarily when an
NFS server goes down.
The problem is not programs that do require the directories; those
programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
SunOS effectively always passed a -R option for every -L option;
this was a bad idea, and so it was removed for Solaris. We should
not recreate it.
Unable to run the testsuite
If you get a message about unable to find "standard.exp" when trying to
run the egcs testsuites, then your dejagnu is too old to run the egcs tests.
You will need to get a newer version of dejagnu; we've made a
<a href="ftp://ftp.cygnus.com/pub/egcs/infrastructure/dejagnu-971028.tar.gz">
dejagnu snapshot available until a new version of dejagnu can be released.
How to build a cross compiler
Building cross compilers is a rather complex undertaking because they
usually need additional software (cross assembler, cross linker, target
libraries, target include files, etc).
We recommend reading the <a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
crossgcc FAQ for information about building cross compilers.
If you have all the pieces available, then `make cross' should build a
cross compiler. `make LANGUAGES="c c++" install'will install the cross
compiler.
Note that if you're trying to build a cross compiler in a tree which
includes binutils-2.8 in addition to egcs, then you're going to need to
make a couple minor tweaks so that the cross assembler, linker and
nm utilities will be found.
binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs gcc
looks for them using gas-new, ld-new and nm-new, so you may have to arrange
for any symlinks which point to &ltfile&gt.new to be changed to &ltfile&gt-new.
Snapshots, how, when, why
We make snapshots of the egcs sources about once a week; there is no
predetermined schedule. These snapshots are intended to give everyone
access to work in progress. Any given snapshot may generate incorrect code
or even fail to build.
If you plan on downloading and using snapshots, we highly recommend you
subscribe to the egcs mailing lists. See <a href="index.html#mailinglists">
mailing lists on the main egcs page for instructions on how to subscribe.
When using the diff files to update from older snapshots to newer snapshots,
make sure to use "-E" and "-p" arguments to patch so that empty files are
deleted and full pathnames are provided to patch. If your version of
patch does not support "-E", you'll need to get a newer version. Also note
that you may need autoconf, autoheader and various other programs if you use
diff files to update from one snapshot to the next.
How to install both egcs and gcc2
It may be desirable to install both egcs and gcc2 on the same system. This
can be done by using different prefix paths at configure time and a few
symlinks.
Basically, configure the two compilers with different --prefix options,
then build and install each compiler. Assume you want "gcc" to be the egcs
compiler and available in /usr/local/bin; also assume that you want "gcc2"
to be the gcc2 compiler and also available in /usr/local/bin.
The easiest way to do this is to configure egcs with --prefix=/usr/local/egcs
and gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers.
Then make a symlink from /usr/local/bin/gcc to /usr/local/egcs/bin/gcc and
from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
Problems building Linux kernels
If you installed a recent binutils/gas snapshot on your Linux system,
you may not be able to build the kernel because objdump does not understand
the "-k" switch. The solution for this problem is to remove /usr/bin/encaps.
You may get an internal compiler error compiling process.c in newer
versions of the Linux kernel on x86 machines. This is a bug in an asm
statement in process.c, not a bug in egcs. XXX How to fix?!?
You may get errors with the X driver of the form
_X11TransSocketUNIXConnect: Can't connect: errno = 111
It's a kernel bug. The function sys_iopl in arch/i386/kernel/process.c
does an illegal hack which used to work but is now broken since GCC optimizes
more aggressively . The newer 2.1.x kernels already have a fix which should
also work in 2.0.32.
Virtual memory exhausted error
This error means your system ran out of memory; this can happen for large
files, particularly when optimizing. If you're getting this error you should
consider trying to simplify your files or reducing the optimization level.
Note that using -pedantic or -Wreturn-type can cause an explosion in the
amount of memory needed for template-heavy C++ code, such as code that uses
STL. Also note that -Wall includes -Wreturn-type, so if you use -Wall you
will need to specify -Wno-return-type to turn it off.
GCC can not find GAS
Some configurations like irix4, irix5, hpux* require the use of the GNU
assembler intead of the system assembler. To ensure that egcs finds the GNU
assembler, you should configure the GNU assembler with the same --prefix
option as you used for egcs. Then build & install the GNU assembler.
egcs does not work on Red Hat 5.0
egcs does not currently work with Red Hat 5.0; we'll update this
entry with more information as it becomes available.
Last modified: December 2, 1997

19
INSTALL/FINALINSTALL Normal file
View File

@ -0,0 +1,19 @@
Final install egcs-1.0
Now that egcs has been built and tested, you can install it with
`cd objdir; make install' for a native compiler or
`cd objdir; make install LANGUAGES="c c++"' for a cross compiler
(note installing cross compilers will be easier in the next release!).
That step completes the installation of egcs; user level binaries can
be found in prefix/bin where prefix is the value you specified
with the --prefix to configure (or /usr/local by default).
If you don't mind, please send egcs@cygnus.com a short mail message
indicating that you successfully built and installed egcs. Include
the output from running srcdir/config.guess.
If you find a bug in egcs, please report it to egcs-bugs@cygnus.com
Last modified on December 2, 1997.

34
INSTALL/INDEX Normal file
View File

@ -0,0 +1,34 @@
Installing egcs-1.0
This document describes the generic installation procedure for egcs as
well as detailing some target specific installation instructions for egcs.
egcs includes several components that previously were separate distributions
with their own installation instructions. This document supercedes all
package specific installation instructions. We provide the component specific
installation information in the source distribution for historical reference
purposes only.
We recommend you read the entire generic installation instructions as
well as any target specific installation instructions before you proceed
to configure, build, test and install egcs.
If something goes wrong in the configure, build, test or install
procedures, first double check that you followed the generic and target
specific installation instructions carefully. Then check the EGCS FAQ
(FAQ) to see if your problem is covered before you file a bug report.
The installation procedure is broken into four steps.
Configure see CONFIGURE
Build see BUILD
Test see TEST
Final Install see FINALINSTALL
Before starting the build/install procedure please browse the
host/target specific installation notes (SPECIFIC).
Last modified on December 2, 1997.

14
INSTALL/README Normal file
View File

@ -0,0 +1,14 @@
This directory contains installation instrutions for egcs-1.00.
We're providing installation instructions in two forms, html and
plaintext.
index.html is the toplevel install file for html browsers.
INDEX is the toplevel install file in plaintext form.
The most recent HTML installation instructions for egcs can be obtained from
the egcs web site:
http://www.cygnus.com/egcs/install

106
INSTALL/SPECIFIC Normal file
View File

@ -0,0 +1,106 @@
Host/Target specific installation notes for egcs-1.0
alpha*-*-*
No specific installation needs/instructions.
i?86-*-linux*
You will need binutils-2.8.1.0.15 or newer for exception handling to work.
i?86-*-sco3.2v5*
The SCO assembler is currently required. The GNU assembler is not up
to the task of switching between ELF and COFF at runtime.
Unlike various prereleases of GCC, that used '-belf' and defaulted to
COFF, you must now use the '-melf' and '-mcoff' flags to toggle between
the two object file formats. ELF is now the default.
Look in gcc/config/i386/sco5.h (search for "messy") for additional
OpenServer-specific flags.
hppa*-hp-hpux*
We highly recommend using gas/binutils-2.8 on all hppa platforms; you
may encounter a variety of problems when using the HP assembler.
hppa*-hp-hpux9
The HP assembler has major problems on this platform. We've tried to work
around the worst of the problems. However, those workarounds may be causing
linker crashes in some circumstances; the workarounds also probably prevent
shared libraries from working. Use the GNU assembler to avoid these problems.
The configuration scripts for egcs will also trigger a bug in the hpux9
shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to
/bin/ksh in your environment.
hppa*-hp-hpux10
For hpux10.20, we highly recommend you pick up the latest sed
patch from HP. HP has two sites which provide patches free of charge.
http://us-support.external.hp.com for US, Canada, Asia-Pacific, and
Latin-America
http://europe-support.external.hp.com for Europe
Retrieve patch PHCO_12862.
The HP assembler on these systems is much better than the hpux9 assembler,
but still has some problems. Most notably the assembler inserts timestamps
into each object file it creates, causing the 3-stage comparison test to fail
during a "make bootstrap". You should be able to continue by saying "make all"
after getting the failure from "make bootstrap".
m68k-*-nextstep*
You absolutely must use GNU sed and GNU make on this platform.
If you try to build the integrated C++ & C++ runtime libraries on this system
you will run into trouble with include files. The way to get around this is
to use the following sequence. Note you must have write permission to
prefix for this sequence to work.
cd objdir
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
cd gcc
make bootstrap
make install-headers-tar
cd ..
make bootstrap3
m68k-sun-sunos4.1.1
It is reported that you may need the GNU assembler on this platform.
mips*-sgi-irix4
mips*-sgi-irix5
You must use GAS on these platforms, the native assembler can not handle the
code for exception handling support on this platform.
These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by installing GNU binutils, which includes
a functional ranlib for this system.
You may get the following warning on irix4 platforms, it can be safely
ignored.
warning: foo.o does not have gp tables for all its sections.
mips*-sgi-irix6
You must not use GAS on irix6 platforms; doing so will only cause problems.
These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by making a dummy script called ranlib
which just exits with zero status and placing it in your path.
rs6000-ibm-aix*
powerpc-ibm-aix*
At least one person as reported problems with older versions of gnu-make on
this platform. make-3.76 is reported to work correctly.
powerpc-*-linux-gnu*
You will need binutils-2.8.1.0.17 from ftp://ftp.yggdrasil.com/private/hjl for
a working egcs. It is strongly recommended to recompile binutils with egcs
if you initially built it with gcc-2.7.2.*.
exception handling
XXX Linux stuff
Last modified on December 2, 1997.

28
INSTALL/TEST Normal file
View File

@ -0,0 +1,28 @@
Testing egcs-1.0
Before you install egcs, you might wish to run the egcs testsuite; this
step is optional and may require you to download additional software.
First, you must have downloaded the egcs testsuites; the full distribution
contains testsuites. If you downloaded the "core" compiler plus any front
ends, then you do not have the testsuites. You can download the testsuites
from the same site where you downloaded the core distribution and language
front ends.
Second, you must have a new version of dejagnu on your system; dejagnu-1.3
will not work. We have made a dejagnu snapshot
ftp://ftp.cygnus.com/pub/egcs/infrastructure/dejagnu-971028.tar.gz
dejagnu snapshot available in ftp.cygnus.com:/pub/egcs/infrastructure until
a new version of dejagnu can be released.
Assuming you've got the testsuites unpacked and have installed an appropriate
dejagnu, you can run the testsuite with "cd objdir; make -k check".
This may take a long time. Go get some lunch.
The testing process will try to test as many components in the egcs
distrubution as possible, including the C, C++ and Fortran compiler as
well as the C++ runtime libraries.
How to interpret test results XXX.
Last modified on December 2, 1997.

66
INSTALL/build.html Normal file
View File

@ -0,0 +1,66 @@
<html>
<head>
<title>Building egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Building egcs-1.0</h1>
<p>Now that egcs is configured, you are ready to build the compiler and
runtime libraries.
<p>We <b>highly</b> recommend that egcs be built using gnu-make; other
versions make work, then again they might not. To be safe build with gnu-make.
<p><b>Building a native compiler</b>
<p>For a native build issue the command "make bootstrap". This will build
the entire egcs compiler system, which includes the following steps:
<ul>
<li> Build host tools necessary to build the compiler such as texinfo, bison,
gperf.<p>
<li> Build target tools for use by the compiler such as gas, gld, and
binutils.<p>
<li> Perform a 3-stage bootstrap of the compiler.<p>
<li> Perform a comparison test of the stage2 and stage3 compilers.<p>
<li> Build runtime libraries using the stage3 compiler from the previous
step.<p>
</ul>
<p>If you are short on disk space you might consider "make bootstrap-lean"
instead. This is identical to "make bootstrap" except that object files
from the stage1 and stage2 of the 3-stage bootstrap of the compiler are
deleted as soon as they are no longer needed.
<p><b>Building a cross compiler</b>
<p> We recommend reading the
<a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
crossgcc FAQ</a> for information about building cross compilers.
<p>For a cross build, issue the command "make cross", which performs the
following steps:
<ul>
<li> Build host tools necessary to build the compiler such as texinfo, bison,
gperf.<p>
<li> Build target tools for use by the compiler such as gas, gld, and
binutils.<p>
<li> Build the compiler (single stage only).<p>
<li> Build runtime libraries using the compiler from the previous
step.<p>
</ul>
<p>Note that if an error occurs in any step the make process will exit.
<p>
<hr>
<i>Last modified on December 2, 1997.</i>
</body>
</html>

122
INSTALL/configure.html Normal file
View File

@ -0,0 +1,122 @@
<html>
<head>
<title>Configuring egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Configuring egcs-1.0</h1>
<p>Like most GNU software, egcs must be configured before it can be built.
This document attempts to describe the recommended configuration procedure
for both native and cross targets.
<p>We use <i>srcdir</i> to refer to the toplevel source directory for
egcs; we use <i>objdir</i> to refer to the toplevel build/object
directory for egcs.
<p>First, we <b>highly</b> recommend that egcs be built into a separate
directory than the sources. This is how we generally build egcs; building
where <i>srcdir</i> == <i>objdir</i> should still work, but doesn't get
extensive testing.
<p>Second, when configuring a native system, either "cc" must be in your
path or you must set CC in your environment before running configure.
Otherwise the configuration scripts may fail.
<p>To configure egcs:
<blockquote>
<tt>
<br>% mkdir <i>objdir</i>
<br>% cd <i>objdir</i>
<br>% <i>srcdir</i>/configure <b>[target]</b> <b>[options]</b>
</tt>
</blockquote>
<p><b>target specification</b>
<ul>
<li> egcs has code to correctly determine the correct value for
<b>target</b> for nearly all native systems. Therefore, we highly
recommend you not provide a configure target when configuring a
native compiler.
<li> <b>target</b> must be specified when configuring a cross compiler;
examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
</ul>
<p><b> options specification</b>
<p>Use <b>options</b> to override several configure time options for
egcs. A partial list of supported <tt>options</tt>:
<ul>
<li> <tt>--prefix=</tt><i>dirname</i> -- Specify the toplevel installation
directory. This is the recommended way to install the tools into a directory
other than the default. The toplevel installation directory defaults to
/usr/local.
<br>These additional options control where certain parts of the distribution
are installed. Normally you should not need to use these options.
<ul>
<li> <tt>--with-local-prefix=</tt><i>dirname</i> -- Specify the installation
directory for local include files. The default is /usr/local.
<li> <tt>--with-gxx-include-dir=</tt><i>dirname</i> -- Specify the installation
directory for g++ header files. The default is /usr/local/include/g++.
</ul>
<li> <tt>--enable-shared</tt> -- Build shared versions of the C++ runtime
libraries if supported <tt>--disable-shared</tt> is the default.
<li> <tt>--enable-haifa</tt> -- Enable the new Haifa instruction scheduler in the
compiler; the new scheduler can significantly improve code on some targets.
<tt>--disable-haifa</tt> is currently the default on all platforms except the HPPA.
<li> <tt>--with-gnu-as</tt> -- Specify that the compiler should assume the GNU
assembler (aka gas) is available.
<li> <tt>--with-gnu-ld</tt> -- Specify that the compiler should assume the GNU
linker (aka gld) is available.
<li> <tt>--with-stabs</tt> -- Specify that stabs debugging information should be used
instead of whatever format the host normally uses. Normally GCC uses the
same debug format as the host system.
<li> <tt>--enable-multilib</tt> -- Specify that multiple target libraries
should be built to support different target variants, calling conventions,
etc. This is the default.
<li> <tt>--enable-threads</tt> -- Specify that the target supports threads.
This only effects the Objective-C compiler and runtime library.
<li> <tt>--enable-threads=</tt><i>lib</i> -- Specify that <i>lib</i> is the
thread support library. This only effects the Objective-C compiler and
runtime library.
<li> <tt>--with-cpu=</tt><i>cpu</i> -- Specify which cpu variant the compiler should
generate code for by default. This is currently only supported on the
RS6000/PowerPC ports.
</ul>
<p>Some options which only apply to building cross compilers:
<ul>
<li> <tt>--with-headers=</tt><i>dir</i> -- Specifies a directory which has target
include files.
<li> <tt>--with-libs=</tt><i>dirs</i> -- Specifies a list of directories which contain
the target runtime libraries.
<li> <tt>--with-newlib</tt> -- Specifies that "newlib" is being used as the target
C library. This causes __eprintf to be omitted from libgcc.a on the
assumption that it will be provided by newlib.
</ul>
<p>Note that each <tt>--enable</tt> option has a corresponding <tt>--disable</tt> option and
that each <tt>--with</tt> option has a corresponding <tt>--without</tt> option.
<p>
<hr>
<i>Last modified on December 2, 1997.</i>
</body>
</html>

365
INSTALL/faq.html Normal file
View File

@ -0,0 +1,365 @@
<html>
<head>
<title>egcs Frequently Asked Questions</title>
</head>
<body bgcolor="white">
<h1 align="center">egcs Frequently Asked Questions</h1>
<ol>
<li><a href="#gcc-2-diff">How is egcs be different from gcc2?</a>
<li><a href="#open-development">What is an open development model?</a>
<li><a href="#libc-lock">bits/libc-lock.h: No such file or directory</a>
<li><a href="#morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a>
<li><a href="#fortran">Problems building the Fortran compiler</a>
<li><a href="#mips">Problems building on MIPS platforms</a>
<li><a href="#x86eh">Problems with exception handling on x86 platforms</a>
<li><a href="#hpcompare">Bootstrap comparison failures on HPs</a>
<li><a href="#makebugs">Bootstrap loops rebuilding cc1 over and over</a>
<li><a href="#rpath">Dynamic linker is unable to find GCC libraries</a>
<li><a href="#rpath">libstdc++/libio tests fail badly with --enable-shared</a>
<li><a href="#dejagnu">Unable to run the testsuite</a>
<li><a href="#cross">How to build a cross compiler</a>
<li><a href="#multiple">How to install both gcc2 and egcs</a>
<li><a href="#snapshot">Snapshots, how, when, why</a>
<li><a href="#linuxkernel">Problems building Linux kernels</a>
<li><a href="#memexhausted">Virtual memory exhausted</a>
<li><a href="#gas">GCC can not find GAS</a>
<li><a href="#rh5.0">egcs does not work on Red Hat 5.0</a>
</ol>
<hr>
<h2><a name="gcc-2-diff">How is egcs be different from gcc2?</a></h2>
<p>Six years ago, gcc version 1 had reached a point of stability. For the
targets it could support, it worked well. It had limitations inherent in
its design that would be difficult to resolve, so a major effort was made
and gcc version 2 was the result. When we had gcc2 in a useful state,
development efforts on gcc1 stopped and we all concentrated on making
gcc2 better than gcc1 could ever be. This is the kind of step forward
we want to make with egcs.
<p>In brief, the three biggest differences between egcs and gcc2 are
these:
<ul>
<li>More rexamination of basic architectual decisions of
gcc and an interest in adding new optimizations;
<li>working with the groups who have fractured out from gcc2 (like
the Linux folks, the Intel optimizations folks, Fortran folks)
including more front-ends; and finally
<li>An open development model (<a
href="#open-development">see below</a>) for the development process.
</ul>
<p>These three differences will work together to result in a more
useful compiler, a more stable compiler, a central compiler that works
for more people, a compiler that generates better code.
<p>There are a lot of exciting compiler optimizations that have come
out. We want them in gcc. There are a lot of front ends out there for
gcc for languages like Fortran or Pascal. We want them easily
installable by users. After six years of working on gcc2, we've come
to see problems and limitations in the way gcc is architected; it is
time to address these again.
<hr>
<h2><a name="open-development">What is an open development model?</a></h2>
<p>With egcs, we are going to try a bazaar style<a
href="#cathedral-vs-bazaar"><b>[1]</b></a> approach to its
development: We're going to be making snapshots publically available
to anyone who wants to try them; we're going to welcome anyone to join
the development mailing list. All of the discussions on the
development mailing list are available via the web. We're going to be
making releases with a much higher frequency than they have been made
in the past: We're shooting for three by the end of 1997.
<p>In addition to weekly snapshots of the egcs development sources, we
are going to look at making the sources readable from a CVS server by
anyone. We want to make it so external maintainers of parts of egcs
are able to commit changes to their part of egcs directly into the
sources without going through an intermediary.
<p>There have been many potential gcc developers who were not able to
participate in gcc development in the past. We these people to help in
any way they can; we ultimately want gcc to be the best compiler in the
world.
<p>A compiler is a complicated piece of software, there will still be
strong central maintainers who will reject patches, who will demand
documentation of implementations, and who will keep the level of
quality as high as it is today. Code that could use wider testing may
be intergrated--code that is simply ill-conceived won't be.
<p>egcs is not the first piece of software to use this open development
process; FreeBSD, the Emacs lisp repository, and Linux are a few
examples of the bazaar style of development.
<p>With egcs, we will be adding new features and optimizations at a
rate that has not been done since the creation of gcc2; these additions
will inevitably have a temporarily destabilizing effect. With the help
of developers working together with this bazaar style development, the
resulting stability and quality levels will be better than we've had
before.
<blockquote>
<a name="cathedral-vs-bazaar"><b>[1]</b></a>
We've been discussing different development models a lot over the
past few months. The paper which started all of this introduced two
terms: A <b>cathedral</b> development model versus a <b>bazaar</b>
development model. The paper is written by Eric S. Raymond, it is
called ``<a
href="http://locke.ccil.org/~esr/writings/cathedral.html">The
Cathedral and the Bazaar</a>''. The paper is a useful starting point
for discussions.
</blockquote>
<hr>
<h2><a name="libc-lock">bits/libc-lock.h: No such file or directory</a></h2>
<p>egcs includes a tightly integrated libio and libstdc++ implementation which
can cause problems on hosts which have libio integrated into their C library
(most notably Linux).
<p>We believe that we've solved the major technical problems for the most
common versions of libc found on Linux systems. However, some versions
of Linux use pre-release versions of glibc2, which egcs has trouble detecting
and correctly handling.
<p>If you're using one of these pre-release versions of glibc2, you may get
a message "bits/libc-lock.h: No such file or directory" when building egcs.
Unfortunately, to fix this problem you will need to update your C library to
glibc2.0.5c.
<p>Late breaking news: we may have at least a partial solution for these
problems. So this FAQ entry may no longer be needed.
<hr>
<h2><a name="morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a></h2>
<p>If you get this error, it means either egcs incorrectly guessed what version
of libc is installed on your linux system, or you incorrectly specified a
version of glibc when configuring egcs.
<p>If you did not provide a target name when configuring egcs, then you've
found a bug which needs to be reported. If you did provide a target name at
configure time, then you should reconfigure without specifying a target name.
<hr>
<h2><a name="fortran">Problems building the Fortran compiler</a></h2>
<p>The Fortran front end can not be built with most vendor compilers; it must
be built with gcc. As a result, you may get an error if you do not follow
the install instructions carefully.
<p>In particular, instead of using "make" to build egcs, you should use
"make bootstrap" if you are building a native compiler or "make cross"
if you are building a cross compiler.
<p>It has also been reported that the Fortran compiler can not be built
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
binutils or to Red Hat 5.0; we'll provide more information as it becomes
available.
<hr>
<h2><a name="mips">Problems building on MIPS platforms</a></h2>
<p>egcs requires the use of GAS on all versions of Irix, except Irix 6 due
to limitations in older Irix assemblers.
<p> Either of these messages indicates that you are using the MIPS assembler
when instead you should be using GAS.
<pre>
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
.4byte $LECIE1-$LSCIE1
as0: Error: ./libgcc2.c, line 1:malformed statement
</pre>
<hr>
<pre>
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol in expression
.word $LECIE1-$LSCIE1
</pre>
<p> For Irix 6, you should use the native assembler as GAS is not supported
on Irix 6.
<hr>
<h2> <a name="x86eh">Problems with exception handling on x86 platforms</a></h2>
<p>If you are using the GNU assembler (aka gas) on an x86 platform and
exception handling is not working correctly, then odds are you're using a
buggy assembler.
<p>We recommend binutils-2.8.0.1.15 or newer.
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.tar.gz"> binutils-2.8.0.1.15 source</a>
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.bin.tar.gz"> binutils-2.8.0.1.15 x86 binary for libc5</a>
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.15.glibc.bin.tar.gz"> binutils-2.8.0.1.15 x86 binary for glibc2</a>
Or, you can try a
<a href="ftp://ftp.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz"> binutils snapshot</a>; however, be aware that the binutils snapshot is untested
and may not work (or even build). Use it at your own risk.
<hr>
<h2> <a name="hpcompare">Bootstrap comparison failures on HPs</a></h2>
<p>If you bootstrap the compiler on hpux10 using the HP assembler instead of
gas, every file will fail the comparison test.
<p>The HP asembler inserts timestamps into object files it creates, causing
every file to be different. The location of the timestamp varies for each
object file, so there's no real way to work around this mis-feature.
<p>Odds are your compiler is fine, but there's no way to be certain.
<p>If you use GAS on HPs, then you will not run into this problem because
GAS never inserts timestamps into object files. For this and various other
reasons we highly recommend using GAS on HPs.
<hr>
<h2> <a name="makebugs">Bootstrap loops rebuilding cc1 over and over</a></h2>
<p>When building egcs, the build process loops rebuilding cc1 over and
over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
<p>This is probably a bug somewhere in the egcs Makefile. Until we find and
fix this bug we recommend you use GNU make instead of vendor supplied make
programs.
<hr>
<h2> <a name="rpath">Dynamic linker is unable to find GCC libraries</a></h2>
<p>This problem manifests itself by programs not finding shared libraries
they depend on when the programs are started. Note this problem often manifests
itself with failures in the libio/libstdc++ tests after configuring with
--enable-shared and building egcs.
<p>GCC does not specify a runpath so that the dynamic linker can find dynamic
libraries at runtime.
<p>The short explaination is that if you always pass a -R option to the
linker, then your programs become dependent on directories which
may be NFS mounted, and programs may hang unnecessarily when an
NFS server goes down.
<p>The problem is not programs that do require the directories; those
programs are going to hang no matter what you do. The problem is
programs that do not require the directories.
<p>SunOS effectively always passed a -R option for every -L option;
this was a bad idea, and so it was removed for Solaris. We should
not recreate it.
<hr>
<h2> <a name="dejagnu">Unable to run the testsuite</a></h2>
<p>If you get a message about unable to find "standard.exp" when trying to
run the egcs testsuites, then your dejagnu is too old to run the egcs tests.
You will need to get a newer version of dejagnu; we've made a
<a href="ftp://ftp.cygnus.com/pub/egcs/infrastructure/dejagnu-971028.tar.gz">
dejagnu snapshot</a> available until a new version of dejagnu can be released.
<hr>
<h2> <a name="cross">How to build a cross compiler</a></h2>
<p> Building cross compilers is a rather complex undertaking because they
usually need additional software (cross assembler, cross linker, target
libraries, target include files, etc).
<p> We recommend reading the <a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
crossgcc FAQ</a> for information about building cross compilers.
<p> If you have all the pieces available, then `make cross' should build a
cross compiler. `make LANGUAGES="c c++" install'will install the cross
compiler.
<p> Note that if you're trying to build a cross compiler in a tree which
includes binutils-2.8 in addition to egcs, then you're going to need to
make a couple minor tweaks so that the cross assembler, linker and
nm utilities will be found.
<p>binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs gcc
looks for them using gas-new, ld-new and nm-new, so you may have to arrange
for any symlinks which point to &ltfile&gt.new to be changed to &ltfile&gt-new.
<hr>
<h2> <a name="snapshot">Snapshots, how, when, why</a></h2>
<p> We make snapshots of the egcs sources about once a week; there is no
predetermined schedule. These snapshots are intended to give everyone
access to work in progress. Any given snapshot may generate incorrect code
or even fail to build.
<p>If you plan on downloading and using snapshots, we highly recommend you
subscribe to the egcs mailing lists. See <a href="index.html#mailinglists">
mailing lists</a> on the main egcs page for instructions on how to subscribe.
<p>When using the diff files to update from older snapshots to newer snapshots,
make sure to use "-E" and "-p" arguments to patch so that empty files are
deleted and full pathnames are provided to patch. If your version of
patch does not support "-E", you'll need to get a newer version. Also note
that you may need autoconf, autoheader and various other programs if you use
diff files to update from one snapshot to the next.
<hr>
<h2> <a name="multiple">How to install both egcs and gcc2</a></h2>
<p>It may be desirable to install both egcs and gcc2 on the same system. This
can be done by using different prefix paths at configure time and a few
symlinks.
<p>Basically, configure the two compilers with different --prefix options,
then build and install each compiler. Assume you want "gcc" to be the egcs
compiler and available in /usr/local/bin; also assume that you want "gcc2"
to be the gcc2 compiler and also available in /usr/local/bin.
<p>The easiest way to do this is to configure egcs with --prefix=/usr/local/egcs
and gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers.
Then make a symlink from /usr/local/bin/gcc to /usr/local/egcs/bin/gcc and
from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
for the "g++", "c++" and "g77" compiler drivers.
<hr>
<h2> <a name="linuxkernel">Problems building Linux kernels</a></h2>
<p>If you installed a recent binutils/gas snapshot on your Linux system,
you may not be able to build the kernel because objdump does not understand
the "-k" switch. The solution for this problem is to remove /usr/bin/encaps.
<p>You may get an internal compiler error compiling process.c in newer
versions of the Linux kernel on x86 machines. This is a bug in an asm
statement in process.c, not a bug in egcs. XXX How to fix?!?
<p>You may get errors with the X driver of the form
<pre>
_X11TransSocketUNIXConnect: Can't connect: errno = 111
</pre>
<p>It's a kernel bug. The function sys_iopl in arch/i386/kernel/process.c
does an illegal hack which used to work but is now broken since GCC optimizes
more aggressively . The newer 2.1.x kernels already have a fix which should
also work in 2.0.32.
<hr>
<h2> <a name="memexhausted">Virtual memory exhausted error</a></h2>
<p> This error means your system ran out of memory; this can happen for large
files, particularly when optimizing. If you're getting this error you should
consider trying to simplify your files or reducing the optimization level.
<p>Note that using -pedantic or -Wreturn-type can cause an explosion in the
amount of memory needed for template-heavy C++ code, such as code that uses
STL. Also note that -Wall includes -Wreturn-type, so if you use -Wall you
will need to specify -Wno-return-type to turn it off.
<hr>
<h2> <a name="gas">GCC can not find GAS</a></h2>
<p>Some configurations like irix4, irix5, hpux* require the use of the GNU
assembler intead of the system assembler. To ensure that egcs finds the GNU
assembler, you should configure the GNU assembler with the same --prefix
option as you used for egcs. Then build & install the GNU assembler.
<hr>
<h2> <a name="rh5.0">egcs does not work on Red Hat 5.0</a></h2>
<p> egcs does not currently work with Red Hat 5.0; we'll update this
entry with more information as it becomes available.
<hr>
<p><a href="index.html">Return to the egcs home page</a>
<p><i>Last modified: December 2, 1997</i>
</body>
</html>

30
INSTALL/finalinstall.html Normal file
View File

@ -0,0 +1,30 @@
<html>
<head>
<title>Final install egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Final install egcs-1.0</h1>
<p>Now that egcs has been built and tested, you can install it with
`cd <i>objdir</i>; make install' for a native compiler or
`cd <i>objdir</i>; make install LANGUAGES="c c++"' for a cross compiler
(note installing cross compilers will be easier in the next release!).
<p>That step completes the installation of egcs; user level binaries can
be found in <i>prefix</i>/bin where <i>prefix</i> is the value you specified
with the --prefix to configure (or /usr/local by default).
<p>If you don't mind, please send egcs@cygnus.com a short mail message
indicating that you successfully built and installed egcs. Include
the output from running <i>srcdir</i>/config.guess.
<p>If you find a bug in egcs, please report it to
<a href="mailto:egcs-bugs@cygnus.com">egcs-bugs@cygnus.com</a>.
<p>
<hr>
<i>Last modified on December 2, 1997.</i>
</body>
</html>

47
INSTALL/index.html Normal file
View File

@ -0,0 +1,47 @@
<html>
<head>
<title>Installing egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Installing egcs-1.0</h1>
<p>This document describes the generic installation procedure for egcs as
well as detailing some target specific installation instructions for egcs.
<p>egcs includes several components that previously were separate distributions
with their own installation instructions. This document supercedes all
package specific installation instructions. We provide the component specific
installation information in the source distribution for historical reference
purposes only.
<p>We recommend you read the entire generic installation instructions as
well as any target specific installation instructions before you proceed
to configure, build, test and install egcs.
<p>If something goes wrong in the configure, build, test or install
procedures, first double check that you followed the generic and target
specific installation instructions carefully. Then check the
<a href="../faq.html">FAQ</a> to see if your problem is covered before you file
a bug report.
<p>The installation procedure is broken into four steps.
<ul>
<li> <a href="configure.html">configure</a>
<li> <a href="build.html">build</a>
<li> <a href="test.html">test</a> (optional)
<li> <a href="finalinstall.html">install</a>
</ul>
<p>Before starting the build/install procedure <b>please</b> browse the
<a href="specific.html">host/target specific installation notes</a>.
<hr>
<a href="../index.html">Return to the egcs home page</a>
</body>
</html>
<hr>
<i>Last modified on December 2, 1997.</i>

119
INSTALL/specific.html Normal file
View File

@ -0,0 +1,119 @@
<html>
<head>
<title>Host/Target specific installation notes for egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Host/Target specific installation notes for egcs-1.0</h1>
<p><b>alpha*-*-*</b><br>
No specific installation needs/instructions.
<p><b>i?86-*-linux*</b><br>
You will need binutils-2.8.1.0.15 or newer for exception handling to work.
<p><b>i?86-*-sco3.2v5*</b><br>
The SCO assembler is currently required. The GNU assembler is not up
to the task of switching between ELF and COFF at runtime.
<br>Unlike various prereleases of GCC, that used '-belf' and defaulted to
COFF, you must now use the '-melf' and '-mcoff' flags to toggle between
the two object file formats. ELF is now the default.
<br>Look in gcc/config/i386/sco5.h (search for "messy") for additional
OpenServer-specific flags.
<p><b>hppa*-hp-hpux*</b><br>
We <b>highly</b> recommend using gas/binutils-2.8 on all hppa platforms; you
may encounter a variety of problems when using the HP assembler.
XXX How to make sure gcc finds/uses gas.
<p><b>hppa*-hp-hpux9</b><br>
The HP assembler has major problems on this platform. We've tried to work
around the worst of the problems. However, those workarounds may be causing
linker crashes in some circumstances; the workarounds also probably prevent
shared libraries from working. Use the GNU assembler to avoid these problems.
<br>The configuration scripts for egcs will also trigger a bug in the hpux9
shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to
/bin/ksh in your environment.
<p><b>hppa*-hp-hpux10</b><br>
For hpux10.20, we <b>highly</b> recommend you pick up the latest sed
patch from HP. HP has two sites which provide patches free of charge.
<br><a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
Latin-America</a>
<br><a href="http://europe-support.external.hp.com">Europe</a>
<p>Retrieve patch PHCO_12862.
<p>The HP assembler on these systems is much better than the hpux9 assembler,
but still has some problems. Most notably the assembler inserts timestamps
into each object file it creates, causing the 3-stage comparison test to fail
during a "make bootstrap". You should be able to continue by saying "make all"
after getting the failure from "make bootstrap".
<p><b>m68k-*-nextstep*</b><br>
You absolutely must use GNU sed and GNU make on this platform.
<p>If you try to build the integrated C++ & C++ runtime libraries on this system
you will run into trouble with include files. The way to get around this is
to use the following sequence. Note you must have write permission to
<i>prefix</i> for this sequence to work.
<p>cd <i>objdir</i><br>
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld<br>
cd gcc<br>
make bootstrap<br>
make install-headers-tar<br>
cd ..<br>
make bootstrap3<br>
<p><b>m68k-sun-sunos4.1.1</b><br>
It is reported that you may need the GNU assembler on this platform.
<p><b>mips*-sgi-irix4</b><br>
<b>mips*-sgi-irix5</b><br>
You must use GAS on these platforms, the native assembler can not handle the
code for exception handling support on this platform.
<p>These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by installing GNU binutils, which includes
a functional ranlib for this system.
<p>You may get the following warning on irix4 platforms, it can be safely
ignored.
<pre>
warning: foo.o does not have gp tables for all its sections.
</pre>
<p><b>mips*-sgi-irix6</b><br>
You must not use GAS on irix6 platforms; doing so will only cause problems.
<p>These systems don't have ranlib, which various components in egcs need; you
should be able to avoid this problem by making a dummy script called ranlib
which just exits with zero status and placing it in your path.
<p><b>rs6000-ibm-aix*</b><br>
<b>powerpc-ibm-aix*</b><br>
At least one person as reported problems with older versions of gnu-make on
this platform. make-3.76 is reported to work correctly.
<p><b>powerpc-*-linux-gnu*</b><br>
You will need
<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils-2.8.1.0.17</a> for
a working egcs. It is strongly recommended to recompile binutils with egcs
if you initially built it with gcc-2.7.2.*.
<p>
exception handling
<p>XXX Linux stuff
<hr>
<i>Last modified on December 2, 1997.</i>
</body>
</html>

37
INSTALL/test.html Normal file
View File

@ -0,0 +1,37 @@
<html>
<head>
<title>Testing egcs-1.0 </title>
</head>
<body bgcolor="white">
<h1 align="center">Testing egcs-1.0</h1>
<p>Before you install egcs, you might wish to run the egcs testsuite; this
step is optional and may require you to download additional software.
<p>First, you must have downloaded the egcs testsuites; the full distribution
contains testsuites. If you downloaded the "core" compiler plus any front
ends, then you do not have the testsuites. You can download the testsuites
from the same site where you downloaded the core distribution and language
front ends.
<p>Second, you must have a new version of dejagnu on your system; dejagnu-1.3
will not work. We have made a
<a href="ftp://ftp.cygnus.com/pub/egcs/infrastructure/dejagnu-971028.tar.gz">
dejagnu snapshot</a> available in ftp.cygnus.com:/pub/egcs/infrastructure until
a new version of dejagnu can be released.
<p>Assuming you've got the testsuites unpacked and have installed an appropriate
dejagnu, you can run the testsuite with "cd <i>objdir</i>; make -k check".
This may take a long time. Go get some lunch.
<p>The testing process will try to test as many components in the egcs
distrubution as possible, including the C, C++ and Fortran compiler as
well as the C++ runtime libraries.
<p> How to interpret test results XXX.
<hr>
<i>Last modified on December 2, 1997.</i>
</body>
</html>

6
configure vendored
View File

@ -81,7 +81,7 @@ subdirs=
target_alias=NOTARGET
target_makefile_frag=
undefs=NOUNDEFS
version="$Revision: 1.2 $"
version="$Revision: 1.3 $"
x11=default
### we might need to use some other shell than /bin/sh for running subshells
@ -1174,10 +1174,10 @@ EOF
# provide a proper gxx_include_dir to all subdirs.
# Note, if you change the default, make sure to fix both here
# and in the gcc subdirectory.
if test -z "${gxx_include_dir}"; then
if test -z "${with_gxx_include_dir}"; then
echo gxx_include_dir = '${prefix}/include/g++' >> ${Makefile}
else
echo gxx_include_dir = ${gxx_include_dir} >> ${Makefile}
echo gxx_include_dir = ${with_gxx_include_dir} >> ${Makefile}
fi
# reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,

View File

@ -53,6 +53,12 @@ Tue Dec 2 12:54:33 1997 Jim Wilson <wilson@cygnus.com>
* unroll.c (find_splittable_givs): Remove last change. Handle givs
with a dest_reg that was created by loop.
Sat Nov 29 12:44:57 1997 David Edelsohn <edelsohn@mhpcc.edu>
* rs6000.c (function_arg_partial_nregs): Undo Nov. 26 patch.
* rs6000/aix41.h (ASM_CPU_SPEC): Define.
Fri Nov 28 10:00:27 1997 Jeffrey A Law (law@cygnus.com)
* configure.in: Fix NCR entries.
@ -90,6 +96,11 @@ Wed Nov 26 15:47:30 1997 Michael Meissner <meissner@cygnus.com>
* rs6000.h (ASM_OUTPUT_REG_{PUSH,POP}): Keep stack aligned to 16
byte boundary, and maintain stack backchain.
Tue Nov 25 14:08:12 1997 Jim Wilson <wilson@cygnus.com>
* mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2,
fix_truncsfdi2): Change *.
Wed Nov 26 11:12:26 1997 Jason Merrill <jason@yorick.cygnus.com>
* toplev.c (main): Complain about -gdwarfn.

View File

@ -3,6 +3,9 @@ This file documents the installation of the GNU compiler. Copyright
may copy, distribute, and modify it freely as long as you preserve this
copyright notice and permission notice.
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
Installing GNU CC
*****************

View File

@ -1,4 +1,4 @@
Noteworthy changes in GCC version 2.8.0:
Noteworthy changes in GCC for EGCS.
The -specs=file switch allows you to override default specs used in invoking
programs like cc1, as, etc.
@ -14,6 +14,8 @@ The following new targets are supported:
Solaris 2.51 running on PowerPC's.
Linux running on PowerPC's.
Embedded target m32r-elf.
Embedded target arc-elf.
IRIX 6.2 running on MIPS.
New features for the Hitachi H8/300(H).
@ -26,6 +28,9 @@ New features for SPARC-based systems:
-mcpu=xxx
-mtune=xxx
-malign-loops=xxx
-malign-jumps=xxx
-malign-functions=xxx
-mimpure-text and -mno-impure-text
New features for all rs6000 and PowerPC systems:
@ -56,6 +61,8 @@ or embedded systems:
-memb
-msim
-mmvme
-myellowknife
-mads
wchar_t is now of type long, not unsigned short as per ABI.
-p/-pg support
-mcpu=403 now implies -mstrict-align.
@ -82,6 +89,9 @@ Directory names used for storing the multilib libraries on System V and
embedded PowerPC systems have been shortened to work with commands like tar
that have fixed limits on pathname size.
The DWARF 2 debugging information format is supported on ELF systems, and
is the default for -ggdb where available.
Noteworthy changes in GCC version 2.7.2:
A few bugs have been fixed (most notably the generation of an

4157
gcc/ORDERS

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
This directory contains the version 2.7.2 release of the GNU C
This directory contains the egcs version 1.0 release of the GNU C
compiler. It includes all of the support for compiling C++ and
Objective C, including a run-time library for Objective C.

View File

@ -14,6 +14,10 @@ which is the top-level directory containing the gcc back end, the
gcc C front end, and other non-Fortran files, and gcc/f/, which
contains all of the Fortran files.
* Note, if this is an egcs release, all the installation information
which follows is not needed. It is provided for historical reference
only.
* To build GNU Fortran, you must have a source distribution of gcc
version 2.7.2.2. Do not attempt to use any other version
of gcc, because this version of g77 is designed to work only with
@ -163,4 +167,4 @@ the compiler is in the second pass, otherwise it is in the first.
(This information might help you reduce a test case and/or work around
a bug in g77 until a fix is available.)
Any questions or comments on these topics, email fortran@gnu.ai.mit.edu.
Any questions or comments on these topics, email egcs@cygnus.com

View File

@ -36,6 +36,37 @@ Boston, MA 02111-1307, USA. */
#undef ASM_SPEC
#define ASM_SPEC "-u %(asm_cpu)"
/* Common ASM definitions used by ASM_SPEC amonst the various targets
for handling -mcpu=xxx switches. */
#undef ASM_CPU_SPEC
#define ASM_CPU_SPEC \
"%{!mcpu*: \
%{mpower: %{!mpower2: -mpwr}} \
%{mpower2: -mpwr2} \
%{mpowerpc*: -mppc} \
%{mno-power: %{!mpowerpc*: -mcom}} \
%{!mno-power: %{!mpower2: %(asm_default)}}} \
%{mcpu=common: -mcom} \
%{mcpu=power: -mpwr} \
%{mcpu=power2: -mpwr2} \
%{mcpu=powerpc: -mppc} \
%{mcpu=rios: -mpwr} \
%{mcpu=rios1: -mpwr} \
%{mcpu=rios2: -mpwr2} \
%{mcpu=rsc: -mpwr} \
%{mcpu=rsc1: -mpwr} \
%{mcpu=403: -mppc} \
%{mcpu=505: -mppc} \
%{mcpu=601: -m601} \
%{mcpu=602: -mppc} \
%{mcpu=603: -m603} \
%{mcpu=603e: -m603} \
%{mcpu=604: -m604} \
%{mcpu=620: -mppc} \
%{mcpu=821: -mppc} \
%{mcpu=860: -mppc}"
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_AIX41 \
-Asystem(unix) -Asystem(aix)"

View File

@ -1387,9 +1387,6 @@ function_arg_partial_nregs (cum, mode, type, named)
return 0;
}
if (GET_MODE_CLASS (mode) == MODE_FLOAT && TARGET_HARD_FLOAT)
return 0;
if (cum->words < GP_ARG_NUM_REG
&& GP_ARG_NUM_REG < (cum->words + RS6000_ARG_SIZE (mode, type, named)))
{

View File

@ -3,6 +3,9 @@ compiler. Copyright (C) 1995, 1996 Free Software Foundation, Inc. You
may copy, distribute, and modify it freely as long as you preserve this
copyright notice and permission notice.
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
Installing GNU Fortran
**********************
@ -1594,7 +1597,7 @@ general) are broken, at least for their system.
until you're sure your distribution is widely used and has been well
tested. This especially goes for those of you making any changes to
the `g77' sources to port `g77', e.g. to OS/2.
<fortran@gnu.ai.mit.edu> has received a fair number of bug reports that
<fortran@gnu.org> has received a fair number of bug reports that
turned out to be problems with other peoples' ports and distributions,
about which nothing could be done for the user. Once you are quite
certain a bug report does not involve your efforts, you can forward it

View File

@ -91,7 +91,7 @@ translations approved by the Free Software Foundation instead of in the
original English.
@end ifinfo
Contributed by James Craig Burley (@email{burley@@gnu.ai.mit.edu}).
Contributed by James Craig Burley (@email{burley@@gnu.org}).
Inspired by a first pass at translating @file{g77-0.5.16/f/DOC} that
was contributed to Craig by David Ronis (@email{ronis@@onsager.chem.mcgill.ca}).
@ -762,7 +762,7 @@ without royalty; alteration is not permitted.
@cindex improvements, funding
Work on GNU Fortran is still being done mostly by its author,
James Craig Burley (@email{burley@@gnu.ai.mit.edu}), who is a volunteer
James Craig Burley (@email{burley@@gnu.org}), who is a volunteer
for, not an employee of, the Free Software Foundation (FSF).
As with other GNU software, funding is important because it can pay for
needed equipment, personnel, and so on.
@ -772,7 +772,7 @@ needed equipment, personnel, and so on.
The FSF provides information on the best way to fund ongoing
development of GNU software (such as GNU Fortran) in documents
such as the ``GNUS Bulletin''.
Email @email{gnu@@prep.ai.mit.edu} for information on funding the FSF.
Email @email{gnu@@gnu.org} for information on funding the FSF.
To fund specific GNU Fortran work in particular, the FSF might
provide a means for that, but the FSF does not provide direct funding
@ -801,7 +801,7 @@ would be able to plan on not doing contract work for many months and
could thus devote that time to work on projects (such as the planned
changes for 0.6) that require longer timeframes to complete.
For the latest information on the status of the author, do
@kbd{finger -l burley@@gate.gnu.ai.mit.edu} on a UNIX system
@kbd{finger -l burley@@gnu.org} on a UNIX system
(or any system with a command like UNIX @code{finger}).
Another important way to support work on GNU Fortran is to volunteer
@ -810,7 +810,7 @@ Work is needed on documentation, testing, porting
to various machines, and in some cases, coding (although major
changes planned for version 0.6 make it difficult to add manpower to this
area).
Email @email{fortran@@gnu.ai.mit.edu} to volunteer for this work.
Email @email{egcs@@cygnus.com} to volunteer for this work.
@xref{Funding,,Funding Free Software}, for more information.
@ -3251,9 +3251,9 @@ users use @code{g77}.
such changes to @code{g77}.
To find out about existing bugs and ongoing plans for GNU
Fortran, retrieve @code{ftp://alpha.gnu.ai.mit.edu/g77.plan}
Fortran, retrieve @code{ftp://alpha.gnu.org/g77.plan}
or, if you cannot do that, email
@email{fortran@@gnu.ai.mit.edu} asking for a recent copy of the
@email{fortran@@gnu.org} asking for a recent copy of the
GNU Fortran @file{.plan} file.
@heading In 0.5.21:
@ -10164,7 +10164,7 @@ or installing @code{g77} is not provided here.
To find out about major bugs discovered in the current release and
possible workarounds for them, retrieve
@code{ftp://alpha.gnu.ai.mit.edu/g77.plan}.
@code{ftp://alpha.gnu.org/g77.plan}.
(Note that some of this portion of the manual is lifted
directly from the @code{gcc} manual, with minor modifications
@ -12290,8 +12290,8 @@ exposes it more readily than other compilers.
@node Bug Lists
@section Where to Report Bugs
@cindex bug report mailing lists
@kindex fortran@@gnu.ai.mit.edu
Send bug reports for GNU Fortran to @email{fortran@@gnu.ai.mit.edu}.
@kindex egcs-bugs@@cygnus.com
Send bug reports for GNU Fortran to @email{egcs-bugs@@cygnus.com}.
Often people think of posting bug reports to a newsgroup instead of
mailing them.
@ -12627,7 +12627,7 @@ we should be able to reproduce the crash ourselves.
If you would like to write bug fixes or improvements for the GNU Fortran
compiler, that is very helpful.
Send suggested fixes to the bug report
mailing list, @email{fortran@@gnu.ai.mit.edu}.
mailing list, @email{egcs-bugs@@cygnus.com}.
Please follow these guidelines so we can study your patches efficiently.
If you don't follow these guidelines, your information might still be
@ -12752,7 +12752,7 @@ The service directory is found in the file named @file{SERVICE} in the
GNU CC distribution.
@item
Send a message to @email{fortran@@gnu.ai.mit.edu}.
Send a message to @email{egcs@@cygnus.com}.
@end itemize
@end ifset

View File

@ -7,6 +7,9 @@
@c 1997-09-09
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
@ifclear INSTALLONLY
@node Installation
@chapter Installing GNU Fortran
@ -2106,7 +2109,7 @@ until you're sure your distribution is widely used and has been
well tested.
This especially goes for those of you making any
changes to the @code{g77} sources to port @code{g77}, e.g. to OS/2.
@email{fortran@@gnu.ai.mit.edu} has received a fair number of bug
@email{fortran@@gnu.org} has received a fair number of bug
reports that turned out to be problems with other peoples' ports
and distributions, about which nothing could be done for the
user.

View File

@ -1,3 +1,10 @@
971202
It is not necessary to apply the "backend" patch to an egcs based gcc
release. The files in this directory are included in the egcs distribution
for historical purposes only.
970909
This directory contains .diff files for various GNU CC distributions

View File

@ -230,7 +230,7 @@ ffelex_append_to_token_ (char c)
}
#ifdef MAP_CHARACTER
Sorry, MAP_CHARACTER is not going to work as expected in GNU Fortran,
please contact fortran@gnu.ai.mit.edu if you wish to fund work to
please contact fortran@gnu.org if you wish to fund work to
port g77 to non-ASCII machines.
#endif
ffelex_token_->text[ffelex_token_->length++] = c;

View File

@ -20,10 +20,10 @@
.if n .sp
.if t .sp 0.4
..
.Id $Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp $
.Id $Id: gcc.1,v 1.1.1.2 1997/11/02 08:40:04 law Exp $
.TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools"
.SH NAME
gcc, g++ \- GNU project C and C++ Compiler (v2.7)
gcc, g++ \- GNU project C and C++ Compiler (egcs-1.0)
.SH SYNOPSIS
.B gcc
.RI "[ " option " | " filename " ].\|.\|."
@ -190,6 +190,8 @@ in the following sections.
\-Wformat
.RI \-Wid\-clash\- len
\-Wimplicit
\-Wimplicit\-int
\-Wimplicit\-function\-declaration
\-Winline
\-Wmain
\-Wmissing\-prototypes
@ -1717,8 +1719,14 @@ An unsigned value is compared against zero with `\|\c
\&\|'.
.PP
.TP
.B \-Wimplicit-int
Warn whenever a declaration does not specify a type.
.TP
.B \-Wimplicit-function-declaration
Warn whenever a function is used before being declared.
.TP
.B \-Wimplicit
Warn whenever a function or parameter is implicitly declared.
Same as -Wimplicit-int and -Wimplicit-function-declaration.
.TP
.B \-Wmain
Warn if the

View File

@ -148,12 +148,12 @@ original English.
@sp 1
@c The version number appears twice more in this file.
@center for version 2.7.2
@center for egcs-1.0
@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1988, 89, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
@sp 2
For GCC Version 2.7.2@*
For EGCS Version 1.0@*
@sp 1
Published by the Free Software Foundation @*
59 Temple Place - Suite 330@*
@ -194,19 +194,19 @@ original English.
@ifset USING
This manual documents how to run, install and port the GNU
compiler, as well as its new features and incompatibilities, and how to
report bugs. It corresponds to GNU CC version 2.7.2.
report bugs. It corresponds to EGCS version 1.0.
@end ifset
@end ifset
@ifclear INTERNALS
This manual documents how to run and install the GNU compiler,
as well as its new features and incompatibilities, and how to report
bugs. It corresponds to GNU CC version 2.7.2.
bugs. It corresponds to EGCS version 1.0.
@end ifclear
@ifclear USING
This manual documents how to port the GNU compiler,
as well as its new features and incompatibilities, and how to report
bugs. It corresponds to GNU CC version 2.7.1.
bugs. It corresponds to EGCS version 1.0.
@end ifclear
@end ifinfo
@ -2188,24 +2188,13 @@ for improvement of GNU CC or GNU C++ are welcome in any case.
@node Bug Lists
@section Where to Report Bugs
@cindex bug report mailing lists
@kindex bug-gcc@@prep.ai.mit.edu
Send bug reports for GNU C to @samp{bug-gcc@@prep.ai.mit.edu}.
@kindex egcs-bugs@@cygnus.com
Send bug reports for GNU C to @samp{egcs-bugs@@cygnus.com}.
@kindex bug-g++@@prep.ai.mit.edu
@kindex bug-libg++@@prep.ai.mit.edu
Send bug reports for GNU C++ to @samp{bug-g++@@prep.ai.mit.edu}. If
your bug involves the C++ class library libg++, send mail instead to the
address @samp{bug-lib-g++@@prep.ai.mit.edu}. If you're not sure, you
can send the bug report to both lists.
@strong{Do not send bug reports to @samp{help-gcc@@prep.ai.mit.edu} or
to the newsgroup @samp{gnu.gcc.help}.} Most users of GNU CC do not want
to receive bug reports. Those that do, have asked to be on
@samp{bug-gcc} and/or @samp{bug-g++}.
The mailing lists @samp{bug-gcc} and @samp{bug-g++} both have newsgroups
which serve as repeaters: @samp{gnu.gcc.bug} and @samp{gnu.g++.bug}.
Each mailing list and its newsgroup carry exactly the same messages.
@kindex egcs-bugs@@cygnus.com
@kindex egcs-bugs@@cygnus.com
Send bug reports for GNU C++ and the C++ runtime libraries to
@samp{egcs-bugs@@cygnus.com}.
Often people think of posting bug reports to the newsgroup instead of
mailing them. This appears to work, but it has one problem which can be
@ -2491,7 +2480,7 @@ we should be able to reproduce the crash ourselves.
If you would like to write bug fixes or improvements for the GNU C
compiler, that is very helpful. Send suggested fixes to the bug report
mailing list, @code{bug-gcc@@prep.ai.mit.edu}.
mailing list, @code{egcs-bugs@@cygnus.com}.
Please follow these guidelines so we can study your patches efficiently.
If you don't follow these guidelines, your information might still be
@ -2611,8 +2600,8 @@ ways to find it:
@itemize @bullet
@item
Send a message to a suitable network mailing list. First try
@code{bug-gcc@@prep.ai.mit.edu}, and if that brings no response, try
@code{help-gcc@@prep.ai.mit.edu}.
@code{egcs-bugs@@cygnus.com}, and if that brings no response, try
@code{egcs@@cygnus.com}.
@item
Look in the service directory for someone who might help you for a fee.
@ -2625,13 +2614,13 @@ GNU CC distribution.
If you would like to help pretest GNU CC releases to assure they work
well, or if you would like to work on improving GNU CC, please contact
the maintainers at @code{bug-gcc@@gnu.ai.mit.edu}. A pretester should
the maintainers at @code{egcs@@cygnus.com}. A pretester should
be willing to try to investigate bugs as well as report them.
If you'd like to work on improvements, please ask for suggested projects
or suggest your own ideas. If you have already written an improvement,
please tell us about it. If you have not yet started work, it is useful
to contact @code{bug-gcc@@prep.ai.mit.edu} before you start; the
to contact @code{egcs@@cygnus.com} before you start; the
maintainers may be able to suggest ways to make your extension fit in
better with the rest of GNU CC and with other development plans.

View File

@ -5,6 +5,9 @@
@c The text of this file appears in the file INSTALL
@c in the GCC distribution, as well as in the GCC manual.
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
@ifclear INSTALLONLY
@node Installation
@chapter Installing GNU CC

View File

@ -366,7 +366,7 @@ in the following sections.
@xref{Code Gen Options,,Options for Code Generation Conventions}.
@smallexample
-fcall-saved-@var{reg} -fcall-used-@var{reg}
-ffixed-@var{reg} -finhibit-size-directive
-fexceptions -ffixed-@var{reg} -finhibit-size-directive
-fcheck-memory-usage -fprefix-function-name
-fno-common -fno-ident -fno-gnu-linker
-fpcc-struct-return -fpic -fPIC
@ -2306,7 +2306,7 @@ These two options are intended to be removed someday, once
they have helped determine the efficacy of various
approaches to improving loop optimizations.
Please let us (@code{egcs@@cygnus.com} and @code{fortran@@gnu.ai.mit.edu})
Please let us (@code{egcs@@cygnus.com} and @code{fortran@@gnu.org})
know how use of these options affects
the performance of your production code.
We're very interested in code that runs @emph{slower}
@ -5389,6 +5389,14 @@ environment with multiple threads, but only rarely need to specify it in
a single-threaded environment since stack overflow is automatically
detected on nearly all systems if there is only one stack.
@item -fexceptions
Enable exception handling. For some targets, this implies
generation of frame unwind information for all functions, which can produce
significant data size overhead, though it does not affect execution.
This option is on by default for languages that support exception
handling (such as C++), and off for those that don't (such as C).
@item +e0
@itemx +e1
Control whether virtual function definitions in classes are used to

View File

@ -1,3 +1,9 @@
*** Major changes in libio for egcs:
* Better support for Linux.
* Dejagnu testsuite.
*** Major changes in libio version 2.7.0:
* The data representations of _IO_FILE and streambufs have been modified.

View File

@ -1,13 +1,9 @@
SUMMARY OF RECENT MAJOR CHANGES to LIBSTDC++.
(Also check ../libio/NEWS.)
*** Noteworthy changes in libstdc++ version 2.8.0:
*** Noteworthy changes in libstdc++ for EGCS
* The STL implementation in libstdc++ is now only slightly modified from
the HP distribution, thanks to improved template support in gcc 2.8.0.
* EGCS includes the SGI STL implementation without changes.
* The string representation class is now nested in the basic_string
template, since this is supported in the new gcc.
* As a result of these and other changes, libstc++ 2.8.0 is not binary
* As a result of these and other changes, libstc++ for EGCS is not binary
compatible with previous releases of libstdc++.

View File

@ -1,3 +1,8 @@
Tue Dec 2 20:24:40 1997 Bruno Haible <haible@ilog.fr>
* makeinfo/makeinfo.c (find_and_load, convert_from_stream):
Zero-terminate the file contents.
Fri Oct 31 09:39:31 1997 Jeffrey A Law (law@cygnus.com)
* Makefile.in (install targets): Add a dummy target for sunos make.

View File

@ -1,3 +1,6 @@
Note most of this information is out of date and superceded by the EGCS
install procedures. It is provided for historical reference only.
Basic Installation
==================

View File

@ -1,5 +1,5 @@
/* Makeinfo -- convert texinfo format files into info files.
$Id: makeinfo.c,v 1.2 1997/09/03 04:25:24 law Exp $
$Id: makeinfo.c,v 1.5 1998/03/03 09:03:45 law Exp $
Copyright (C) 1987, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
@ -1167,7 +1167,7 @@ find_and_load (filename)
goto error_exit;
/* Load the file. */
result = (char *)xmalloc (1 + file_size);
result = (char *)xmalloc (file_size + 2);
/* VMS stat lies about the st_size value. The actual number of
readable bytes is always less than this value. The arcane
@ -1207,6 +1207,8 @@ find_and_load (filename)
extra unnecessary work each time it is called (that is a lot of times).
The SIZE_OF_INPUT_TEXT is one past the actual end of the text. */
input_text[size_of_input_text] = '\n';
/* Necessary, because later on we call strlen(input_text+limit). */
input_text[size_of_input_text+1] = '\0';
return (result);
}
@ -1947,21 +1949,22 @@ convert_from_stream (stream, name)
FILE *stream;
char *name;
{
char *buffer = (char *)NULL;
int buffer_offset = 0, buffer_size = 0;
int buffer_size = READ_BUFFER_GROWTH;
char *buffer = (char *) xmalloc (buffer_size + 2);
int buffer_offset = 0;
initialize_conversion ();
/* Read until the end of the stream. This isn't strictly correct, since
the texinfo input may end before the stream ends, but it is a quick
working hueristic. */
working heuristic. */
while (!feof (stream))
{
int count;
if (buffer_offset + (READ_BUFFER_GROWTH + 1) >= buffer_size)
if (buffer_offset + READ_BUFFER_GROWTH > buffer_size)
buffer = (char *)
xrealloc (buffer, (buffer_size += READ_BUFFER_GROWTH));
xrealloc (buffer, (buffer_size += READ_BUFFER_GROWTH) + 2);
count = fread (buffer + buffer_offset, 1, READ_BUFFER_GROWTH, stream);
@ -1988,6 +1991,8 @@ convert_from_stream (stream, name)
extra unnecessary work each time it is called (that is a lot of times).
The SIZE_OF_INPUT_TEXT is one past the actual end of the text. */
input_text[size_of_input_text] = '\n';
/* Necessary, because later on we call strlen(input_text+limit). */
input_text[size_of_input_text+1] = '\0';
convert_from_loaded_file (name);
}