This commit was generated by cvs2svn to compensate for changes in r107588,

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
David E. O'Brien 2002-12-04 15:15:07 +00:00
commit 2ea5c3f540
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=107589
142 changed files with 55014 additions and 13154 deletions

14448
contrib/gcc/.brik Normal file

File diff suppressed because it is too large Load Diff

32
contrib/gcc/.cvsignore Normal file
View File

@ -0,0 +1,32 @@
*-all
*-co
*-dirs
*-done
*-install-info
*-src
*-stamp-*
*-tagged
blockit
cfg-paper.info
config.status
configure.aux
configure.cp
configure.cps
configure.dvi
configure.fn
configure.fns
configure.ky
configure.kys
configure.log
configure.pg
configure.pgs
configure.toc
configure.tp
configure.tps
configure.vr
configure.vrs
Makefile
dir.info
lost+found
update.out
LAST_UPDATED

File diff suppressed because it is too large Load Diff

653
contrib/gcc/FAQ Normal file
View File

@ -0,0 +1,653 @@
GCC Frequently Asked Questions
The latest version of this document is always available at
[1]http://www.gnu.org/software/gcc/faq.html.
This FAQ tries to answer specific questions concerning GCC. For
general information regarding C, C++, resp. Fortran please check the
[2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
Information page.
Other GCC-related FAQs: [5]libstdc++-v3, and [6]GCJ.
_________________________________________________________________
Questions
1. [7]General information
1. [8]What is the relationship between GCC and EGCS?
2. [9]What is the relationship between GCC and Cygnus / Red Hat?
3. [10]What is an open development model?
4. [11]How do I report a bug?
5. [12]How do I get a bug fixed or a feature added?
6. [13]Does GCC work on my platform?
2. [14]Installation
1. [15]How to install multiple versions of GCC
2. [16]Dynamic linker is unable to find GCC libraries
3. [17]libstdc++/libio tests fail badly with --enable-shared
4. [18]GCC can not find GNU as/GNU ld
5. [19]cpp: Usage:... Error
6. [20]Optimizing the compiler itself
3. [21]Testsuite problems
1. [22]Unable to run the testsuite
2. [23]How do I pass flags like -fnew-abi to the testsuite?
3. [24]How can I run the test suite with multiple options?
4. [25]Older versions of GCC
1. [26]Is there a stringstream / sstream for GCC 2.95.2?
5. [27]Miscellaneous
1. [28]Virtual memory exhausted
2. [29]Friend Templates
3. [30]dynamic_cast, throw, typeid don't work with shared
libraries
4. [31]Why do I need autoconf, bison, xgettext, automake, etc?
5. [32]Why can't I build a shared library?
6. [33]How to work around too long C++ symbol names?
(-fsquangle)
7. [34]When building C++, the linker says my constructors,
destructors or virtual tables are undefined, but I defined
them
8. [35]Will GCC someday include an incremental linker?
_________________________________________________________________
General information
What is the relationship between GCC and EGCS?
In 1990/1991 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 to resolve those limitiations 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 wanted to make with the
EGCS project when it was formed in 1997.
In April 1999 the Free Software Foundation officially halted
development on the gcc2 compiler and appointed the EGCS project as the
official GCC maintainers. The net result was a single project which
carries forward GCC development under the ultimate control of the
[36]GCC Steering Committee.
_________________________________________________________________
What is the relationship between GCC and Cygnus / Red Hat?
It is a common mis-conception that Red Hat controls GCC either
directly or indirectly.
While Red Hat does donate hardware, network connections, code and
developer time to GCC development, Red Hat does not control GCC.
Overall control of GCC is in the hands of the [37]GCC Steering
Committee which includes people from a variety of different
organizations and backgrounds. The purpose of the steering committee
is to make decisions in the best interest of GCC and to help ensure
that no individual or company has control over the project.
To summarize, Red Hat contributes to the GCC project, but does not
exert a controlling influence over GCC.
_________________________________________________________________
What is an open development model?
We are using a bazaar style [38][1] approach to GCC development: we
make snapshots publicly available to anyone who wants to try them; we
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.
In addition to weekly snapshots of the GCC development sources, we
have the sources readable from a CVS server by anyone. Furthermore we
are using remote CVS to allow remote maintainers write access to the
sources.
There have been many potential GCC developers who were not able to
participate in GCC development in the past. We want 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 integrated--code that is simply ill-conceived won't be.
GCC is not the first piece of software to use this open development
process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
a few examples of the bazaar style of development.
With GCC, we are adding new features and optimizations at a rate that
has not been done since the creation of gcc2; these additions
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.
[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 ``[39]The Cathedral and the Bazaar''. The paper is a useful
starting point for discussions.
_________________________________________________________________
How do I report a bug?
There are complete instructions [40]here.
_________________________________________________________________
How do I get a bug fixed or a feature added?
There are lots of ways to get something fixed. The list below may be
incomplete, but it covers many of the common cases. These are listed
roughly in order of increasing difficulty for the average GCC user,
meaning someone who is not skilled in the internals of GCC, and where
difficulty is measured in terms of the time required to fix the bug.
No alternative is better than any other; each has its benefits and
disadvantages.
* Hire someone to fix it for you. There are various companies and
individuals providing support for GCC. This alternative costs
money, but is relatively likely to get results.
* [41]Report the problem to the GCC GNATS bug tracking system and
hope that someone will be kind enough to fix it for you. While
this is certainly possible, and often happens, there is no
guarantee that it will. You should not expect the same response
from this method that you would see from a commercial support
organization since the people who read GCC bug reports, if they
choose to help you, will be volunteering their time. This
alternative will work best if you follow the directions on
[42]submitting bugreports.
* Fix it yourself. This alternative will probably bring results, if
you work hard enough, but will probably take a lot of time, and,
depending on the quality of your work and the perceived benefits
of your changes, your code may or may not ever make it into an
official release of GCC.
_________________________________________________________________
Does GCC work on my platform?
The host/target specific installation notes for GCC include
information about known problems with installing or using GCC on
particular platforms. These are included in the sources for a release
in INSTALL/specific.html, and the [43]latest version is always
available at the GCC web site. Reports of [44]successful builds for
several versions of GCC are also available at the web site.
_________________________________________________________________
Installation
How to install multiple versions of GCC
It may be desirable to install multiple versions of the compiler 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 latest compiler and available in /usr/local/bin; also assume
that you want "gcc2" to be the older gcc2 compiler and also available
in /usr/local/bin.
The easiest way to do this is to configure the new GCC with
--prefix=/usr/local/gcc and the older gcc2 with
--prefix=/usr/local/gcc2. Build and install both compilers. Then make
a symlink from /usr/local/bin/gcc to /usr/local/gcc/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.
An alternative to using symlinks is to configure with a
--program-transform-name option. This option specifies a sed command
to process installed program names with. Using it you can, for
instance, have all the new GCC programs installed as "new-gcc" and the
like. You will still have to specify different --prefix options for
new GCC and old GCC, because it is only the executable program names
that are transformed. The difference is that you (as administrator) do
not have to set up symlinks, but must specify additional directories
in your (as a user) PATH. A complication with --program-transform-name
is that the sed command invariably contains characters significant to
the shell, and these have to be escaped correctly, also it is not
possible to use "^" or "$" in the command. Here is the option to
prefix "new-" to the new GCC installed programs:
--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
With the above --prefix option, that will install the new GCC programs
into /usr/local/gcc/bin with names prefixed by "new-". You can use
--program-transform-name if you have multiple versions of GCC, and
wish to be sure about which version you are invoking.
If you use --prefix, GCC may have difficulty locating a GNU assembler
or linker on your system, [45]GCC can not find GNU as/GNU ld explains
how to deal with this.
Another option that may be easier is to use the --program-prefix= or
--program-suffix= options to configure. So if you're installing GCC
2.95.2 and don't want to disturb the current version of GCC in
/usr/local/bin/, you could do
configure --program-suffix=-2.95.2 <other configure options>
This should result in GCC being installed as /usr/local/bin/gcc-2.95.2
instead of /usr/local/bin/gcc.
_________________________________________________________________
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 GCC.
GCC does not specify a runpath so that the dynamic linker can find
dynamic libraries at runtime.
The short explanation 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.
However, if you feel you really need such an option to be passed
automatically to the linker, you may add it to the GCC specs file.
This file can be found in the same directory that contains cc1 (run
gcc -print-prog-name=cc1 to find it). You may add linker flags such as
-R or -rpath, depending on platform and linker, to the *link or *lib
specs.
Another alternative is to install a wrapper script around gcc, g++ or
ld that adds the appropriate directory to the environment variable
LD_RUN_PATH or equivalent (again, it's platform-dependent).
Yet another option, that works on a few platforms, is to hard-code the
full pathname of the library into its soname. This can only be
accomplished by modifying the appropriate .ml file within
libstdc++/config (and also libg++/config, if you are building libg++),
so that $(libdir)/ appears just before the library name in -soname or
-h options.
_________________________________________________________________
GCC can not find GNU as/GNU ld
GCC searches the PATH for an assembler and a loader, but it only does
so after searching a directory list hard-coded in the GCC executables.
Since, on most platforms, the hard-coded list includes directories in
which the system asembler and loader can be found, you may have to
take one of the following actions to arrange that GCC uses the GNU
versions of those programs.
To ensure that GCC finds the GNU assembler (the GNU loader), which are
required by [46]some configurations, you should configure these with
the same --prefix option as you used for GCC. Then build & install GNU
as (GNU ld) and proceed with building GCC.
Another alternative is to create links to GNU as and ld in any of the
directories printed by the command `gcc -print-search-dirs | grep
'^programs:''. The link to `ld' should be named `real-ld' if `ld'
already exists. If such links do not exist while you're compiling GCC,
you may have to create them in the build directories too, within the
gcc directory and in all the gcc/stage* subdirectories.
GCC 2.95 allows you to specify the full pathname of the assembler and
the linker to use. The configure flags are `--with-as=/path/to/as' and
`--with-ld=/path/to/ld'. GCC will try to use these pathnames before
looking for `as' or `(real-)ld' in the standard search dirs. If, at
configure-time, the specified programs are found to be GNU utilities,
`--with-gnu-as' and `--with-gnu-ld' need not be used; these flags will
be auto-detected. One drawback of this option is that it won't allow
you to override the search path for assembler and linker with
command-line options -B/path/ if the specified filenames exist.
_________________________________________________________________
cpp: Usage:... Error
If you get an error like this when building GCC (particularly when
building __mulsi3), then you likely have a problem with your
environment variables.
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
[switches] input output
First look for an explicit '.' in either LIBRARY_PATH or
GCC_EXEC_PREFIX from your environment. If you do not find an explicit
'.', look for an empty pathname in those variables. Note that ':' at
either the start or end of these variables is an implicit '.' and will
cause problems.
Also note '::' in these paths will also cause similar problems.
_________________________________________________________________
Optimizing the compiler itself
If you want to test a particular optimization option, it's useful to
try bootstrapping the compiler with that option turned on. For
example, to test the -fssa option, you could bootstrap like this:
make BOOT_CFLAGS="-O2 -fssa" bootstrap
_________________________________________________________________
Testsuite problems
Unable to run the testsuite
If you get a message about unable to find "standard.exp" when trying
to run the GCC testsuites, then your dejagnu is too old to run the GCC
tests. You will need to get a newer version of dejagnu from
[47]http://www.gnu.org/software/dejagnu/dejagnu.html.
_________________________________________________________________
How do I pass flags like -fnew-abi to the testsuite?
If you invoke runtest directly, you can use the --tool_opts option,
e.g:
runtest --tool_opts "-fnew-abi -fno-honor-std" <other options>
Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--tool_opts '-fnew-abi -fno-honor-std'" check-g++
_________________________________________________________________
How can I run the test suite with multiple options?
If you invoke runtest directly, you can use the --target_board option,
e.g:
runtest --target_board "unix{-fPIC,-fpic,}" <other options>
Or, if you use make check you can use the make variable RUNTESTFLAGS,
e.g:
make RUNTESTFLAGS="--target_board 'unix{-fPIC,-fpic,}'" check-gcc
Either of these examples will run the tests three times. Once with
-fPIC, once with -fpic, and once with no additional flags.
This technique is particularly useful on multilibbed targets.
_________________________________________________________________
Older versions of GCC and EGCS
Is there a stringstream / sstream for GCC 2.95.2?
Yes, it's at:
[48]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream.
_________________________________________________________________
Miscellaneous
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.
_________________________________________________________________
Friend Templates
In order to make a specialization of a template function a friend of a
(possibly template) class, you must explicitly state that the friend
function is a template, by appending angle brackets to its name, and
this template function must have been declared already. Here's an
example:
template <typename T> class foo {
friend void bar(foo<T>);
}
The above declaration declares a non-template function named bar, so
it must be explicitly defined for each specialization of foo. A
template definition of bar won't do, because it is unrelated with the
non-template declaration above. So you'd have to end up writing:
void bar(foo<int>) { /* ... */ }
void bar(foo<void>) { /* ... */ }
If you meant bar to be a template function, you should have
forward-declared it as follows. Note that, since the template function
declaration refers to the template class, the template class must be
forward-declared too:
template <typename T>
class foo;
template <typename T>
void bar(foo<T>);
template <typename T>
class foo {
friend void bar<>(foo<T>);
};
template <typename T>
void bar(foo<T>) { /* ... */ }
In this case, the template argument list could be left empty, because
it can be implicitly deduced from the function arguments, but the
angle brackets must be present, otherwise the declaration will be
taken as a non-template function. Furthermore, in some cases, you may
have to explicitly specify the template arguments, to remove
ambiguity.
An error in the last public comment draft of the ANSI/ISO C++ Standard
and the fact that previous releases of GCC would accept such friend
declarations as template declarations has led people to believe that
the forward declaration was not necessary, but, according to the final
version of the Standard, it is.
_________________________________________________________________
dynamic_cast, throw, typeid don't work with shared libraries
The new C++ ABI in the GCC 3.0 series uses address comparisons, rather
than string compares, to determine type equality. This leads to better
performance. Like other objects that have to be present in the final
executable, these std::typeinfo_t objects have what is called vague
linkage because they are not tightly bound to any one particular
translation unit (object file). The compiler has to emit them in any
translation unit that requires their presence, and then rely on the
linking and loading process to make sure that only one of them is
active in the final executable. With static linking all of these
symbols are resolved at link time, but with dynamic linking, further
resolution occurs at load time. You have to ensure that objects within
a shared library are resolved against objects in the executable and
other shared libraries.
* For a program which is linked against a shared library, no
additional precautions need taking.
* You cannot create a shared library with the "-Bsymbolic" option,
as that prevents the resolution described above.
* If you use dlopen to explicitly load code from a shared library,
you must do several things. First, export global symbols from the
executable by linking it with the "-E" flag (you will have to
specify this as "-Wl,-E" if you are invoking the linker in the
usual manner from the compiler driver, g++). You must also make
the external symbols in the loaded library available for
subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
The symbol resolution can be immediate or lazy.
Template instantiations are another, user visible, case of objects
with vague linkage, which needs similar resolution. If you do not take
the above precautions, you may discover that a template instantiation
with the same argument list, but instantiated in multiple translation
units, has several addresses, depending in which translation unit the
address is taken. (This is not an exhaustive list of the kind of
objects which have vague linkage and are expected to be resolved
during linking & loading.)
If you are worried about different objects with the same name
colliding during the linking or loading process, then you should use
namespaces to disambiguate them. Giving distinct objects with global
linkage the same name is a violation of the One Definition Rule (ODR)
[basic.def.odr].
For more details about the way that GCC implements these and other C++
features, please read the [49]ABI specification. Note the
std::typeinfo_t objects which must be resolved all begin with "_ZTS".
Refer to ld's documentation for a description of the "-E" &
"-Bsymbolic" flags.
_________________________________________________________________
Why do I need autoconf, bison, xgettext, automake, etc?
If you're using diffs up dated from one snapshot to the next, or if
you're using the CVS repository, you may need several additional
programs to build GCC.
These include, but are not necessarily limited to autoconf, automake,
bison, and xgettext.
This is necessary because neither diff nor cvs keep timestamps
correct. This causes problems for generated files as "make" may think
those generated files are out of date and try to regenerate them.
An easy way to work around this problem is to use the gcc_update
script in the contrib subdirectory of GCC, which handles this
transparently without requiring installation of any additional tools.
(Note: Up to and including GCC 2.95 this script was called egcs_update
.)
When building from diffs or CVS or if you modified some sources, you
may also need to obtain development versions of some GNU tools, as the
production versions do not necessarily handle all features needed to
rebuild GCC.
In general, the current versions of these tools from
[50]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not
supported, and you will need to use Autoconf 2.13; work is in progress
to fix this problem. Also look at
[51]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions
of packages.
_________________________________________________________________
Why can't I build a shared library?
When building a shared library you may get an error message from the
linker like `assert pure-text failed:' or `DP relative code in file'.
This kind of error occurs when you've failed to provide proper flags
to gcc when linking the shared library.
You can get this error even if all the .o files for the shared library
were compiled with the proper PIC option. When building a shared
library, gcc will compile additional code to be included in the
library. That additional code must also be compiled with the proper
PIC option.
Adding the proper PIC option (-fpic or -fPIC) to the link line which
creates the shared library will fix this problem on targets that
support PIC in this manner. For example:
gcc -c -fPIC myfile.c
gcc -shared -o libmyfile.so -fPIC myfile.o
_________________________________________________________________
How to work around too long C++ symbol names (-fsquangle)
This question does not apply to GCC 3.0 or later versions, which have
a new C++ ABI with much shorter mangled names.
If the standard assembler of your platform can't cope with the large
symbol names that the default g++ name mangling mechanism produces,
your best bet is to use GNU as, from the GNU binutils package.
Unfortunately, GNU as does not support all platforms supported by GCC,
so you may have to use an experimental work-around: the -fsquangle
option, that enables compression of symbol names.
Note that this option is still under development, and subject to
change. Since it modifies the name mangling mechanism, you'll need to
build libstdc++ and any other C++ libraries with this option enabled.
Furthermore, if this option changes its behavior in the future, you'll
have to rebuild them all again. :-(
This option can be enabled by default by initializing
`flag_do_squangling' with `1' in `gcc/cp/decl2.c' (it is not
initialized by default), then rebuilding GCC and any C++ libraries.
_________________________________________________________________
When building C++, the linker says my constructors, destructors or virtual
tables are undefined, but I defined them
The ISO C++ Standard specifies that all virtual methods of a class
that are not pure-virtual must be defined, but does not require any
diagnostic for violations of this rule [class.virtual]/8. Based on
this assumption, GCC will only emit the implicitly defined
constructors, the assignment operator, the destructor and the virtual
table of a class in the translation unit that defines its first such
non-inline method.
Therefore, if you fail to define this particular method, the linker
may complain about the lack of definitions for apparently unrelated
symbols. Unfortunately, in order to improve this error message, it
might be necessary to change the linker, and this can't always be
done.
The solution is to ensure that all virtual methods that are not pure
are defined. Note that a destructor must be defined even if it is
declared pure-virtual [class.dtor]/7.
_________________________________________________________________
Will GCC someday include an incremental linker?
Incremental linking is part of the linker, not the compiler. As such,
GCC doesn't have anything to do with incremental linking. Depending on
what platform you use, it may be possible to tell GCC to use the
platform's native linker (e.g., Solaris' ild(1)).
References
1. http://www.gnu.org/software/gcc/faq.html
2. http://www.eskimo.com/~scs/C-faq/top.html
3. http://www.research.att.com/~austern/csc/faq.html
4. http://www.fortran.com/fortran/info.html
5. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html
6. http://gcc.gnu.org/java/faq.html
7. http://gcc.gnu.org/faq.html#general
8. http://gcc.gnu.org/faq.html#gcc
9. http://gcc.gnu.org/faq.html#cygnus
10. http://gcc.gnu.org/faq.html#open-development
11. http://gcc.gnu.org/faq.html#bugreport
12. http://gcc.gnu.org/faq.html#support
13. http://gcc.gnu.org/faq.html#platforms
14. http://gcc.gnu.org/faq.html#installation
15. http://gcc.gnu.org/faq.html#multiple
16. http://gcc.gnu.org/faq.html#rpath
17. http://gcc.gnu.org/faq.html#rpath
18. http://gcc.gnu.org/faq.html#gas
19. http://gcc.gnu.org/faq.html#environ
20. http://gcc.gnu.org/faq.html#optimizing
21. http://gcc.gnu.org/faq.html#testsuite
22. http://gcc.gnu.org/faq.html#dejagnu
23. http://gcc.gnu.org/faq.html#testoptions
24. http://gcc.gnu.org/faq.html#multipletests
25. http://gcc.gnu.org/faq.html#old
26. http://gcc.gnu.org/faq.html#2.95sstream
27. http://gcc.gnu.org/faq.html#misc
28. http://gcc.gnu.org/faq.html#memexhausted
29. http://gcc.gnu.org/faq.html#friend
30. http://gcc.gnu.org/faq.html#dso
31. http://gcc.gnu.org/faq.html#generated_files
32. http://gcc.gnu.org/faq.html#picflag-needed
33. http://gcc.gnu.org/faq.html#squangle
34. http://gcc.gnu.org/faq.html#vtables
35. http://gcc.gnu.org/faq.html#incremental
36. http://gcc.gnu.org/steering.html
37. http://gcc.gnu.org/steering.html
38. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar
39. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/
40. http://gcc.gnu.org/bugs.html
41. http://gcc.gnu.org/bugs.html
42. http://gcc.gnu.org/bugs.html
43. http://gcc.gnu.org/install/specific.html
44. http://gcc.gnu.org/buildstat.html
45. http://gcc.gnu.org/faq.html#gas
46. http://gcc.gnu.org/install/specific.html
47. http://www.gnu.org/software/dejagnu/dejagnu.html
48. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream
49. http://www.codesourcery.com/cxx-abi/
50. ftp://ftp.gnu.org/gnu/
51. ftp://gcc.gnu.org/pub/gcc/infrastructure/

187
contrib/gcc/GNATS Normal file
View File

@ -0,0 +1,187 @@
Submitting Bug Reports using GNATS
gnatsweb and gccbug
GNATS, the GNU bug tracking system, is used to track GCC bug reports.
Before submitting a bug report, please read the [1]general
instructions.
The preferred way to submit a bug report is by means of the
[2]gnatsweb interface. Make sure you include an e-mail address, so we
can inform you when the status of your report changes.
Another way is to use the gccbug program that is automatically
installed with current versions of GCC, which submits the bug report
by e-mail.
Both techniques use the same GNATS bug database.
Filling out a report
The bug report form provides a number of fields; you'll need to
fill-out most of those (as indicated below) to provide a complete
report. The fields have the following purpose:
Originator
Your name.
Organization
Your organization. You can leave this field blank.
Confidential
This field is unused and set to 'no'. All bug reports,
including sample code, are publicly accessible.
Synopsis
A one-line description of the problem; something like "GCC 2.95
does not foo", "objc crashes when doing bar".
Severity
Can be one of
critical
GCC is completely not operational; no work-around known.
serious
GCC is not working properly; a work-around is possible.
non-critical
Report indicates minor problem.
Priority
Can be one of
high
A solution is necessary as soon as possible. This is
reserved to GCC maintainers.
medium
The problem should be solved in the next release.
low
The problem should be solved in a future release.
Category
This indicates the GCC subproject which is affected by the
problem. Currently, it can be one of
ada
A problem with the Ada compiler, libraries or tools.
bootstrap
GCC fails to bootstrap. This should be filed only if a
bootstrap failure prevails for an extended period of time
(at least one week) on any platform (and possibly
not-so-common conditions like a read-only srcdir), or
non-mainstream platforms.
c++
A problem with the C++ compiler.
c
A problem with the C compiler.
debug
A problem with generating debugging information.
fortran
A problem with the Fortran compiler.
java
A problem with the Java compiler.
libf2c
A problem in the Fortran runtime library.
libgcj
A problem in the Java runtime library.
libobjc
A problem in the Objective C runtime library.
libstdc++
A problem in the Standard C++ runtime library.
middle-end
A problem in the internal compiler passes.
objc
A problem with the Objective C compiler.
optimization
A problem only occurring under optimization.
preprocessor
A problem with the C preprocessor.
target
The problem depends on the specific target architecture.
web
There is an error or omission on the Web pages.
other
The problem is in none of these categories.
Class
A classification of the problem; one of
doc-bug
The documentation is incorrect.
accepts-illegal
GCC fails to reject erroneous code.
rejects-legal
GCC gives an error message for correct code.
wrong-code
The machine code generated by GCC is incorrect.
ice-on-legal-code
GCC gives an Internal Compiler Error (ICE) for correct
code.
ice-on-illegal-code
GCC gives an ICE instead of reporting an error.
pessimizes-code
GCC misses an important optimization opportunity.
sw-bug
Software bug of some other class than above.
change-request
A feature in GCC is missing.
support
I need help with GCC.
Release
GCC version, as obtained from 'gcc -v' (one line).
Environment
Information about your operating system version, hardware
architecture, and environment settings that affect GCC.
Description
Precise description of the problem. You should put the error
messages printed by GCC here; source code should go into the
next section.
How-To-Repeat
Please put the complete source code to reproduce the problem
here. The gccbug script currently does not support file
attachments. Instead, if you have multiple files, include them
uuencoded (compressing them before if they are large). If you
use gnatsweb, you can use the file attachments button instead.
Fix
How to correct or work around the problem, if known (multiple
lines).
References
1. http://gcc.gnu.org/bugs.html
2. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?database=gcc&user=guest&password=guest&cmd=login

254
contrib/gcc/MAINTAINERS Normal file
View File

@ -0,0 +1,254 @@
Note
====
This file contains information about people who are permitted to make
changes to various parts of the compiler and associated libraries.
Please do not contact the people in this file directly to report
problems in GCC.
For general information about GCC, please visit:
http://gcc.gnu.org
To report problems in GCC, please visit:
http://gcc.gnu.org/bugs.html
Maintainers
===========
Blanket Write Privs.
John Carr jfc@mit.edu
Richard Earnshaw rearnsha@arm.com
Richard Henderson rth@redhat.com
Geoffrey Keating geoffk@geoffk.org
Richard Kenner kenner@nyu.edu
Jeff Law law@redhat.com
Jason Merrill jason@redhat.com
Michael Meissner meissner@redhat.com
David S. Miller davem@redhat.com
Mark Mitchell mark@codesourcery.com
Bernd Schmidt bernds@redhat.com
Jim Wilson wilson@redhat.com
CPU Port Maintainers (CPU alphabetical order)
alpha port Richard Henderson rth@redhat.com
arc port Richard Kenner kenner@nyu.edu
arm port Nick Clifton nickc@redhat.com
arm port Richard Earnshaw rearnsha@arm.com
avr port Denis Chertykov denisc@overta.ru
avr port Marek Michalkiewicz marekm@linux.org.pl
c4x port Michael Hayes m.hayes@elec.canterbury.ac.nz
cris port Hans-Peter Nilsson hp@axis.com
fr30 port Nick Clifton nickc@redhat.com
h8 port Jeff Law law@redhat.com
h8 port Kazu Hirata kazu@cs.umass.edu
hppa port Jeff Law law@redhat.com
hppa port Dave Anglin dave.anglin@nrc.ca
i386 port Richard Henderson rth@redhat.com
i860 port Jason Eckhardt jle@redhat.com
i960 port Jim Wilson wilson@redhat.com
ia64 port Jim Wilson wilson@redhat.com
m32r port Nick Clifton nickc@redhat.com
m32r port Michael Meissner meissner@redhat.com
m68hc11 port Stephane Carrez stcarrez@nerim.fr
m68k port (?) Jeff Law law@redhat.com
m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be
mcore port Nick Clifton nickc@redhat.com
mips port Eric Christopher echristo@redhat.com
mmix port Hans-Peter Nilsson hp@bitrange.com
mn10200 port Jeff Law law@redhat.com
mn10300 port Jeff Law law@redhat.com
mn10300 port Alexandre Oliva aoliva@redhat.com
rs6000 port Geoff Keating geoffk@geoffk.org
rs6000 port David Edelsohn dje@watson.ibm.com
s390 port Hartmut Penner hpenner@de.ibm.com
s390 port Ulrich Weigand uweigand@de.ibm.com
sh port Joern Rennecke joern.rennecke@superh.com
sh port Alexandre Oliva aoliva@redhat.com
sparc port Richard Henderson rth@redhat.com
sparc port David S. Miller davem@redhat.com
sparc port Jakub Jelinek jakub@redhat.com
v850 port Nick Clifton nickc@redhat.com
v850 port Michael Meissner meissner@redhat.com
vax port Dave Anglin dave.anglin@nrc.ca
x86-64 port Jan Hubicka jh@suse.cz
xstormy16 port Geoffrey Keating geoffk@geoffk.org
xtensa port Bob Wilson bob.wilson@acm.org
OS Port Maintainers (OS alphabetical order)
darwin port Stan Shebs shebs@apple.com
netbsd Jason Thorpe thorpej@wasabisystems.com
sco5, unixware, sco udk Robert Lipe robertlipe@usa.net
Various Maintainers
C front end/ISO C99 Joseph Myers jsm28@cam.ac.uk
C front end/ISO C99 Richard Henderson rth@redhat.com
Ada front end Geert Bosch bosch@gnat.com
Ada front end Robert Dewar dewar@gnat.com
fortran Richard Henderson rth@redhat.com
fortran Toon Moene toon@moene.indiv.nluug.nl
c++ Jason Merrill jason@redhat.com
c++ Mark Mitchell mark@codesourcery.com
cpplib Dave Brolley brolley@redhat.com
cpplib Per Bothner per@bothner.com
cpplib Zack Weinberg zack@codesourcery.com
cpplib Neil Booth neil@daikokuya.co.uk
java Per Bothner per@bothner.com
java Alexandre Petit-Bianco apbianco@redhat.com
mercury Fergus Henderson fjh@cs.mu.oz.au
objective-c Stan Shebs shebs@apple.com
objective-c Ovidiu Predescu ovidiu@cup.hp.com
alias analysis John Carr jfc@mit.edu
loop unrolling Jim Wilson wilson@redhat.com
loop discovery Michael Hayes m.hayes@elec.canterbury.ac.nz
scheduler (+ haifa) Jim Wilson wilson@redhat.com
scheduler (+ haifa) Michael Meissner meissner@redhat.com
scheduler (+ haifa) Jeff Law law@redhat.com
reorg Jeff Law law@redhat.com
caller-save.c Jeff Law law@redhat.com
debugging code Jim Wilson wilson@redhat.com
dwarf debugging code Jason Merrill jason@redhat.com
c++ runtime libs Paolo Carlini pcarlini@unitus.it
c++ runtime libs Gabriel Dos Reis gdr@integrable-solutions.net
c++ runtime libs Ulrich Drepper drepper@redhat.com
c++ runtime libs Phil Edwards pme@gcc.gnu.org
c++ runtime libs Benjamin Kosnik bkoz@redhat.com
*synthetic multiply Torbjorn Granlund tege@swox.com
*c-torture Torbjorn Granlund tege@swox.com
fixincludes Bruce Korb bkorb@gnu.org
gcse.c Jeff Law law@redhat.com
global opt framework Jeff Law law@redhat.com
jump.c David S. Miller davem@redhat.com
web pages Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
config.sub/config.guess Ben Elliston config-patches@gnu.org
basic block reordering Jason Eckhardt jle@redhat.com
i18n Philipp Thomas pthomas@suse.de
diagnostic messages Gabriel Dos Reis gdr@integrable-solutions.net
windows, cygwin, mingw Christopher Faylor cgf@redhat.com
windows, cygwin, mingw DJ Delorie dj@redhat.com
DJGPP DJ Delorie dj@delorie.com
libiberty DJ Delorie dj@redhat.com
build machinery (*.in) DJ Delorie dj@redhat.com
build machinery (*.in) Alexandre Oliva aoliva@redhat.com
docs co-maintainer Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
docs co-maintainer Joseph Myers jsm28@cam.ac.uk
Pico-Java port Steve Chamberlain sac@transmeta.com
RTEMS Ports Joel Sherrill
predict.def Jan Hubicka jh@suse.cz
contrib/regression Geoff Keating geoffk@geoffk.org
Note individuals who maintain parts of the compiler need approval to check
in changes outside of the parts of the compiler they maintain.
Write After Approval (last name alphabetical order)
Matt Austern austern@apple.com
Scott Bambrough scottb@netwinder.org
Daniel Berlin dan@dberlin.org
David Billinghurst David.Billinghurst@riotinto.com
Laurynas Biveinis lauras@softhome.net
Jim Blandy jimb@redhat.com
Phil Blundell pb@futuretv.com
Hans Boehm hboehm@gcc.gnu.org
Eric Botcazou ebotcazou@libertysurf.fr
Andrew Cagney cagney@redhat.com
Chandra Chavva cchavva@redhat.com
William Cohen wcohen@redhat.com
Chris Demetriou cgd@broadcom.com
*Paul Eggert eggert@twinsun.com
Ben Elliston bje@redhat.com
Marc Espie espie@cvs.openbsd.org
Doug Evans devans@transmeta.com
Kaveh Ghazi ghazi@caip.rutgers.edu
Matthew Gingell gingell@gnat.com
Anthony Green green@redhat.com
Stu Grossman grossman@redhat.com
Laurent Guerby guerby@acm.org
Andrew Haley aph@redhat.com
Stuart Hastings stuart@apple.com
Aldy Hernandez aldyh@redhat.com
Matthew Hiller hiller@redhat.com
Manfred Hollstein mhollstein@redhat.com
Andreas Jaeger aj@suse.de
Jakub Jelinek jakub@redhat.com
Dale Johannesen dalej@apple.com
Janis Johnson janis187@us.ibm.com
Klaus Kaempf kkaempf@progis.de
Brendan Kehoe brendan@zen.org
Mumit Khan khan@xraylith.wisc.edu
Matthias Klose doko@debian.org
Jeff Knaggs jknaggs@redhat.com
Matt Kraai kraai@alumni.carnegiemellon.edu
Ziemowit Laski zlaski@apple.com
Marc Lehmann pcg@goof.com
Alan Lehotsky apl@alum.mit.edu
Warren Levy warrenl@redhat.com
Kriang Lerdsuwanakij lerdsuwa@users.sourceforge.net
Don Lindsay dlindsay@redhat.com
Dave Love d.love@dl.ac.uk
Martin v. Löwis loewis@informatik.hu-berlin.de
*HJ Lu hjl@lucon.org
Andrew Macleod amacleod@redhat.com
Vladimir Makarov vmakarov@redhat.com
Michael Matz matz@suse.de
Greg McGary gkm@gnu.org
Bryce McKinlay bryce@gcc.gnu.org
Adam Megacz adam@xwt.org
Alan Modra amodra@bigpond.net.au
Toon Moene toon@moene.indiv.nluug.nl
Catherine Moore clm@redhat.com
Adam Nemet anemet@lnxw.com
Diego Novillo dnovillo@redhat.com
David O'Brien obrien@FreeBSD.org
Turly O'Connor turly@apple.com
Jeffrey D. Oldham oldham@codesourcery.com
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Devang Patel dpatel@apple.com
Nicola Pero n.pero@mi.flashnet.it
Alexandre Petit-Bianco apbianco@redhat.com
Clinton Popetz cpopetz@cpopetz.com
Ken Raeburn raeburn@redhat.com
Rolf Rasmussen rolfwr@gcc.gnu.org
Loren J. Rittle ljrittle@acm.org
Tom Rix trix@redhat.com
Craig Rodrigues rodrigc@gcc.gnu.org
Gavin Romig-Koch gavin@redhat.com
Ira Ruben ira@apple.com
Alex Samuel samuel@codesourcery.com
Richard Sandiford rsandifo@redhat.com
Roger Sayle roger@eyesopen.com
Bernd Schmidt bernds@redhat.com
Andreas Schwab schwab@suse.de
Stan Shebs shebs@apple.com
Nathan Sidwell nathan@acm.org
Franz Sirl franz.sirl-kernel@lauterbach.com
Danny Smith dannysmith@users.sourceforge.net
Michael Sokolov msokolov@ivan.Harhan.ORG
Richard Stallman rms@gnu.org
Graham Stott grahams@redhat.com
Mike Stump mrs@apple.com
Ian Taylor ian@zembu.com
Michael Tiemann tiemann@redhat.com
Philipp Thomas pthomas@suse.de
Kresten Krab Thorup krab@gcc.gnu.org
Tom Tromey tromey@redhat.com
John Wehle john@feith.com
Florian Weimer fw@deneb.enyo.de
Mark Wielaard mark@gcc.gnu.org
GNATS only accounts
James Dennett jdennett jdennett@acm.org
Peter Bienstman(?)
Benjamin Chelf(?)
Mark Galassi(?)
Jeff Strum(?)

698
contrib/gcc/bugs.html Normal file
View File

@ -0,0 +1,698 @@
<html>
<head>
<title>GCC Bugs</title>
</head>
<body>
<h1>GCC Bugs</h1>
<p>The latest version of this document is always available at
<a href="http://www.gnu.org/software/gcc/bugs.html">http://www.gnu.org/software/gcc/bugs.html</a>.</p>
<hr />
<h2>Table of Contents</h2>
<ul>
<li><a href="#report">Reporting Bugs</a>
<ul>
<li><a href="#need">What we need</a></li>
<li><a href="#dontwant">What we DON'T want</a></li>
<li><a href="#where">Where to post it</a></li>
<li><a href="#detailed">Detailed bug reporting instructions</a></li>
<li><a href="#gnat">Detailed bug reporting instructions for GNAT</a></li>
</ul>
</li>
<li><a href="#manage">Managing Bugs (GNATS and the test-suite)</a></li>
<li><a href="#known">Frequently Reported Bugs in GCC</a>
<ul>
<li><a href="#general">General</a></li>
<li><a href="#fortran">Fortran</a></li>
<li><a href="#c">C</a></li>
<li><a href="#cplusplus">C++</a>
<ul>
<li><a href="#updating">Common problems updating from G++ 2.95 to
G++ 3.0</a></li>
<li><a href="#nonbugs">Non-bugs</a></li>
<li><a href="#missing">Missing features</a></li>
<li><a href="#parsing">Parse errors for "simple" code</a></li>
<li><a href="#-O3">Optimization at <code>-O3</code> takes a
very long time</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<hr />
<h1><a name="report">Reporting Bugs</a></h1>
<p>Our preferred way of receiving bugs is via the
<a href="gnats.html">GCC GNATS bug reporting system</a>.</p>
<p>Before you report a bug, please check the
<a href="#known">list of well-known bugs</a> and, <strong>if possible
in any way, try a current development snapshot</strong>.
If you want to report a bug with versions of GCC before 3.1 we strongly
recommend upgrading to the current release first.</p>
<p>Before reporting that GCC compiles your code incorrectly, please
compile it with <code>gcc -Wall</code> and see whether this shows
anything wrong with your code that could be the cause instead of a bug
in GCC.</p>
<h2>Summarized bug reporting instructions</h2>
<p>After this summary, you'll find detailed bug reporting
instructions, that explain how to obtain some of the information
requested in this summary.</p>
<h3><a name="need">What we need</a></h3>
Please include in your bug report all of the following items, the first
three of which can be obtained from the output of <code>gcc -v</code>:
<ul>
<li>the exact version of GCC;</li>
<li>the system type;</li>
<li>the options given when GCC was configured/built;</li>
<li>the complete command line that triggers the bug;</li>
<li>the compiler output (error messages, warnings, etc.); and</li>
<li>the <em>preprocessed</em> file (<code>*.i*</code>) that triggers the
bug, generated by adding <code>-save-temps</code> to the complete
compilation command, or, in the case of a bug report for the GNAT front end,
a complete set of source files (see below).</li>
</ul>
<h3><a name="dontwant">What we do <strong>not</strong> want</a></h3>
<ul>
<li>A source file that <code>#include</code>s header files that are left
out of the bug report (see above)</li>
<li>That source file and a collection of header files.</li>
<li>An attached archive (tar, zip, shar, whatever) containing all
(or some :-) of the above.</li>
<li>A code snippet that won't cause the compiler to produce the
exact output mentioned in the bug report (e.g., a snippet with just
a few lines around the one that <b>apparently</b> triggers the bug,
with some pieces replaced with ellipses or comments for extra
obfuscation :-)</li>
<li>The location (URL) of the package that failed to build (we won't
download it, anyway, since you've already given us what we need to
duplicate the bug, haven't you? :-)</li>
<li>An error that occurs only some of the times a certain file is
compiled, such that retrying a sufficient number of times results in
a successful compilation; this is a symptom of a hardware problem,
not of a compiler bug (sorry)</li>
<li>E-mail messages that complement previous, incomplete bug
reports. Post a new, self-contained, full bug report instead, if
possible as a follow-up to the original bug report</li>
<li>Assembly files (<code>*.s</code>) produced by the compiler, or any
binary files, such as object files, executables or core files</li>
<li>Duplicate bug reports, or reports of bugs already fixed in the
development tree, especially those that have already been reported
as fixed last week :-)</li>
<li>Bugs in the assembler, the linker or the C library. These are
separate projects, with separate mailing lists and different bug
reporting procedures</li>
<li>Bugs in releases or snapshots of GCC not issued by the GNU
Project. Report them to whoever provided you with the release</li>
<li>Questions about the correctness or the expected behavior of
certain constructs that are not GCC extensions. Ask them in forums
dedicated to the discussion of the programming language</li>
</ul>
<h3><a name="where">Where to post it</a></h3>
<p>Please submit your bug report directly to the
<a href="gnats.html">GCC GNATS bug database</a>.
Only if this is not possible, mail all information to
<a href="mailto:bug-gcc@gnu.org">bug-gcc@gnu.org</a> or
<a href="mailto:gcc-bugs@gcc.gnu.org">gcc-bugs@gcc.gnu.org</a>.</p>
<p>The GCC lists have message size limits (200 kbytes) and bug reports
over those limits will currently be bounced. If your bug is larger
than that, please post it using the <a href="gnats.html">GCC GNATS bug
database</a>.</p>
<h2><a name="detailed">Detailed bug reporting instructions</a></h2>
<p>Please refer to the <a href="#gnat">next section</a> when reporting
bugs in GNAT, the Ada compiler.</p>
<p>In general, all the information we need can be obtained by
collecting the command line below, as well as its output and the
preprocessed file it generates.</p>
<blockquote><code>gcc -v -save-temps <i>all-your-options
source-file</i></code></blockquote>
<p>Typically the preprocessed file (extension <code>.i</code> for C or
<code>.ii</code> for C++) will be large, so please compress the
resulting file with one of the popular compression programs such as
bzip2, gzip, zip or compress (in
decreasing order of preference). Use maximum compression
(<code>-9</code>) if available. Please include the compressed
preprocessor output in your bug report, even if the source code is
freely available elsewhere; it makes the job of our volunteer testers
much easier.</p>
<p>The <b>only</b> excuses to not send us the preprocessed sources are
(i) if you've found a bug in the preprocessor, or (ii) if you've
reduced the testcase to a small file that doesn't include any
other file. If you can't post the preprocessed sources because
they're proprietary code, then try to create a small file that
triggers the same problem.</p>
<p>Since we're supposed to be able to re-create the assembly output
(extension <code>.s</code>), you usually should not include
it in the bug report, although you may want to post parts of it to
point out assembly code you consider to be wrong.</p>
<p>Whether to use MIME attachments or <code>uuencode</code> is up to
you. In any case, make sure the compiler command line, version and
error output are in plain text, so that we don't have to decode the
bug report in order to tell who should take care of it. A meaningful
subject indicating language and platform also helps.</p>
<p>Please avoid posting an archive (.tar, .shar or .zip); we generally
need just a single file to reproduce the bug (the .i/.ii preprocessed
file), and, by storing it in an archive, you're just making our
volunteers' jobs harder. Only when your bug report requires multiple
source files to be reproduced should you use an archive. In any case,
make sure the compiler version, error message, etc, are included in
the body of your bug report as plain text, even if needlessly
duplicated as part of an archive.</p>
<p>If you fail to supply enough information for a bug report to be
reproduced, someone will probably ask you to post additional
information (or just ignore your bug report, if they're in a bad day,
so try to get it right on the first posting :-). In this case, please
post the additional information to the bug reporting mailing list, not
just to the person who requested it, unless explicitly told so. If
possible, please include in this follow-up all the information you had
supplied in the incomplete bug report (including the preprocessor
output), so that the new bug report is self-contained.</p>
<h2><a name="gnat">Detailed bug reporting instructions for GNAT</a></h2>
<p>See the <a href="#detailed">previous section</a> for bug reporting
instructions for GCC language implementations other than Ada.</p>
<p>Bug reports have to contain at least the following information in
order to be useful:</p>
<ul>
<li>the exact version of GCC, as shown by "<code>gcc -v</code>";</li>
<li>the system type;</li>
<li>the options when GCC was configured/built;</li>
<li>the exact command line passed to the <code>gcc</code> program
triggering the bug
(not just the flags passed to <code>gnatmake</code>, but
<code>gnatmake</code> prints the parameters it passed to <code>gcc</code>)</li>
<li>a collection of source files for reproducing the bug,
preferably a minimal set (see below);</li>
<li>a description of the expected behavior;</li>
<li>a description of actual behavior.</li>
</ul>
<p>If your code depends on additional source files (usually package
specifications), submit the source code for these compilation units in
a single file that is acceptable input to <code>gnatchop</code>,
i.e. contains no non-Ada text. If the compilation terminated
normally, you can usually obtain a list of dependencies using the
"<code>gnatls -d <i>main_unit</i></code>" command, where
<code><i>main_unit</i></code> is the file name of the main compilation
unit (which is also passed to <code>gcc</code>).</p>
<p>If you report a bug which causes the compiler to print a bug box,
include that bug box in your report, and do not forget to send all the
source files listed after the bug box along with your report.</p>
<p>If you use <code>gnatprep</code>, be sure to send in preprocessed
sources (unless you have to report a bug in <code>gnatprep</code>).</p>
<p>When you have checked that your report meets these criteria, please
submit it accoding to our <a href="#where">generic instructions</a>.
(If you use a mailing list for reporting, please include an
"<code>[Ada]</code>" tag in the subject.)</p>
<h1><a name="manage">Managing Bugs (GNATS and the test-suite)</a></h1>
<p>This section contains information mostly intended for GCC
contributors.</p>
<p>If you find a bug, but you are not fixing it (yet):</p>
<ol>
<li>Create a (minimal) test-case.</li>
<li>Add the test-case to our test-suite, marking it as XFAIL unless
the bug is a regression.</li>
<li>Add a bug report referencing the test-case to GNATS.</li>
</ol>
<p>If you fix a bug for which there is already a GNATS entry:</p>
<ol>
<li>Remove the XFAIL on the test-case.</li>
<li>Close the bug report in GNATS.</li>
</ol>
<p>If you find a bug, and you are fixing it right then:</p>
<ol>
<li>Create a (minimal) test-case.</li>
<li>Add the test-case to our test-suite, marking it as PASS.</li>
<li>Check in your fixes.</li>
</ol>
<hr />
<h1><a name="known">Frequently Reported Bugs in GCC</a></h1>
<h2><a name="fortran">Fortran</a></h2>
<p>Fortran bugs are documented in the G77 manual rather than
explicitly listed here. Please see
<a href="http://gcc.gnu.org/onlinedocs/g77/Trouble.html">Known Causes of
Trouble with GNU Fortran</a> in the G77 manual.</p>
<hr />
<h2><a name="c">C</a></h2>
<p>The following are not bugs in the C compiler, but are reported
often enough to warrant a mention here.</p>
<dl>
<dt>Cannot initialize a static variable with <code>stdin</code>.</dt>
<dd><p>This has nothing to do with GCC, but people ask us about it a
lot. Code like this:</p>
<blockquote><pre>
#include &lt;stdio.h&gt;
FILE *yyin = stdin;
</pre></blockquote>
<p>will not compile with GNU libc (GNU/Linux libc6), because
<code>stdin</code> is not a constant. This was done deliberately, to make
it easier to maintain binary compatibility when the type <code>FILE</code>
needs to be changed. It is surprising for people used to traditional Unix
C libraries, but it is permitted by the C standard.</p>
<p>This construct commonly occurs in code generated by old versions of
lex or yacc. We suggest you try regenerating the parser with a
current version of flex or bison, respectively. In your own code, the
appropriate fix is to move the initialization to the beginning of
main.</p>
<p>There is a common misconception that the GCC developers are
responsible for GNU libc. These are in fact two entirely separate
projects; please check the
<a href="http://www.gnu.org/software/glibc/">GNU libc web pages</a>
for details.
</p></dd>
<dt>Cannot use preprocessor directive in macro arguments.</dt>
<dd><p>Let me guess... you wrote code that looks something like this:</p>
<blockquote><pre>
memcpy(dest, src,
#ifdef PLATFORM1
12
#else
24
#endif
);
</pre></blockquote>
<p>and you got a whole pile of error messages:</p>
<blockquote><code>
test.c:11: warning: preprocessing directive not recognized within
macro arg<br />
test.c:11: warning: preprocessing directive not recognized within
macro arg<br />
test.c:11: warning: preprocessing directive not recognized within
macro arg<br />
test.c: In function `foo':<br />
test.c:6: undefined or invalid # directive<br />
test.c:8: undefined or invalid # directive<br />
test.c:9: parse error before `24'<br />
test.c:10: undefined or invalid # directive<br />
test.c:11: parse error before `#'<br />
</code></blockquote>
<p><strong>Update:</strong> As of GCC 3.2 this kind of construct is
always accepted and CPP will probably do what you expect, but see the
manual for detailed semantics.</p>
<p>However, versions of GCC prior to 3.2 did not allow you to put
<code>#ifdef</code> (or any other directive) inside the arguments of a
macro. Your C library's <code>&lt;string.h&gt;</code> happens to
define <code>memcpy</code> as a macro - this is perfectly legitimate.
The code therefore would not compile.</p>
<p>This kind of code is not portable. It is "undefined behavior"
according to the C standard; that means different compilers will do
different things with it. It is always possible to rewrite code which
uses conditionals inside macros so that it doesn't. You could write
the above example</p>
<blockquote><pre>
#ifdef PLATFORM1
memcpy(dest, src, 12);
#else
memcpy(dest, src, 24);
#endif
</pre></blockquote>
<p>This is a bit more typing, but I personally think it's better style
in addition to being more portable.</p>
<p>In recent versions of glibc, <code>printf</code> is among the
functions which are implemented as macros.</p></dd>
</dl>
<hr />
<h2><a name="cplusplus">C++</a></h2>
<p>This is the list of bugs (and non-bugs) in g++ (aka GNU C++) that
are reported very often, but not yet fixed. While it is certainly
better to fix bugs instead of documenting them, this document might
save people the effort of writing a bug report when the bug is already
well-known. <a href="#report">How to report bugs</a> tells you how to
report a bug.</p>
<p>There are many reasons why reported bugs don't get fixed. It might
be difficult to fix, or fixing it might break compatibility. Often,
reports get a low priority when there is a simple work-around. In
particular, bugs caused by invalid C++ code have a simple work-around,
<em>fix the code</em>. Now that there is an agreed ISO/ANSI standard
for C++, the compiler has a definitive document to adhere to. Earlier
versions might have accepted source code that is <em>no longer</em>
C++. This means that code which might have `worked' in a previous
version, is now rejected. You should update your code to be C++.</p>
<p>You should try to use the latest stable release of the GNU C++
compiler.</p>
<h3><a name="updating">Common problems updating from G++ 2.95 to G++
3.0</a></h3>
<p>G++ 3.0 conforms much closer to the ISO C++ standard (available at
<a href="http://www.ncits.org/cplusplus.htm">http://www.ncits.org/cplusplus.htm</a>).</p>
<p>We have also implemented some of the core and library defect reports
(available at
<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html">http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html</a>
&amp;
<a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html">
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html</a>
respectively).</p>
<ul>
<li>The ABI has changed. This means that both class layout and name
mangling is different. You <em>must</em> recompile all c++ libraries (if
you don't you will get link errors).</li>
<li>The standard library is much more conformant, and uses the
<code>std::</code> namespace.</li>
<li><code>std::</code> is now a real namespace, not an alias for
<code>::</code>.</li>
<li>The standard header files for the c library don't end with
<code>.h</code>, but begin with <code>c</code> (i.e.
<code>&lt;cstdlib&gt;</code> rather than <code>&lt;stdlib.h&gt;</code>).
The <code>.h</code> names are still available, but are deprecated.</li>
<li><code>&lt;strstream&gt;</code> is deprecated, use
<code>&lt;sstream&gt;</code> instead.</li>
<li><code>streambuf::seekoff</code> &amp;
<code>streambuf::seekpos</code> are private, instead use
<code>streambuf::pubseekoff</code> &amp;
<code>streambuf::pubseekpos</code> respectively.</li>
<li>If <code>std::operator &lt;&lt; (std::ostream &amp;, long long)</code>
doesn't exist, you need to recompile libstdc++ with
<code>--enable-long-long</code>.</li>
</ul>
This means you may get lots of errors about things like
<code>strcmp</code> not being found. You've most likely forgotton to
tell the compiler to look in the <code>std::</code> namespace. There are
several ways to do this,
<ul>
<li>Say, <code>std::strcmp</code> at the call. This is the most explicit
way of saying what you mean.</li>
<li>Say, <code>using std::strcmp;</code> somewhere before the call. You
will need to do this for each function or type you wish to use from the
standard library.</li>
<li>Say, <code>using namespace std;</code> somewhere before the call.
This is the quick-but-dirty fix. This brings the <em>whole</em> of the
<code>std::</code> namespace into scope. <em>Never</em> do this in a
header file, as you will be forcing users of your header file to do the
same.</li>
</ul>
<h3><a name="abi">ABI bugs</a></h3>
<p>3.0 had a new ABI, which affected class layout, function mangling and
calling conventions. We had intended it to be complete, unfortunately
some issues came to light, too late to fix in the 3.0 series.
The ABI should not change in dot releases, so we addressed most issues
in GCC 3.1.
</p>
<dl>
<dt>Covariant return types</dt>
<dd>We do not implement non-trivial covariant returns. We also generate
incorrect virtual function tables for trivial covariance. Although
trivial covariance will work, it is incompatible with the ABI. GNATS PR
3706 tracks this problem.</dd>
</dl>
<h3><a name="nonbugs">Non-bugs</a></h3>
<p>Here are some features that have been reported as bugs, but are
not.</p>
<dl>
<dt>Nested classes can access private types of the containing
class.</dt>
<dd><p>G++ now implements type access control on member types. Defect
report 45 clarifies that nested classes are members of the class they
are nested in, and so are granted access to private members of that
class.</p></dd>
<dt>Classes in exception specifiers must be complete types.</dt>
<dd><p>[15.4]/1 tells you that you cannot have an incomplete type, or
pointer to incomplete (other than <code><i>cv</i> void *</code>) in
an exception specification.</p></dd>
<dt>G++ emits two copies of constructors and destructors.</dt>
<dd><p>In general there are <em>three</em> types of constructors (and
destructors).</p>
<ol>
<li>The complete object constructor/destructor.</li>
<li>The base object constructor/destructor.</li>
<li>The allocating destructor/deallocating destructor.</li>
</ol>
<p>The first two are different, when virtual base classes are involved.
In some cases we can do better, and this is logged in GNATS.</p></dd>
<dt>Exceptions don't work in multithreaded applications.</dt>
<dd><p>You need to rebuild g++ and libstdc++ with
<code>--enable-threads</code>. Remember, c++ exceptions are not like
hardware interrupts. You cannot throw an exception in one thread and
catch it in another. You cannot throw an exception from a signal
handler, and catch it in the main thread.</p></dd>
<dt>Global destructors are not run in the correct order.</dt>
<dd><p>Global destructors should be run in the reverse order of their
constructors <em>completing</em>. In most cases this is the same as
the reverse order of constructors <em>starting</em>, but sometimes it
is different, and that is important. You need to compile and link your
programs with <code>--use-cxa-atexit</code>. We have not turned this
switch on by default, as it requires a <code>cxa</code> aware runtime
library (<code>libc</code>, <code>glibc</code>, or
equivalent).</p></dd>
<dt>Problems with floating point computations.</dt>
<dd><p>In a number of cases, GCC appears to perform floating point
computations incorrectly. For example, the program</p>
<blockquote><code>
#include &lt;iostream&gt;<br />
<br />
int main() {<br />
<br />
double min = 0.0;<br />
double max = 0.5;<br />
double width = 0.01;<br />
std::cout &lt;&lt; (int)(((max - min) / width) - 1) &lt;&lt;
std::endl;<br />
<br />
}<br />
</code></blockquote>
<p>might print 50 on some systems and optimization levels, and 51 on
others.</p>
<p>The is the result of <em>rounding</em>: The computer cannot
represent all real numbers exactly, so it has to use
approximations. When computing with approximation, the computer needs
to round to the nearest representable number.</p>
<p>This is not a bug in the compiler, but an inherent limitation of
the float and double types. Please study
<a href="http://www.validlab.com/goldberg/paper.ps">this paper</a>
for more information.</p></dd>
<dt>Templates, scoping, and digraphs.</dt>
<dd><p>If you have a class in global namespace, say named
<code>X</code>, and want to give it as a template argument to some
other class, say <code>std::vector</code>, then this here fails with a
parser error: <code>std::vector&lt;::X&gt;</code>.
</p>
<p>
The reason is that the standard mandates that the sequence
<code>&lt;:</code> is treated as if it were the token
<code>[</code>, and the parser then reports a parse error before the
character <code>:</code> (by which it means the second
colon). There are several such combinations of characters, and
they are called <em>digraphs</em>.
</p>
<p>
The simplest way to avoid this is to write <code>std::vector&lt;
::X&gt;</code>, i.e. place a space between the opening angle bracket
and the scope operator.
</p></dd>
</dl>
<h3><a name="missing">Missing features</a></h3>
<p>We know some things are missing from G++.</p>
<dl>
<dt>The <code>export</code> keyword is not implemented.</dt>
<dd><p>Most C++ compilers (G++ included) do not yet implement
<code>export</code>, which is necessary for separate compilation of
template declarations and definitions. Without <code>export</code>, a
template definition must be in scope to be used. The obvious
workaround is simply to place all definitions in the header
itself. Alternatively, the compilation unit containing template
definitions may be included from the header.</p></dd>
<dt>Two stage lookup in templates is not implemented.</dt>
<dd><p>[14.6] specifies how names are looked up inside a template. G++
does not do this correctly, but for most templates this will not be
noticeable.</p></dd>
</dl>
<h3><a name="parsing">Parse errors for "simple" code</a></h3>
Up to and including GCC 3.0, the compiler will give "parse error" for
seemingly simple code, such as
<pre>
struct A{
A();
A(int);
void func();
};
struct B{
B(A);
B(A,A);
void func();
};
void foo(){
B b(A(),A(1)); //Variable b, initialized with two temporaries
B(A(2)).func(); //B temporary, initialized with A temporary
}
</pre>
The problem is that GCC starts to parse the declaration of
<code>b</code> as a function <code>b</code> returning <code>B</code>,
taking a function returning <code>A</code> as an argument. When it
sees the 1, it is too late. The work-around in these cases is to add
additional parentheses around the expressions that are mistaken as
declarations:
<pre>
(B(A(2))).func();
</pre>
Sometimes, even that is not enough; to show the compiler that this
should be really an expression, a comma operator with a dummy argument
can be used:
<pre>
B b((0,A()),A(1));
</pre>
<p>
Another example is the parse error for the <code>return</code>
statement in</p>
<pre>
struct A{};
struct B{
A a;
A f1(bool);
};
A B::f1(bool b)
{
if (b)
return (A());
return a;
}
</pre>
<p>The problem is that the compiler interprets <code>A()</code> as a
function (taking no arguments, returning <code>A</code>), and
<code>(A()</code>) as a cast - with a missing expression, hence the
parse error. The work-around is to omit the parentheses:</p>
<pre>
if (b)
return A();
</pre>
<p>This problem occurs in a number of variants; in <code>throw</code>
statements, people also frequently put the object in parentheses. The
exact error also somewhat varies with the compiler version. The
work-arounds proposed do not change the semantics of the program at
all; they make them perhaps less readable.</p>
<h3><a name="-O3">Optimization at <code>-O3</code> takes a
very long time</a></h3>
<p>At <code>-O3</code>, all functions are candidates for inlining. The
heuristic used has some deficiencies which show up when allowed such
freedom. This is g++ specific, as it has an earlier inliner than
gcc.</p>
</body>
</html>

871
contrib/gcc/config-ml.in Normal file
View File

@ -0,0 +1,871 @@
# Configure fragment invoked in the post-target section for subdirs
# wanting multilib support.
#
# It is advisable to support a few --enable/--disable options to let the
# user select which libraries s/he really wants.
#
# Subdirectories wishing to use multilib should put the following lines
# in the "post-target" section of configure.in.
#
# if [ "${srcdir}" = "." ] ; then
# if [ "${with_target_subdir}" != "." ] ; then
# . ${with_multisrctop}../../config-ml.in
# else
# . ${with_multisrctop}../config-ml.in
# fi
# else
# . ${srcdir}/../config-ml.in
# fi
#
#
# Things are complicated because 6 separate cases must be handled:
# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
#
# srcdir=. is special. It must handle make programs that don't handle VPATH.
# To implement this, a symlink tree is built for each library and for each
# multilib subdir.
#
# The build tree is layed out as
#
# ./
# newlib
# m68020/
# newlib
# m68881/
# newlib
#
# The nice feature about this arrangement is that inter-library references
# in the build tree work without having to care where you are. Note that
# inter-library references also work in the source tree because symlink trees
# are built when srcdir=.
#
# Unfortunately, trying to access the libraries in the build tree requires
# the user to manually choose which library to use as GCC won't be able to
# find the right one. This is viewed as the lesser of two evils.
#
# Configure variables:
# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
# Set by top level Makefile.
# ${with_multisrctop} = how many levels of multilibs there are in the source
# tree. It exists to handle the case of configuring in the source tree:
# ${srcdir} is not constant.
# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
#
# Makefile variables:
# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
# (FIXME: note that this is different than ${with_multisrctop}. Check out.).
# MULTIBUILDTOP = number of multilib levels in build tree
# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
# (only defined in each library's main Makefile).
# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
# (only defined in each multilib subdir).
# FIXME: Multilib is currently disabled by default for everything other than
# newlib. It is up to each target to turn on multilib support for the other
# libraries as desired.
# We have to handle being invoked by both Cygnus configure and Autoconf.
#
# Cygnus configure incoming variables:
# srcdir, subdir, host, arguments
#
# Autoconf incoming variables:
# srcdir, host, ac_configure_args
#
# We *could* figure srcdir and host out, but we'd have to do work that
# our caller has already done to figure them out and requiring these two
# seems reasonable.
# Note that `host' in this case is GCC's `target'. Target libraries are
# configured for a particular host.
if [ -n "${ac_configure_args}" ]; then
Makefile=${ac_file-Makefile}
ml_config_shell=${CONFIG_SHELL-/bin/sh}
ml_arguments="${ac_configure_args}"
ml_realsrcdir=${srcdir}
else
Makefile=${Makefile-Makefile}
ml_config_shell=${config_shell-/bin/sh}
ml_arguments="${arguments}"
if [ -n "${subdir}" -a "${subdir}" != "." ] ; then
ml_realsrcdir=${srcdir}/${subdir}
else
ml_realsrcdir=${srcdir}
fi
fi
# Scan all the arguments and set all the ones we need.
ml_verbose=--verbose
for option in ${ml_arguments}
do
case $option in
--*) ;;
-*) option=-$option ;;
esac
case $option in
--*=*)
optarg=`echo $option | sed -e 's/^[^=]*=//'`
;;
esac
case $option in
--disable-*)
enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
eval $enableopt=no
;;
--enable-*)
case "$option" in
*=*) ;;
*) optarg=yes ;;
esac
enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
eval $enableopt="$optarg"
;;
--norecursion | --no*)
ml_norecursion=yes
;;
--silent | --sil* | --quiet | --q*)
ml_verbose=--silent
;;
--verbose | --v | --verb*)
ml_verbose=--verbose
;;
--with-*)
case "$option" in
*=*) ;;
*) optarg=yes ;;
esac
withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
eval $withopt="$optarg"
;;
--without-*)
withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
eval $withopt=no
;;
esac
done
# Only do this if --enable-multilib.
if [ "${enable_multilib}" = yes ]; then
# Compute whether this is the library's top level directory
# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
# ${with_multisubdir} tells us we're in the right branch, but we could be
# in a subdir of that.
# ??? The previous version could void this test by separating the process into
# two files: one that only the library's toplevel configure.in ran (to
# configure the multilib subdirs), and another that all configure.in's ran to
# update the Makefile. It seemed reasonable to collapse all multilib support
# into one file, but it does leave us with having to perform this test.
ml_toplevel_p=no
if [ -z "${with_multisubdir}" ]; then
if [ "${srcdir}" = "." ]; then
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
# ${with_target_subdir} = "." for native, otherwise target alias.
if [ "${with_target_subdir}" = "." ]; then
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
ml_toplevel_p=yes
fi
else
if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
ml_toplevel_p=yes
fi
fi
else
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
ml_toplevel_p=yes
fi
fi
fi
# If this is the library's top level directory, set multidirs to the
# multilib subdirs to support. This lives at the top because we need
# `multidirs' set right away.
if [ "${ml_toplevel_p}" = yes ]; then
multidirs=
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
dir=`echo $i | sed -e 's/;.*$//'`
if [ "${dir}" = "." ]; then
true
else
if [ -z "${multidirs}" ]; then
multidirs="${dir}"
else
multidirs="${multidirs} ${dir}"
fi
fi
done
# Target libraries are configured for the host they run on, so we check
# $host here, not $target.
case "${host}" in
arc-*-elf*)
if [ x$enable_biendian != xyes ]
then
old_multidirs=${multidirs}
multidirs=""
for x in ${old_multidirs}; do
case "${x}" in
*be*) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
;;
arm-*-*)
if [ x"$enable_fpu" = xno ]
then
old_multidirs=${multidirs}
multidirs=""
for x in ${old_multidirs}; do
case "${x}" in
*fpu*) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x"$enable_26bit" = xno ]
then
old_multidirs=${multidirs}
multidirs=""
for x in ${old_multidirs}; do
case "${x}" in
*26bit*) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x"$enable_underscore" = xno ]
then
old_multidirs=${multidirs}
multidirs=""
for x in ${old_multidirs}; do
case "${x}" in
*under*) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x"$enable_interwork" = xno ]
then
old_multidirs=${multidirs}
multidirs=""
for x in ${old_multidirs}; do
case "${x}" in
*interwork*) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_biendian = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*le* ) : ;;
*be* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x"$enable_nofmult" = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*nofmult* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
;;
m68*-*-*)
if [ x$enable_softfloat = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*soft-float* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_m68881 = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*m68881* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_m68000 = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*m68000* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_m68020 = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*m68020* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
;;
mips*-*-*)
if [ x$enable_single_float = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*single* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_biendian = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*el* ) : ;;
*eb* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_softfloat = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*soft-float* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
case " $multidirs " in
*" mabi=64 "*)
# We will not be able to create libraries with -mabi=64 if
# we cannot even link a trivial program. It usually
# indicates the 64bit libraries are missing.
if echo 'main() {}' > conftest.c &&
${CC-gcc} -mabi=64 conftest.c -o conftest; then
:
else
echo Could not link program with -mabi=64, disabling it.
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*mabi=64* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
rm -f conftest.c conftest
;;
esac
;;
powerpc*-*-* | rs6000*-*-*)
if [ x$enable_aix64 = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*ppc64* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_pthread = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*pthread* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_softfloat = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*soft-float* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_powercpu = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
power | */power | */power/* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_powerpccpu = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*powerpc* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_powerpcos = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*mcall-linux* | *mcall-solaris* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_biendian = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*mlittle* | *mbig* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_sysv = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*mcall-sysv* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
if [ x$enable_aix = xno ]
then
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*mcall-aix* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
;;
sparc*-*-*)
case " $multidirs " in
*" m64 "*)
# We will not be able to create libraries with -m64 if
# we cannot even link a trivial program. It usually
# indicates the 64bit libraries are missing.
if echo 'main() {}' > conftest.c &&
${CC-gcc} -m64 conftest.c -o conftest; then
:
else
echo Could not link program with -m64, disabling it.
old_multidirs="${multidirs}"
multidirs=""
for x in ${old_multidirs}; do
case "$x" in
*m64* ) : ;;
*) multidirs="${multidirs} ${x}" ;;
esac
done
fi
rm -f conftest.c conftest
;;
esac
;;
esac
# Remove extraneous blanks from multidirs.
# Tests like `if [ -n "$multidirs" ]' require it.
multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
# Add code to library's top level makefile to handle building the multilib
# subdirs.
cat > Multi.tem <<\EOF
# FIXME: There should be an @-sign in front of the `if'.
# Leave out until this is tested a bit more.
multi-do:
if [ -z "$(MULTIDIRS)" ]; then \
true; \
else \
rootpre=`pwd`/; export rootpre; \
srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \
lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
compiler="$(CC)"; \
for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
dir=`echo $$i | sed -e 's/;.*$$//'`; \
if [ "$${dir}" = "." ]; then \
true; \
else \
if [ -d ../$${dir}/$${lib} ]; then \
flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
CFLAGS="$(CFLAGS) $${flags}" \
prefix="$(prefix)" \
exec_prefix="$(exec_prefix)" \
GCJFLAGS="$(GCJFLAGS) $${flags}" \
CXXFLAGS="$(CXXFLAGS) $${flags}" \
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
LDFLAGS="$(LDFLAGS) $${flags}" \
$(DO)); then \
true; \
else \
exit 1; \
fi; \
else true; \
fi; \
fi; \
done; \
fi
# FIXME: There should be an @-sign in front of the `if'.
# Leave out until this is tested a bit more.
multi-clean:
if [ -z "$(MULTIDIRS)" ]; then \
true; \
else \
lib=`pwd | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
for dir in Makefile $(MULTIDIRS); do \
if [ -f ../$${dir}/$${lib}/Makefile ]; then \
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
then true; \
else exit 1; \
fi; \
else true; \
fi; \
done; \
fi
EOF
cat ${Makefile} Multi.tem > Makefile.tem
rm -f ${Makefile} Multi.tem
mv Makefile.tem ${Makefile}
fi # ${ml_toplevel_p} = yes
if [ "${ml_verbose}" = --verbose ]; then
echo "Adding multilib support to Makefile in ${ml_realsrcdir}"
if [ "${ml_toplevel_p}" = yes ]; then
echo "multidirs=${multidirs}"
fi
echo "with_multisubdir=${with_multisubdir}"
fi
if [ "${srcdir}" = "." ]; then
if [ "${with_target_subdir}" != "." ]; then
ml_srcdotdot="../"
else
ml_srcdotdot=""
fi
else
ml_srcdotdot=""
fi
if [ -z "${with_multisubdir}" ]; then
ml_subdir=
ml_builddotdot=
: # ml_srcdotdot= # already set
else
ml_subdir="/${with_multisubdir}"
# The '[^/][^/]*' appears that way to work around a SunOS sed bug.
ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
if [ "$srcdir" = "." ]; then
ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
else
: # ml_srcdotdot= # already set
fi
fi
if [ "${ml_toplevel_p}" = yes ]; then
ml_do='$(MAKE)'
ml_clean='$(MAKE)'
else
ml_do=true
ml_clean=true
fi
# TOP is used by newlib and should not be used elsewhere for this purpose.
# MULTI{SRC,BUILD}TOP are the proper ones to use. MULTISRCTOP is empty
# when srcdir != builddir. MULTIBUILDTOP is always some number of ../'s.
# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
# delete TOP. Newlib may wish to continue to use TOP for its own purposes
# of course.
# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
# and lists the subdirectories to recurse into.
# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
# a leading '/'.
# MULTIDO is used for targets like all, install, and check where
# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
# MULTICLEAN is used for the *clean targets.
#
# ??? It is possible to merge MULTIDO and MULTICLEAN into one. They are
# currently kept separate because we don't want the *clean targets to require
# the existence of the compiler (which MULTIDO currently requires) and
# therefore we'd have to record the directory options as well as names
# (currently we just record the names and use --print-multi-lib to get the
# options).
sed -e "s:^TOP[ ]*=[ ]*\([./]*\)[ ]*$:TOP = ${ml_builddotdot}\1:" \
-e "s:^MULTISRCTOP[ ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
-e "s:^MULTIBUILDTOP[ ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
-e "s:^MULTIDIRS[ ]*=.*$:MULTIDIRS = ${multidirs}:" \
-e "s:^MULTISUBDIR[ ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
-e "s:^MULTIDO[ ]*=.*$:MULTIDO = $ml_do:" \
-e "s:^MULTICLEAN[ ]*=.*$:MULTICLEAN = $ml_clean:" \
${Makefile} > Makefile.tem
rm -f ${Makefile}
mv Makefile.tem ${Makefile}
# If this is the library's top level, configure each multilib subdir.
# This is done at the end because this is the loop that runs configure
# in each multilib subdir and it seemed reasonable to finish updating the
# Makefile before going on to configure the subdirs.
if [ "${ml_toplevel_p}" = yes ]; then
# We must freshly configure each subdirectory. This bit of code is
# actually partially stolen from the main configure script. FIXME.
if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
if [ "${ml_verbose}" = --verbose ]; then
echo "Running configure in multilib subdirs ${multidirs}"
echo "pwd: `pwd`"
fi
ml_origdir=`pwd`
ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'`
# cd to top-level-build-dir/${with_target_subdir}
cd ..
for ml_dir in ${multidirs}; do
if [ "${ml_verbose}" = --verbose ]; then
echo "Running configure in multilib subdir ${ml_dir}"
echo "pwd: `pwd`"
fi
if [ -d ${ml_dir} ]; then true; else
# ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
pathcomp=""
for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
pathcomp="$pathcomp$d"
case "$pathcomp" in
-* ) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp" 1>&2
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
fi
if test ! -d "$pathcomp"; then
exit $lasterr
fi
pathcomp="$pathcomp/"
done
fi
if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
# Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
case ${srcdir} in
".")
echo Building symlink tree in `pwd`/${ml_dir}/${ml_libdir}
if [ "${with_target_subdir}" != "." ]; then
ml_unsubdir="../"
else
ml_unsubdir=""
fi
(cd ${ml_dir}/${ml_libdir};
../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
if [ -f ${ml_dir}/${ml_libdir}/Makefile ]; then
if [ x"${MAKE}" = x ]; then
(cd ${ml_dir}/${ml_libdir}; make distclean)
else
(cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
fi
fi
ml_newsrcdir="."
ml_srcdiroption=
multisrctop=${dotdot}
;;
*)
case "${srcdir}" in
/* | [A-Za-z]:[\\/]* ) # absolute path
ml_newsrcdir=${srcdir}
;;
*) # otherwise relative
ml_newsrcdir=${dotdot}${srcdir}
;;
esac
ml_srcdiroption="-srcdir=${ml_newsrcdir}"
multisrctop=
;;
esac
case "${progname}" in
/* | [A-Za-z]:[\\/]* ) ml_recprog=${progname} ;;
*) ml_recprog=${dotdot}${progname} ;;
esac
# FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
ML_POPDIR=`pwd`
cd ${ml_dir}/${ml_libdir}
if [ -f ${ml_newsrcdir}/configure ]; then
ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
fi
# find compiler flag corresponding to ${ml_dir}
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
dir=`echo $i | sed -e 's/;.*$//'`
if [ "${dir}" = "${ml_dir}" ]; then
flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
break
fi
done
ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" GCJ="${GCJ_}$flags"'
if [ "${with_target_subdir}" = "." ]; then
CC_=$CC' '
CXX_=$CXX' '
GCJ_=$GCJ' '
else
# Create a regular expression that matches any string as long
# as ML_POPDIR.
popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
CC_=
for arg in ${CC}; do
case $arg in
-[BIL]"${ML_POPDIR}"/*)
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
"${ML_POPDIR}"/*)
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
*)
CC_="${CC_}${arg} " ;;
esac
done
CXX_=
for arg in ${CXX}; do
case $arg in
-[BIL]"${ML_POPDIR}"/*)
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
"${ML_POPDIR}"/*)
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
*)
CXX_="${CXX_}${arg} " ;;
esac
done
GCJ_=
for arg in ${GCJ}; do
case $arg in
-[BIL]"${ML_POPDIR}"/*)
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
"${ML_POPDIR}"/*)
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
*)
GCJ_="${GCJ_}${arg} " ;;
esac
done
if test "x${LD_LIBRARY_PATH+set}" = xset; then
LD_LIBRARY_PATH_=
for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
case "$arg" in
"${ML_POPDIR}"/*)
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
;;
esac
if test "x$LD_LIBRARY_PATH_" != x; then
LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
else
LD_LIBRARY_PATH_=$arg
fi
done
ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
fi
if test "x${SHLIB_PATH+set}" = xset; then
SHLIB_PATH_=
for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
case "$arg" in
"${ML_POPDIR}"/*)
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
;;
esac
if test "x$SHLIB_PATH_" != x; then
SHLIB_PATH_=$SHLIB_PATH_:$arg
else
SHLIB_PATH_=$arg
fi
done
ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
fi
fi
if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
${ml_arguments} ${ml_srcdiroption} ; then
true
else
exit 1
fi
cd ${ML_POPDIR}
done
cd ${ml_origdir}
fi
fi # ${ml_toplevel_p} = yes
fi # ${enable_multilib} = yes

1331
contrib/gcc/config.guess vendored

File diff suppressed because it is too large Load Diff

79
contrib/gcc/config.if Normal file
View File

@ -0,0 +1,79 @@
#! /dev/null
# Don't call it directly. This shell script fragment is called to
# determine:
#
# 1. libstcxx_incdir: the interface name for libstdc++.
# 2. libc_interface: the interface name for libc.
#
# Get the top level src dir.
if [ -z "${topsrcdir}" -a -z "${top_srcdir}" ]
then
echo "Undefined top level src dir: topsrcdir and top_srcdir are empty" >&2
exit 1
fi
if [ -n "${topsrcdir}" ]
then
if_topsrcdir=${topsrcdir}
else
if_topsrcdir=${top_srcdir}
fi
# Set libstdcxx_incdir.
# This is the same as gcc/configure.in and libstdc++-v3/acinclude.m4.
gcc_version_trigger=${if_topsrcdir}/gcc/version.c
gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
libstdcxx_incdir=c++/${gcc_version}
# The trickiest part is libc_interface.
if [ -z "${libc_interface}" ]
then
case ${target_os} in
*linux*libc1*|*linux*libc5*)
case ${target_alias} in
*alpha*|*powerpc*)
libc_interface=-libc5.9-
;;
*)
libc_interface=-libc5-
;;
esac
;;
*linux*gnu*)
# We have to work harder to figure it out.
if [ ${target_alias} = ${build_alias} ]
then
dummy=if$$
cat >$dummy.c <<EOF
#include <features.h>
main(argc, argv)
int argc;
char *argv[];
{
printf("%d\n", __GLIBC_MINOR__);
return 0;
}
EOF
${CC-cc} $dummy.c -o $dummy 2>/dev/null
if [ "$?" = 0 ]
then
libc_interface=-libc6.`./$dummy`-
rm -f $dummy.c $dummy
else
# It should never happen.
echo "Cannot find the GNU C library minor version number." >&2
rm -f $dummy.c $dummy
exit 1
fi
else
# Cross compiling. Assume glibc 2.1.
libc_interface=-libc6.1-
fi
;;
*)
libc_interface=-
;;
esac
fi

1450
contrib/gcc/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,477 @@
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-18 Release Manager
* GCC 3.2.1 Released.
2002-08-14 Release Manager
* GCC 3.2 Released.
2002-07-25 Release Manager
* GCC 3.1.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2001-10-07 Joseph S. Myers <jsm28@cam.ac.uk>
* acinclude.m4: Fix spelling error of "separate" as "seperate".
2001-05-22 Jason Merrill <jason_merrill@redhat.com>
* mt-linux (CXXFLAGS_FOR_TARGET): Lose -fvtable-thunks.
2001-01-27 Richard Henderson <rth@redhat.com>
* mt-alphaieee: New file.
2001-01-02 Laurynas Biveinis <lauras@softhome.net>
* mh-djgpp: do not set CFLAGS.
2000-08-04 Mark Elbrecht <snowball3@bigfoot.com>
* mh-djgpp: Conditionally set 'target_alias' to djgpp. Conditionally
modify 'gcc_version'.
2000-07-21 Andrew Haley <aph@cygnus.com>
* mh-ia64pic: New file.
* mt-ia64pic: New file.
Fri Jul 14 18:13:23 2000 Mark P Mitchell <mark@codesourcery.com>
* mh-irix6 (CC): Don't set it.
2000-06-21 Branko Cibej <branko.cibej@hermes.si>
* mh-sparcpic: Use single instead of double quotes.
* mt-sparcpic: Likewise.
2000-06-19 Syd Polk <spolk@redhat.com>
* acinclude.m4: Updated for Incr Tcl 3.0.
2000-02-23 Linas Vepstas <linas@linas.org>
* mh-i370pic: New file.
* mt-i370pic: New file.
2000-02-22 Nick Clifton <nickc@cygnus.com>
* config/mt-wince: new file: Makefile fragment for WinCE targets.
2000-01-06 Geoff Keating <geoffk@cygnus.com>
* mh-aix43: Delete, move to mt-aix43.
* mt-aix43: New file.
Tue Sep 7 23:31:01 1999 Linas Vepstas <linas@linas.org>
* mh-openedition: New file.
1999-04-07 Michael Meissner <meissner@cygnus.com>
* mt-d30v: New file, pass -g -Os -Wa,-C as default options.
1999-02-08 Syd Polk <spolk@cygnus.com>
* acinclude.m4: Added macros to find itcl files.
Export TCL_CFLAGS from tclConfig.sh.
Export TCL_LIB_FULL_PATH, TK_LIB_FULL_PATH, ITCL_LIB_FULL_PATH,
ITK_LIB_FULL_PATH, and TIX_LIB_FULL_PATH
Replace TIX macros with better ones from snavigator.
Tue Feb 2 22:51:21 1999 Philip Blundell <philb@gnu.org>
* mh-armpic: New file. Patch from Jim Pick <jim@jimpick.com>.
* mt-armpic: Likewise.
Mon Jan 18 19:41:08 1999 Christopher Faylor <cgf@cygnus.com>
* cygwin.mh: Activate commented out dependencies for
gdb: libtermcap.
Wed Nov 18 20:29:46 1998 Christopher Faylor <cgf@cygnus.com>
* cygwin.mh: Add extra libtermcap target information.
Add commented out dependency for gdb to libtermcap for
future readline requirement.
Mon Nov 2 15:15:33 1998 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: delete
* mh-cygwin: was mh-cygwin32
1998-10-26 Syd Polk <spolk@cygnus.com>
* acinclude.m4: TCLHDIR and TKHDIR need to be run through
cygpath for Microsoft builds.
1998-10-20 Syd Polk <spolk@cygnus.com>
* acinclude.m4: Re-exported TCL_LIBS and TCL_LD_SEARCH_FLAGS
because itcl needs them.
Mon Aug 31 17:50:53 1998 David Edelsohn <edelsohn@mhpcc.edu>
* mh-aix43 (NM_FOR_TARGET): Add -X32_64 as well.
Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
* mh-aix43: New file.
Mon Aug 10 00:15:47 1998 HJ Lu (hjl@gnu.org)
* mt-linux (CXXFLAGS_FOR_TARGET): Add -D_GNU_SOURCE.
1998-05-29 Rob Savoye <rob@chinadoll.cygnus.com>
* acinclude.m4: New collection of generic autoconf macros.
Wed Apr 22 12:24:28 1998 Michael Meissner <meissner@cygnus.com>
* mt-ospace: New file, support using -Os instead of -O2 to compile
the libraries.
Wed Apr 22 10:53:14 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* mt-linux (CXXFLAGS_FOR_TARGET): Set this instead of CXXFLAGS.
Sat Apr 11 22:43:17 1998 J. Kean Johnston <jkj@sco.com>
* mh-svsv5: New file - support for SCO UnixWare 7 / SVR5.
Thu Mar 26 01:54:25 1998 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: stop configuring and building dosrel.
Thu Sep 11 16:43:27 1997 Jim Wilson <wilson@cygnus.com>
* mh-elfalphapic, mt-elfalphapic: New files.
Wed Jul 23 12:32:18 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
* mh-go32 (CFLAGS): Don't set -fno-omit-frame-pointer.
Mon Jun 16 19:06:41 1997 Geoff Keating <geoffk@ozemail.com.au>
* mh-ppcpic: New file.
* mt-ppcpic: New file.
Thu Mar 27 15:52:40 1997 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: override CXXFLAGS, setting to -O2 only
(no debug)
Tue Mar 25 18:16:43 1997 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: override LIBGCC2_DEBUG_CFLAGS so debug info
isn't included in cygwin32-hosted libgcc2.a by default
Wed Jan 8 19:56:43 1997 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: override CFLAGS so debug info isn't included
in cygwin32-hosted tools by default
Tue Dec 31 16:04:26 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-linux: Remove.
Mon Nov 11 10:29:51 1996 Michael Meissner <meissner@tiktok.cygnus.com>
* mt-ppc: Delete file, options moved to newlib configure.
Fri Oct 4 12:21:03 1996 Angela Marie Thomas (angela@cygnus.com)
* mh-dgux386: New file. x86 dgux specific flags
Mon Sep 30 15:10:07 1996 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (EXTRALIBS_PPC_XCOFF): New, was EXTRALIBS_PPC.
(EXTRALIBS_PPC): Use shared libraries instead of xcoff.
Sat Aug 17 04:56:25 1996 Geoffrey Noer <noer@skaro.cygnus.com>
* mh-cygwin32: don't -D_WIN32 here anymore
Thu Aug 15 19:46:44 1996 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (SEGFLAG_68K, SEGFLAG_PPC): Remove.
(EXTRALIBS_PPC): Add libgcc.xcoff.
Thu Aug 8 14:51:47 1996 Michael Meissner <meissner@tiktok.cygnus.com>
* mt-ppc: New file, add -mrelocatable-lib and -mno-eabi to all
target builds for PowerPC eabi targets.
Fri Jul 12 12:06:01 1996 Stan Shebs <shebs@andros.cygnus.com>
* mpw: New subdir, Mac MPW configuration support bits.
Mon Jul 8 17:30:52 1996 Jim Wilson <wilson@cygnus.com>
* mh-irix6: New file.
Mon Jul 8 15:15:37 1996 Jason Merrill <jason@yorick.cygnus.com>
* mt-sparcpic (PICFLAG_FOR_TARGET): Use -fPIC.
Fri Jul 5 11:49:02 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-irix4 (RANLIB): Don't define; Irix 4 does have ranlib.
Sun Jun 23 22:59:25 1996 Geoffrey Noer <noer@cygnus.com>
* mh-cygwin32: new file. Like mh-go32 without the CFLAGS entry.
Tue Mar 26 14:10:41 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-go32 (CFLAGS): Define.
Thu Mar 14 19:20:54 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-necv4: New file.
Thu Feb 15 13:07:43 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-cxux (CC): New variable.
(CFLAGS, LDFLAGS): Remove.
* mh-ncrsvr43 (CC): New variable.
(CFLAGS): Remove.
* mh-solaris (CFLAGS): Remove.
* mh-go32: Remove most variable settings, since they presumed a
Canadian Cross, which is now handled correctly by the configure
script.
* mh-sparcpic (PICFLAG): Set to -fPIC, not -fpic.
Mon Feb 12 14:53:39 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* mh-m68kpic, mt-m68kpic: New files.
Thu Feb 1 14:15:42 1996 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (CC_MWC68K): Add options similar to those used
in CC_MWCPPC, and -mc68020 -model far.
(AR_MWLINK68K): Add -xm library.
(AR_AR): Define.
(CC_LD_MWLINK68K): Remove -d.
(EXTRALIBS_MWC68K): Define.
Thu Jan 25 16:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
* mh-ncrsvr43 (CFLAGS): Remove -Hnocopyr.
Tue Nov 7 15:41:30 1995 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (CC_MWC68K, CC_MWCPPC): Remove unused include path.
(CC_MWCPPC): Add -mpw_chars, disable warnings, add comments
explaining reasons for various flags.
(EXTRALIBS_PPC, EXTRALIBS_MWCPPC ): Put runtime library first.
Fri Oct 13 14:44:25 1995 Jason Molenda (crash@phydeaux.cygnus.com)
* mh-aix, mh-sun: Removed.
* mh-decstation (X11_EXTRA_CFLAGS): Define.
* mh-sco, mh-solaris, mh-sysv4 (X11_EXTRA_LIBS): Define.
* mh-hp300, mh-hpux, mh-hpux8, mh-solaris, mh-sun3, mh-sysv4: Don't
hardcode location of X stuff here.
Thu Sep 28 13:14:56 1995 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw: Add definitions for various 68K and PowerMac
compilers, add definitions for library and link steps for
PowerMacs.
Thu Sep 14 08:20:04 1995 Fred Fish <fnf@cygnus.com>
* mh-hp300 (CC): Add "CC = cc -Wp,-H256000" to avoid
"too much defining" errors from the HPUX compiler.
Thu Aug 17 17:28:56 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
* mh-hp300 (RANLIB): Use "ar ts", in case GNU ar was used and
didn't build a symbol table.
Thu Jun 22 17:47:24 1995 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (CC): Define ANSI_PROTOTYPES.
Mon Apr 10 12:29:48 1995 Stan Shebs <shebs@andros.cygnus.com>
* mpw-mh-mpw (EXTRALIBS): Always link in Math.o, CSANELIB.o,
and ToolLibs.o.
* mpw-mh-mpw (CC): Define ALMOST_STDC.
(CFLAGS): Remove ALMOST_STDC, -mc68881.
(LDFLAGS): add -w.
* mpw-mh-mpw (CFLAGS): Add -b option to put strings at the ends of
functions.
* mpw-mh-mpw: New file, host makefile definitions for MPW.
Fri Mar 31 11:35:17 1995 Jason Molenda (crash@phydeaux.cygnus.com)
* mt-netware: New file.
Mon Mar 13 12:31:29 1995 Ian Lance Taylor <ian@cygnus.com>
* mh-hpux8: New file.
* mh-hpux: Use X11R5 rather than X11R4.
Thu Feb 9 11:04:13 1995 Ian Lance Taylor <ian@cygnus.com>
* mh-linux (SYSV): Don't define.
(RANLIB): Don't define.
Wed Jan 11 16:29:34 1995 Jason Merrill <jason@phydeaux.cygnus.com>
* m?-*pic (LIBCXXFLAGS): Add -fno-implicit-templates.
Thu Nov 3 17:27:19 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
* mh-irix4 (CC): Increase maximum string length.
* mh-sco (CC): Define away const, it doesn't work right; elements
of arrays of ptr-to-const are considered const themselves.
Sat Jul 16 12:17:49 1994 Stan Shebs (shebs@andros.cygnus.com)
* mh-cxux: New file, from Bob Rusk (rrusk@mail.csd.harris.com).
Sat Jun 4 17:22:12 1994 Per Bothner (bothner@kalessin.cygnus.com)
* mh-ncrsvr43: New file from Tom McConnell
<tmcconne@sedona.intel.com>.
Thu May 19 00:32:11 1994 Jeff Law (law@snake.cs.utah.edu)
* mh-hpux (CC): Add -Wp,-H256000 to avoid "too much defining"
errors from the HPUX 8 compilers.
Wed May 4 20:14:47 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
* mh-lynxrs6k: set SHELL to /bin/bash
Tue Apr 12 12:38:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* mh-irix4 (CC): Change -XNh1500 to -XNh2000.
Sat Dec 25 20:03:45 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
* mt-hppa: Delete.
Tue Nov 16 22:54:39 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mh-a68bsd: Define CC to gcc.
Mon Nov 15 16:56:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mh-linux: Don't put -static in LDFLAGS. Add comments.
Mon Nov 15 13:37:58 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com)
* mh-sysv4 (AR_FLAGS): change from cq to cr
Fri Nov 5 08:12:32 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com)
* mh-unixware: remove. It's the same as sysv4, and config.guess
can't tell the difference. So don't allow skew.
Wed Oct 20 20:35:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mh-hp300: Revert yesterday's change, but add comment explaining.
Tue Oct 19 18:58:21 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mh-hp300: Don't define CFLAGS to empty. Why should hp300 be
different from anything else? ("gdb doesn't understand the native
debug format" isn't a good enough answer because we might be using
gcc).
Tue Oct 5 12:17:40 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
* mh-alphaosf: Remove, no longer necessary now that gdb knows
how to handle OSF/1 shared libraries.
Tue Jul 6 11:27:33 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
* mh-alphaosf: New file.
Thu Jul 1 15:49:33 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* mh-riscos: New file.
Mon Jun 14 12:03:18 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
* mh-aix, mh-aix386, mh-decstation, mh-delta88, mh-hpux, mh-irix4,
mh-ncr3000, mh-solaris, mh-sysv, mh-sysv4: remove INSTALL=cp line,
now that we're using install.sh globally
Fri Jun 4 16:09:34 1993 Ian Lance Taylor (ian@cygnus.com)
* mh-sysv4 (INSTALL): Use cp, not /usr/ucb/install.
Thu Apr 8 11:21:52 1993 Ian Lance Taylor (ian@cygnus.com)
* mt-a29k, mt-ebmon29k, mt-os68k, mt-ose68000, mt-ose68k,
mt-vxworks68, mt-vxworks960: Removed obsolete, unused target
Makefile fragment files.
Mon Mar 8 15:05:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
* mh-aix386: New file; old mh-aix, plus no-op RANLIB.
Thu Oct 1 13:50:48 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
* mh-solaris: INSTALL is NOT /usr/ucb/install
Mon Aug 24 14:25:35 1992 Ian Lance Taylor (ian@cygnus.com)
* mt-ose68000, mt-ose68k: renamed from mt-OSE*.
Tue Jul 21 02:11:01 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
* mt-OSE68k, mt-680000: new configs.
Thu Jul 16 17:12:09 1992 K. Richard Pixley (rich@rtl.cygnus.com)
* mh-irix4: merged changes from progressive.
Tue Jun 9 23:29:38 1992 Per Bothner (bothner@rtl.cygnus.com)
* Everywhere: Change RANLIB=echo>/dev/null (which confuses
some shells - and I don't blame them) to RANLIB=true.
* mh-solaris: Use /usr/ucb/install for INSTALL.
Sun May 31 14:45:23 1992 Mark Eichin (eichin at cygnus.com)
* mh-solaris2: Add new configuration for Solaris 2 (sysv, no ranlib)
Fri Apr 10 23:10:08 1992 Fred Fish (fnf@cygnus.com)
* mh-ncr3000: Add new configuration for NCR 3000.
Tue Dec 10 00:10:55 1991 K. Richard Pixley (rich at rtl.cygnus.com)
* ChangeLog: fresh changelog.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,12 @@
RANLIB=true
#None of the Apollo compilers can compile gas or binutils. The preprocessor
# chokes on bfd, the compiler won't let you assign integers to enums, and
# other problems. Defining CC to gcc is a questionable way to say "don't use
# the apollo compiler" (the preferred version of GCC could be called cc,
# or whatever), but I'm not sure leaving CC as cc is any better...
#CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG
CC=gcc
BISON=yacc

View File

@ -0,0 +1 @@
RANLIB = @:

View File

@ -0,0 +1,3 @@
HDEFINES = -DUSG
RANLIB=true
CC= cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG

View File

@ -0,0 +1 @@
PICFLAG=-fPIC

View File

@ -0,0 +1,14 @@
# Configuration for Harris CX/UX 7 (and maybe 6), based on sysv4 configuration.
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true
# C++ debugging is not yet supported under SVR4 (DWARF)
CXXFLAGS=-O
# The l flag generates a warning from the SVR4 archiver, remove it.
AR_FLAGS = cq
# Under CX/UX, we want to tell the compiler to use ANSI mode.
CC=cc -Xa

View File

@ -0,0 +1,6 @@
EXTRA_TARGET_HOST_ALL_MODULES=all-libtermcap
EXTRA_TARGET_HOST_INSTALL_MODULES=install-libtermcap
all-gdb: all-libtermcap
install-gdb: all-libtermcap

View File

@ -0,0 +1,5 @@
CC = cc -Wf,-XNg1000
# for X11, since the native DECwindows include files are really broken when
# it comes to function prototypes.
X11_EXTRA_CFLAGS = "-DNeedFunctionPrototypes=0"

View File

@ -0,0 +1,4 @@
RANLIB = true

View File

@ -0,0 +1,4 @@
HDEFINES=-DHOST_SYS=DGUX_SYS
CC=gcc -Wall -ansi -D__using_DGUX
RANLIB=true

View File

@ -0,0 +1,22 @@
# from mh-dgux
HDEFINES=-DHOST_SYS=DGUX_SYS
CC=gcc -Wall -ansi -D__using_DGUX
RANLIB = true
# from mh-sysv4
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true
# C++ debugging is not yet supported under SVR4 (DWARF)
CXXFLAGS=-O
# The l flag generates a warning from the SVR4 archiver, remove it.
AR_FLAGS = cr
X11_EXTRA_LIBS = -lnsl
# from angela
# no debugging due to broken compiler, use BSD style timeofday
CFLAGS=-O -D_BSD_TIMEOFDAY_FLAVOR

View File

@ -0,0 +1,14 @@
# Shorten the target alias so when it is used to set 'libsubdir'
# the name will work in both short and long filename environments.
ifeq ($(findstring -pc-msdosdjgpp,$(target_alias)),-pc-msdosdjgpp)
target_alias=djgpp
endif
# The version string must be modified to contain just one dot
# because DOS filenames can only have one dot when long filenames
# are not available.
__version:=$(gcc_version)
__version:=$(subst ., ,$(__version))
ifeq ($(words $(__version)),3)
gcc_version=$(word 1,$(__version)).$(word 2,$(__version))$(word 3,$(__version))
endif

View File

@ -0,0 +1 @@
PICFLAG=-fPIC

View File

@ -0,0 +1,13 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV
# Avoid "too much defining" errors from HPUX compiler.
CC = cc -Wp,-H256000
# If "ar" in $PATH is GNU ar, the symbol table may need rebuilding.
# If it's HP/UX ar, this should be harmless.
RANLIB = ar ts
# Native cc can't bootstrap gcc with -g. Defining CFLAGS here loses (a)
# for non-gcc directories, (b) if we are compiling with gcc, not
# native cc. Neither (a) nor (b) has a trivial fix though.
CFLAGS =

View File

@ -0,0 +1,4 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
CC = cc -Wp,-H256000
SYSV = -DSYSV
RANLIB = true

View File

@ -0,0 +1,4 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
CC = cc -Wp,-H256000
SYSV = -DSYSV
RANLIB = true

View File

@ -0,0 +1 @@
PICFLAG=-fPIC

View File

@ -0,0 +1 @@
PICFLAG=-fpic

View File

@ -0,0 +1,14 @@
# The shell may not be in /bin.
SHELL = sh
RANLIB = true
# We don't want debugging info in Interix-hosted toolchains.
# Accomplish this by overriding CFLAGS. This is also a workaround
# for LD crash when building shared libstdc++.
CFLAGS=-O2
CXXFLAGS=-O2
# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
# built without debugging information
LIBGCC2_DEBUG_CFLAGS=

View File

@ -0,0 +1,7 @@
# Makefile changes for SGI's running IRIX-4.x.
# Tell compiler to use K&R C. We can't compile under the SGI Ansi
# environment. Also bump switch table size so that cp-parse will
# compile. Bump string length limit so linker builds.
CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192
SYSV = -DSYSV

View File

@ -0,0 +1,3 @@
# Makefile changes for SGI's running IRIX-5.x.
SYSV = -DSYSV
RANLIB = true

View File

@ -0,0 +1,3 @@
# Makefile changes for SGI's running IRIX-6.x.
SYSV = -DSYSV
RANLIB = true

View File

@ -0,0 +1,2 @@
# /bin/cc is less than useful for our purposes. Always use GCC
CC = /bin/gcc

View File

@ -0,0 +1,8 @@
# LynxOS running on the rs6000 doesn't have ranlib
RANLIB = true
# /bin/cc is less than useful for our purposes. Always use GCC
CC = /usr/cygnus/progressive/bin/gcc
# /bin/sh is too buggy, so use /bin/bash instead.
SHELL = /bin/bash

View File

@ -0,0 +1 @@
PICFLAG=-fpic

View File

@ -0,0 +1,12 @@
# We don't want debugging info in Win32-hosted toolchains.
# Accomplish this by overriding CFLAGS.
CFLAGS=-O2
CXXFLAGS=-O2
# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
# built without debugging information
LIBGCC2_DEBUG_CFLAGS=
# custom installation rules for mingw32 (append .exe to binaries, etc.)
# INSTALL_DOSREL=install-dosrel

View File

@ -0,0 +1,17 @@
# Host configuration file for an NCR 3000 (i486/SVR4) system.
# The NCR 3000 ships with a MetaWare compiler installed as /bin/cc.
# This compiler not only emits obnoxious copyright messages every time
# you run it, but it chokes and dies on a whole bunch of GNU source
# files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc.
# Unfortunately though, the AT&T compiler sometimes generates code that
# the assembler barfs on if -g is used, so disable it by default as well.
CC = /usr/ccs/ATT/cc
CFLAGS =
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true
# The l flag generates a warning from the SVR4 archiver, remove it.
AR_FLAGS = cq

View File

@ -0,0 +1,9 @@
# Host configuration file for an NCR 3000 (i486/SVR43) system.
# The MetaWare compiler will generate a copyright message unless you
# turn it off by adding the -Hnocopyr flag.
CC = cc -Hnocopyr
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true

View File

@ -0,0 +1,11 @@
# Host Makefile fragment for NEC MIPS SVR4.
# The C compiler on NEC MIPS SVR4 needs bigger tables.
CC = cc -ZXNd=5000 -ZXNg=1000
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true
# NEC -lX11 needs some other libraries.
X11_EXTRA_LIBS = -lsocket -lnsl

View File

@ -0,0 +1,2 @@
RANLIB = true
CC = c89

View File

@ -0,0 +1 @@
PICFLAG=-fPIC

View File

@ -0,0 +1 @@
PICFLAG=-fPIC

View File

@ -0,0 +1,15 @@
# This is for a MIPS running RISC/os 4.52C.
# This is needed for GDB, but needs to be in the top-level make because
# if a library is compiled with the bsd headers and gets linked with the
# sysv system libraries all hell can break loose (e.g. a jmp_buf might be
# a different size).
# ptrace(2) apparently has problems in the BSD environment. No workaround is
# known except to select the sysv environment. Could we use /proc instead?
# These "sysv environments" and "bsd environments" often end up being a pain.
#
# This is not part of CFLAGS because perhaps not all C compilers have this
# option.
CC= cc -systype sysv
RANLIB = true

10
contrib/gcc/config/mh-sco Normal file
View File

@ -0,0 +1,10 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV
RANLIB = true
# You may need this if you don't have bison.
# BISON = yacc -Sm10400
# The native C compiler botches some simple uses of const. Unfortunately,
# it doesn't defined anything like "__sco__" for us to test for in ansidecl.h.
CC = cc -Dconst=
X11_EXTRA_LIBS = -lsocket -lm -lintl -lmalloc

View File

@ -0,0 +1,6 @@
# Makefile changes for Suns running Solaris 2
SYSV = -DSYSV
RANLIB = true
X11_EXTRA_LIBS = -lnsl -lsocket

View File

@ -0,0 +1 @@
PICFLAG=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`

View File

@ -0,0 +1,3 @@
# Sun's C compiler needs the -J flag to be able to compile cp-parse.c
# without overflowing the jump tables (-J says to use a 32 bit table)
CC = cc -J

View File

@ -0,0 +1,3 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV
RANLIB = true

View File

@ -0,0 +1,11 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4
RANLIB = true
# C++ debugging is not yet supported under SVR4 (DWARF)
CXXFLAGS=-O
# The l flag generates a warning from the SVR4 archiver, remove it.
AR_FLAGS = cr
X11_EXTRA_LIBS = -lnsl

View File

@ -0,0 +1,8 @@
# Define SYSV as -DSYSV if you are using a System V operating system.
SYSV = -DSYSV -DSVR4 -DSVR5
RANLIB = true
# The l flag generates a warning from the SVR4 archiver, remove it.
AR_FLAGS = cr
X11_EXTRA_LIBS = -lnsl

View File

@ -0,0 +1,2 @@
# The old BSD pcc isn't up to compiling parts of gdb so use gcc
CC = gcc

View File

@ -0,0 +1 @@
PICFLAG=-fpic

View File

@ -0,0 +1,157 @@
# This is an MPW makefile fragment.
# Since there are a multiplicity of Mac compilers and two different
# processors, this file is primarily a library of options for each
# compiler. Somebody else (such as a configure or build script) will
# make the actual choice.
# Compiler to use for compiling.
CC_MPW_C = C -d MPW_C -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -w
CC_SC = SC -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -i '' -i :
CC_MWC68K = MWC68K -d MPW -enum int -mpw_chars -sym on -w off -mc68020 -model far
CC_PPCC = PPCC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -w
CC_MRC = MrC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -i '' -i : -jm
CC_SMrC = SMrC -d MPW
# "-mpw_chars" is necessary because GNU sources often mix signed and
# unsigned casually.
# "-w off" is not a great idea, but CW7 is complaining about enum
# assignments.
# "-opt global,peep,l4,speed" is sometimes good, and sometimes bad.
# We must use {CIncludes} so that MPW tools will work; {MWCIncludes}
# defines stdout, islower, etc, in ways that are incompatible with MPW's
# runtime. However, this cannot be done via -i "{CIncludes}", since
# that does not affect how <>-type includes happen; instead, the variable
# MWCIncludes must be set to point at {CIncludes}.
CC_MWCPPC = MWCPPC -d MPW -enum int -mpw_chars -sym on -w off
# Note that GCC does *not* wire in a definition of "pascal", so that
# it can be handled in another way if desired.
CC_68K_GCC = gC -Dpascal= -DANSI_PROTOTYPES -DMPW
CC_PPC_GCC = gC -Dpowerc=1 -Dpascal= -DANSI_PROTOTYPES -DMPW
# Nothing for the default CFLAGS.
CFLAGS =
# Tool to use for making libraries/archives.
AR_LIB = Lib
AR_MWLINK68K = MWLink68K -xm library
AR_PPCLINK = PPCLink -xm library
AR_MWLINKPPC = MWLinkPPC -xm library
AR_AR = ar
AR_FLAGS = -o
RANLIB_NULL = null-command
RANLIB_RANLIB = ranlib
# Compiler and/or linker to use for linking.
CC_LD_LINK = Link -w -d -model far {CC_LD_TOOL_FLAGS}
CC_LD_MWLINK68K = MWLink68K -w {CC_LD_TOOL_FLAGS} -sym on -model far
CC_LD_PPCLINK = PPCLink -main __start -outputformat xcoff
CC_LD_MWLINKPPC = MWLinkPPC -w {CC_LD_TOOL_FLAGS} -sym on
CC_LD_GLD = gC
# Extension for linker output.
PROG_EXT_68K =
PROG_EXT_XCOFF = .xcoff
# Nothing for the default LDFLAGS.
LDFLAGS = -w
CC_LD_TOOL_FLAGS = -c 'MPS ' -t MPST
# Libraries to link against.
# It would appear that the math libraries are not
# needed except to provide a definition for scalb,
# which is called from ldexp, which is referenced
# in the m68k opcodes library.
EXTRALIBS_C = \Option-d
"{CLibraries}"StdClib.o \Option-d
"{CLibraries}"Math.o \Option-d
"{CLibraries}"CSANELib.o \Option-d
"{Libraries}"Stubs.o \Option-d
"{Libraries}"Runtime.o \Option-d
"{Libraries}"Interface.o \Option-d
"{Libraries}"ToolLibs.o
EXTRALIBS_MWC68K = \Option-d
"{CLibraries}"StdClib.o \Option-d
"{CLibraries}"Math.o \Option-d
"{CLibraries}"CSANELib.o \Option-d
"{Libraries}"Stubs.o \Option-d
"{Libraries}"Runtime.o \Option-d
"{Libraries}"Interface.o \Option-d
"{Libraries}"ToolLibs.o \Option-d
"{MW68KLibraries}MPW ANSI (4i) C.68K.Lib"
EXTRALIBS_PPC_XCOFF = \Option-d
"{PPCLibraries}"StdCRuntime.o \Option-d
"{PPCLibraries}"InterfaceLib.xcoff \Option-d
"{PPCLibraries}"MathLib.xcoff \Option-d
"{PPCLibraries}"StdCLib.xcoff \Option-d
"{PPCLibraries}"PPCToolLibs.o \Option-d
"{PPCLibraries}"PPCCRuntime.o \Option-d
"{GCCPPCLibraries}"libgcc.xcoff
EXTRALIBS_PPC = \Option-d
"{PPCLibraries}"StdCRuntime.o \Option-d
"{SharedLibraries}"InterfaceLib \Option-d
"{SharedLibraries}"MathLib \Option-d
"{SharedLibraries}"StdCLib \Option-d
"{PPCLibraries}"PPCToolLibs.o \Option-d
"{PPCLibraries}"PPCCRuntime.o \Option-d
"{GCCPPCLibraries}"libgcc.xcoff
EXTRALIBS_MWCPPC = \Option-d
"{MWPPCLibraries}"MWStdCRuntime.Lib \Option-d
"{MWPPCLibraries}"InterfaceLib \Option-d
"{MWPPCLibraries}"StdCLib \Option-d
"{MWPPCLibraries}"MathLib \Option-d
"{MWPPCLibraries}"PPCToolLibs.o
# Tool to make PEF with, if needed.
MAKEPEF_NULL = null-command
MAKEPEF_PPC = MakePEF
MAKEPEF_FLAGS = \Option-d
-l InterfaceLib.xcoff=InterfaceLib \Option-d
-l MathLib.xcoff=MathLib \Option-d
-l StdCLib.xcoff=StdCLib
MAKEPEF_TOOL_FLAGS = -ft MPST -fc 'MPS '
# Resource compiler to use.
REZ_68K = Rez
REZ_PPC = Rez -d WANT_CFRG

View File

@ -0,0 +1,81 @@
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-18 Release Manager
* GCC 3.2.1 Released.
2002-08-14 Release Manager
* GCC 3.2 Released.
2002-07-25 Release Manager
* GCC 3.1.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
Tue Nov 26 12:34:12 1996 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: Fix some comments.
Mon Sep 16 14:42:52 1996 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed (HLDENV): Edit out all references.
Thu Aug 15 19:49:23 1996 Stan Shebs <shebs@andros.cygnus.com>
* true: New script, identical to mpw-true.
* g-mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG()@
to the editors for compile commands.
Thu Aug 1 15:01:42 1996 Stan Shebs <shebs@andros.cygnus.com>
* mpw-true, mpw-touch, null-command: New scripts.
* README: Describe usage in more detail.
Tue Dec 12 14:51:51 1995 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: Don't edit out "version=" occurrences.
Fri Dec 1 11:46:18 1995 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed (bindir, libdir): Edit the positions of
pathname separators to work with other pathnames better.
Tue Nov 7 15:08:07 1995 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: Add comment about Duplicate vs Catenate,
add additional pattern for editing link-compile commands.
Tue Oct 24 14:28:51 1995 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: Add handling for *.tab.[hc] files.
(CHILL_FOR_TARGET, CHILL_LIB): Edit out tricky definitions
of these.
Thu Sep 28 21:05:10 1995 Stan Shebs <shebs@andros.cygnus.com>
* g-mpw-make.sed: New file, generic sed commands to translate
Unix makefiles into MPW makefile syntax.
Fri Mar 17 11:51:20 1995 Stan Shebs <shebs@andros.cygnus.com>
* README: Clarify instructions.
* fi: Remove.
Wed Dec 21 15:45:53 1994 Stan Shebs <shebs@andros.cygnus.com>
* MoveIfChange, README, fi, forward-include, open-brace,
tr-7to8-src: New files.

View File

@ -0,0 +1,19 @@
# Rename a file only if it is different from a previously existing
# file of the same name. This is useful for keeping make from doing
# too much work if the contents of a file haven't changed.
# This is an MPW translation of the standard GNU sh script move-if-change.
Set exit 0
If "`exists -f "{2}"`"
Compare "{1}" "{2}" >dev:null
If {status} != 0
Rename -y "{1}" "{2}"
Else
Echo "{2}" is unchanged
Delete -i -y "{1}"
End
Else
Rename -y "{1}" "{2}"
End

View File

@ -0,0 +1,23 @@
This directory contains MPW scripts and related files that are needed to
build Cygnus GNU tools for MPW. The scripts should be somewhere on the
command path; our usual practice has been to have a separate directory
for the scripts, and put the tools (byacc, flex, and sed at least) there
also; then it's easier to drag the support bits around as a group, or to
upgrade MPW versions. The complete package of scripts and tool binaries
is usually available as pub/mac/buildtools.cpt.hqx on ftp.cygnus.com.
"tr-7to8-src" is actually the source to an MPW script that transforms
sequences like "\Option-d" into the actual 8-bit chars that MPW needs.
It's only the source because it can't itself include any 8-bit chars.
It *can* be processed into a genuine "tr-7to8" by using itself:
tr-7to8 tr-7to8-src | sed -e 's/Src//' >new-tr-7to8
Use this to verify:
compare tr-7to8 new-tr-7to8
If you don't have a working tr-7to8, then you will have to manually
replace all occurrences of "\Option-d" with real Option-d (which looks
like a delta), then do similarly with all the other "\Option-..."
strings, and then change "\SrcOption-d" into the string "\Option-d".

View File

@ -0,0 +1,3 @@
Echo '#include' ¶""{1}"¶" >"{2}".tem
MoveIfChange "{2}".tem "{2}"

View File

@ -0,0 +1,293 @@
# Sed commands to translate Unix makefiles into MPW makefiles.
# These are nominally generic, but work best on the makefiles used
# for GNU programs.
# Whack out any commented-out lines that are probably commands;
# they can only cause trouble later on.
/^# /d
# Change dependency char.
/:$/s/:/ \\Option-f/g
/^[^ :#][^:]*:/s/\([ ]*\):\([ ]*\)/ \\Option-f /g
# Change syntax of Makefile vars.
/\$/s/\${\([a-zA-Z0-9_-]*\)}/{\1}/g
/\$/s/\$(\([a-zA-Z0-9_-]*\))/{\1}/g
/ $@/s/ $@/ {Targ}/
# Double-$ are literals to Unix but not to MPW make.
/\$\$/s/\$\$/$/g
# Change pathname syntax.
/\//s,\.\./\/\.\./,:::,g
/\//s,\.\./,::,g
/\.\//s,\./,:,g
/\//s,/,:,g
# Undo excess changes.
/and/s,and:or$,and/or,
/and/s,and:or ,and/or ,
/want/s,want:need,want/need,
# Fixing up sed commands.
/-e/s_":\([^:]*\):d"_"/\1/d"_g
/-e/s_":\([^:]*\):,:\([^:]*\):d"_"/\1/,/\2/d"_g
/=/s/ = \.$/ = :/
# Make these go away so that later edits not confused.
/HLDENV/s/{HLDENV}//
# Comment out any explicit srcdir setting.
/srcdir/s/^srcdir/# srcdir/
/BASEDIR/s/^BASEDIR =.*$/BASEDIR = "{srcroot}"/
/{BASEDIR}:/s/{BASEDIR}:/{BASEDIR}/g
/{srcdir}:/s/{srcdir}:/"{srcdir}"/g
/"{srcdir}":/s/"{srcdir}":/"{srcdir}"/g
# Tweak some conventions that are backwards for the Mac.
/bindir/s/{exec_prefix}:bin/{exec_prefix}bin:/
/libdir/s/{exec_prefix}:lib/{exec_prefix}lib:/
# Comment out settings of anything set by mpw host config.
/CC/s/^CC *=/#CC =/
/CFLAGS/s/^CFLAGS *=/#CFLAGS =/
/AR/s/^AR *=/#AR =/
/AR_FLAGS/s/^AR_FLAGS *=/#AR_FLAGS =/
/RANLIB/s/^RANLIB *=/#RANLIB =/
/CC_LD/s/^CC_LD *=/#CC_LD =/
/LDFLAGS/s/^LDFLAGS *=/#LDFLAGS =/
# Change -I usages.
/-I/s/-I\./-i :/g
/-I/s/-I::bfd/-i ::bfd:/g
/-I/s/-I::include/-i ::include:/g
/-I/s/-I/-i /g
# Change -D usage.
/-D/s/\([ =]\)-D\([^ ]*\)/\1-d \2/g
# Change continuation char.
/\\$/s/\\$/\\Option-d/
# Change wildcard char.
/\*/s/\*/\\Option-x/g
# Change path of various types of source files. This rule does not allow
# for file names with multiple dots in the name.
/\.[chly]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/\1"{s}"\2.\3/g
/\.[chly]/s/^\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/"{s}"\1.\2/
# Allow files named *.tab.[ch] as a special case.
/\.tab\.[ch]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/\1"{s}"\2.\3/g
/\.tab\.[ch]/s/^\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/"{s}"\1.\2/
# Fix some overenthusiasms.
/{s}/s/"{s}""{srcdir}"/"{srcdir}"/g
/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)dir}/"{\1dir}"/g
/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)DIR}/"{\1DIR}"/g
/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)dir}"/"{\1dir}"/g
/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)DIR}"/"{\1DIR}"/g
/{s}/s/"{s}":/:/g
/{s}/s/^"{s}"//g
/{s}/s/"{s}""{s}"/"{s}"/g
/{s}/s/"{s}""{srcdir}"/"{s}"/g
/{s}/s/"{srcdir}""{s}"/"{s}"/g
# The .def files are also typically source files.
/\.def/s/\([ ><]\)\([-a-zA-Z0-9_${}:"]*\)\.def/\1"{s}"\2.def/g
/\.def/s/^\([-a-zA-Z0-9_${}:"]*\)\.def/"{s}"\1.def/g
# Change extension and path of objects.
/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.o/\1"{o}"\2.c.o/g
/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.o/"{o}"\1.c.o/
# Allow *.tab.o files as a special case of a 2-dot-name file.
/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/\1"{o}"\2.tab.c.o/g
/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/"{o}"\1.tab.c.o/
# Clean up.
/"{o}"/s/"{o}""{o}"/"{o}"/g
/"{o}"/s/^"{o}"\([a-zA-Z0-9_]*\)=/\1=/
# Change extension of libs.
/\.a/s/lib\([a-z]*\)\.a/lib\1.o/g
# Remove non-fail option.
/-/s/^\([ ]*\)-/\1/
# Fix overeagernesses - assumes no one-letter commands.
/^[ ]*[a-z] /s/^\([ ]*\)\([a-z]\) /\1-\2 /
# Remove non-echo option. (watch out for autoconf things)
/@/s/^\([ ]*\)@/\1/
# Change cp to Duplicate.
# Catenate is perhaps more accurate, but the pattern would have to
# identify the output file and add a '>' redirection into it.
/cp/s/^\([ ]*\)cp /\1Duplicate -d -y /
# Change mv to Rename.
/mv/s/^\([ ]*\)mv /\1Rename -y /
/Rename/s/^\([ ]*\)Rename -y -f/\1Rename -y/
# Change rm to Delete.
/rm -rf/s/^\([ ]*\)rm -rf /\1Delete -i -y /
/rm -f/s/^\([ ]*\)rm -f /\1Delete -i -y /
/rm/s/^\([ ]*\)rm /\1Delete -i -y /
# Note that we don't mess with ln - directory-specific scripts
# must decide what to do with symlinks.
# Change cat to Catenate.
/cat/s/^\([ ]*\)cat /\1Catenate /
# Change touch to mpw-touch.
/touch/s/^\([ ]*\)touch /\1mpw-touch /
# Change mkdir to NewFolder.
/mkdir/s/^\([ ]*\)mkdir /\1NewFolder /
# Change var setting to Set.
/=/s/^\([ ]*\)\([-a-zA-Z0-9_]*\)=\([^;]*\); \\Option-d/\1Set \2 \3/
# Change tests.
/if /s/if \[ *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
/if /s/if \[ *-f \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
/if /s/if \[ ! *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
/if /s/if \[ ! *-f \([^ ]*\) ] *; *then \\Option-d/If "`Exists "\1"`" == ""/
/if /s/if \[ *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
/if /s/if \[ *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
/if /s/if \[ ! *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
/if /s/if \[ ! *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" == ""/
/if /s/if \[ -d \([^ ]*\) ] *; then true *; else mkdir \([^ ;]*\) *; fi/If "`Exists "\1"`" != "" NewFolder \2 End If/
/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *\\Option-d/If "\1" == "\2"/
/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *then *\\Option-d/If "\1" == "\2"/
/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
/^[ ]*else true$/c\
Else\
mpw-true\
/else/s/^\([ ]*\)else[ ]*$/\1Else/
/else/s/^\([ ]*\)else[; ]*\\Option-d$/\1Else/
/^[ ]*else[ ]*true[ ]*$/c\
Else\
mpw-true
/^[ ]*else[ ]*true[; ]*fi$/c\
Else\
mpw-true\
End If
/fi/s/^\([ ]*\)fi *$/\1End/
/fi/s/^\([ ]*\)fi *; *\\Option-d/\1End/
# Change looping.
/for/s/^\([ ]*\)for \([-a-zA-Z0-9_]*\) in \([^;]*\); *do *\\Option-d/\1For \2 In \3/
/^\([ ]*\)do *\\Option-d/d
/done/s/^\([ ]*\)done *; *\\Option-d/\1End/
/done/s/^\([ ]*\)done$/\1End/
# Trailing semicolons and continued lines are unneeded sh syntax.
/; \\Option-d/s/; \\Option-d//
# Change move-if-change to MoveIfChange.
/move-if-change/s/\([^ ]*\)move-if-change/MoveIfChange/g
# Change $(SHELL) to the script name by itself.
/SHELL/s/^\([ ]*\){SHELL} /\1/
# Change syntax of default rule dependency.
/^\.c\.o/s/^\.c\.o \\Option-f$/.c.o \\Option-f .c/
# Change default rule's action.
/{CC} -c/s/{CC} -c \(.*\) \$<$/{CC} @DASH_C_FLAG@ {DepDir}{Default}.c \1 @SEGMENT_FLAG({Default})@ -o {TargDir}{Default}.c.o/
# This is pretty disgusting, but I can't seem to detect empty rules.
/Option-f$/s/Option-f$/Option-f _oldest/g
# Remove -c from explicit compiler calls. (but should not if GCC)
# Handle the case of a source file that is "{xxx}"file.c.
/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5.c -o "{o}"\5.c.o/
# Handle the case of a source file that is "{xxx}"dir:file.c.
/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\):\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5:\6.c -o "{o}"\6.c.o/
# Change linking cc to linking sequence.
/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\){LDFLAGS} \(.*\)-o \([^ ]*\) \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \5 -o \6{PROG_EXT} \7\
\1{MAKEPEF} \6{PROG_EXT} -o \6 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
\1{REZ} "{s}"\6.r -o \6 -append -d PROG_NAME='"'\6'"' -d VERSION_STRING='"'{version}'"'/
/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\)-o \([^ ]*\) \(.*\){LDFLAGS} \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \6 -o \5{PROG_EXT} \7\
\1{MAKEPEF} \5{PROG_EXT} -o \5 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
\1{REZ} "{s}"\5.r -o \5 -append -d PROG_NAME='"'\5'"' -d VERSION_STRING='"'{version}'"'/
/-o/s/^\([ ]*\){HOST_CC} \(.*\)-o \([^ ]*\) \(.*\)$/\1{HOST_CC_LD} \2 -o \3{PROG_EXT} \4\
\1{MAKEPEF} \3{PROG_EXT} -o \3 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
\1{REZ} "{s}"\3.r -o \3 -append -d PROG_NAME='"'\3'"' -d VERSION_STRING='"'{version}'"'/
# Comment out .NOEXPORT rules.
/\.NOEXPORT/s/^\.NOEXPORT/#\.NOEXPORT/
# Comment out .PHONY rules.
/\.PHONY/s/^\.PHONY/#\.PHONY/
# Comment out .PRECIOUS rules.
/\.PRECIOUS/s/^\.PRECIOUS/#\.PRECIOUS/
# Comment out .SUFFIXES rules.
/\.SUFFIXES/s/^\.SUFFIXES/#\.SUFFIXES/
# Set the install program appropriately.
/INSTALL/s/^INSTALL *= *`.*`:install.sh -c/INSTALL = Duplicate -y/
# Don't try to decide whether to use the tree's own tools.
/bison/s/`.*bison:bison.*`/bison -y/
/byacc/s/`.*byacc:byacc.*`/byacc/
/flex/s/`.*flex:flex.*`/flex/
# Turn transformed C comments in echo commands back into comments.
/echo/s,echo '\(.*\):\\Option-x\(.*\)\\Option-x:\(.*\)',echo '\1/*\2*/\3',
# Whack out various clever expressions that search for tools, since
# the clever code is too /bin/sh specific.
/^AR_FOR_TARGET = `/,/`$/c\
AR_FOR_TARGET = ::binutils:ar\
/^RANLIB_FOR_TARGET = `/,/`$/c\
RANLIB_FOR_TARGET = ::binutils:ranlib\
/^RANLIB_TEST_FOR_TARGET = /,/ranlib ] )$/c\
RANLIB_TEST_FOR_TARGET = \
/^EXPECT = `/,/`$/c\
EXPECT = \
/^RUNTEST = `/,/`$/c\
RUNTEST = \
/^CC_FOR_TARGET = `/,/`$/c\
CC_FOR_TARGET = \
/^CXX_FOR_TARGET = `/,/`$/c\
CXX_FOR_TARGET = \
/^CHILL_FOR_TARGET = `/,/`$/c\
CHILL_FOR_TARGET = \
/^CHILL_LIB = `/,/`$/c\
CHILL_LIB = \
/sanit/s/{start-sanit...-[a-z0-9]*}//
/sanit/s/{end-sanit...-[a-z0-9]*}//
# Add standard defines and default rules.
/^# srcdir/a\
\
s = "{srcdir}"\
\
o = :\
\
"{o}" \\Option-f : "{s}"

View File

@ -0,0 +1,7 @@
# "Touch" command.
If "`Exists "{1}"`" != ""
SetFile -m . "{1}"
Else
Echo ' ' > "{1}"
End If

View File

@ -0,0 +1 @@
Exit 0

View File

@ -0,0 +1 @@
# This command does nothing.

View File

@ -0,0 +1,4 @@
# MPW makefiles seem not to have any way to get a literal open
# brace into a rule anywhere, so this does the job.
Echo '{'

View File

@ -0,0 +1,9 @@
StreamEdit -e \Option-d
'/\Option-x/ \Option-d
Replace /\Option-d\SrcOption-d/ "\Option-d\Option-d" -c \Option-5 ; \Option-d
Replace /\Option-d\SrcOption-f/ "\Option-d\Option-f" -c \Option-5 ; \Option-d
Replace /\Option-d\SrcOption-8/ "\Option-d\Option-8" -c \Option-5 ; \Option-d
Replace /\Option-d\SrcOption-5/ "\Option-d\Option-5" -c \Option-5 ; \Option-d
Replace /\Option-d\SrcOption-x/ "\Option-d\Option-x" -c \Option-5 ; \Option-d
Replace /\Option-d\SrcOption-r/ "\Option-d\Option-r" -c \Option-5' \Option-d
"{1}"

View File

@ -0,0 +1 @@
Exit 0

View File

@ -0,0 +1,4 @@
# AIX 4.3 and above requires -X32_64 flag to all ar and nm commands
# to handle both 32-bit and 64-bit objects.
AR_FOR_TARGET=ar -X32_64
NM_FOR_TARGET=nm -B -X32_64

View File

@ -0,0 +1,2 @@
CFLAGS_FOR_TARGET += -mieee
CXXFLAGS_FOR_TARGET += -mieee

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fPIC

View File

@ -0,0 +1,4 @@
# Build libraries optimizing for space, not speed.
# Turn off warnings about symbols named the same as registers
CFLAGS_FOR_TARGET = -g -Os -Wa,-C
CXXFLAGS_FOR_TARGET = -g -Os -Wa,-C

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fPIC

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fPIC

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fpic

View File

@ -0,0 +1 @@
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fpic

View File

@ -0,0 +1 @@
GDB_NLM_DEPS = all-gcc all-ld

View File

@ -0,0 +1,3 @@
# Build libraries optimizing for space, not speed.
CFLAGS_FOR_TARGET = -g -Os
CXXFLAGS_FOR_TARGET = -g -Os

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fPIC

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fPIC

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`

View File

@ -0,0 +1,4 @@
CC_FOR_TARGET = ca732 -ansi
AS_FOR_TARGET = as732
AR_FOR_TARGET = ar732
RANLIB_FOR_TARGET = true

View File

@ -0,0 +1,10 @@
# For Windows CE, we need to build the program that converts, copies,
# and renames the platform SDK files into gcc directories.
EXTRA_TARGET_HOST_ALL_MODULES:=$(EXTRA_TARGET_HOST_ALL_MODULES) all-utils
EXTRA_TARGET_HOST_INSTALL_MODULES:=$(EXTRA_TARGET_HOST_INSTALL_MODULES) install-utils
all-utils : all-libiberty
install-utils : all-libiberty

View File

@ -0,0 +1 @@
PICFLAG_FOR_TARGET=-fpic

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,721 @@
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-18 Release Manager
* GCC 3.2.1 Released.
2002-08-14 Release Manager
* GCC 3.2 Released.
2002-08-14 Mark Mitchell <mark@codesourcery.com>
* gennews (files): Add GCC 3.2 files.
2002-07-25 Release Manager
* GCC 3.1.1 Released.
2002-07-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gennews (files): Add proper files for the GCC 3.1 release series.
Simplify and reformat introductory wording.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-04-03 Zack Weinberg <zack@codesourcery.com>
* texi2pod.pl: Handle @end ftable and @end vtable.
2002-03-12 Zack Weinberg <zack@codesourcery.com>
* texi2pod.pl: Handle @include, @ftable, @vtable.
Reformat some code for clarity.
2002-02-24 Christian Jönsson <c.christian.joensson@telia.com>
* test_summary: Additional to XPASS and FAIL, add UNRESOLVED,
WARNING and ERROR output from the *.sum files.
2002-01-26 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gennews (files): Replace gcc-2.95/gcc-2.95.html,
gcc-2.95/gcc-2.95.1.html, gcc-2.95/gcc-2.95.2.html,
and gcc-2.95/gcc-2.95.3.html by gcc-2.95/index.html.
2002-01-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gennews (files): Replace egcs-1.1/egcs-1.1.2.html,
egcs-1.1/egcs-1.1.1.html, and egcs-1.1/egcs-1.1.html by
egcs-1.1/index.html.
2002-01-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* warn_summary: Add -ada subdirectory flag.
2001-12-12 Matthias Klose <doko@debian.org>
* texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows
generation of more than one man page from one source.
Add '-' to set of valid chars for an identifier.
Let -D option accept flags of the form <flag>=<value>.
Use \s+ for whitespace detection in '@c man' lines.
Handle @set and @clear independent of $output.
Substitute all @value{}'s in a line.
2001-11-14 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Handle @ifnottex, @iftex and @display. Handle @var
in verbatim blocks specially. Handle @unnumbered, @unnumberedsec
and @center. Allow [a-z] after @enumerate. Handle 0 and numbers
greater than 9 in enumerations.
2001-11-07 Laurent Guerby <guerby@acm.org>
* gcc_update (files_and_dependencies): Add Ada dependencies.
2001-10-08 Joseph S. Myers <jsm28@cam.ac.uk>
* snapshot: Remove.
2001-09-07 Richard Sandiford <rsandifo@redhat.com>
Revert:
* gcc_update: (files_and_dependencies) Add gcc/java/parse.c
gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to
touch.
2001-09-04 David.Billinghurst <David.Billinghurst@riotinto.com>
* gcc_update: (files_and_dependencies) Add gcc/java/parse.c
gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to
touch.
Mon Aug 13 02:29:08 CEST 2001 Jan Hubicka <jh@suse.cz>
* analyze_brprob: Update for changes in gcc debug output.
Sat Jul 28 22:37:49 CEST 2001 Jan Hubicka <jh@suse.cz>
* analyze_brprob: Avoid more overflows.
2001-07-27 Richard Henderson <rth@redhat.com>
* test_summary: Copy LAST_UPDATED UTC time to head of summary.
Fri Jul 27 18:01:21 CEST 2001 Jan Hubicka <jh@suse.cz>
* analyze_brprob: Avoid overflows.
2001-07-27 Richard Henderson <rth@redhat.com>
* gcc_update: Dump timestamp in LAST_UPDATED.
2001-07-26 Andreas Jaeger <aj@suse.de>,
Hans-Peter Nilsson <hp@bitrange.com>
* analyze_brprob: Fix documentation.
Mon Jul 23 15:47:19 CEST 2001 Jan Hubicka <jh@suse.cz>
* analyze_brprob: Fix awk compatibility problems; update comment.
2001-07-23 Andreas Jaeger <aj@suse.de>
* analyze_brprob: Fix more typos.
2001-07-23 Andreas Jaeger <aj@suse.de>
* analyze_brprob: Fix typos.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Handle @r inside @item.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* gcc_update: Remove entries for gcc.1, cpp.1, gcov.1.
2001-07-01 Zoltan Felleg <zfelleg@telnet.hu>
* warn_summary: Fix typo in a comment.
2001-06-14 Albert Chin-A-Young <china@thewrittenword.com>
* contrib/gcc_update: Fix timestamp on gcc/f/intdoc.texi.
2001-06-13 Mark Mitchell <mark@codesourcery.com>
* gennews: Set TERM to vt100 for Lynx.
2001-06-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* release: Remove.
Tue Jun 12 12:21:40 CEST 2001 Jan Hubicka <jh@suse.cz>
* analyze_brprob: New file.
2001-06-11 Mark Mitchell <mark@codesourcery.com>
* gcc_build: Output information about the commands used to
configure the compiler.
2001-06-07 Joseph S. Myers <jsm28@cam.ac.uk>
* gennews: Update for GCC 3.0.
2001-06-02 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc_update: Update for move of documentation to gcc/doc.
2001-05-28 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* contrib/test_summary (files): Sort before evaluating.
2001-05-23 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gcc_update (UPDATE_OPTIONS): Add -d to the default settings.
2001-05-21 Mark Mitchell <mark@codesourcery.com>
* gcc_build: Use -d when invoking gcc_update.
2001-05-18 Andreas Jaeger <aj@suse.de>
* gcc_update: Add rules for libf2c/libI77.
2001-05-17 Alexandre Oliva <aoliva@redhat.com>
* gcc_update (touch_files): Use simpler, yet as portable, syntax.
2001-05-14 Loren J. Rittle <ljrittle@acm.org>
* gcc_update (touch_files): Enhance make portability.
2001-05-14 Alexandre Oliva <aoliva@redhat.com>
* gcc_update (touch_files): Use a Makefile to touch files.
2001-05-03 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Add copyright and GPL notices.
2001-01-24 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Handle "\,".
2001-01-15 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Fix regular expression for @r to avoid exponential
recursion. From Russ Allbery <rra@stanford.edu>. Remove perl
version check.
2001-01-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* warn_summary (stageNfilter): Update for recent changes in
bootstrap logic.
2001-01-14 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Require at least perl 5.6.0.
2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc_update: Add gcc/gcc.1 to generated files.
* texi2pod.pl: Handle @r and @gccoptlist. Handle @gol. Handle
discarding to end of sentence with @xref where the sentence has an
interior "." in markup, and handle discarding parentheses around
such a sentence.
2001-01-11 Bernd Schmidt <bernds@redhat.com>
* gennews: Add gcc-2.95.3.
2001-01-10 Joseph S. Myers <jsm28@cam.ac.uk>
* texi2pod.pl: Handle @gcctabopt and @env in tables. Handle
@command. Format URLs and email addresses in bold.
2001-01-03 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc_update: Add cpp.1 to the list of generated files.
* texi2pod.pl: Handle @option and @env.
2001-01-03 Mike Stump <mrs@wrs.com>
* snapshot: Update to account for java libraries.
2000-12-28 Jeffrey Oldham <oldham@codesourcery.com>
* test_summary: Export filesuffix, not fileprefix.
2000-12-22 Joseph S. Myers <jsm28@cam.ac.uk>
* release: Change some EGCS references to GCC.
2000-12-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* warn_summary: Fix subdirectory filtering. Add -intl and -fixinc
subdirectory flags. Add source directory prefix filtering.
Redirect diagnostic output to stderr.
2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
* texi2pod.pl: If multiple @c man sections with the same tag
appear, concatenate them in the final output. When skipping,
ignore block commands that can't cause skipping, and honor
those that can. Ensure that verbatim blocks are separate
paragraphs.
2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc_update: Don't touch tradcif.c or java/parse.h.
2000-12-05 Zack Weinberg <zack@wolery.stanford.edu>
* texi2pod.pl: Restructure for comprehensibility, add
comments. Merge handling of @ignore and @ifxxx. Handle a
whole bunch more Texinfo commands. Use consistent formatting
style.
2000-12-04 Joseph S. Myers <jsm28@cam.ac.uk>
* gennews: New script.
2000-11-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gcc_update: Update a comment as we now require bison for CVS users.
2000-11-22 Joseph S. Myers <jsm28@cam.ac.uk>
* gcc_update: Add gcov.1 to the list of generated files.
2000-11-21 Mark Mitchell <mark@codesourcery.com>
* gcc_build: Remove code to put information in a log file.
2000-11-19 Zack Weinberg <zackw@stanford.edu>
* texi2pod.pl:
- Add real command line parsing.
- Support @ifset, @ifclear, @set, @value, -D switch.
- Support @sc. Improve handling of @ref and friends.
- Discard @subsection, @need, @node lines.
- Un-nest font changes to match texinfo semantics.
- Handle @{ and @}. Oops.
- Don't emit E<> directives inside verbatim blocks.
2000-11-12 Bruce Korb <bkorb@gnu.org>
* release: generalize the release script a bit.
Sat Nov 11 17:29:03 2000 Mark P Mitchell <mark@codesourcery.com>
* gcc_build: Add -o option for setting the objdir to use.
2000-11-11 Jeff Law <law@redhat.com>,
* release: New file.
2000-11-08 Jeff Law <law@redhat.com>,
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* snapshot: New file.
2000-11-08 Jeffrey Oldham <oldham@oz.codesourcery.com>
* gcc_build (bootstrap_gcc): New function.
(configure_gcc): Likewise.
(build_gcc): Rewritten to use configure and bootstrap.
(MAKE_BOOTSTRAP_OPTIONS): Replaced MAKE_OPTIONS.
2000-10-31 Mark Mitchell <mark@codesourcery.com>
* gcc_build (MAKE): New variable.
(build_gcc): Use it. Fix logging of errors.
(install_gcc): Likewise.
2000-10-29 Mark Mitchell <mark@codesourcery.com>
* gcc_build: Save the output from CVS into the logfile as well.
2000-10-25 Mark Mitchell <mark@codesourcery.com>
* gcc_build: Fix typos.
2000-10-14 Joseph S. Myers <jsm28@cam.ac.uk>
* gperf-2.7-19981006.pat: Remove.
2000-10-08 Joseph S. Myers <jsm28@cam.ac.uk>
* test_installed: Change EGCS references to refer to GCC.
2000-09-28 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gcc_update (touch_files): Add some informative output.
2000-09-16 Andreas Jaeger <aj@suse.de>
* gcc_update: Remove gcc/c-parse.gperf.
2000-08-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>,
Alexandre Oliva <aoliva@redhat.com>
* gcc_update: Execute touch_files_reexec even if `cvs update`
failed.
2000-08-09 Alexandre Oliva <aoliva@redhat.com>
* test_summary: AWK breaks with filenames containing `='.
Sun Jul 16 12:04:33 2000 Mark P Mitchell <mark@codesourcery.com>
* gcc_build: New script.
2000-07-13 Mark Mitchell <mark@codesourcery.com>
* gcc_update (files_and_dependencies): Remove generated YACC files.
2000-07-12 Mark Mitchell <mark@codesourcery.com>
* gcc_update (files_and_dependencies): Remove generated YACC files.
2000-06-04 Mark Mitchell <mark@codesourcery.com>
* newcvsroot: Handle filenames that contain spaces.
2000-06-03 Zack Weinberg <zack@wolery.cumb.org>
* test_summary: In generated script, use cat <<'EOF' not cat <<\EOF.
Elide --with-gcc-version-trigger and --norecursion from
configure flags. Remove code to report status of haifa scheduler.
2000-05-18 Alexandre Oliva <aoliva@cygnus.com>
* gcc_update (self): Set to `$0'.
(touch_files_reexec): Use `$self' instead of `$0'.
2000-05-12 Alexandre Oliva <aoliva@cygnus.com>
* gcc_update (touch_files_reexec): New function, run after the
tree is modified.
2000-05-08 Richard Hendeson <rth@cygnus.com>
* gcc_update: Remove references to inclhack.tpl.
2000-04-28 Jason Merrill <jason@casey.cygnus.com>
* index-prop: Use a single pattern. Also support *** cdiffs.
2000-04-28 Pavel Roskin <pavel_roskin@geocities.com>
* index-prop: Don't change /dev/null.
2000-04-27 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gcc_update: Refer to GCC and gcc_update instead of egcs and
egcs_update.
2000-04-26 Jonathan Larmour <jlarmour@redhat.co.uk>
* index-prop: Fix occasional problem when using cvs diff -p.
2000-04-18 Zack Weinberg <zack@wolery.cumb.org>
* gcc_update: Remove references to cexp.c/cexp.y.
1999-12-18 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* newcvsroot: Add check on the number of command-line arguments.
Add usage.
Sun Nov 28 00:41:44 1999 William Bader (william@nscs.fast.net)
* gcc_update: Allow patches compressed by bzip2.
1999-10-11 Martin v. Löwis <loewis@informatik.hu-berlin.de>
* newcvsroot: New file.
1999-09-11 Craig Burley <craig@jcb-sc.com>
* convert_to_f2c, convert_to_g2c, download_f2c: New file.
1999-08-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* gcc_update: New file.
* egcs_update: Renamed to gcc_update.
1999-08-09 Robert Lipe <robertlipe@usa.net>
* test_summary: Quote curly braces in 1999-07-03 change.
1999-07-28 Alexandre Oliva <oliva@dcc.unicamp.br>
* egcs_update (files_and_dependencies): Fixed typo in
gcc/cstamp-h.in. Added gcc/config.in.
1999-07-27 Alexandre Oliva <oliva@dcc.unicamp.br>
* egcs_update (files_and_dependencies): New function, with
complete list of files to be updated, as well as their
dependencies.
(touch_files): Check the timestamp of each generated file against
its dependencies'.
(main): New flags --touch, --list and --help. Remove the
pre-update step.
1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary: Replace egcs with gcc. Update e-mail address.
1999-07-05 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
Jerry Quinn <jquinn@nortelnetworks.com>
* egcs_update (touch_files, apply_patch): New functions.
Use them. New command-line option --patch. Split test of local
tree into two parts. Add comments.
1999-07-03 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary: If Target is `unix{*}', append the Target variants
to Host.
1999-06-12 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary: Set default mail-address and version for egcs
instead of relying on unpredictable pathnames.
Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>
Fri Apr 2 16:09:02 1999 Jeffrey A Law (law@cygnus.com)
* fixinc/*: Delete obsolete files.
1999-02-04 Robert Lipe <robertlipe@usa.net>
* egcs_update: Test return values of 'cvs update'. Propogate
to caller as exit values.
1999-01-25 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: Use "if" instead of "&&". Touch generated files
only after the corresponding *.y files.
1999-01-19 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: Do not use xargs, but a backquote construct.
1999-01-07 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary (version): Remove carriage return that gawk inserts
in the version string for some reason.
1998-11-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: Only touch files that already exist.
1998-11-29 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary (EOF): Remove double backslash.
Reported by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
1998-11-28 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary (address): Set to egcs-testresults mailing list.
1998-11-27 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary (address): Added Marc Lehmann's testsuite-results
to the default e-mail address.
1998-11-25 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary (-p, prepend_logs): Add these before the summary.
(Compiler, Platform): Print these just before configflags.
Sat Oct 31 10:53:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* warn_summary (longLineFilter): New shell function to encapsulate
this functionality. It is off by default, only active if -llf
flag is specified.
(subdirectoryFilter): Fix bug in filtering which made some
subdirectory warnings erroneously appear in the toplevel set.
(stageNfilter): Renamed from `stageNwarns'. Updated to collect
warnings from stage1 as well as stage0, which means warnings from
outside the bootstrap directory. Eg, the libraries, etc.
(warningFilter): New shell function to encapsulate this
functionality.
(keywordFilter): New shell function to encapsulate this
functionality.
Store data in a temp file rather than calculating it 3x. Arrange
to remove it on exit and signals.
Add -pass/-wpass flags to do "pass through" (i.e. manual
inspection) of bootstrap output from a particular stageN as well
as language subdirs.
Add better comments/documentation.
Sat Oct 31 16:39:31 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: Add comment about keeping the FAQ synchronized.
Fri Oct 30 00:39:27 1998 Jeffrey A Law (law@cygnus.com)
* egcs_update: Do touch java/parse.c and java/parse-scan.c. They're
in the repo again.
Fri Oct 16 07:35:00 1998 Bruce Korb <korb@datadesign.com>
* egcs_update: Added gcc/fixinc/* generated files to touch list.
Tue Oct 13 23:28:33 1998 Jeffrey A Law (law@cygnus.com)
* egcs_update: Remove gcc/java/parse.c from list of files to
touch.
Wed Oct 7 13:00:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gperf-2.7-19981006.pat: New file, patch for egcs-local gperf.
Mon Oct 5 14:19:48 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* warn_summary (subdirectoryFilter): New shell function to
optionally filter in/out gcc subdirectories when summarizing
warnings. Add new flags to support subdirectory filtering.
Also, ensure the bootstrap stage is a number. Add some more C
keywords that are preserved in the "warning type" summary and
tighten up the "arg ???" regexp.
Tue Sep 22 07:30 Bruce Korb <korb@datadesign.com>
* fixinc/inclhack.def: Not all C++ comments in C headers
were treated alike. They are now. Also fixed syntax
of sed expression in "systypes" fix.
* fixinc/inclhack.def: Removed SVR4.2-ism from shell invocation
* egcs_update: Added fixinc/* generated files to touch list.
Wed Sep 16 16:06:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* egcs_update: Additionally touch gcc/java/parse.[ch].
Thu Sep 9 16:48 Bruce Korb <korb@datadesign.com>
* fixinc/inclhack.def: Added two files required by
SCO's Open Server 5's avoid_bool fix.
Regenerated fixinc.x and inclhack.sh to incorporate
the update.
Thu Sep 3 10:11:32 1998 Robert Lipe <robertl@dgii.com>
* egcs_update: Do the pass 1 CVS update only for files that
may reasonably be under CVS control.
1998-08-14 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_installed: New script for testing already-installed
gcc/g++/g77.
Wed Aug 12 19:59:36 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: Assigned copyright to FSF.
Tue Aug 11 17:55:53 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
Alexandre Oliva <oliva@dcc.unicamp.br>
* egcs_update: New switch --nostdflags and documentation
enhancements.
Tue Aug 11 17:33:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* egcs_update: New script.
1998-08-05 Bruce Korb <korbb@datadesign.com>
* fixinc/Makefile
Added define for target machine so machine-specific tests
can be selected for or against.
* fixinc/fixincl.c
Added an array of string pointers to machines to select
or avoid, depending on a FD_MACH_IFNOT bit flag.
Used a shell script to match the defined TARGET_MACHINE
with any of the given match patterns.
* fixinc/fixincl.tpl
Generate the array of strings and bit flag, as needed,
depending on "mach" and "not_machine" attributes for a fix.
* fixinc/mkfixinc.sh
Invoke the make with TARGET assigned the value of the
machine name argument.
Mon Jul 27 22:08:12 1998 Mike Stump (mrs@wrs.com)
* compare_tests: New script.
1998-07-28 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary: Assigned copyright to FSF.
Mon Jul 27 20:33:02 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* test_summary: Corrected script name in comments providing
documentation. Added linebreaks for lines with > 80 characters.
Fri Jun 19 02:36:59 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
* test_summary: New switch, -i, and environment variable,
append_logs, for including files in the report.
1998-06-01 Manfred Hollstein <manfred@s-direktnet.de>
* warn_summary: Update to Kaveh's latest version allowing to
specify the last stage built.
1998-05-29 Bruce Korb <korbb@datadesign.com>
* fixinc/mkfixinc.sh
Changes to make it easier to invoke on platforms that
normally do not invoke fixincludes.
* fixinc/inclhack.def
Applied fixes from egcs/gcc/fixincludes from the past several
months.
1998-05-28 Bruce Korb <korbb@datadesign.com>
* fixinc/*: Updated most everything for a first real
try at getting "fast_fixincludes" working.
1998-05-28 Jason Merrill <jason@yorick.cygnus.com>
* index-prop: New file.
Sat May 23 23:38:49 1998 Matthias Klose <doko@cs.tu-berlin.de>
* test_summary: find good awk (copied from warn_summary).
Sat May 23 23:38:33 1998 Jeffrey A Law (law@cygnus.com)
* test_summary, warn_summary: New files

View File

@ -0,0 +1,146 @@
#!/usr/bin/awk -f
# Script to analyze experimental results of our branch prediction heuristics
# Contributed by Jan Hubicka, SuSE Inc.
# Copyright (C) 2001 Free Software Foundation, Inc.
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
#
# This script is used to calculate two basic properties of the branch prediction
# heuristics - coverage and hitrate. Coverage is number of executions of a given
# branch matched by the heuristics and hitrate is probability that once branch is
# predicted as taken it is really taken.
#
# These values are useful to determine the quality of given heuristics. Hitrate
# may be directly used in predict.c.
#
# Usage:
# Step 1: Compile and profile your program. You need to use -fprofile-arcs
# flag to get the profiles
# Step 2: Generate log files. The information about given heuristics are
# saved into *.life dumps. You need to pass the -df switch to the compiler as well
# as -fbranch-probabilities to get the results of profiling noted in the dumps.
# Ensure that there are no "Arc profiling: some edge counts were bad." warnings.
# Step 3: Run this script to concatenate all *.life files:
# analyze_brprob `find . -name *.life`
# the information is collected and print once all files are parsed. This
# may take a while.
# Note that the script does use bc to perform long arithmetic.
# Step 4: Read the results. Basically the following table is printed:
# (this is just an example from a very early stage of branch prediction pass
# development, so please don't take these numbers seriously)
#
#HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL)
#opcode 2889 83.7% 94.96%/ 97.62% 7516383 75.3%
#pointer 246 7.1% 99.69%/ 99.86% 118791 1.2%
#loop header 449 13.0% 98.32%/ 99.07% 43553 0.4%
#first match 3450 100.0% 89.92%/ 97.27% 9979782 100.0%
#loop exit 924 26.8% 88.95%/ 95.58% 9026266 90.4%
#error return 150 4.3% 64.48%/ 86.81% 453542 4.5%
#call 803 23.3% 51.66%/ 98.61% 3614037 36.2%
#loop branch 51 1.5% 99.26%/ 99.27% 26854 0.3%
#noreturn call 951 27.6% 100.00%/100.00% 1759809 17.6%
#
# The heuristic called "first match" is a heuristic used by GCC branch
# prediction pass and it predicts 89.92% branches correctly.
#
# The quality of heuristics can be rated using both, coverage and hitrate
# parameters. For example "loop branch" heuristics (predicting loopback edge
# as taken) have both very high hitrate and coverage, so it is very useful.
# On the other hand, "exit block" heuristics (predicting exit edges as not
# taken) have good hitrate, but poor coverage, so only 3 branches have been
# predicted. The "loop header" heuristic has problems, since it tends to
# misspredict.
#
# The implementation of this script is somewhat brute force. My awk skills
# are limited.
function longeval(e)
{
e = "echo \"scale = 2 ;"e"\" | bc"
e | getline res
close (e)
return res
}
BEGIN {nnames = 0}
/^ .* heuristics: .*.$/ {
name=$0
sub (/^ /,"",name)
sub (/ heuristics: .*.$/,"",name)
if (!(name in branches))
{
names[nnames] = name
branches[name]=0
counts[name]=0
hits[name]=0
phits[name]=0
nnames++
}
branches[name]+=1
}
/^ .* heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/ {
name=$0
sub (/^ /,"",name)
sub (/ heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/,"",name)
pred=$0
sub (/^ .* heuristics: /,"",pred)
sub (/. exec [0-9]* hit [0-9]* (.*.)$/,"",pred)
count=$0
sub (/^ .* heuristics: .*. exec /,"",count)
sub (/ hit [0-9]* (.*.)$/,"",count)
hit=$0
sub (/^ .* heuristics: .*. exec [0-9]* hit /,"",hit)
sub (/ (.*.)$/,"",hit)
if (int(pred) < 50.0)
{
hit = count"-"hit;
}
counts[name]=counts[name] "+" count
hits[name]=hits[name] "+" hit
phits[name]=phits[name] "+(("hit")<"count"/2)*("count"-("hit"))+(("hit")>="count"/2)*("hit")"
#BC crashes on long strings. Irritating.
if (length(counts[name]) > 2000)
counts[name] = longeval(counts[name])
if (length(hits[name]) > 2000)
hits[name] = longeval(hits[name])
if (length(phits[name]) > 2000)
phits[name] = longeval(phits[name])
}
END {
# Heuristics called combined predicts just everything.
maxcounts = longeval(counts["combined"])
maxbranches = branches["combined"]
max = names["combined"]
printf("HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL)\n")
for (i = 0; i < nnames ; i++)
{
name = names[i]
counts[name] = longeval(counts[name])
printf ("%-27s %8i %5.1f%% %6s%%/%6s%% %12s %5.1f%%\n",
name,
branches[name], branches[name] * 100 / maxbranches,
longeval("("hits[name]") * 100 /(" counts[name]"-0.00001)"),
longeval("("phits[name]") * 100 /(" counts[name]"-0.00001)"),
counts[name], longeval(counts[name]" * 100 / ("maxcounts"-0.00001)"))
}
}

View File

@ -0,0 +1,98 @@
#!/bin/sh
# This script automatically test the given tool with the tool's test cases,
# reporting anything of interest.
# exits with 1 if there is nothing of interest
# exits with 0 if there is something interesting
# exits with 2 if an error occurred
# Give two .sum files to compare them
# Written by Mike Stump <mrs@cygnus.com>
tmp1=/tmp/$tool-testing.$$a
tmp2=/tmp/$tool-testing.$$b
now_s=/tmp/$tool-testing.$$d
before_s=/tmp/$tool-testing.$$e
if [ "$2" = "" ]; then
echo "Usage: $0 previous current" >&2
exit 2
fi
sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" >$tmp1
sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" >$tmp2
before=$tmp1
now=$tmp2
trap "rm -f $tmp1 $tmp2 $now_s $before_s" 0 1 2 3 5 9 13 15
sort +0.4 "$now" > "$now_s"
sort +0.4 "$before" > "$before_s"
grep '^FAIL' "$now_s" | sed 's/^....: //' >$tmp1
grep '^PASS' "$before_s" | sed 's/^....: //' | comm -12 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "Tests that now fail, but worked before:"
echo
cat $tmp2
echo
fi
grep '^PASS' "$now_s" | sed 's/^....: //' >$tmp1
grep '^FAIL' "$before_s" | sed 's/^....: //' | comm -12 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "Tests that now work, but didn't before:"
echo
cat $tmp2
echo
fi
grep '^FAIL' "$now_s" | sed 's/^....: //' >$tmp1
grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^....: //' | comm -23 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "New tests that FAIL:"
echo
cat $tmp2
echo
fi
grep '^PASS' "$now_s" | sed 's/^....: //' >$tmp1
grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^....: //' | comm -23 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "New tests that PASS:"
echo
cat $tmp2
echo
fi
grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^....: //' >$tmp1
grep '^PASS' "$before_s" | sed 's/^....: //' | comm -13 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "Old tests that passed, that have disappeared: (Eeek!)"
echo
cat $tmp2
echo
fi
grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^....: //' >$tmp1
grep '^FAIL' "$before_s" | sed 's/^....: //' | comm -13 $tmp1 - >$tmp2
grep -s . $tmp2 >/dev/null
if [ $? = 0 ]; then
echo "Old tests that failed, that have disappeared: (Eeek!)"
echo
cat $tmp2
echo
fi

View File

@ -0,0 +1,48 @@
#!/bin/sh
#
# convert_to_f2c [g2c-dir]
#
# Renames certain files in a g2c (libg2c) directory so they no longer have the
# `.netlib' suffix, a la netlib's f2c distribution. If `g2c-dir' is not
# specified, `g2c-YYYYMMDD' is the default, where YYYYMMDD is the current
# date. The directory is renamed such that the first `g' becomes an `f',
# usually `g2c-YYYYMMDD' -> `f2c-YYYYMMDD'.
#
# (C) 1999 Free Software Foundation
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License. A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
set -e
if [ x$1 = x ]
then
dir=g2c-`date +%Y%m%d`
else
dir=$1
fi
newdir=`echo $dir | sed -e "s:g:f:"`
cd $dir
set +e
mv -i changes.netlib changes
mv -i disclaimer.netlib disclaimer
mv -i g2c.hin f2c.h
mv -i permission.netlib permission
mv -i readme.netlib readme
cd libF77
mv -i README.netlib README
mv -i makefile.netlib makefile
cd ../libI77
mv -i README.netlib README
mv -i makefile.netlib makefile
cd ..
cd ..
mv -iv $dir $newdir

View File

@ -0,0 +1,48 @@
#!/bin/sh
#
# convert_to_g2c [f2c-dir]
#
# Renames certain files in a netlib f2c directory so they have the `.netlib'
# suffix, a la g77's version of f2c (libg2c). If `f2c-dir' is not specified,
# `f2c-YYYYMMDD' is the default, where YYYYMMDD is the current date.
# The directory is renamed such that the first `f' becomes a `g',
# usually `f2c-YYYYMMDD' -> `g2c-YYYYMMDD'.
#
# (C) 1999 Free Software Foundation
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License. A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
set -e
if [ x$1 = x ]
then
dir=f2c-`date +%Y%m%d`
else
dir=$1
fi
newdir=`echo $dir | sed -e "s:f:g:"`
cd $dir
set +e
mv -i changes changes.netlib
mv -i disclaimer disclaimer.netlib
mv -i f2c.h g2c.hin
mv -i permission permission.netlib
mv -i readme readme.netlib
cd libF77
mv -i README README.netlib
mv -i makefile makefile.netlib
cd ../libI77
mv -i README README.netlib
mv -i makefile makefile.netlib
cd ..
cd ..
mv -iv $dir $newdir

View File

@ -0,0 +1,77 @@
#!/bin/sh
#
# download_f2c
#
# Unpacks a directory full of f2c stuff obtained from netlib, naming
# the directory f2c-YYYYMMDD (YYYYMMDD being the current date),
# leaving it in current working directory.
#
# This shell script downloads the tarball from netlib, unpacks everything,
# and strips off the redundant files, leaving a bare-bones (but fully
# reproducible) f2c source directory. (You must have yacc/bison to rebuild
# gram.c, by the way.)
#
# (C) 1999 Free Software Foundation
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License. A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
#
# FIXME: Replace WHOAMI with whatever is the canonical way to
# obtain the user's email address these days.
dir=f2c-`date +%Y%m%d`
if [ ! -d $dir ]
then
mkdir $dir
fi
cd $dir
echo Preparing $dir...
if [ ! -d tmp ]
then
mkdir tmp
fi
if [ ! -f tmp/f2c.tar ]
then
cd tmp
echo Downloading f2c.tar via ftp...
ftp -n netlib.bell-labs.com <<EOF
user ftp WHOAMI
type binary
cd netlib
get f2c.tar
quit
EOF
cd ..
fi
echo Unpacking f2c.tar...
tar xf tmp/f2c.tar
cd f2c
find . -name "*.gz" -print | sed -e "s:^\(.*\).gz:rm -f \1.Z:g" | sh
mv src libf77.gz libi77.gz f2c.1t.gz f2c.h.gz changes.gz disclaimer.gz readme.gz permission.gz ..
cd ..
rm -fr f2c
gunzip *.gz
(cd src; rm -f MD5 MD5.gz gram.c.gz .depend .depend.gz f2c.1.gz index.html index.html.gz; gunzip *.gz)
sh libf77 > /dev/null && rm libf77
rm -f libF77/xsum0.out libF77/libF77.xsum
sh libi77 > /dev/null && rm libi77
rm -f libI77/xsum0.out libI77/libI77.xsum
rm -f src/xsum0.out
touch src/xsum.out
cmp f2c.h src/f2c.h && rm -fv src/f2c.h
cmp src/readme src/README && rm -fv src/readme
echo Deleting f2c.tar...
rm tmp/f2c.tar
rmdir tmp
cd ..
echo Latest f2c now in $dir.

316
contrib/gcc/contrib/gcc_build Executable file
View File

@ -0,0 +1,316 @@
#! /bin/sh
########################################################################
#
# File: gcc_build
# Author: Mark Mitchell
# Date: 07/10/2000
#
# Contents:
# Script to automatically download and build GCC.
#
# Copyright (c) 2000, 2001 Free Software Foundation.
#
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
########################################################################
########################################################################
# Notes
########################################################################
# If you are using password-based CVS, you must manually log in, and
# not log out from, the CVS server before running this script.
# You can set the following variables in the environment. They
# have no corresponding command-line options because they should
# only be needed infrequently:
#
# MAKE The path to `make'.
########################################################################
# Functions
########################################################################
# Issue the error message given by $1 and exit with a non-zero
# exit code.
error() {
echo "gcc_build: error: $1"
exit 1
}
# Issue a usage message explaining how to use this script.
usage() {
cat <<EOF
gcc_build [-c configure_options]
[-d destination_directory]
[-m make_boot_options]
[-o objdir]
[-u username]
[-p protocol]
[-t tarfile]
[bootstrap]
[build]
[checkout]
[configure]
[export]
[install]
[test]
[update]
EOF
exit 1
}
# Change to the directory given by $1.
changedir() {
cd $1 || \
error "Could not change directory to $1"
}
# Set up CVS environment variables
cvs_setup() {
CVSROOT=":${CVS_PROTOCOL}:${CVS_USERNAME}@"
CVSROOT="${CVSROOT}${CVS_SERVER}:${CVS_REPOSITORY}"
export CVSROOT
}
# Checkout a fresh copy of the GCC build tree.
checkout_gcc() {
# Tell CVS where to find everything.
cvs_setup
# If the destination already exists, don't risk destroying it.
test -e ${DESTINATION} && \
error "${DESTINATION} already exists"
# CVS doesn't allow an absolute path for the destination directory.
DESTINATION_PARENT=`dirname ${DESTINATION}`
test -d ${DESTINATION_PARENT} || \
error "${DESTINATION_PARENT} is not a directory"
changedir ${DESTINATION_PARENT}
# Checkout the tree
cvs -z 9 co -d `basename ${DESTINATION}` gcc || \
error "Could not check out GCC"
}
# Update GCC.
update_gcc() {
# Tell CVS where to find everything
cvs_setup
# If the destination does not already exist, complain.
test -d ${DESTINATION} || \
error "{$DESTINATION} does not exist"
# Enter the destination directory.
changedir ${DESTINATION}
# Update the tree
./contrib/gcc_update -d || \
error "Could not update GCC"
}
# Configure for a build of GCC.
configure_gcc() {
# Go to the source directory.
changedir ${DESTINATION}
# Remove the object directory.
rm -rf ${OBJDIR}
# Create it again.
mkdir ${OBJDIR} || \
error "Could not create ${OBJDIR}"
# Enter it.
changedir ${OBJDIR}
# Configure the tree.
echo "Configuring: ${DESTINATION}/configure ${CONFIGURE_OPTIONS}"
eval ${DESTINATION}/configure ${CONFIGURE_OPTIONS} || \
error "Could not configure the compiler"
}
# Bootstrap GCC. Assume configuration has already occurred.
bootstrap_gcc() {
# Go to the source directory.
changedir ${DESTINATION}
# Go to the object directory.
changedir ${OBJDIR}
# Bootstrap the compiler
echo "Building: ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap"
eval ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap || \
error "Could not bootstrap the compiler"
}
# Test GCC.
test_gcc() {
# Go to the source directory.
changedir ${DESTINATION}
# Go to the object directory.
changedir ${OBJDIR}
echo "Running tests... This will take a while."
${MAKE} -k check
${DESTINATION}/contrib/test_summary
}
# Export the GCC source tree.
export_gcc() {
# Go to the source directory.
changedir ${DESTINATION}
# Go up one level.
changedir ..
# Build a tarball of the source directory.
tar czf ${TARFILE} \
--exclude=${OBJDIR} \
--exclude=CVS \
--exclude='.#*' \
--exclude='*~' \
`basename ${DESTINATION}`
}
# Install GCC.
install_gcc() {
# Go to the source directory.
changedir ${DESTINATION}
# Go to the object directory.
changedir ${OBJDIR}
${MAKE} install || error "Installation failed"
}
########################################################################
# Initialization
########################################################################
# The CVS server containing the GCC repository.
CVS_SERVER="gcc.gnu.org"
# The path to the repository on that server.
CVS_REPOSITORY="/cvs/gcc"
# The CVS protocol to use.
CVS_PROTOCOL="pserver"
# The username to use when connecting to the server.
CVS_USERNAME="anoncvs"
# The directory where the checked out GCC will be placed.
DESTINATION="${HOME}/dev/gcc"
# The relative path from the top of the source tree to the
# object directory.
OBJDIR="objdir"
# The file where the tarred up sources will be placed.
TARFILE="${HOME}/dev/gcc.tgz"
# Options to pass to configure.
CONFIGURE_OPTIONS=
# The `make' program.
MAKE=${MAKE:-make}
# Options to pass to make.
MAKE_BOOTSTRAP_OPTIONS=
# Modes of operation
BOOTSTRAP=0
CHECKOUT=0
CONFIGURE=0
EXPORT=0
INSTALL=0
TEST=0
UPDATE=0
########################################################################
# Main Program
########################################################################
# Parse the options.
while getopts "c:d:m:o:p:t:u:" ARG; do
case $ARG in
c) CONFIGURE_OPTIONS="${OPTARG}";;
d) DESTINATION="${OPTARG}";;
m) MAKE_BOOTSTRAP_OPTIONS="${OPTARG}";;
o) OBJDIR="${OPTARG}";;
p) CVS_PROTOCOL="${OPTARG}";;
t) CVS_TARGFILE="${OPTARG}";;
u) CVS_USERNAME="${OPTARG}";;
\?) usage;;
esac
done
shift `expr ${OPTIND} - 1`
# Handle the major modes.
while [ $# -ne 0 ]; do
case $1 in
bootstrap) BOOTSTRAP=1;;
build) CONFIGURE=1; BOOTSTRAP=1;;
checkout) CHECKOUT=1;;
configure) CONFIGURE=1;;
export) EXPORT=1;;
install) INSTALL=1;;
test) TEST=1;;
update) UPDATE=1;;
*) usage;;
esac
shift
done
# Check the arguments for sanity.
if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; then
error "Cannot checkout and update simultaneously"
fi
# Checkout the tree.
if [ ${CHECKOUT} -ne 0 ]; then
checkout_gcc
elif [ ${UPDATE} -ne 0 ]; then
update_gcc
fi
# Configure to build the tree.
if [ ${CONFIGURE} -ne 0 ]; then
configure_gcc
fi
# Bootstrap the compiler.
if [ ${BOOTSTRAP} -ne 0 ]; then
bootstrap_gcc
fi
# Test the compiler
if [ ${TEST} -ne 0 ]; then
test_gcc
fi
# Install the compiler.
if [ ${INSTALL} -ne 0 ]; then
install_gcc
fi
# Export the sources
if [ ${EXPORT} -ne 0 ]; then
export_gcc
fi

226
contrib/gcc/contrib/gcc_update Executable file
View File

@ -0,0 +1,226 @@
#! /bin/sh
#
# Update a local CVS tree from the GCC repository, with an emphasis
# on treating generated files correctly, so that autoconf, gperf et
# al are not required for the ``end'' user.
#
# By default all command-line options are passed to `cvs update` in
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
# are omitted.
#
# If the first parameter reads --patch, the second parameter is considered
# a patch file.
#
# If the first parameter is --touch, no cvs operation will be performed,
# only generated files that appear to be out of date in the local tree
# will be touched.
#
# If the first parameter is --list, a list of the generated files and
# their dependencies will be printed; --help prints this message.
#
# Examples:
#
# contrib/gcc_update -r gcc_latest_snapshot
# contrib/gcc_update -A
# contrib/gcc_update --nostdflags -P -r gcc-2_95-branch gcc/testsuite
# contrib/gcc_update --patch some-patch
# contrib/gcc_update --touch
# contrib/gcc_update --list
#
#
# (C) 1998, 1999, 2000, 2001 Free Software Foundation
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
#
# This script is Free Software, and it can be copied, distributed and
# modified as defined in the GNU General Public License. A copy of
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
# Default options used when updating via CVS.
UPDATE_OPTIONS=-Pd
# Use -P to prune empty directories.
# Use -d to create any directories that exist in the repository but not
# locally.
# Use -A to reset any sticky tags, dates, or `-k' options.
######## Anything below shouldn't be changed by regular users.
# Arrange for the value of $0 to be available for functions
self=$0
# This function prints a list of all generated files, along with their
# dependencies. Note that only one target is supported per line: the
# colon is stripped from the output.
files_and_dependencies () {
sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF
# All automake dependencies within texinfo
# In fact, not all, since we do not care about sub-directories that
# we do not build. In particular, *.po and *.gmo are not touched.
texinfo/aclocal.m4: texinfo/configure.in texinfo/acinclude.m4
texinfo/Makefile.in: texinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
texinfo/configure: texinfo/configure.in texinfo/aclocal.m4
texinfo/stamp-h.in: texinfo/configure.in texinfo/aclocal.m4 texinfo/acconfig.h
texinfo/lib/Makefile.in: texinfo/lib/Makefile.am texinfo/configure.in texinfo/aclocal.m4
texinfo/makeinfo/Makefile.in: texinfo/makeinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
texinfo/util/Makefile.in: texinfo/util/Makefile.am texinfo/configure.in texinfo/aclocal.m4
# Now, proceed to gcc automatically generated files
gcc/configure: gcc/configure.in
gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h
gcc/config.in: gcc/cstamp-h.in
gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
# And then, language-specific files
gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def
gcc/ada/treeprs.ads: gcc/ada/treeprs.adt gcc/ada/sinfo.ads gcc/ada/xtreeprs.adb
gcc/ada/einfo.h: gcc/ada/einfo.ads gcc/ada/einfo.adb gcc/ada/xeinfo.adb
gcc/ada/sinfo.h: gcc/ada/sinfo.ads gcc/ada/xsinfo.adb
gcc/ada/nmake.adb: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
gcc/ada/nmake.ads: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
# And libraries, at last
libchill/configure: libchill/configure.in
libf2c/configure: libf2c/configure.in
libf2c/libF77/configure: libf2c/libF77/configure.in
libf2c/libI77/configure: libf2c/libI77/configure.in
libf2c/libI77/stamp-h.in: libf2c/libI77/configure.in
libf2c/libI77/config.h.in: libf2c/libI77/configure.in libf2c/libI77/stamp-h.in
libf2c/libU77/configure: libf2c/libU77/configure.in
libf2c/libU77/stamp-h.in: libf2c/libU77/configure.in libf2c/libU77/acconfig.h
libobjc/configure: libobjc/configure.in
# fastjar
fastjar/aclocal.m4: fastjar/configure.in
fastjar/Makefile.in: fastjar/Makefile.am fastjar/configure.in fastjar/aclocal.m4
fastjar/configure: fastjar/configure.in fastjar/aclocal.m4
fastjar/stamp-h.in: fastjar/configure.in fastjar/aclocal.m4
boehm-gc/aclocal.m4: boehm-gc/configure.in boehm-gc/acinclude.m4
boehm-gc/Makefile.in: boehm-gc/Makefile.am boehm-gc/configure.in boehm-gc/aclocal.m4
boehm-gc/configure: boehm-gc/configure.in boehm-gc/aclocal.m4
libjava/aclocal.m4: libjava/configure.in libjava/acinclude.m4
libjava/Makefile.in: libjava/Makefile.am libjava/configure.in libjava/aclocal.m4
libjava/configure: libjava/configure.in libjava/aclocal.m4
libjava/libltdl/aclocal.m4: libjava/libltdl/configure.in libjava/libltdl/acinclude.m4
libjava/libltdl/Makefile.in: libjava/libltdl/Makefile.am libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
libjava/libltdl/configure: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
libjava/libltdl/stamp-h.in: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4 libjava/libltdl/acconfig.h
EOF
}
# This function touches generated files such that the ``end'' user does
# not have to rebuild them.
touch_files () {
rm -f Makefile.$$
echo 'all: \' > Makefile.$$
files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
echo '; @true' >> Makefile.$$
files_and_dependencies | sed 's, ,: ,' >> Makefile.$$
files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
echo ':' >> Makefile.$$
echo ' @for f in $?; do test -f $$f || exit 0; done; \' >> Makefile.$$
echo ' echo Touching $@...; \' >> Makefile.$$
echo ' echo Touching $@... 1>&2; \' >> Makefile.$$
echo ' touch $@' >> Makefile.$$
files_and_dependencies | sed 's,[^ ]* ,,;s,$, :,' >> Makefile.$$
while ${MAKE-make} -f Makefile.$$ all | grep . > /dev/null; do
sleep 1
done 2>&1
rm -f Makefile.$$
}
# Whenever we update the tree or install a patch, we may be modifying
# this script. By re-execing it, we ensure that the appropriate
# dependencies and rules will be used.
touch_files_reexec () {
echo "Adjusting file timestamps"
exec ${CONFIG_SHELL-/bin/sh} $self --touch
}
# This functions applies a patch to an existing tree.
apply_patch () {
if [ -f $1 ]; then
echo "Applying patch file $1"
case "$1" in
*gz)
gzip -d -c $1 | patch -p1 ;;
*bz2)
bzip2 -d -c $1 | patch -p1 ;;
*)
cat $1 | patch -p1 ;;
esac
fi
touch_files_reexec
}
# Check whether this indeed looks like a local tree.
if [ ! -f gcc/version.c ]; then
echo "This does not seem to be a GCC tree!"
exit
fi
case "$1" in
# First of all, check whether we are going to process a patch.
--patch)
if test "$#" != 2; then
echo "$1" expects only one argument >&2
exit 1
fi
apply_patch "${2}"
exit $?
;;
--touch)
if test "$#" != 1; then
echo "$1" does not expect any argument >&2
exit 1
fi
touch_files
exit $?
;;
--list)
if test "$#" != 1; then
echo "$1" does not expect any argument >&2
exit 1
fi
files_and_dependencies | sed 's/ /: /'
exit $?
;;
--help)
sed -e '1,2d' -e '/^UPDATE_OPTIONS=/{i\
\
p
}' \
-e '/^$/,$d' -e 's/#//' -e 's/^ //' < $0
exit $?
;;
esac
# Check whether this indeed looks like a local CVS tree.
if [ ! -d CVS ]; then
echo "This does not seem to be a GCC CVS tree!"
exit
fi
# Check command-line options
if [ x"${1}"x = x"--nostdflags"x ]; then
shift
else
set -- $UPDATE_OPTIONS ${1+"$@"}
fi
echo "Updating CVS tree"
cvs -q update ${1+"$@"}
if [ $? -ne 0 ]; then
(touch_files_reexec)
echo "CVS update of full tree failed." >&2
exit 1
fi
{
date
TZ=UTC date
} > LAST_UPDATED
touch_files_reexec

View File

@ -0,0 +1,84 @@
;;; gccbug.el --- forward bug reports to gnats
;; (C) 2000 Free Software Foundation
;; Written by Martin v. Löwis
;; Usage:
;; In rmail, bind a key to rmail-gccbug-reply, e.g.
;; (require 'rmail)
;; (require 'gccbug)
;; (define-key rmail-mode-map "R" 'rmail-gccbug-reply)
;; Then, when reviewing a report, type R to create a gnats-formatted
;; message.
(provide 'gccbug)
(defun gccbug-reply ()
(interactive)
(let ((orig-yank-prefix mail-yank-prefix))
(insert ">Submitter-Id: net\n")
(insert ">Originator: \n")
(insert ">Confidential: no\n")
(insert ">Synopsis: ")
(save-excursion
(mail-subject)
(let ((stop (point)))
(re-search-backward "Re: ")
(copy-region-as-kill (match-end 0) stop)))
(yank)
(insert "\n")
(insert ">Severity: serious\n")
(insert ">Priority: medium\n")
(insert ">Category: \n")
(insert ">Class: \n")
;(insert ">State: analyzed\n")
(insert ">Release: 2.95.2\n")
(insert ">Environment:\n")
(insert ">Description:\n")
(set 'mail-yank-prefix nil)
(set 'mail-yank-ignored-headers
"^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^summary-line:\\|^to:\\|^subject:\\|^in-reply-to:\\|^return-path:\\|^X-.*:\\|^User-Agent:\\|^MIME-Version:\\|^Content-.*:\\|^List-.*:\\|C[Cc]:\\|^Precedence:\\|^Sender:\\|^Mailing-List:\\|^Delivered-To:\\|^>From")
(mail-yank-original t)
(set 'mail-yank-prefix orig-yank-prefix)
; Copy From: field to Originator:
(re-search-backward "From: ")
(let ((beg (match-end 0)))
(end-of-line)
(kill-region beg (point)))
(re-search-backward ">Originator: ")
(goto-char (match-end 0))
(yank)
; Kill From: line
(re-search-forward "From:")
(beginning-of-line)
(kill-line 1)
; Replace Message-ID: with Original-Message-ID
(beginning-of-buffer)
(re-search-forward "Message-ID: .*")
(replace-match "Original-\\&")
; Replace To: line, adding recipient to Notify list
(mail-to)
(re-search-backward "To: ")
(replace-match "To: gcc-gnats@gcc.gnu.org\nX-GNATS-Notify: ")
; add additional fields
(end-of-buffer)
(insert ">How-To-Repeat: \n>Fix: \n")
; See whether an Organization: is present
(let ((org (re-search-backward "Organization:.*" nil t)))
(if org
(progn
(kill-region (point) (match-end 0))
(re-search-backward ">Confidential")
(insert ">")
(yank)
(insert "\n"))))
; This kills CC: lines, but rmail-reply below won't create any
; (mail-cc)
; (beginning-of-line)
; (kill-line 1)
))
(defun rmail-gccbug-reply ()
(interactive)
(rmail-toggle-header 0)
(rmail-reply t)
(gccbug-reply))

56
contrib/gcc/contrib/gennews Executable file
View File

@ -0,0 +1,56 @@
#! /bin/sh
#
# Script to generate the NEWS file from online release notes.
# Contributed by Joseph Myers <jsm28@cam.ac.uk>.
#
# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
# This file is part of GNU CC.
#
# GNU CC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU CC; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
website=http://gcc.gnu.org/
files="gcc-3.2/index.html gcc-3.2/changes.html
gcc-3.1/index.html gcc-3.1/changes.html
gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
egcs-1.0/egcs-1.0.3.html egcs-1.0/egcs-1.0.2.html egcs-1.0/egcs-1.0.1.html
egcs-1.0/egcs-1.0.html egcs-1.0/features.html egcs-1.0/caveats.html"
set -e
cat <<EOF
This file contains information about GCC releases which has been generated
automatically from the online release notes. It covers releases of GCC
(and the former EGCS project) since EGCS 1.0, on the line of development
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
see ONEWS.
EOF
header="======================================================================"
echo $header
for file in $files; do
wfile=$website$file
echo $wfile
# We lie to Lynx about the kind of terminal in use because we
# want to get consistent output everywhere, and we want this
# script to work even when it is not run interactively.
env TERM=vt100 lynx -dump $wfile
echo $header
done

26
contrib/gcc/contrib/index-prop Executable file
View File

@ -0,0 +1,26 @@
#! /usr/bin/perl -wi
# Fix up the output of cvs diff -c so that it works with patch.
# We do this by propagating the full pathname from the Index: line
# into the diff itself.
#
# Thrown together by Jason Merrill <jason@cygnus.com>
while (<>)
{
if (/^Index: (.*)/)
{
$full = $1;
print;
for (1..7)
{
$_ = <>;
s/^([-+*]{3}) [^\t]+\t/$1 $full\t/
unless m{ /dev/null\t};
print;
}
}
else
{
print;
}
}

34
contrib/gcc/contrib/newcvsroot Executable file
View File

@ -0,0 +1,34 @@
#! /usr/bin/env bash
# Written by Roland McGrath <roland@gnu.org>
# Replaces all CVS/Root and CVS/Repository files in a checked-out CVS
# tree. Requires shell with # and % variable substitution (e.g. bash).
# Usage: newcvsroot <newroot> <modulename> <toplevel directory>
if [ $# != 3 ]; then
echo "usage: `basename $0` <newroot> <modulename> <toplevel directory>"
exit 1
fi
root=$1; shift
module=$1; shift
topdir=$1; shift
rep=${root##*:}
case "$topdir" in
/*|./*|../*) echo >&2 "$0 wants relative path from top of checkout"; exit 1;;
esac
find $topdir \( -name Repository -o -name Root \) -print | while read f; do
case "$f" in
*/CVS/Root) echo $root > "$f" ;;
*/CVS/Repository)
r=${module}${f#${topdir}}
echo > "$f" $rep/${r%/CVS/Repository}
;;
esac
done

View File

@ -0,0 +1,37 @@
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-19 Release Manager
* GCC 3.2.1 Released.
2002-11-18 Release Manager
* GCC 3.2.1 Released.
2002-08-14 Release Manager
* GCC 3.2 Released.
2002-07-25 Release Manager
* GCC 3.1.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-05-14 Release Manager
* GCC 3.1 Released.
2002-01-31 Geoffrey Keating <geoffk@redhat.com>
* btest-gcc.sh: New file.
* objs-gcc.sh: New file.
* site.exp: New file.
* ChangeLog: New file.
* README: New file.

View File

@ -0,0 +1,18 @@
This directory contains scripts that are used by the regression
tester, <http://people.redhat.com/geoffk/gcc-regression/>.
The primary script is 'btest-gcc.sh'. This is the script that is run
to actually test the compiler.
'objs-gcc.sh' takes a combined tree and builds (but does not test) the
tools required for 'btest-gcc.sh'. It is run periodically to update
the tools. This script is followed by running 'btest-gcc.sh' using
the newly-build tools to check that they will not cause regressions.
'site.exp' is what $DEJAGNU points to when the regression tester runs
these scripts.
Note that any changes made here need to be approved by the regression
tester's maintainer (see MAINTAINERS). The changes will be used on
the tester's next run, so `experimental' changes are very strongly
discouraged :-).

View File

@ -0,0 +1,172 @@
#!/bin/sh
# Test GCC.
# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# INPUT:
# btest <target> <source> <prefix> <state> <build>
# TARGET is the target triplet. It should be the same one
# as used in constructing PREFIX.
TARGET=$1
# SOURCE is the directory containing the toplevel configure.
SOURCE=$2
# PREFIX is the directory for the --prefix option to configure.
# For cross compilers, it needs to contain header files,
# libraries, and binutils. PATH should probably include
# $PREFIX/bin.
PREFIX=$3
# This script also needs to include the GDB testsuite in
# $PREFIX/share/gdb-testsuite.
GDB_TESTSUITE=$PREFIX/share/gdb-testsuite
# STATE is where the tester maintains its internal state,
# described below.
STATE=$4
# BUILD is a temporary directory that this script will
# delete and recreate, containing the build tree.
BUILD=$5
# you also probably need to set these variables:
# PATH: should contain a native gcc, and a cross gdb.
# DEJAGNU: should point to a site.exp suitable for testing
# the compiler and debugger.
# OUTPUT: in $RESULT, one of the following keywords:
# error the script failed due to
# a misconfiguration or resource limitation
# build the build failed
# regress-<n> the build succeeded, but there were <n>
# testsuite regressions, listed in $REGRESS
# pass build succeeded and there were no regressions
RESULT=$STATE/RESULT
# in BUILD_LOG, the output of the build
BUILD_LOG=$STATE/build_log
# in FAILED, a list of failing testcases
FAILED=$STATE/failed
# in PASSES, the list of testcases we expect to pass
PASSES=$STATE/passes
# in REGRESS, a list of testcases we expected to pass but that failed
REGRESS=$STATE/regress
# Make sure various files exist.
[ -d $STATE ] || mkdir $STATE
[ -f $PASSES ] || touch $PASSES
# These lines should stay in this order, because
# that way if something is badly wrong and $RESULT can't
# be modified then cron will mail the error message.
# The reverse order could lead to the testsuite claiming that
# everything always passes, without running any tests.
echo error > $RESULT || exit 1
exec > $BUILD_LOG 2>&1 || exit 1
set -x
# Nuke $BUILD and recreate it.
rm -rf $BUILD $REGRESS $FAILED
mkdir $BUILD || exit 1
cd $BUILD || exit 1
H_BUILD=`$SOURCE/config.guess || exit 1`
H_HOST=$H_BUILD
if [ $TARGET = native ] ; then
H_TARGET=$H_HOST
else
H_TARGET=$TARGET
fi
H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1`
# TESTLOGS is the list of dejagnu .sum files that the tester should
# look at.
TESTLOGS="gcc/testsuite/gcc.sum
gcc/testsuite/g++.sum
gcc/testsuite/g77.sum
gcc/testsuite/objc.sum
test-gdb/gdb.sum"
# $H_TARGET/libstdc++-v3/testsuite/libstdc++-v3.sum
# Build.
echo build > $RESULT
$SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1
if [ $H_HOST = $H_TARGET ] ; then
if ! make bootstrap ; then
[ -s gcc/.bad_compare ] || exit 1
cat gcc/.bad_compare >> $REGRESS || exit 1
make all || exit 1
fi
else
make || exit 1
fi
echo error > $RESULT || exit 1
# Test GCC against its internal testsuite.
make -k check-gcc
# Test libstd++-v3
make check-target-libstdc++-v3
# Test the just-built GCC with the GDB testsuite.
mkdir test-gdb || exit 1
cd $GDB_TESTSUITE || exit 1
for i in gdb.* ; do
if [ -d $i ] ; then
mkdir $BUILD/test-gdb/$i
fi
done
cd $BUILD/test-gdb || exit 1
echo "set host_alias $H_HOST" > site.exp
echo "set host_triplet $H_HOST" >> site.exp
echo "set target_alias $H_TARGET" >> site.exp
echo "set target_triplet $H_REAL_TARGET" >> site.exp
echo "set build_alias $H_BUILD" >> site.exp
echo "set build_triplet $H_BUILD" >> site.exp
echo "set srcdir $GDB_TESTSUITE" >> site.exp
runtest --tool gdb
# Sanity-check the testlogs. They should contain at least one PASS.
cd $BUILD || exit 1
for LOG in $TESTLOGS ; do
if ! grep ^PASS: $LOG > /dev/null ; then
echo build > $RESULT
exit 1
fi
done
# Work out what failed
for LOG in $TESTLOGS ; do
L=`basename $LOG`
awk '/^FAIL: / { print "'$L'",$2; }' $LOG || exit 1
done | sort | uniq > $FAILED || exit 1
comm -12 $FAILED $PASSES >> $REGRESS || exit 1
NUMREGRESS=`wc -l < $REGRESS | tr -d ' '`
if [ $NUMREGRESS -ne 0 ] ; then
echo regress-$NUMREGRESS > $RESULT
exit 1
fi
# It passed. Update the state.
for LOG in $TESTLOGS ; do
L=`basename $LOG`
awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1
done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1
[ -s ${PASSES}~ ] || exit 1
mv ${PASSES}~ ${PASSES} || exit 1
echo pass > $RESULT
exit 0

View File

@ -0,0 +1,121 @@
#!/bin/sh
# Build tools for testing GCC.
# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# INPUT:
# btest <target> <source> <prefix> <state> <build>
# TARGET is the target triplet. It should be the same one
# as used in constructing PREFIX.
TARGET=$1
# SOURCE is the directory containing the toplevel configure.
SOURCE=$2
# PREFIX is the directory for the --prefix option to configure.
PREFIX=$3
# STATE is where the tester maintains its internal state,
# described below.
STATE=$4
# BUILD is a temporary directory that this script will
# delete and recreate, containing the build tree.
BUILD=$5
# you also probably need to set these variables:
# DEJAGNU: should point to a site.exp suitable for testing
# the compiler and debugger.
# OUTPUT: in $RESULT, one of the following keywords:
# error the script failed due to
# a misconfiguration or resource limitation
# build the build failed
# regress-<n> the build succeeded, but there were <n>
# testsuite regressions, listed in $REGRESS
# pass build succeeded and there were no regressions
RESULT=$STATE/RESULT
# in BUILD_LOG, the output of the build
BUILD_LOG=$STATE/build_log
# in FAILED, a list of failing testcases
FAILED=$STATE/failed
# in PASSES, the list of testcases we expect to pass
PASSES=$STATE/passes
# in REGRESS, a list of testcases we expected to pass but that failed
REGRESS=$STATE/regress
# Make sure various files exist.
[ -d $STATE ] || mkdir $STATE
[ -f $PASSES ] || touch $PASSES
# These lines should stay in this order, because
# that way if something is badly wrong and $RESULT can't
# be modified then cron will mail the error message.
# The reverse order could lead to the testsuite claiming that
# everything always passes, without running any tests.
echo error > $RESULT || exit 1
exec > $BUILD_LOG 2>&1 || exit 1
set -x
# TESTLOGS is the list of dejagnu .sum files that the tester should
# look at.
TESTLOGS="test/gcc/gcc.sum
test/g++/g++.sum"
# Nuke $BUILD and recreate it.
rm -rf $BUILD $REGRESS $FAILED
mkdir $BUILD $BUILD/build $BUILD/objs || exit 1
cd $BUILD || exit 1
# This script used to use config.guess, but that is not how releng
# determines hostnames.
H_BUILD=`$SOURCE/config.guess || exit 1`
H_HOST=$H_BUILD
if [ $TARGET = native ] ; then
H_TARGET=$H_HOST
else
H_TARGET=$TARGET
fi
H_REAL_TARGET=`$SOURCE/config.sub $H_TARGET || exit 1`
H_REAL_BUILD=`$SOURCE/config.sub $H_BUILD || exit 1`
H_REAL_HOST=`$SOURCE/config.sub $H_HOST || exit 1`
# Build.
echo build > $RESULT
cd $BUILD/build || exit 1
TMP_PREFIX=$BUILD/install
$SOURCE/configure --prefix=$PREFIX --target=$H_TARGET || exit 1
if [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-gnu ]
then
make all-gdb all-dejagnu all-ld || exit 1
make install-gdb install-dejagnu install-ld || exit 1
else
make || exit 1
make install || exit 1
fi
mkdir -p $PREFIX/share/gdb-testsuite || exit 1
cd $SOURCE/gdb/testsuite || exit 1
find . -print | cpio -pdmu $PREFIX/share/gdb-testsuite || exit 1
# selftest.exp requires keeping old sources around, which is impractical
rm $PREFIX/share/gdb-testsuite/gdb.base/selftest.exp
# these tests seem to be broken and randomly failing
rm -r $PREFIX/share/gdb-testsuite/gdb.mi
echo pass > $RESULT
exit 0

Some files were not shown because too many files have changed in this diff Show More