Remove files incidentally imported from the wrong place during
3.2.1 import. They are not used by any of our system GCC versions and will be physically removed from repository soon. Reviewed by: obrien
This commit is contained in:
parent
2b4726c945
commit
fabd8bcd49
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/gcc/dist/; revision=112680
653
contrib/gcc/FAQ
653
contrib/gcc/FAQ
@ -1,653 +0,0 @@
|
||||
|
||||
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/
|
@ -1,187 +0,0 @@
|
||||
|
||||
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
|
@ -1,254 +0,0 @@
|
||||
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(?)
|
@ -1,698 +0,0 @@
|
||||
<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 <stdio.h>
|
||||
|
||||
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><string.h></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>
|
||||
&
|
||||
<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><cstdlib></code> rather than <code><stdlib.h></code>).
|
||||
The <code>.h</code> names are still available, but are deprecated.</li>
|
||||
|
||||
<li><code><strstream></code> is deprecated, use
|
||||
<code><sstream></code> instead.</li>
|
||||
|
||||
<li><code>streambuf::seekoff</code> &
|
||||
<code>streambuf::seekpos</code> are private, instead use
|
||||
<code>streambuf::pubseekoff</code> &
|
||||
<code>streambuf::pubseekpos</code> respectively.</li>
|
||||
|
||||
<li>If <code>std::operator << (std::ostream &, 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 <iostream><br />
|
||||
<br />
|
||||
int main() {<br />
|
||||
<br />
|
||||
double min = 0.0;<br />
|
||||
double max = 0.5;<br />
|
||||
double width = 0.01;<br />
|
||||
std::cout << (int)(((max - min) / width) - 1) <<
|
||||
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<::X></code>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The reason is that the standard mandates that the sequence
|
||||
<code><:</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<
|
||||
::X></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>
|
@ -1,871 +0,0 @@
|
||||
# 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
|
@ -1,79 +0,0 @@
|
||||
#! /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
1450
contrib/gcc/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,477 +0,0 @@
|
||||
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
@ -1,12 +0,0 @@
|
||||
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
|
@ -1 +0,0 @@
|
||||
RANLIB = @:
|
@ -1,3 +0,0 @@
|
||||
HDEFINES = -DUSG
|
||||
RANLIB=true
|
||||
CC= cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fPIC
|
@ -1,14 +0,0 @@
|
||||
# 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
|
@ -1,6 +0,0 @@
|
||||
EXTRA_TARGET_HOST_ALL_MODULES=all-libtermcap
|
||||
EXTRA_TARGET_HOST_INSTALL_MODULES=install-libtermcap
|
||||
|
||||
all-gdb: all-libtermcap
|
||||
|
||||
install-gdb: all-libtermcap
|
@ -1,5 +0,0 @@
|
||||
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"
|
@ -1,4 +0,0 @@
|
||||
RANLIB = true
|
||||
|
||||
|
||||
|
@ -1,4 +0,0 @@
|
||||
HDEFINES=-DHOST_SYS=DGUX_SYS
|
||||
CC=gcc -Wall -ansi -D__using_DGUX
|
||||
RANLIB=true
|
||||
|
@ -1,22 +0,0 @@
|
||||
# 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
|
||||
|
@ -1,14 +0,0 @@
|
||||
# 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
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fPIC
|
@ -1,13 +0,0 @@
|
||||
# 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 =
|
@ -1,4 +0,0 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
CC = cc -Wp,-H256000
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
@ -1,4 +0,0 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
CC = cc -Wp,-H256000
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fpic
|
@ -1,14 +0,0 @@
|
||||
# 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=
|
@ -1,7 +0,0 @@
|
||||
# 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
|
@ -1,3 +0,0 @@
|
||||
# Makefile changes for SGI's running IRIX-5.x.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
@ -1,3 +0,0 @@
|
||||
# Makefile changes for SGI's running IRIX-6.x.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
@ -1,2 +0,0 @@
|
||||
# /bin/cc is less than useful for our purposes. Always use GCC
|
||||
CC = /bin/gcc
|
@ -1,8 +0,0 @@
|
||||
# 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
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fpic
|
@ -1,12 +0,0 @@
|
||||
# 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
|
@ -1,17 +0,0 @@
|
||||
# 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
|
@ -1,9 +0,0 @@
|
||||
# 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
|
@ -1,11 +0,0 @@
|
||||
# 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
|
@ -1,2 +0,0 @@
|
||||
RANLIB = true
|
||||
CC = c89
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fPIC
|
@ -1,15 +0,0 @@
|
||||
# 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
|
@ -1,10 +0,0 @@
|
||||
# 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
|
@ -1,6 +0,0 @@
|
||||
# Makefile changes for Suns running Solaris 2
|
||||
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
||||
|
||||
X11_EXTRA_LIBS = -lnsl -lsocket
|
@ -1 +0,0 @@
|
||||
PICFLAG=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
|
@ -1,3 +0,0 @@
|
||||
# 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
|
@ -1,3 +0,0 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
@ -1,11 +0,0 @@
|
||||
# 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
|
@ -1,8 +0,0 @@
|
||||
# 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
|
@ -1,2 +0,0 @@
|
||||
# The old BSD pcc isn't up to compiling parts of gdb so use gcc
|
||||
CC = gcc
|
@ -1 +0,0 @@
|
||||
PICFLAG=-fpic
|
@ -1,157 +0,0 @@
|
||||
# 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
|
||||
|
@ -1,81 +0,0 @@
|
||||
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.
|
@ -1,19 +0,0 @@
|
||||
# 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
|
@ -1,23 +0,0 @@
|
||||
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".
|
@ -1,3 +0,0 @@
|
||||
Echo '#include' ¶""{1}"¶" >"{2}".tem
|
||||
MoveIfChange "{2}".tem "{2}"
|
||||
|
@ -1,293 +0,0 @@
|
||||
# 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}"
|
||||
|
@ -1,7 +0,0 @@
|
||||
# "Touch" command.
|
||||
|
||||
If "`Exists "{1}"`" != ""
|
||||
SetFile -m . "{1}"
|
||||
Else
|
||||
Echo ' ' > "{1}"
|
||||
End If
|
@ -1 +0,0 @@
|
||||
Exit 0
|
@ -1 +0,0 @@
|
||||
# This command does nothing.
|
@ -1,4 +0,0 @@
|
||||
# MPW makefiles seem not to have any way to get a literal open
|
||||
# brace into a rule anywhere, so this does the job.
|
||||
|
||||
Echo '{'
|
@ -1,9 +0,0 @@
|
||||
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}"
|
@ -1 +0,0 @@
|
||||
Exit 0
|
@ -1,4 +0,0 @@
|
||||
# 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
|
@ -1,2 +0,0 @@
|
||||
CFLAGS_FOR_TARGET += -mieee
|
||||
CXXFLAGS_FOR_TARGET += -mieee
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
@ -1,4 +0,0 @@
|
||||
# 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
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
@ -1 +0,0 @@
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
@ -1 +0,0 @@
|
||||
GDB_NLM_DEPS = all-gcc all-ld
|
@ -1,3 +0,0 @@
|
||||
# Build libraries optimizing for space, not speed.
|
||||
CFLAGS_FOR_TARGET = -g -Os
|
||||
CXXFLAGS_FOR_TARGET = -g -Os
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
|
@ -1,4 +0,0 @@
|
||||
CC_FOR_TARGET = ca732 -ansi
|
||||
AS_FOR_TARGET = as732
|
||||
AR_FOR_TARGET = ar732
|
||||
RANLIB_FOR_TARGET = true
|
@ -1,10 +0,0 @@
|
||||
# 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
|
||||
|
@ -1 +0,0 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
@ -1,721 +0,0 @@
|
||||
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
|
@ -1,146 +0,0 @@
|
||||
#!/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)"))
|
||||
}
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
#!/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
|
@ -1,48 +0,0 @@
|
||||
#!/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
|
@ -1,48 +0,0 @@
|
||||
#!/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
|
@ -1,77 +0,0 @@
|
||||
#!/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.
|
@ -1,316 +0,0 @@
|
||||
#! /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
|
@ -1,226 +0,0 @@
|
||||
#! /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
|
@ -1,84 +0,0 @@
|
||||
;;; 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))
|
||||
|
@ -1,56 +0,0 @@
|
||||
#! /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
|
@ -1,26 +0,0 @@
|
||||
#! /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;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
#! /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
|
@ -1,37 +0,0 @@
|
||||
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.
|
||||
|
||||
|
@ -1,18 +0,0 @@
|
||||
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 :-).
|
@ -1,172 +0,0 @@
|
||||
#!/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
|
@ -1,121 +0,0 @@
|
||||
#!/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
|
@ -1,18 +0,0 @@
|
||||
global target_list
|
||||
|
||||
case "$target_triplet" in {
|
||||
{ "powerpc*-*eabi*" } {
|
||||
# if { [info exists tool] && $tool == "gcc" } {
|
||||
# set target_list { "powerpc-sim{,-fpic}" }
|
||||
# } else {
|
||||
set target_list { "powerpc-sim" }
|
||||
# }
|
||||
}
|
||||
{ "mips-elf" } {
|
||||
set target_list { "mips-sim" }
|
||||
}
|
||||
|
||||
default {
|
||||
set target_list { "unix" }
|
||||
}
|
||||
}
|
@ -1,114 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# (C) 1998, 2000 Free Software Foundation
|
||||
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
# 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
|
||||
|
||||
# This scripts assumes it lives in the contrib directory of the GCC
|
||||
# source tree, so it will find the testsuite tree from its location.
|
||||
# If you move it elsewhere, or want to use another testsuite tree, you
|
||||
# can override the defaults with --srcdir=/some/dir/GCC or
|
||||
# --testsuite=/some/dir/GCC/gcc/testsuite. If you specify
|
||||
# --testsuite, --srcdir will be ignored; otherwise, `/gcc/testsuite'
|
||||
# will be appended to the srcdir.
|
||||
|
||||
# You may specify where the binaries to be tested should be picked up
|
||||
# from. If you specify --prefix=/some/dir, gcc, g++ and g77 will be
|
||||
# looked for at /some/dir/bin. Each one may be overridden by
|
||||
# specifying --with-gcc=/pathname/to/gcc, --with-g++=/pathname/to/g++
|
||||
# and --with-g77=/pathname/to/g77. If you specify --without-gcc,
|
||||
# --without-g++ or --without-g77, the test for the specified program
|
||||
# will be skipped. By default, gcc, g++ and g77 will be searched in
|
||||
# the PATH.
|
||||
|
||||
# An additional argument may specify --tmpdir=/some/dir; by default,
|
||||
# temporaries will be stored in the current directory, where the log
|
||||
# files will be stored.
|
||||
|
||||
# The script will interpret arguments until it finds one it does not
|
||||
# understand. The remaining ones will be passed to `runtest'. A
|
||||
# double-dash can be used to explicitly separate the arguments to
|
||||
# `test_installed' from the ones to `runtest'.
|
||||
|
||||
# This script should be run in an empty directory; it will refuse to
|
||||
# run if it finds a file named site.exp in the current directory.
|
||||
|
||||
|
||||
if test -f site.exp; then
|
||||
echo site.exp already exists >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
while true; do
|
||||
case "$1" in
|
||||
--with-testsuite=*) testsuite=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--srcdir=*) srcdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
|
||||
--prefix=*) prefix=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-gcc=*) GCC_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-g++=*) GXX_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--with-g77=*) G77_UNDER_TEST=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
--without-gcc) GCC_UNDER_TEST=no; shift;;
|
||||
--without-g++) GXX_UNDER_TEST=no; shift;;
|
||||
--without-g77) G77_UNDER_TEST=no; shift;;
|
||||
|
||||
--tmpdir=*) tmpdir=`echo "$1" | sed 's/[^=]*=//'`; shift;;
|
||||
|
||||
--help) cat <<\EOF
|
||||
Runs the testsuite for an installed version of gcc/g++/g77
|
||||
Copyright (C) 1998 Free Software Foundation
|
||||
by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
Supported arguments:
|
||||
|
||||
--help prints this page
|
||||
|
||||
--with-testsuite=/some/dir/gcc/testsuite specify the testsuite directory
|
||||
--srcdir=/some/dir same as --with-testsuite=/some/dir/gcc/testsuite
|
||||
[deduced from shell-script pathname]
|
||||
|
||||
--prefix=/some/dir use gcc, g++ and g77 from /some/dir/bin [PATH]
|
||||
--with-gcc=/some/dir/bin/gcc use specified gcc program [gcc]
|
||||
--with-g++=/some/dir/bin/g++ use specified g++ program [g++]
|
||||
--with-g77=/some/dir/bin/g77 use specified g77 program [g77]
|
||||
--without-gcc do not run gcc testsuite
|
||||
--without-g++ do not run g++ testsuite
|
||||
--without-g77 do not run g77 testsuite
|
||||
|
||||
--tmpdir=/some/dir create temporaries and leave failed programs
|
||||
at specified directory [.]
|
||||
|
||||
-- end of argument list; following arguments are passed to runtest
|
||||
EOF
|
||||
exit
|
||||
;;
|
||||
|
||||
--) shift; break;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test x"${testsuite+set}" != x"set" && test x"${srcdir+set}" != x"set"; then
|
||||
file=$0
|
||||
while [ -h $file ]; do
|
||||
file=`ls -l $file | sed s/'.* -> '//`
|
||||
done
|
||||
srcdir=`CDPATH=. && cd \`echo "$file" | sed 's,/*[^/]*$,,;s,^$,.,'\`/.. >/dev/null && pwd`
|
||||
fi
|
||||
|
||||
cat >site.exp <<EOF
|
||||
set tmpdir "${tmpdir-`pwd`}"
|
||||
set srcdir "${testsuite-${srcdir}/gcc/testsuite}"
|
||||
set GCC_UNDER_TEST "${GCC_UNDER_TEST-${prefix}${prefix+/bin/}gcc}"
|
||||
set GXX_UNDER_TEST "${GXX_UNDER_TEST-${prefix}${prefix+/bin/}g++}"
|
||||
set G77_UNDER_TEST "${G77_UNDER_TEST-${prefix}${prefix+/bin/}g77}"
|
||||
EOF
|
||||
|
||||
test x"${GCC_UNDER_TEST}" = x"no" || runtest --tool gcc ${1+"$@"}
|
||||
test x"${GXX_UNDER_TEST}" = x"no" || runtest --tool g++ ${1+"$@"}
|
||||
test x"${G77_UNDER_TEST}" = x"no" || runtest --tool g77 ${1+"$@"}
|
||||
|
||||
exit 0
|
@ -1,142 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# (C) 1998, 1999, 2000 Free Software Foundation
|
||||
# Originally by Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
# 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
|
||||
|
||||
# This script processes *.{sum,log} files, producing a shell-script
|
||||
# that sends e-mail to the appropriate lists and renames files to
|
||||
# *.sent. It currently handles only gcc, but it should be quite easy
|
||||
# to modify it to handle other packages and its mailing lists.
|
||||
|
||||
# The scripts assumes it is run in the root directory of the build
|
||||
# tree, and it will include all .sum files it finds in the mail
|
||||
# report.
|
||||
|
||||
# configure flags are extracted from ./config.status
|
||||
|
||||
# if the BOOT_CFLAGS environment variable is set, it will be included
|
||||
# in the mail report too.
|
||||
|
||||
# The usage pattern of this script is as follows:
|
||||
|
||||
# test_summary | more # so as to observe what should be done
|
||||
|
||||
# test_summary | sh # so as to actually send e-mail and move log files
|
||||
|
||||
# It accepts a few command line arguments. For example:
|
||||
# -o: re-reads logs that have been mailed already (.sum.sent)
|
||||
# -t: prevents logs from being renamed
|
||||
# -p: prepend specified file (or list of files: -p "a b") to the report
|
||||
# -i: append specified file (or list of files: -i "a b") to the report
|
||||
# -m: specify the e-mail address to send notes to. An appropriate default
|
||||
# should be selected from the log files.
|
||||
# -f: force reports to be mailed; if omitted, only reports that differ
|
||||
# from the sent.* version are sent.
|
||||
|
||||
# Find a good awk.
|
||||
if test -z "$AWK" ; then
|
||||
for AWK in gawk nawk awk ; do
|
||||
if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then
|
||||
:
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
: ${filesuffix=}; export filesuffix
|
||||
: ${move=true}; export move
|
||||
: ${forcemail=false}; export forcemail
|
||||
while true; do
|
||||
case "$1" in
|
||||
-o) filesuffix=.sent; move=false; : ${mailto=nobody}; shift;;
|
||||
-t) move=false; shift;;
|
||||
-p) prepend_logs=${prepend_logs+"$prepend_logs "}"$2"; shift 2;;
|
||||
-i) append_logs=${append_logs+"$append_logs "}"$2"; shift 2;;
|
||||
-m) mailto=$2; forcemail=true; shift 2;;
|
||||
-f) unset mailto; forcemail=true; shift;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
: ${mailto="\" address \""}; export mailto
|
||||
files=`find . -name \*.sum$filesuffix -print | sort`
|
||||
anyfile=false anychange=$forcemail &&
|
||||
for file in $files; do
|
||||
[ -f $file ] &&
|
||||
anyfile=true &&
|
||||
{ $anychange ||
|
||||
anychange=`diff -u $file.sent $file 2>/dev/null |
|
||||
if test ! -f $file.sent ||
|
||||
egrep '^[-+](XPASS|FAIL)' >/dev/null; then
|
||||
echo true
|
||||
else
|
||||
echo false
|
||||
fi
|
||||
`
|
||||
}
|
||||
true
|
||||
done &&
|
||||
$anyfile &&
|
||||
if $forcemail || $anychange; then :; else mailto=nobody; fi &&
|
||||
# We use cat instead of listing the files as arguments to AWK because
|
||||
# GNU awk 3.0.0 would break if any of the filenames contained `=' and
|
||||
# was preceded by an invalid ``variable'' name.
|
||||
cat ./config.status $files |
|
||||
$AWK '
|
||||
BEGIN {
|
||||
lang="";
|
||||
address="gcc-testresults@gcc.gnu.org";
|
||||
version="gcc";
|
||||
print "cat <<'"'"'EOF'"'"' |";
|
||||
'${prepend_logs+" system(\"cat $prepend_logs\"); "}'
|
||||
}
|
||||
$1 ~ /\/configure$/ {
|
||||
srcdir = $1;
|
||||
gsub(/\/configure$/, "", srcdir);
|
||||
printf "LAST_UPDATED: ";
|
||||
system("tail -1 " srcdir "/LAST_UPDATED");
|
||||
print "";
|
||||
|
||||
$1 = "configure flags:"; configflags = $0;
|
||||
gsub(/--with-gcc-version-trigger=[^ ]* /, "", configflags);
|
||||
gsub(/ --norecursion/, "", configflags)
|
||||
}
|
||||
/^Running target / { print ""; print; }
|
||||
/^Target / { if (host != "") next; else host = $3; }
|
||||
/^Host / && host ~ /^unix\{.*\}$/ { host = $3 " " substr(host, 5); }
|
||||
/^Native / { if (host != "") next; else host = $4; }
|
||||
/^[ ]*=== [^ ]+ tests ===/ {
|
||||
if (lang == "") lang = " "$2" "; else lang = " ";
|
||||
}
|
||||
$2 == "version" { save = $0; $1 = ""; $2 = ""; version = $0; gsub(/^ */, "", version); gsub(/\r$/, "", version); $0 = save; }
|
||||
/\===.*Summary/ { print ""; print; blanks=1; }
|
||||
/tests ===/ || /^(Target|Host|Native)/ || $2 == "version" { print; blanks=1; }
|
||||
/^(XPASS|FAIL|UNRESOLVED|WARNING|ERROR|# of )/ { print; }
|
||||
# dumpall != 0 && /^X?(PASS|FAIL|UNTESTED)|^testcase/ { dumpall=0; }
|
||||
# dumpall != 0 { print; }
|
||||
# /^FAIL/ { dumpall=1; }
|
||||
/^$/ && blanks>0 { print; --blanks; }
|
||||
END { if (lang != "") {
|
||||
print "";
|
||||
print "Compiler version: " prefix version lang;
|
||||
print "Platform: " host;
|
||||
print configflags;
|
||||
'${BOOT_CFLAGS+'print "BOOT_CFLAGS='"${BOOT_CFLAGS}"'";'}'
|
||||
if (boot_cflags != 0) print boot_cflags;
|
||||
'${append_logs+" system(\"cat $append_logs\"); "}'
|
||||
print "EOF";
|
||||
print "Mail -s \"Results for " prefix version lang "testsuite on " host "\" '"${mailto}"' &&";
|
||||
}}
|
||||
{ next; }
|
||||
' | sed "s/\([\`\$\\\\]\)/\\\\\\1/g" &&
|
||||
if $move; then
|
||||
for file in $files `ls -1 $files | sed s/sum$/log/`; do
|
||||
[ -f $file ] && echo "mv `pwd`/$file `pwd`/$file.sent &&"
|
||||
done
|
||||
fi &&
|
||||
echo true
|
||||
exit 0
|
@ -1,427 +0,0 @@
|
||||
#! /usr/bin/perl -w
|
||||
|
||||
# Copyright (C) 1999, 2000, 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 does trivial (and I mean _trivial_) conversion of Texinfo
|
||||
# markup to Perl POD format. It's intended to be used to extract
|
||||
# something suitable for a manpage from a Texinfo document.
|
||||
|
||||
$output = 0;
|
||||
$skipping = 0;
|
||||
%sects = ();
|
||||
$section = "";
|
||||
@icstack = ();
|
||||
@endwstack = ();
|
||||
@skstack = ();
|
||||
@instack = ();
|
||||
$shift = "";
|
||||
%defs = ();
|
||||
$fnno = 1;
|
||||
$inf = "";
|
||||
$ibase = "";
|
||||
|
||||
while ($_ = shift) {
|
||||
if (/^-D(.*)$/) {
|
||||
if ($1 ne "") {
|
||||
$flag = $1;
|
||||
} else {
|
||||
$flag = shift;
|
||||
}
|
||||
$value = "";
|
||||
($flag, $value) = ($flag =~ /^([^=]+)(?:=(.+))?/);
|
||||
die "no flag specified for -D\n"
|
||||
unless $flag ne "";
|
||||
die "flags may only contain letters, digits, hyphens, dashes and underscores\n"
|
||||
unless $flag =~ /^[a-zA-Z0-9_-]+$/;
|
||||
$defs{$flag} = $value;
|
||||
} elsif (/^-/) {
|
||||
usage();
|
||||
} else {
|
||||
$in = $_, next unless defined $in;
|
||||
$out = $_, next unless defined $out;
|
||||
usage();
|
||||
}
|
||||
}
|
||||
|
||||
if (defined $in) {
|
||||
$inf = gensym();
|
||||
open($inf, "<$in") or die "opening \"$in\": $!\n";
|
||||
$ibase = $1 if $in =~ m|^(.+)/[^/]+$|;
|
||||
} else {
|
||||
$inf = \*STDIN;
|
||||
}
|
||||
|
||||
if (defined $out) {
|
||||
open(STDOUT, ">$out") or die "opening \"$out\": $!\n";
|
||||
}
|
||||
|
||||
while(defined $inf) {
|
||||
while(<$inf>) {
|
||||
# Certain commands are discarded without further processing.
|
||||
/^\@(?:
|
||||
[a-z]+index # @*index: useful only in complete manual
|
||||
|need # @need: useful only in printed manual
|
||||
|(?:end\s+)?group # @group .. @end group: ditto
|
||||
|page # @page: ditto
|
||||
|node # @node: useful only in .info file
|
||||
|(?:end\s+)?ifnottex # @ifnottex .. @end ifnottex: use contents
|
||||
)\b/x and next;
|
||||
|
||||
chomp;
|
||||
|
||||
# Look for filename and title markers.
|
||||
/^\@setfilename\s+([^.]+)/ and $fn = $1, next;
|
||||
/^\@settitle\s+([^.]+)/ and $tl = postprocess($1), next;
|
||||
|
||||
# Identify a man title but keep only the one we are interested in.
|
||||
/^\@c\s+man\s+title\s+([A-Za-z0-9-]+)\s+(.+)/ and do {
|
||||
if (exists $defs{$1}) {
|
||||
$fn = $1;
|
||||
$tl = postprocess($2);
|
||||
}
|
||||
next;
|
||||
};
|
||||
|
||||
# Look for blocks surrounded by @c man begin SECTION ... @c man end.
|
||||
# This really oughta be @ifman ... @end ifman and the like, but such
|
||||
# would require rev'ing all other Texinfo translators.
|
||||
/^\@c\s+man\s+begin\s+([A-Z]+)\s+([A-Za-z0-9-]+)/ and do {
|
||||
$output = 1 if exists $defs{$2};
|
||||
$sect = $1;
|
||||
next;
|
||||
};
|
||||
/^\@c\s+man\s+begin\s+([A-Z]+)/ and $sect = $1, $output = 1, next;
|
||||
/^\@c\s+man\s+end/ and do {
|
||||
$sects{$sect} = "" unless exists $sects{$sect};
|
||||
$sects{$sect} .= postprocess($section);
|
||||
$section = "";
|
||||
$output = 0;
|
||||
next;
|
||||
};
|
||||
|
||||
# handle variables
|
||||
/^\@set\s+([a-zA-Z0-9_-]+)\s*(.*)$/ and do {
|
||||
$defs{$1} = $2;
|
||||
next;
|
||||
};
|
||||
/^\@clear\s+([a-zA-Z0-9_-]+)/ and do {
|
||||
delete $defs{$1};
|
||||
next;
|
||||
};
|
||||
|
||||
next unless $output;
|
||||
|
||||
# Discard comments. (Can't do it above, because then we'd never see
|
||||
# @c man lines.)
|
||||
/^\@c\b/ and next;
|
||||
|
||||
# End-block handler goes up here because it needs to operate even
|
||||
# if we are skipping.
|
||||
/^\@end\s+([a-z]+)/ and do {
|
||||
# Ignore @end foo, where foo is not an operation which may
|
||||
# cause us to skip, if we are presently skipping.
|
||||
my $ended = $1;
|
||||
next if $skipping && $ended !~ /^(?:ifset|ifclear|ignore|menu|iftex)$/;
|
||||
|
||||
die "\@end $ended without \@$ended at line $.\n" unless defined $endw;
|
||||
die "\@$endw ended by \@end $ended at line $.\n" unless $ended eq $endw;
|
||||
|
||||
$endw = pop @endwstack;
|
||||
|
||||
if ($ended =~ /^(?:ifset|ifclear|ignore|menu|iftex)$/) {
|
||||
$skipping = pop @skstack;
|
||||
next;
|
||||
} elsif ($ended =~ /^(?:example|smallexample|display)$/) {
|
||||
$shift = "";
|
||||
$_ = ""; # need a paragraph break
|
||||
} elsif ($ended =~ /^(?:itemize|enumerate|[fv]?table)$/) {
|
||||
$_ = "\n=back\n";
|
||||
$ic = pop @icstack;
|
||||
} else {
|
||||
die "unknown command \@end $ended at line $.\n";
|
||||
}
|
||||
};
|
||||
|
||||
# We must handle commands which can cause skipping even while we
|
||||
# are skipping, otherwise we will not process nested conditionals
|
||||
# correctly.
|
||||
/^\@ifset\s+([a-zA-Z0-9_-]+)/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @skstack, $skipping;
|
||||
$endw = "ifset";
|
||||
$skipping = 1 unless exists $defs{$1};
|
||||
next;
|
||||
};
|
||||
|
||||
/^\@ifclear\s+([a-zA-Z0-9_-]+)/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @skstack, $skipping;
|
||||
$endw = "ifclear";
|
||||
$skipping = 1 if exists $defs{$1};
|
||||
next;
|
||||
};
|
||||
|
||||
/^\@(ignore|menu|iftex)\b/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @skstack, $skipping;
|
||||
$endw = $1;
|
||||
$skipping = 1;
|
||||
next;
|
||||
};
|
||||
|
||||
next if $skipping;
|
||||
|
||||
# Character entities. First the ones that can be replaced by raw text
|
||||
# or discarded outright:
|
||||
s/\@copyright\{\}/(c)/g;
|
||||
s/\@dots\{\}/.../g;
|
||||
s/\@enddots\{\}/..../g;
|
||||
s/\@([.!? ])/$1/g;
|
||||
s/\@[:-]//g;
|
||||
s/\@bullet(?:\{\})?/*/g;
|
||||
s/\@TeX\{\}/TeX/g;
|
||||
s/\@pounds\{\}/\#/g;
|
||||
s/\@minus(?:\{\})?/-/g;
|
||||
s/\\,/,/g;
|
||||
|
||||
# Now the ones that have to be replaced by special escapes
|
||||
# (which will be turned back into text by unmunge())
|
||||
s/&/&/g;
|
||||
s/\@\{/{/g;
|
||||
s/\@\}/}/g;
|
||||
s/\@\@/&at;/g;
|
||||
|
||||
# Inside a verbatim block, handle @var specially.
|
||||
if ($shift ne "") {
|
||||
s/\@var\{([^\}]*)\}/<$1>/g;
|
||||
}
|
||||
|
||||
# POD doesn't interpret E<> inside a verbatim block.
|
||||
if ($shift eq "") {
|
||||
s/</</g;
|
||||
s/>/>/g;
|
||||
} else {
|
||||
s/</</g;
|
||||
s/>/>/g;
|
||||
}
|
||||
|
||||
# Single line command handlers.
|
||||
|
||||
/^\@include\s+(.+)$/ and do {
|
||||
push @instack, $inf;
|
||||
$inf = gensym();
|
||||
|
||||
# Try cwd and $ibase.
|
||||
open($inf, "<" . $1)
|
||||
or open($inf, "<" . $ibase . "/" . $1)
|
||||
or die "cannot open $1 or $ibase/$1: $!\n";
|
||||
next;
|
||||
};
|
||||
|
||||
/^\@(?:section|unnumbered|unnumberedsec|center)\s+(.+)$/
|
||||
and $_ = "\n=head2 $1\n";
|
||||
/^\@subsection\s+(.+)$/
|
||||
and $_ = "\n=head3 $1\n";
|
||||
|
||||
# Block command handlers:
|
||||
/^\@itemize\s+(\@[a-z]+|\*|-)/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @icstack, $ic;
|
||||
$ic = $1;
|
||||
$_ = "\n=over 4\n";
|
||||
$endw = "itemize";
|
||||
};
|
||||
|
||||
/^\@enumerate(?:\s+([a-zA-Z0-9]+))?/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @icstack, $ic;
|
||||
if (defined $1) {
|
||||
$ic = $1 . ".";
|
||||
} else {
|
||||
$ic = "1.";
|
||||
}
|
||||
$_ = "\n=over 4\n";
|
||||
$endw = "enumerate";
|
||||
};
|
||||
|
||||
/^\@([fv]?table)\s+(\@[a-z]+)/ and do {
|
||||
push @endwstack, $endw;
|
||||
push @icstack, $ic;
|
||||
$endw = $1;
|
||||
$ic = $2;
|
||||
$ic =~ s/\@(?:samp|strong|key|gcctabopt|env)/B/;
|
||||
$ic =~ s/\@(?:code|kbd)/C/;
|
||||
$ic =~ s/\@(?:dfn|var|emph|cite|i)/I/;
|
||||
$ic =~ s/\@(?:file)/F/;
|
||||
$_ = "\n=over 4\n";
|
||||
};
|
||||
|
||||
/^\@((?:small)?example|display)/ and do {
|
||||
push @endwstack, $endw;
|
||||
$endw = $1;
|
||||
$shift = "\t";
|
||||
$_ = ""; # need a paragraph break
|
||||
};
|
||||
|
||||
/^\@itemx?\s*(.+)?$/ and do {
|
||||
if (defined $1) {
|
||||
# Entity escapes prevent munging by the <> processing below.
|
||||
$_ = "\n=item $ic\<$1\>\n";
|
||||
} else {
|
||||
$_ = "\n=item $ic\n";
|
||||
$ic =~ y/A-Ya-y/B-Zb-z/;
|
||||
$ic =~ s/(\d+)/$1 + 1/eg;
|
||||
}
|
||||
};
|
||||
|
||||
$section .= $shift.$_."\n";
|
||||
}
|
||||
# End of current file.
|
||||
close($inf);
|
||||
$inf = pop @instack;
|
||||
}
|
||||
|
||||
die "No filename or title\n" unless defined $fn && defined $tl;
|
||||
|
||||
$sects{NAME} = "$fn \- $tl\n";
|
||||
$sects{FOOTNOTES} .= "=back\n" if exists $sects{FOOTNOTES};
|
||||
|
||||
for $sect (qw(NAME SYNOPSIS DESCRIPTION OPTIONS ENVIRONMENT FILES
|
||||
BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
|
||||
if(exists $sects{$sect}) {
|
||||
$head = $sect;
|
||||
$head =~ s/SEEALSO/SEE ALSO/;
|
||||
print "=head1 $head\n\n";
|
||||
print scalar unmunge ($sects{$sect});
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub usage
|
||||
{
|
||||
die "usage: $0 [-D toggle...] [infile [outfile]]\n";
|
||||
}
|
||||
|
||||
sub postprocess
|
||||
{
|
||||
local $_ = $_[0];
|
||||
|
||||
# @value{foo} is replaced by whatever 'foo' is defined as.
|
||||
while (m/(\@value\{([a-zA-Z0-9_-]+)\})/g) {
|
||||
if (! exists $defs{$2}) {
|
||||
print STDERR "Option $2 not defined\n";
|
||||
s/\Q$1\E//;
|
||||
} else {
|
||||
$value = $defs{$2};
|
||||
s/\Q$1\E/$value/;
|
||||
}
|
||||
}
|
||||
|
||||
# Formatting commands.
|
||||
# Temporary escape for @r.
|
||||
s/\@r\{([^\}]*)\}/R<$1>/g;
|
||||
s/\@(?:dfn|var|emph|cite|i)\{([^\}]*)\}/I<$1>/g;
|
||||
s/\@(?:code|kbd)\{([^\}]*)\}/C<$1>/g;
|
||||
s/\@(?:gccoptlist|samp|strong|key|option|env|command|b)\{([^\}]*)\}/B<$1>/g;
|
||||
s/\@sc\{([^\}]*)\}/\U$1/g;
|
||||
s/\@file\{([^\}]*)\}/F<$1>/g;
|
||||
s/\@w\{([^\}]*)\}/S<$1>/g;
|
||||
s/\@(?:dmn|math)\{([^\}]*)\}/$1/g;
|
||||
|
||||
# Cross references are thrown away, as are @noindent and @refill.
|
||||
# (@noindent is impossible in .pod, and @refill is unnecessary.)
|
||||
# @* is also impossible in .pod; we discard it and any newline that
|
||||
# follows it. Similarly, our macro @gol must be discarded.
|
||||
|
||||
s/\(?\@xref\{(?:[^\}]*)\}(?:[^.<]|(?:<[^<>]*>))*\.\)?//g;
|
||||
s/\s+\(\@pxref\{(?:[^\}]*)\}\)//g;
|
||||
s/;\s+\@pxref\{(?:[^\}]*)\}//g;
|
||||
s/\@noindent\s*//g;
|
||||
s/\@refill//g;
|
||||
s/\@gol//g;
|
||||
s/\@\*\s*\n?//g;
|
||||
|
||||
# @uref can take one, two, or three arguments, with different
|
||||
# semantics each time. @url and @email are just like @uref with
|
||||
# one argument, for our purposes.
|
||||
s/\@(?:uref|url|email)\{([^\},]*)\}/<B<$1>>/g;
|
||||
s/\@uref\{([^\},]*),([^\},]*)\}/$2 (C<$1>)/g;
|
||||
s/\@uref\{([^\},]*),([^\},]*),([^\},]*)\}/$3/g;
|
||||
|
||||
# Turn B<blah I<blah> blah> into B<blah> I<blah> B<blah> to
|
||||
# match Texinfo semantics of @emph inside @samp. Also handle @r
|
||||
# inside bold.
|
||||
s/</</g;
|
||||
s/>/>/g;
|
||||
1 while s/B<((?:[^<>]|I<[^<>]*>)*)R<([^>]*)>/B<$1>${2}B</g;
|
||||
1 while (s/B<([^<>]*)I<([^>]+)>/B<$1>I<$2>B</g);
|
||||
1 while (s/I<([^<>]*)B<([^>]+)>/I<$1>B<$2>I</g);
|
||||
s/[BI]<>//g;
|
||||
s/([BI])<(\s+)([^>]+)>/$2$1<$3>/g;
|
||||
s/([BI])<([^>]+?)(\s+)>/$1<$2>$3/g;
|
||||
|
||||
# Extract footnotes. This has to be done after all other
|
||||
# processing because otherwise the regexp will choke on formatting
|
||||
# inside @footnote.
|
||||
while (/\@footnote/g) {
|
||||
s/\@footnote\{([^\}]+)\}/[$fnno]/;
|
||||
add_footnote($1, $fnno);
|
||||
$fnno++;
|
||||
}
|
||||
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub unmunge
|
||||
{
|
||||
# Replace escaped symbols with their equivalents.
|
||||
local $_ = $_[0];
|
||||
|
||||
s/</E<lt>/g;
|
||||
s/>/E<gt>/g;
|
||||
s/{/\{/g;
|
||||
s/}/\}/g;
|
||||
s/&at;/\@/g;
|
||||
s/&/&/g;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub add_footnote
|
||||
{
|
||||
unless (exists $sects{FOOTNOTES}) {
|
||||
$sects{FOOTNOTES} = "\n=over 4\n\n";
|
||||
}
|
||||
|
||||
$sects{FOOTNOTES} .= "=item $fnno.\n\n"; $fnno++;
|
||||
$sects{FOOTNOTES} .= $_[0];
|
||||
$sects{FOOTNOTES} .= "\n\n";
|
||||
}
|
||||
|
||||
# stolen from Symbol.pm
|
||||
{
|
||||
my $genseq = 0;
|
||||
sub gensym
|
||||
{
|
||||
my $name = "GEN" . $genseq++;
|
||||
my $ref = \*{$name};
|
||||
delete $::{$name};
|
||||
return $ref;
|
||||
}
|
||||
}
|
@ -1,210 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script parses the output of a gcc bootstrap when using warning
|
||||
# flags and determines various statistics.
|
||||
#
|
||||
# usage: warn_summary [-llf] [-s stage] [-nosub|-ch|-cp|-f|-java|-ada|-intl|-fixinc]
|
||||
# [-pass|-wpass] [file(s)]
|
||||
#
|
||||
# -llf
|
||||
# Filter out long lines from the bootstrap output before any other
|
||||
# action. This is useful for systems with broken awks/greps which choke
|
||||
# on long lines. It is not done by default as it sometimes slows things
|
||||
# down.
|
||||
#
|
||||
# -s number
|
||||
# Take warnings from stage "Number". Stage 0 means show warnings from
|
||||
# before and after the gcc bootstrap directory. E.g. libraries, etc.
|
||||
# This presupposes using "gcc -W*" for the stage1 compiler.
|
||||
#
|
||||
# -nosub
|
||||
# Only show warnings from the gcc top level directory.
|
||||
# -ch|-cp|-f|-java|-ada|-intl|-fixinc
|
||||
# Only show warnings from the specified language subdirectory.
|
||||
# These override each other so only the last one passed takes effect.
|
||||
#
|
||||
# -pass
|
||||
# Pass through the bootstrap output after filtering stage and subdir
|
||||
# (useful for manual inspection.) This is all lines, not just warnings.
|
||||
# -wpass
|
||||
# Pass through only warnings from the bootstrap output after filtering
|
||||
# stage and subdir.
|
||||
#
|
||||
# By Kaveh Ghazi (ghazi@caip.rutgers.edu) 12/13/97.
|
||||
|
||||
|
||||
# Some awks choke on long lines, sed seems to do a better job.
|
||||
# Truncate lines > 255 characters. RE '.\{255,\}' doesn't seem to work. :-(
|
||||
# Only do this if -llf was specified, because it can really slow things down.
|
||||
longLineFilter()
|
||||
{
|
||||
if test -z "$llf" ; then
|
||||
cat
|
||||
else
|
||||
sed 's/^\(...............................................................................................................................................................................................................................................................\).*/\1/'
|
||||
fi
|
||||
}
|
||||
|
||||
# This function does one of three things. It either passes through
|
||||
# all warning data, or passes through gcc toplevel warnings, or passes
|
||||
# through a particular subdirectory set of warnings.
|
||||
subdirectoryFilter()
|
||||
{
|
||||
longLineFilter | (
|
||||
if test -z "$filter" ; then
|
||||
# Pass through all lines.
|
||||
cat
|
||||
else
|
||||
if test "$filter" = nosub ; then
|
||||
# Omit all subdirectories.
|
||||
egrep -v '/gcc/(ch|cp|f|java|intl|fixinc)/'
|
||||
else
|
||||
# Pass through only subdir $filter.
|
||||
grep "/gcc/$filter/"
|
||||
fi
|
||||
fi )
|
||||
}
|
||||
|
||||
# This function displays all lines from stageN of the bootstrap. If
|
||||
# stage==0, then show lines prior to stage1 and lines from after the last
|
||||
# stage. I.e. utilities, libraries, etc.
|
||||
stageNfilter()
|
||||
{
|
||||
if test "$stageN" -lt 1 ; then
|
||||
# stage "0" means check everything *but* gcc.
|
||||
$AWK "BEGIN{t=1} ; /^Bootstrapping the compiler/{t=0} ; /^Building runtime libraries/{t=1} ; {if(t==1)print}"
|
||||
else
|
||||
if test "$stageN" -eq 1 ; then
|
||||
$AWK "/^Bootstrapping the compiler|^Building the C and C\+\+ compiler/{t=1} ; /stage$stageN/{t=0} ; {if(t==1)print}"
|
||||
else
|
||||
stageNminus1=`expr $stageN - 1`
|
||||
$AWK "/stage${stageNminus1}\//{t=1} ; /stage$stageN/{t=0} ; {if(t==1)print}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# This function displays lines containing warnings.
|
||||
warningFilter()
|
||||
{
|
||||
grep ' warning: '
|
||||
}
|
||||
|
||||
# This function replaces `xxx' with `???', where xxx is usually some
|
||||
# variable or function name. This allows similar warnings to be
|
||||
# counted together when summarizing. However it avoids replacing
|
||||
# certain C keywords which are known appear in various messages.
|
||||
|
||||
keywordFilter() {
|
||||
sed 's/.*warning: //;
|
||||
s/`\(int\)'"'"'/"\1"/g;
|
||||
s/`\(long\)'"'"'/"\1"/g;
|
||||
s/`\(char\)'"'"'/"\1"/g;
|
||||
s/`\(inline\)'"'"'/"\1"/g;
|
||||
s/`\(else\)'"'"'/"\1"/g;
|
||||
s/`\(return\)'"'"'/"\1"/g;
|
||||
s/`\(static\)'"'"'/"\1"/g;
|
||||
s/`\(extern\)'"'"'/"\1"/g;
|
||||
s/`\(const\)'"'"'/"\1"/g;
|
||||
s/`\(noreturn\)'"'"'/"\1"/g;
|
||||
s/`\(longjmp\)'"'"' or `\(vfork\)'"'"'/"\1" or "\2"/g;
|
||||
s/`'"[^']*'/"'`???'"'/g;"'
|
||||
s/.*format, .* arg (arg [0-9][0-9]*)/??? format, ??? arg (arg ???)/;
|
||||
s/\([( ]\)arg [0-9][0-9]*\([) ]\)/\1arg ???\2/;
|
||||
s/"\([^"]*\)"/`\1'"'"'/g'
|
||||
}
|
||||
|
||||
# This function strips out relative pathnames for source files printed
|
||||
# by the warningFilter function. This is done so that as the snapshot
|
||||
# directory name changes every week, the output of this program can be
|
||||
# compared to previous runs without spurious diffs caused by source
|
||||
# directory name changes.
|
||||
|
||||
srcdirFilter()
|
||||
{
|
||||
sed '
|
||||
s%^[^ ]*/\(gcc/\)%\1%;
|
||||
s%^[^ ]*/\(include/\)%\1%;
|
||||
s%^[^ ]*/\(texinfo/\)%\1%;
|
||||
s%^[^ ]*/\(fastjar/\)%\1%;
|
||||
s%^[^ ]*/\(zlib/\)%\1%;
|
||||
s%^[^ ]*/\(lib[a-z23+-]*/\)%\1%;'
|
||||
}
|
||||
|
||||
# Start the main section.
|
||||
|
||||
usage="usage: `basename $0` [-llf] [-s stage] [-nosub|-ch|-cp|-f|-java|-ada|-intl|-fixinc] [-pass|-wpass] [file(s)]"
|
||||
stageN=3
|
||||
tmpfile=/tmp/tmp-warn.$$
|
||||
|
||||
# Remove $tmpfile on exit and various signals.
|
||||
trap "rm -f $tmpfile" 0
|
||||
trap "rm -f $tmpfile ; exit 1" 1 2 3 5 9 13 15
|
||||
|
||||
# Find a good awk.
|
||||
if test -z "$AWK" ; then
|
||||
for AWK in gawk nawk awk ; do
|
||||
if type $AWK 2>&1 | grep 'not found' > /dev/null 2>&1 ; then
|
||||
:
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Parse command line arguments.
|
||||
while test -n "$1" ; do
|
||||
case "$1" in
|
||||
-llf) llf=1 ; shift ;;
|
||||
-s) if test -z "$2"; then echo $usage 1>&2; exit 1; fi
|
||||
stageN="$2"; shift 2 ;;
|
||||
-s*) stageN="`expr $1 : '-s\(.*\)'`" ; shift ;;
|
||||
-nosub|-ch|-cp|-f|-java|-ada|-intl|-fixinc) filter="`expr $1 : '-\(.*\)'`" ; shift ;;
|
||||
-pass) pass=1 ; shift ;;
|
||||
-wpass) pass=w ; shift ;;
|
||||
-*) echo $usage 1>&2 ; exit 1 ;;
|
||||
*) break ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check for a valid value of $stageN.
|
||||
case "$stageN" in
|
||||
[0-9]) ;;
|
||||
*) echo "Stage <$stageN> must be in the range [0..9]." 1>&2 ; exit 1 ;;
|
||||
esac
|
||||
|
||||
for file in "$@" ; do
|
||||
|
||||
stageNfilter < $file | subdirectoryFilter > $tmpfile
|
||||
|
||||
# (Just) show me the warnings.
|
||||
if test "$pass" != '' ; then
|
||||
if test "$pass" = w ; then
|
||||
warningFilter < $tmpfile
|
||||
else
|
||||
cat $tmpfile
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
|
||||
if test -z "$filter" ; then
|
||||
echo "Counting all warnings,"
|
||||
else
|
||||
if test "$filter" = nosub ; then
|
||||
echo "Counting non-subdirectory warnings,"
|
||||
else
|
||||
echo "Counting warnings in the gcc/$filter subdirectory,"
|
||||
fi
|
||||
fi
|
||||
count=`warningFilter < $tmpfile | wc -l`
|
||||
echo there are $count warnings in stage$stageN of this bootstrap.
|
||||
|
||||
echo
|
||||
echo Number of warnings per file:
|
||||
warningFilter < $tmpfile | srcdirFilter | $AWK -F: '{print$1}' | sort | \
|
||||
uniq -c | sort -nr
|
||||
|
||||
echo
|
||||
echo Number of warning types:
|
||||
warningFilter < $tmpfile | keywordFilter | sort | uniq -c | sort -nr
|
||||
|
||||
done
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user