Gcc 3.2.1 release virgin vendor import. (19-Nov-2002)
This commit is contained in:
parent
f1f8450e7a
commit
90cbf5083e
14448
contrib/gcc/.brik
Normal file
14448
contrib/gcc/.brik
Normal file
File diff suppressed because it is too large
Load Diff
32
contrib/gcc/.cvsignore
Normal file
32
contrib/gcc/.cvsignore
Normal file
@ -0,0 +1,32 @@
|
||||
*-all
|
||||
*-co
|
||||
*-dirs
|
||||
*-done
|
||||
*-install-info
|
||||
*-src
|
||||
*-stamp-*
|
||||
*-tagged
|
||||
blockit
|
||||
cfg-paper.info
|
||||
config.status
|
||||
configure.aux
|
||||
configure.cp
|
||||
configure.cps
|
||||
configure.dvi
|
||||
configure.fn
|
||||
configure.fns
|
||||
configure.ky
|
||||
configure.kys
|
||||
configure.log
|
||||
configure.pg
|
||||
configure.pgs
|
||||
configure.toc
|
||||
configure.tp
|
||||
configure.tps
|
||||
configure.vr
|
||||
configure.vrs
|
||||
Makefile
|
||||
dir.info
|
||||
lost+found
|
||||
update.out
|
||||
LAST_UPDATED
|
594
contrib/gcc/BUGS
Normal file
594
contrib/gcc/BUGS
Normal file
@ -0,0 +1,594 @@
|
||||
|
||||
GCC Bugs
|
||||
|
||||
The latest version of this document is always available at
|
||||
[1]http://www.gnu.org/software/gcc/bugs.html.
|
||||
_________________________________________________________________
|
||||
|
||||
Table of Contents
|
||||
|
||||
* [2]Reporting Bugs
|
||||
+ [3]What we need
|
||||
+ [4]What we DON'T want
|
||||
+ [5]Where to post it
|
||||
+ [6]Detailed bug reporting instructions
|
||||
+ [7]Detailed bug reporting instructions for GNAT
|
||||
* [8]Managing Bugs (GNATS and the test-suite)
|
||||
* [9]Frequently Reported Bugs in GCC
|
||||
+ [10]General
|
||||
+ [11]Fortran
|
||||
+ [12]C
|
||||
+ [13]C++
|
||||
o [14]Common problems updating from G++ 2.95 to G++ 3.0
|
||||
o [15]Non-bugs
|
||||
o [16]Missing features
|
||||
o [17]Parse errors for "simple" code
|
||||
o [18]Optimization at -O3 takes a very long time
|
||||
_________________________________________________________________
|
||||
|
||||
Reporting Bugs
|
||||
|
||||
Our preferred way of receiving bugs is via the [19]GCC GNATS bug
|
||||
reporting system.
|
||||
|
||||
Before you report a bug, please check the [20]list of well-known bugs
|
||||
and, if possible in any way, try a current development snapshot. If
|
||||
you want to report a bug with versions of GCC before 3.1 we strongly
|
||||
recommend upgrading to the current release first.
|
||||
|
||||
Before reporting that GCC compiles your code incorrectly, please
|
||||
compile it with gcc -Wall and see whether this shows anything wrong
|
||||
with your code that could be the cause instead of a bug in GCC.
|
||||
|
||||
Summarized bug reporting instructions
|
||||
|
||||
After this summary, you'll find detailed bug reporting instructions,
|
||||
that explain how to obtain some of the information requested in this
|
||||
summary.
|
||||
|
||||
What we need
|
||||
|
||||
Please include in your bug report all of the following items, the
|
||||
first three of which can be obtained from the output of gcc -v:
|
||||
* the exact version of GCC;
|
||||
* the system type;
|
||||
* the options given when GCC was configured/built;
|
||||
* the complete command line that triggers the bug;
|
||||
* the compiler output (error messages, warnings, etc.); and
|
||||
* the preprocessed file (*.i*) that triggers the bug, generated by
|
||||
adding -save-temps 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).
|
||||
|
||||
What we do not want
|
||||
|
||||
* A source file that #includes header files that are left out of the
|
||||
bug report (see above)
|
||||
* That source file and a collection of header files.
|
||||
* An attached archive (tar, zip, shar, whatever) containing all (or
|
||||
some :-) of the above.
|
||||
* 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 apparently triggers the bug, with
|
||||
some pieces replaced with ellipses or comments for extra
|
||||
obfuscation :-)
|
||||
* 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? :-)
|
||||
* 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)
|
||||
* 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
|
||||
* Assembly files (*.s) produced by the compiler, or any binary
|
||||
files, such as object files, executables or core files
|
||||
* Duplicate bug reports, or reports of bugs already fixed in the
|
||||
development tree, especially those that have already been reported
|
||||
as fixed last week :-)
|
||||
* Bugs in the assembler, the linker or the C library. These are
|
||||
separate projects, with separate mailing lists and different bug
|
||||
reporting procedures
|
||||
* Bugs in releases or snapshots of GCC not issued by the GNU
|
||||
Project. Report them to whoever provided you with the release
|
||||
* 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
|
||||
|
||||
Where to post it
|
||||
|
||||
Please submit your bug report directly to the [21]GCC GNATS bug
|
||||
database. Only if this is not possible, mail all information to
|
||||
[22]bug-gcc@gnu.org or [23]gcc-bugs@gcc.gnu.org.
|
||||
|
||||
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 [24]GCC GNATS bug database.
|
||||
|
||||
Detailed bug reporting instructions
|
||||
|
||||
Please refer to the [25]next section when reporting bugs in GNAT, the
|
||||
Ada compiler.
|
||||
|
||||
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.
|
||||
|
||||
gcc -v -save-temps all-your-options source-file
|
||||
|
||||
Typically the preprocessed file (extension .i for C or .ii 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 (-9) 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.
|
||||
|
||||
The only 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.
|
||||
|
||||
Since we're supposed to be able to re-create the assembly output
|
||||
(extension .s), 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.
|
||||
|
||||
Whether to use MIME attachments or uuencode 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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Detailed bug reporting instructions for GNAT
|
||||
|
||||
See the [26]previous section for bug reporting instructions for GCC
|
||||
language implementations other than Ada.
|
||||
|
||||
Bug reports have to contain at least the following information in
|
||||
order to be useful:
|
||||
* the exact version of GCC, as shown by "gcc -v";
|
||||
* the system type;
|
||||
* the options when GCC was configured/built;
|
||||
* the exact command line passed to the gcc program triggering the
|
||||
bug (not just the flags passed to gnatmake, but gnatmake prints
|
||||
the parameters it passed to gcc)
|
||||
* a collection of source files for reproducing the bug, preferably a
|
||||
minimal set (see below);
|
||||
* a description of the expected behavior;
|
||||
* a description of actual behavior.
|
||||
|
||||
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 gnatchop, i.e. contains no
|
||||
non-Ada text. If the compilation terminated normally, you can usually
|
||||
obtain a list of dependencies using the "gnatls -d main_unit" command,
|
||||
where main_unit is the file name of the main compilation unit (which
|
||||
is also passed to gcc).
|
||||
|
||||
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.
|
||||
|
||||
If you use gnatprep, be sure to send in preprocessed sources (unless
|
||||
you have to report a bug in gnatprep).
|
||||
|
||||
When you have checked that your report meets these criteria, please
|
||||
submit it accoding to our [27]generic instructions. (If you use a
|
||||
mailing list for reporting, please include an "[Ada]" tag in the
|
||||
subject.)
|
||||
|
||||
Managing Bugs (GNATS and the test-suite)
|
||||
|
||||
This section contains information mostly intended for GCC
|
||||
contributors.
|
||||
|
||||
If you find a bug, but you are not fixing it (yet):
|
||||
1. Create a (minimal) test-case.
|
||||
2. Add the test-case to our test-suite, marking it as XFAIL unless
|
||||
the bug is a regression.
|
||||
3. Add a bug report referencing the test-case to GNATS.
|
||||
|
||||
If you fix a bug for which there is already a GNATS entry:
|
||||
1. Remove the XFAIL on the test-case.
|
||||
2. Close the bug report in GNATS.
|
||||
|
||||
If you find a bug, and you are fixing it right then:
|
||||
1. Create a (minimal) test-case.
|
||||
2. Add the test-case to our test-suite, marking it as PASS.
|
||||
3. Check in your fixes.
|
||||
_________________________________________________________________
|
||||
|
||||
Frequently Reported Bugs in GCC
|
||||
|
||||
Fortran
|
||||
|
||||
Fortran bugs are documented in the G77 manual rather than explicitly
|
||||
listed here. Please see [28]Known Causes of Trouble with GNU Fortran
|
||||
in the G77 manual.
|
||||
_________________________________________________________________
|
||||
|
||||
C
|
||||
|
||||
The following are not bugs in the C compiler, but are reported often
|
||||
enough to warrant a mention here.
|
||||
|
||||
Cannot initialize a static variable with stdin.
|
||||
This has nothing to do with GCC, but people ask us about it a
|
||||
lot. Code like this:
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
FILE *yyin = stdin;
|
||||
|
||||
will not compile with GNU libc (GNU/Linux libc6), because stdin
|
||||
is not a constant. This was done deliberately, to make it
|
||||
easier to maintain binary compatibility when the type FILE
|
||||
needs to be changed. It is surprising for people used to
|
||||
traditional Unix C libraries, but it is permitted by the C
|
||||
standard.
|
||||
|
||||
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.
|
||||
|
||||
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 [29]GNU libc web pages for
|
||||
details.
|
||||
|
||||
Cannot use preprocessor directive in macro arguments.
|
||||
Let me guess... you wrote code that looks something like this:
|
||||
|
||||
memcpy(dest, src,
|
||||
#ifdef PLATFORM1
|
||||
12
|
||||
#else
|
||||
24
|
||||
#endif
|
||||
);
|
||||
|
||||
and you got a whole pile of error messages:
|
||||
|
||||
test.c:11: warning: preprocessing directive not recognized within
|
||||
macro arg
|
||||
test.c:11: warning: preprocessing directive not recognized within
|
||||
macro arg
|
||||
test.c:11: warning: preprocessing directive not recognized within
|
||||
macro arg
|
||||
test.c: In function `foo':
|
||||
test.c:6: undefined or invalid # directive
|
||||
test.c:8: undefined or invalid # directive
|
||||
test.c:9: parse error before `24'
|
||||
test.c:10: undefined or invalid # directive
|
||||
test.c:11: parse error before `#'
|
||||
|
||||
Update: 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.
|
||||
|
||||
However, versions of GCC prior to 3.2 did not allow you to put
|
||||
#ifdef (or any other directive) inside the arguments of a
|
||||
macro. Your C library's <string.h> happens to define memcpy as
|
||||
a macro - this is perfectly legitimate. The code therefore
|
||||
would not compile.
|
||||
|
||||
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
|
||||
|
||||
#ifdef PLATFORM1
|
||||
memcpy(dest, src, 12);
|
||||
#else
|
||||
memcpy(dest, src, 24);
|
||||
#endif
|
||||
|
||||
This is a bit more typing, but I personally think it's better
|
||||
style in addition to being more portable.
|
||||
|
||||
In recent versions of glibc, printf is among the functions
|
||||
which are implemented as macros.
|
||||
_________________________________________________________________
|
||||
|
||||
C++
|
||||
|
||||
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. [30]How to report bugs tells you how to report a bug.
|
||||
|
||||
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,
|
||||
fix the code. 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 no longer C++. This means that
|
||||
code which might have `worked' in a previous version, is now rejected.
|
||||
You should update your code to be C++.
|
||||
|
||||
You should try to use the latest stable release of the GNU C++
|
||||
compiler.
|
||||
|
||||
Common problems updating from G++ 2.95 to G++ 3.0
|
||||
|
||||
G++ 3.0 conforms much closer to the ISO C++ standard (available at
|
||||
[31]http://www.ncits.org/cplusplus.htm).
|
||||
|
||||
We have also implemented some of the core and library defect reports
|
||||
(available at
|
||||
[32]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html &
|
||||
[33]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
|
||||
respectively).
|
||||
* The ABI has changed. This means that both class layout and name
|
||||
mangling is different. You must recompile all c++ libraries (if
|
||||
you don't you will get link errors).
|
||||
* The standard library is much more conformant, and uses the std::
|
||||
namespace.
|
||||
* std:: is now a real namespace, not an alias for ::.
|
||||
* The standard header files for the c library don't end with .h, but
|
||||
begin with c (i.e. <cstdlib> rather than <stdlib.h>). The .h names
|
||||
are still available, but are deprecated.
|
||||
* <strstream> is deprecated, use <sstream> instead.
|
||||
* streambuf::seekoff & streambuf::seekpos are private, instead use
|
||||
streambuf::pubseekoff & streambuf::pubseekpos respectively.
|
||||
* If std::operator << (std::ostream &, long long) doesn't exist, you
|
||||
need to recompile libstdc++ with --enable-long-long.
|
||||
|
||||
This means you may get lots of errors about things like strcmp not
|
||||
being found. You've most likely forgotton to tell the compiler to look
|
||||
in the std:: namespace. There are several ways to do this,
|
||||
* Say, std::strcmp at the call. This is the most explicit way of
|
||||
saying what you mean.
|
||||
* Say, using std::strcmp; somewhere before the call. You will need
|
||||
to do this for each function or type you wish to use from the
|
||||
standard library.
|
||||
* Say, using namespace std; somewhere before the call. This is the
|
||||
quick-but-dirty fix. This brings the whole of the std:: namespace
|
||||
into scope. Never do this in a header file, as you will be forcing
|
||||
users of your header file to do the same.
|
||||
|
||||
ABI bugs
|
||||
|
||||
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.
|
||||
|
||||
Covariant return types
|
||||
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.
|
||||
|
||||
Non-bugs
|
||||
|
||||
Here are some features that have been reported as bugs, but are not.
|
||||
|
||||
Nested classes can access private types of the containing class.
|
||||
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.
|
||||
|
||||
Classes in exception specifiers must be complete types.
|
||||
[15.4]/1 tells you that you cannot have an incomplete type, or
|
||||
pointer to incomplete (other than cv void *) in an exception
|
||||
specification.
|
||||
|
||||
G++ emits two copies of constructors and destructors.
|
||||
In general there are three types of constructors (and
|
||||
destructors).
|
||||
|
||||
1. The complete object constructor/destructor.
|
||||
2. The base object constructor/destructor.
|
||||
3. The allocating destructor/deallocating destructor.
|
||||
|
||||
The first two are different, when virtual base classes are
|
||||
involved. In some cases we can do better, and this is logged in
|
||||
GNATS.
|
||||
|
||||
Exceptions don't work in multithreaded applications.
|
||||
You need to rebuild g++ and libstdc++ with --enable-threads.
|
||||
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.
|
||||
|
||||
Global destructors are not run in the correct order.
|
||||
Global destructors should be run in the reverse order of their
|
||||
constructors completing. In most cases this is the same as the
|
||||
reverse order of constructors starting, but sometimes it is
|
||||
different, and that is important. You need to compile and link
|
||||
your programs with --use-cxa-atexit. We have not turned this
|
||||
switch on by default, as it requires a cxa aware runtime
|
||||
library (libc, glibc, or equivalent).
|
||||
|
||||
Problems with floating point computations.
|
||||
In a number of cases, GCC appears to perform floating point
|
||||
computations incorrectly. For example, the program
|
||||
|
||||
#include <iostream>
|
||||
int main() {
|
||||
double min = 0.0;
|
||||
double max = 0.5;
|
||||
double width = 0.01;
|
||||
std::cout << (int)(((max - min) / width) - 1) << std::endl;
|
||||
}
|
||||
|
||||
might print 50 on some systems and optimization levels, and 51
|
||||
on others.
|
||||
|
||||
The is the result of rounding: 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.
|
||||
|
||||
This is not a bug in the compiler, but an inherent limitation
|
||||
of the float and double types. Please study [34]this paper for
|
||||
more information.
|
||||
|
||||
Templates, scoping, and digraphs.
|
||||
If you have a class in global namespace, say named X, and want
|
||||
to give it as a template argument to some other class, say
|
||||
std::vector, then this here fails with a parser error:
|
||||
std::vector<::X>.
|
||||
|
||||
The reason is that the standard mandates that the sequence <:
|
||||
is treated as if it were the token [, and the parser then
|
||||
reports a parse error before the character : (by which it means
|
||||
the second colon). There are several such combinations of
|
||||
characters, and they are called digraphs.
|
||||
|
||||
The simplest way to avoid this is to write std::vector< ::X>,
|
||||
i.e. place a space between the opening angle bracket and the
|
||||
scope operator.
|
||||
|
||||
Missing features
|
||||
|
||||
We know some things are missing from G++.
|
||||
|
||||
The export keyword is not implemented.
|
||||
Most C++ compilers (G++ included) do not yet implement export,
|
||||
which is necessary for separate compilation of template
|
||||
declarations and definitions. Without export, 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.
|
||||
|
||||
Two stage lookup in templates is not implemented.
|
||||
[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.
|
||||
|
||||
Parse errors for "simple" code
|
||||
|
||||
Up to and including GCC 3.0, the compiler will give "parse error" for
|
||||
seemingly simple code, such as
|
||||
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
|
||||
}
|
||||
|
||||
The problem is that GCC starts to parse the declaration of b as a
|
||||
function b returning B, taking a function returning A 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:
|
||||
(B(A(2))).func();
|
||||
|
||||
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:
|
||||
B b((0,A()),A(1));
|
||||
|
||||
Another example is the parse error for the return statement in
|
||||
struct A{};
|
||||
|
||||
struct B{
|
||||
A a;
|
||||
A f1(bool);
|
||||
};
|
||||
|
||||
A B::f1(bool b)
|
||||
{
|
||||
if (b)
|
||||
return (A());
|
||||
return a;
|
||||
}
|
||||
|
||||
The problem is that the compiler interprets A() as a function (taking
|
||||
no arguments, returning A), and (A()) as a cast - with a missing
|
||||
expression, hence the parse error. The work-around is to omit the
|
||||
parentheses:
|
||||
if (b)
|
||||
return A();
|
||||
|
||||
This problem occurs in a number of variants; in throw 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.
|
||||
|
||||
Optimization at -O3 takes a very long time
|
||||
|
||||
At -O3, 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.
|
||||
|
||||
References
|
||||
|
||||
1. http://www.gnu.org/software/gcc/bugs.html
|
||||
2. http://gcc.gnu.org/bugs.html#report
|
||||
3. http://gcc.gnu.org/bugs.html#need
|
||||
4. http://gcc.gnu.org/bugs.html#dontwant
|
||||
5. http://gcc.gnu.org/bugs.html#where
|
||||
6. http://gcc.gnu.org/bugs.html#detailed
|
||||
7. http://gcc.gnu.org/bugs.html#gnat
|
||||
8. http://gcc.gnu.org/bugs.html#manage
|
||||
9. http://gcc.gnu.org/bugs.html#known
|
||||
10. http://gcc.gnu.org/bugs.html#general
|
||||
11. http://gcc.gnu.org/bugs.html#fortran
|
||||
12. http://gcc.gnu.org/bugs.html#c
|
||||
13. http://gcc.gnu.org/bugs.html#cplusplus
|
||||
14. http://gcc.gnu.org/bugs.html#updating
|
||||
15. http://gcc.gnu.org/bugs.html#nonbugs
|
||||
16. http://gcc.gnu.org/bugs.html#missing
|
||||
17. http://gcc.gnu.org/bugs.html#parsing
|
||||
18. http://gcc.gnu.org/bugs.html#-O3
|
||||
19. http://gcc.gnu.org/gnats.html
|
||||
20. http://gcc.gnu.org/bugs.html#known
|
||||
21. http://gcc.gnu.org/gnats.html
|
||||
22. mailto:bug-gcc@gnu.org
|
||||
23. mailto:gcc-bugs@gcc.gnu.org
|
||||
24. http://gcc.gnu.org/gnats.html
|
||||
25. http://gcc.gnu.org/bugs.html#gnat
|
||||
26. http://gcc.gnu.org/bugs.html#detailed
|
||||
27. http://gcc.gnu.org/bugs.html#where
|
||||
28. http://gcc.gnu.org/onlinedocs/g77/Trouble.html
|
||||
29. http://www.gnu.org/software/glibc/
|
||||
30. http://gcc.gnu.org/bugs.html#report
|
||||
31. http://www.ncits.org/cplusplus.htm
|
||||
32. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html
|
||||
33. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
|
||||
34. http://www.validlab.com/goldberg/paper.ps
|
18765
contrib/gcc/ChangeLog
18765
contrib/gcc/ChangeLog
File diff suppressed because it is too large
Load Diff
653
contrib/gcc/FAQ
Normal file
653
contrib/gcc/FAQ
Normal file
@ -0,0 +1,653 @@
|
||||
|
||||
GCC Frequently Asked Questions
|
||||
|
||||
The latest version of this document is always available at
|
||||
[1]http://www.gnu.org/software/gcc/faq.html.
|
||||
|
||||
This FAQ tries to answer specific questions concerning GCC. For
|
||||
general information regarding C, C++, resp. Fortran please check the
|
||||
[2]comp.lang.c FAQ, [3]comp.std.c++ FAQ, and the [4]Fortran
|
||||
Information page.
|
||||
|
||||
Other GCC-related FAQs: [5]libstdc++-v3, and [6]GCJ.
|
||||
_________________________________________________________________
|
||||
|
||||
Questions
|
||||
|
||||
1. [7]General information
|
||||
1. [8]What is the relationship between GCC and EGCS?
|
||||
2. [9]What is the relationship between GCC and Cygnus / Red Hat?
|
||||
3. [10]What is an open development model?
|
||||
4. [11]How do I report a bug?
|
||||
5. [12]How do I get a bug fixed or a feature added?
|
||||
6. [13]Does GCC work on my platform?
|
||||
2. [14]Installation
|
||||
1. [15]How to install multiple versions of GCC
|
||||
2. [16]Dynamic linker is unable to find GCC libraries
|
||||
3. [17]libstdc++/libio tests fail badly with --enable-shared
|
||||
4. [18]GCC can not find GNU as/GNU ld
|
||||
5. [19]cpp: Usage:... Error
|
||||
6. [20]Optimizing the compiler itself
|
||||
3. [21]Testsuite problems
|
||||
1. [22]Unable to run the testsuite
|
||||
2. [23]How do I pass flags like -fnew-abi to the testsuite?
|
||||
3. [24]How can I run the test suite with multiple options?
|
||||
4. [25]Older versions of GCC
|
||||
1. [26]Is there a stringstream / sstream for GCC 2.95.2?
|
||||
5. [27]Miscellaneous
|
||||
1. [28]Virtual memory exhausted
|
||||
2. [29]Friend Templates
|
||||
3. [30]dynamic_cast, throw, typeid don't work with shared
|
||||
libraries
|
||||
4. [31]Why do I need autoconf, bison, xgettext, automake, etc?
|
||||
5. [32]Why can't I build a shared library?
|
||||
6. [33]How to work around too long C++ symbol names?
|
||||
(-fsquangle)
|
||||
7. [34]When building C++, the linker says my constructors,
|
||||
destructors or virtual tables are undefined, but I defined
|
||||
them
|
||||
8. [35]Will GCC someday include an incremental linker?
|
||||
_________________________________________________________________
|
||||
|
||||
General information
|
||||
|
||||
What is the relationship between GCC and EGCS?
|
||||
|
||||
In 1990/1991 gcc version 1 had reached a point of stability. For the
|
||||
targets it could support, it worked well. It had limitations inherent
|
||||
in its design that would be difficult to resolve, so a major effort
|
||||
was made to resolve those limitiations and gcc version 2 was the
|
||||
result.
|
||||
|
||||
When we had gcc2 in a useful state, development efforts on gcc1
|
||||
stopped and we all concentrated on making gcc2 better than gcc1 could
|
||||
ever be. This is the kind of step forward we wanted to make with the
|
||||
EGCS project when it was formed in 1997.
|
||||
|
||||
In April 1999 the Free Software Foundation officially halted
|
||||
development on the gcc2 compiler and appointed the EGCS project as the
|
||||
official GCC maintainers. The net result was a single project which
|
||||
carries forward GCC development under the ultimate control of the
|
||||
[36]GCC Steering Committee.
|
||||
_________________________________________________________________
|
||||
|
||||
What is the relationship between GCC and Cygnus / Red Hat?
|
||||
|
||||
It is a common mis-conception that Red Hat controls GCC either
|
||||
directly or indirectly.
|
||||
|
||||
While Red Hat does donate hardware, network connections, code and
|
||||
developer time to GCC development, Red Hat does not control GCC.
|
||||
|
||||
Overall control of GCC is in the hands of the [37]GCC Steering
|
||||
Committee which includes people from a variety of different
|
||||
organizations and backgrounds. The purpose of the steering committee
|
||||
is to make decisions in the best interest of GCC and to help ensure
|
||||
that no individual or company has control over the project.
|
||||
|
||||
To summarize, Red Hat contributes to the GCC project, but does not
|
||||
exert a controlling influence over GCC.
|
||||
_________________________________________________________________
|
||||
|
||||
What is an open development model?
|
||||
|
||||
We are using a bazaar style [38][1] approach to GCC development: we
|
||||
make snapshots publicly available to anyone who wants to try them; we
|
||||
welcome anyone to join the development mailing list. All of the
|
||||
discussions on the development mailing list are available via the web.
|
||||
We're going to be making releases with a much higher frequency than
|
||||
they have been made in the past.
|
||||
|
||||
In addition to weekly snapshots of the GCC development sources, we
|
||||
have the sources readable from a CVS server by anyone. Furthermore we
|
||||
are using remote CVS to allow remote maintainers write access to the
|
||||
sources.
|
||||
|
||||
There have been many potential GCC developers who were not able to
|
||||
participate in GCC development in the past. We want these people to
|
||||
help in any way they can; we ultimately want GCC to be the best
|
||||
compiler in the world.
|
||||
|
||||
A compiler is a complicated piece of software, there will still be
|
||||
strong central maintainers who will reject patches, who will demand
|
||||
documentation of implementations, and who will keep the level of
|
||||
quality as high as it is today. Code that could use wider testing may
|
||||
be integrated--code that is simply ill-conceived won't be.
|
||||
|
||||
GCC is not the first piece of software to use this open development
|
||||
process; FreeBSD, the Emacs lisp repository, and the Linux kernel are
|
||||
a few examples of the bazaar style of development.
|
||||
|
||||
With GCC, we are adding new features and optimizations at a rate that
|
||||
has not been done since the creation of gcc2; these additions
|
||||
inevitably have a temporarily destabilizing effect. With the help of
|
||||
developers working together with this bazaar style development, the
|
||||
resulting stability and quality levels will be better than we've had
|
||||
before.
|
||||
|
||||
[1] We've been discussing different development models a lot over
|
||||
the past few months. The paper which started all of this introduced
|
||||
two terms: A cathedral development model versus a bazaar
|
||||
development model. The paper is written by Eric S. Raymond, it is
|
||||
called ``[39]The Cathedral and the Bazaar''. The paper is a useful
|
||||
starting point for discussions.
|
||||
_________________________________________________________________
|
||||
|
||||
How do I report a bug?
|
||||
|
||||
There are complete instructions [40]here.
|
||||
_________________________________________________________________
|
||||
|
||||
How do I get a bug fixed or a feature added?
|
||||
|
||||
There are lots of ways to get something fixed. The list below may be
|
||||
incomplete, but it covers many of the common cases. These are listed
|
||||
roughly in order of increasing difficulty for the average GCC user,
|
||||
meaning someone who is not skilled in the internals of GCC, and where
|
||||
difficulty is measured in terms of the time required to fix the bug.
|
||||
No alternative is better than any other; each has its benefits and
|
||||
disadvantages.
|
||||
* Hire someone to fix it for you. There are various companies and
|
||||
individuals providing support for GCC. This alternative costs
|
||||
money, but is relatively likely to get results.
|
||||
* [41]Report the problem to the GCC GNATS bug tracking system and
|
||||
hope that someone will be kind enough to fix it for you. While
|
||||
this is certainly possible, and often happens, there is no
|
||||
guarantee that it will. You should not expect the same response
|
||||
from this method that you would see from a commercial support
|
||||
organization since the people who read GCC bug reports, if they
|
||||
choose to help you, will be volunteering their time. This
|
||||
alternative will work best if you follow the directions on
|
||||
[42]submitting bugreports.
|
||||
* Fix it yourself. This alternative will probably bring results, if
|
||||
you work hard enough, but will probably take a lot of time, and,
|
||||
depending on the quality of your work and the perceived benefits
|
||||
of your changes, your code may or may not ever make it into an
|
||||
official release of GCC.
|
||||
_________________________________________________________________
|
||||
|
||||
Does GCC work on my platform?
|
||||
|
||||
The host/target specific installation notes for GCC include
|
||||
information about known problems with installing or using GCC on
|
||||
particular platforms. These are included in the sources for a release
|
||||
in INSTALL/specific.html, and the [43]latest version is always
|
||||
available at the GCC web site. Reports of [44]successful builds for
|
||||
several versions of GCC are also available at the web site.
|
||||
_________________________________________________________________
|
||||
|
||||
Installation
|
||||
|
||||
How to install multiple versions of GCC
|
||||
|
||||
It may be desirable to install multiple versions of the compiler on
|
||||
the same system. This can be done by using different prefix paths at
|
||||
configure time and a few symlinks.
|
||||
|
||||
Basically, configure the two compilers with different --prefix
|
||||
options, then build and install each compiler. Assume you want "gcc"
|
||||
to be the latest compiler and available in /usr/local/bin; also assume
|
||||
that you want "gcc2" to be the older gcc2 compiler and also available
|
||||
in /usr/local/bin.
|
||||
|
||||
The easiest way to do this is to configure the new GCC with
|
||||
--prefix=/usr/local/gcc and the older gcc2 with
|
||||
--prefix=/usr/local/gcc2. Build and install both compilers. Then make
|
||||
a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from
|
||||
/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
|
||||
for the "g++", "c++" and "g77" compiler drivers.
|
||||
|
||||
An alternative to using symlinks is to configure with a
|
||||
--program-transform-name option. This option specifies a sed command
|
||||
to process installed program names with. Using it you can, for
|
||||
instance, have all the new GCC programs installed as "new-gcc" and the
|
||||
like. You will still have to specify different --prefix options for
|
||||
new GCC and old GCC, because it is only the executable program names
|
||||
that are transformed. The difference is that you (as administrator) do
|
||||
not have to set up symlinks, but must specify additional directories
|
||||
in your (as a user) PATH. A complication with --program-transform-name
|
||||
is that the sed command invariably contains characters significant to
|
||||
the shell, and these have to be escaped correctly, also it is not
|
||||
possible to use "^" or "$" in the command. Here is the option to
|
||||
prefix "new-" to the new GCC installed programs:
|
||||
|
||||
--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'
|
||||
|
||||
With the above --prefix option, that will install the new GCC programs
|
||||
into /usr/local/gcc/bin with names prefixed by "new-". You can use
|
||||
--program-transform-name if you have multiple versions of GCC, and
|
||||
wish to be sure about which version you are invoking.
|
||||
|
||||
If you use --prefix, GCC may have difficulty locating a GNU assembler
|
||||
or linker on your system, [45]GCC can not find GNU as/GNU ld explains
|
||||
how to deal with this.
|
||||
|
||||
Another option that may be easier is to use the --program-prefix= or
|
||||
--program-suffix= options to configure. So if you're installing GCC
|
||||
2.95.2 and don't want to disturb the current version of GCC in
|
||||
/usr/local/bin/, you could do
|
||||
|
||||
configure --program-suffix=-2.95.2 <other configure options>
|
||||
|
||||
This should result in GCC being installed as /usr/local/bin/gcc-2.95.2
|
||||
instead of /usr/local/bin/gcc.
|
||||
_________________________________________________________________
|
||||
|
||||
Dynamic linker is unable to find GCC libraries
|
||||
|
||||
This problem manifests itself by programs not finding shared libraries
|
||||
they depend on when the programs are started. Note this problem often
|
||||
manifests itself with failures in the libio/libstdc++ tests after
|
||||
configuring with --enable-shared and building GCC.
|
||||
|
||||
GCC does not specify a runpath so that the dynamic linker can find
|
||||
dynamic libraries at runtime.
|
||||
|
||||
The short explanation is that if you always pass a -R option to the
|
||||
linker, then your programs become dependent on directories which may
|
||||
be NFS mounted, and programs may hang unnecessarily when an NFS server
|
||||
goes down.
|
||||
|
||||
The problem is not programs that do require the directories; those
|
||||
programs are going to hang no matter what you do. The problem is
|
||||
programs that do not require the directories.
|
||||
|
||||
SunOS effectively always passed a -R option for every -L option; this
|
||||
was a bad idea, and so it was removed for Solaris. We should not
|
||||
recreate it.
|
||||
|
||||
However, if you feel you really need such an option to be passed
|
||||
automatically to the linker, you may add it to the GCC specs file.
|
||||
This file can be found in the same directory that contains cc1 (run
|
||||
gcc -print-prog-name=cc1 to find it). You may add linker flags such as
|
||||
-R or -rpath, depending on platform and linker, to the *link or *lib
|
||||
specs.
|
||||
|
||||
Another alternative is to install a wrapper script around gcc, g++ or
|
||||
ld that adds the appropriate directory to the environment variable
|
||||
LD_RUN_PATH or equivalent (again, it's platform-dependent).
|
||||
|
||||
Yet another option, that works on a few platforms, is to hard-code the
|
||||
full pathname of the library into its soname. This can only be
|
||||
accomplished by modifying the appropriate .ml file within
|
||||
libstdc++/config (and also libg++/config, if you are building libg++),
|
||||
so that $(libdir)/ appears just before the library name in -soname or
|
||||
-h options.
|
||||
_________________________________________________________________
|
||||
|
||||
GCC can not find GNU as/GNU ld
|
||||
|
||||
GCC searches the PATH for an assembler and a loader, but it only does
|
||||
so after searching a directory list hard-coded in the GCC executables.
|
||||
Since, on most platforms, the hard-coded list includes directories in
|
||||
which the system asembler and loader can be found, you may have to
|
||||
take one of the following actions to arrange that GCC uses the GNU
|
||||
versions of those programs.
|
||||
|
||||
To ensure that GCC finds the GNU assembler (the GNU loader), which are
|
||||
required by [46]some configurations, you should configure these with
|
||||
the same --prefix option as you used for GCC. Then build & install GNU
|
||||
as (GNU ld) and proceed with building GCC.
|
||||
|
||||
Another alternative is to create links to GNU as and ld in any of the
|
||||
directories printed by the command `gcc -print-search-dirs | grep
|
||||
'^programs:''. The link to `ld' should be named `real-ld' if `ld'
|
||||
already exists. If such links do not exist while you're compiling GCC,
|
||||
you may have to create them in the build directories too, within the
|
||||
gcc directory and in all the gcc/stage* subdirectories.
|
||||
|
||||
GCC 2.95 allows you to specify the full pathname of the assembler and
|
||||
the linker to use. The configure flags are `--with-as=/path/to/as' and
|
||||
`--with-ld=/path/to/ld'. GCC will try to use these pathnames before
|
||||
looking for `as' or `(real-)ld' in the standard search dirs. If, at
|
||||
configure-time, the specified programs are found to be GNU utilities,
|
||||
`--with-gnu-as' and `--with-gnu-ld' need not be used; these flags will
|
||||
be auto-detected. One drawback of this option is that it won't allow
|
||||
you to override the search path for assembler and linker with
|
||||
command-line options -B/path/ if the specified filenames exist.
|
||||
_________________________________________________________________
|
||||
|
||||
cpp: Usage:... Error
|
||||
|
||||
If you get an error like this when building GCC (particularly when
|
||||
building __mulsi3), then you likely have a problem with your
|
||||
environment variables.
|
||||
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
|
||||
[switches] input output
|
||||
|
||||
First look for an explicit '.' in either LIBRARY_PATH or
|
||||
GCC_EXEC_PREFIX from your environment. If you do not find an explicit
|
||||
'.', look for an empty pathname in those variables. Note that ':' at
|
||||
either the start or end of these variables is an implicit '.' and will
|
||||
cause problems.
|
||||
|
||||
Also note '::' in these paths will also cause similar problems.
|
||||
_________________________________________________________________
|
||||
|
||||
Optimizing the compiler itself
|
||||
|
||||
If you want to test a particular optimization option, it's useful to
|
||||
try bootstrapping the compiler with that option turned on. For
|
||||
example, to test the -fssa option, you could bootstrap like this:
|
||||
make BOOT_CFLAGS="-O2 -fssa" bootstrap
|
||||
_________________________________________________________________
|
||||
|
||||
Testsuite problems
|
||||
|
||||
Unable to run the testsuite
|
||||
|
||||
If you get a message about unable to find "standard.exp" when trying
|
||||
to run the GCC testsuites, then your dejagnu is too old to run the GCC
|
||||
tests. You will need to get a newer version of dejagnu from
|
||||
[47]http://www.gnu.org/software/dejagnu/dejagnu.html.
|
||||
_________________________________________________________________
|
||||
|
||||
How do I pass flags like -fnew-abi to the testsuite?
|
||||
|
||||
If you invoke runtest directly, you can use the --tool_opts option,
|
||||
e.g:
|
||||
runtest --tool_opts "-fnew-abi -fno-honor-std" <other options>
|
||||
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
e.g:
|
||||
make RUNTESTFLAGS="--tool_opts '-fnew-abi -fno-honor-std'" check-g++
|
||||
_________________________________________________________________
|
||||
|
||||
How can I run the test suite with multiple options?
|
||||
|
||||
If you invoke runtest directly, you can use the --target_board option,
|
||||
e.g:
|
||||
runtest --target_board "unix{-fPIC,-fpic,}" <other options>
|
||||
|
||||
Or, if you use make check you can use the make variable RUNTESTFLAGS,
|
||||
e.g:
|
||||
make RUNTESTFLAGS="--target_board 'unix{-fPIC,-fpic,}'" check-gcc
|
||||
|
||||
Either of these examples will run the tests three times. Once with
|
||||
-fPIC, once with -fpic, and once with no additional flags.
|
||||
|
||||
This technique is particularly useful on multilibbed targets.
|
||||
_________________________________________________________________
|
||||
|
||||
Older versions of GCC and EGCS
|
||||
|
||||
Is there a stringstream / sstream for GCC 2.95.2?
|
||||
|
||||
Yes, it's at:
|
||||
[48]http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream.
|
||||
_________________________________________________________________
|
||||
|
||||
Miscellaneous
|
||||
|
||||
Virtual memory exhausted error
|
||||
|
||||
This error means your system ran out of memory; this can happen for
|
||||
large files, particularly when optimizing. If you're getting this
|
||||
error you should consider trying to simplify your files or reducing
|
||||
the optimization level.
|
||||
|
||||
Note that using -pedantic or -Wreturn-type can cause an explosion in
|
||||
the amount of memory needed for template-heavy C++ code, such as code
|
||||
that uses STL. Also note that -Wall includes -Wreturn-type, so if you
|
||||
use -Wall you will need to specify -Wno-return-type to turn it off.
|
||||
_________________________________________________________________
|
||||
|
||||
Friend Templates
|
||||
|
||||
In order to make a specialization of a template function a friend of a
|
||||
(possibly template) class, you must explicitly state that the friend
|
||||
function is a template, by appending angle brackets to its name, and
|
||||
this template function must have been declared already. Here's an
|
||||
example:
|
||||
template <typename T> class foo {
|
||||
friend void bar(foo<T>);
|
||||
}
|
||||
|
||||
The above declaration declares a non-template function named bar, so
|
||||
it must be explicitly defined for each specialization of foo. A
|
||||
template definition of bar won't do, because it is unrelated with the
|
||||
non-template declaration above. So you'd have to end up writing:
|
||||
void bar(foo<int>) { /* ... */ }
|
||||
void bar(foo<void>) { /* ... */ }
|
||||
|
||||
If you meant bar to be a template function, you should have
|
||||
forward-declared it as follows. Note that, since the template function
|
||||
declaration refers to the template class, the template class must be
|
||||
forward-declared too:
|
||||
template <typename T>
|
||||
class foo;
|
||||
|
||||
template <typename T>
|
||||
void bar(foo<T>);
|
||||
|
||||
template <typename T>
|
||||
class foo {
|
||||
friend void bar<>(foo<T>);
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
void bar(foo<T>) { /* ... */ }
|
||||
|
||||
In this case, the template argument list could be left empty, because
|
||||
it can be implicitly deduced from the function arguments, but the
|
||||
angle brackets must be present, otherwise the declaration will be
|
||||
taken as a non-template function. Furthermore, in some cases, you may
|
||||
have to explicitly specify the template arguments, to remove
|
||||
ambiguity.
|
||||
|
||||
An error in the last public comment draft of the ANSI/ISO C++ Standard
|
||||
and the fact that previous releases of GCC would accept such friend
|
||||
declarations as template declarations has led people to believe that
|
||||
the forward declaration was not necessary, but, according to the final
|
||||
version of the Standard, it is.
|
||||
_________________________________________________________________
|
||||
|
||||
dynamic_cast, throw, typeid don't work with shared libraries
|
||||
|
||||
The new C++ ABI in the GCC 3.0 series uses address comparisons, rather
|
||||
than string compares, to determine type equality. This leads to better
|
||||
performance. Like other objects that have to be present in the final
|
||||
executable, these std::typeinfo_t objects have what is called vague
|
||||
linkage because they are not tightly bound to any one particular
|
||||
translation unit (object file). The compiler has to emit them in any
|
||||
translation unit that requires their presence, and then rely on the
|
||||
linking and loading process to make sure that only one of them is
|
||||
active in the final executable. With static linking all of these
|
||||
symbols are resolved at link time, but with dynamic linking, further
|
||||
resolution occurs at load time. You have to ensure that objects within
|
||||
a shared library are resolved against objects in the executable and
|
||||
other shared libraries.
|
||||
* For a program which is linked against a shared library, no
|
||||
additional precautions need taking.
|
||||
* You cannot create a shared library with the "-Bsymbolic" option,
|
||||
as that prevents the resolution described above.
|
||||
* If you use dlopen to explicitly load code from a shared library,
|
||||
you must do several things. First, export global symbols from the
|
||||
executable by linking it with the "-E" flag (you will have to
|
||||
specify this as "-Wl,-E" if you are invoking the linker in the
|
||||
usual manner from the compiler driver, g++). You must also make
|
||||
the external symbols in the loaded library available for
|
||||
subsequent libraries by providing the RTLD_GLOBAL flag to dlopen.
|
||||
The symbol resolution can be immediate or lazy.
|
||||
|
||||
Template instantiations are another, user visible, case of objects
|
||||
with vague linkage, which needs similar resolution. If you do not take
|
||||
the above precautions, you may discover that a template instantiation
|
||||
with the same argument list, but instantiated in multiple translation
|
||||
units, has several addresses, depending in which translation unit the
|
||||
address is taken. (This is not an exhaustive list of the kind of
|
||||
objects which have vague linkage and are expected to be resolved
|
||||
during linking & loading.)
|
||||
|
||||
If you are worried about different objects with the same name
|
||||
colliding during the linking or loading process, then you should use
|
||||
namespaces to disambiguate them. Giving distinct objects with global
|
||||
linkage the same name is a violation of the One Definition Rule (ODR)
|
||||
[basic.def.odr].
|
||||
|
||||
For more details about the way that GCC implements these and other C++
|
||||
features, please read the [49]ABI specification. Note the
|
||||
std::typeinfo_t objects which must be resolved all begin with "_ZTS".
|
||||
Refer to ld's documentation for a description of the "-E" &
|
||||
"-Bsymbolic" flags.
|
||||
_________________________________________________________________
|
||||
|
||||
Why do I need autoconf, bison, xgettext, automake, etc?
|
||||
|
||||
If you're using diffs up dated from one snapshot to the next, or if
|
||||
you're using the CVS repository, you may need several additional
|
||||
programs to build GCC.
|
||||
|
||||
These include, but are not necessarily limited to autoconf, automake,
|
||||
bison, and xgettext.
|
||||
|
||||
This is necessary because neither diff nor cvs keep timestamps
|
||||
correct. This causes problems for generated files as "make" may think
|
||||
those generated files are out of date and try to regenerate them.
|
||||
|
||||
An easy way to work around this problem is to use the gcc_update
|
||||
script in the contrib subdirectory of GCC, which handles this
|
||||
transparently without requiring installation of any additional tools.
|
||||
(Note: Up to and including GCC 2.95 this script was called egcs_update
|
||||
.)
|
||||
|
||||
When building from diffs or CVS or if you modified some sources, you
|
||||
may also need to obtain development versions of some GNU tools, as the
|
||||
production versions do not necessarily handle all features needed to
|
||||
rebuild GCC.
|
||||
|
||||
In general, the current versions of these tools from
|
||||
[50]ftp://ftp.gnu.org/gnu/ will work. At present, Autoconf 2.50 is not
|
||||
supported, and you will need to use Autoconf 2.13; work is in progress
|
||||
to fix this problem. Also look at
|
||||
[51]ftp://gcc.gnu.org/pub/gcc/infrastructure/ for any special versions
|
||||
of packages.
|
||||
_________________________________________________________________
|
||||
|
||||
Why can't I build a shared library?
|
||||
|
||||
When building a shared library you may get an error message from the
|
||||
linker like `assert pure-text failed:' or `DP relative code in file'.
|
||||
|
||||
This kind of error occurs when you've failed to provide proper flags
|
||||
to gcc when linking the shared library.
|
||||
|
||||
You can get this error even if all the .o files for the shared library
|
||||
were compiled with the proper PIC option. When building a shared
|
||||
library, gcc will compile additional code to be included in the
|
||||
library. That additional code must also be compiled with the proper
|
||||
PIC option.
|
||||
|
||||
Adding the proper PIC option (-fpic or -fPIC) to the link line which
|
||||
creates the shared library will fix this problem on targets that
|
||||
support PIC in this manner. For example:
|
||||
gcc -c -fPIC myfile.c
|
||||
gcc -shared -o libmyfile.so -fPIC myfile.o
|
||||
_________________________________________________________________
|
||||
|
||||
How to work around too long C++ symbol names (-fsquangle)
|
||||
|
||||
This question does not apply to GCC 3.0 or later versions, which have
|
||||
a new C++ ABI with much shorter mangled names.
|
||||
|
||||
If the standard assembler of your platform can't cope with the large
|
||||
symbol names that the default g++ name mangling mechanism produces,
|
||||
your best bet is to use GNU as, from the GNU binutils package.
|
||||
|
||||
Unfortunately, GNU as does not support all platforms supported by GCC,
|
||||
so you may have to use an experimental work-around: the -fsquangle
|
||||
option, that enables compression of symbol names.
|
||||
|
||||
Note that this option is still under development, and subject to
|
||||
change. Since it modifies the name mangling mechanism, you'll need to
|
||||
build libstdc++ and any other C++ libraries with this option enabled.
|
||||
Furthermore, if this option changes its behavior in the future, you'll
|
||||
have to rebuild them all again. :-(
|
||||
|
||||
This option can be enabled by default by initializing
|
||||
`flag_do_squangling' with `1' in `gcc/cp/decl2.c' (it is not
|
||||
initialized by default), then rebuilding GCC and any C++ libraries.
|
||||
_________________________________________________________________
|
||||
|
||||
When building C++, the linker says my constructors, destructors or virtual
|
||||
tables are undefined, but I defined them
|
||||
|
||||
The ISO C++ Standard specifies that all virtual methods of a class
|
||||
that are not pure-virtual must be defined, but does not require any
|
||||
diagnostic for violations of this rule [class.virtual]/8. Based on
|
||||
this assumption, GCC will only emit the implicitly defined
|
||||
constructors, the assignment operator, the destructor and the virtual
|
||||
table of a class in the translation unit that defines its first such
|
||||
non-inline method.
|
||||
|
||||
Therefore, if you fail to define this particular method, the linker
|
||||
may complain about the lack of definitions for apparently unrelated
|
||||
symbols. Unfortunately, in order to improve this error message, it
|
||||
might be necessary to change the linker, and this can't always be
|
||||
done.
|
||||
|
||||
The solution is to ensure that all virtual methods that are not pure
|
||||
are defined. Note that a destructor must be defined even if it is
|
||||
declared pure-virtual [class.dtor]/7.
|
||||
_________________________________________________________________
|
||||
|
||||
Will GCC someday include an incremental linker?
|
||||
|
||||
Incremental linking is part of the linker, not the compiler. As such,
|
||||
GCC doesn't have anything to do with incremental linking. Depending on
|
||||
what platform you use, it may be possible to tell GCC to use the
|
||||
platform's native linker (e.g., Solaris' ild(1)).
|
||||
|
||||
References
|
||||
|
||||
1. http://www.gnu.org/software/gcc/faq.html
|
||||
2. http://www.eskimo.com/~scs/C-faq/top.html
|
||||
3. http://www.research.att.com/~austern/csc/faq.html
|
||||
4. http://www.fortran.com/fortran/info.html
|
||||
5. http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html
|
||||
6. http://gcc.gnu.org/java/faq.html
|
||||
7. http://gcc.gnu.org/faq.html#general
|
||||
8. http://gcc.gnu.org/faq.html#gcc
|
||||
9. http://gcc.gnu.org/faq.html#cygnus
|
||||
10. http://gcc.gnu.org/faq.html#open-development
|
||||
11. http://gcc.gnu.org/faq.html#bugreport
|
||||
12. http://gcc.gnu.org/faq.html#support
|
||||
13. http://gcc.gnu.org/faq.html#platforms
|
||||
14. http://gcc.gnu.org/faq.html#installation
|
||||
15. http://gcc.gnu.org/faq.html#multiple
|
||||
16. http://gcc.gnu.org/faq.html#rpath
|
||||
17. http://gcc.gnu.org/faq.html#rpath
|
||||
18. http://gcc.gnu.org/faq.html#gas
|
||||
19. http://gcc.gnu.org/faq.html#environ
|
||||
20. http://gcc.gnu.org/faq.html#optimizing
|
||||
21. http://gcc.gnu.org/faq.html#testsuite
|
||||
22. http://gcc.gnu.org/faq.html#dejagnu
|
||||
23. http://gcc.gnu.org/faq.html#testoptions
|
||||
24. http://gcc.gnu.org/faq.html#multipletests
|
||||
25. http://gcc.gnu.org/faq.html#old
|
||||
26. http://gcc.gnu.org/faq.html#2.95sstream
|
||||
27. http://gcc.gnu.org/faq.html#misc
|
||||
28. http://gcc.gnu.org/faq.html#memexhausted
|
||||
29. http://gcc.gnu.org/faq.html#friend
|
||||
30. http://gcc.gnu.org/faq.html#dso
|
||||
31. http://gcc.gnu.org/faq.html#generated_files
|
||||
32. http://gcc.gnu.org/faq.html#picflag-needed
|
||||
33. http://gcc.gnu.org/faq.html#squangle
|
||||
34. http://gcc.gnu.org/faq.html#vtables
|
||||
35. http://gcc.gnu.org/faq.html#incremental
|
||||
36. http://gcc.gnu.org/steering.html
|
||||
37. http://gcc.gnu.org/steering.html
|
||||
38. http://gcc.gnu.org/faq.html#cathedral-vs-bazaar
|
||||
39. http://www.tuxedo.org/~esr/writings/cathedral-bazaar/
|
||||
40. http://gcc.gnu.org/bugs.html
|
||||
41. http://gcc.gnu.org/bugs.html
|
||||
42. http://gcc.gnu.org/bugs.html
|
||||
43. http://gcc.gnu.org/install/specific.html
|
||||
44. http://gcc.gnu.org/buildstat.html
|
||||
45. http://gcc.gnu.org/faq.html#gas
|
||||
46. http://gcc.gnu.org/install/specific.html
|
||||
47. http://www.gnu.org/software/dejagnu/dejagnu.html
|
||||
48. http://gcc.gnu.org/ml/libstdc++/2000-q2/msg00700/sstream
|
||||
49. http://www.codesourcery.com/cxx-abi/
|
||||
50. ftp://ftp.gnu.org/gnu/
|
||||
51. ftp://gcc.gnu.org/pub/gcc/infrastructure/
|
187
contrib/gcc/GNATS
Normal file
187
contrib/gcc/GNATS
Normal file
@ -0,0 +1,187 @@
|
||||
|
||||
Submitting Bug Reports using GNATS
|
||||
|
||||
gnatsweb and gccbug
|
||||
|
||||
GNATS, the GNU bug tracking system, is used to track GCC bug reports.
|
||||
Before submitting a bug report, please read the [1]general
|
||||
instructions.
|
||||
|
||||
The preferred way to submit a bug report is by means of the
|
||||
[2]gnatsweb interface. Make sure you include an e-mail address, so we
|
||||
can inform you when the status of your report changes.
|
||||
|
||||
Another way is to use the gccbug program that is automatically
|
||||
installed with current versions of GCC, which submits the bug report
|
||||
by e-mail.
|
||||
|
||||
Both techniques use the same GNATS bug database.
|
||||
|
||||
Filling out a report
|
||||
|
||||
The bug report form provides a number of fields; you'll need to
|
||||
fill-out most of those (as indicated below) to provide a complete
|
||||
report. The fields have the following purpose:
|
||||
|
||||
Originator
|
||||
Your name.
|
||||
|
||||
Organization
|
||||
Your organization. You can leave this field blank.
|
||||
|
||||
Confidential
|
||||
This field is unused and set to 'no'. All bug reports,
|
||||
including sample code, are publicly accessible.
|
||||
|
||||
Synopsis
|
||||
A one-line description of the problem; something like "GCC 2.95
|
||||
does not foo", "objc crashes when doing bar".
|
||||
|
||||
Severity
|
||||
Can be one of
|
||||
|
||||
critical
|
||||
GCC is completely not operational; no work-around known.
|
||||
|
||||
serious
|
||||
GCC is not working properly; a work-around is possible.
|
||||
|
||||
non-critical
|
||||
Report indicates minor problem.
|
||||
|
||||
Priority
|
||||
Can be one of
|
||||
|
||||
high
|
||||
A solution is necessary as soon as possible. This is
|
||||
reserved to GCC maintainers.
|
||||
|
||||
medium
|
||||
The problem should be solved in the next release.
|
||||
|
||||
low
|
||||
The problem should be solved in a future release.
|
||||
|
||||
Category
|
||||
This indicates the GCC subproject which is affected by the
|
||||
problem. Currently, it can be one of
|
||||
|
||||
ada
|
||||
A problem with the Ada compiler, libraries or tools.
|
||||
|
||||
bootstrap
|
||||
GCC fails to bootstrap. This should be filed only if a
|
||||
bootstrap failure prevails for an extended period of time
|
||||
(at least one week) on any platform (and possibly
|
||||
not-so-common conditions like a read-only srcdir), or
|
||||
non-mainstream platforms.
|
||||
|
||||
c++
|
||||
A problem with the C++ compiler.
|
||||
|
||||
c
|
||||
A problem with the C compiler.
|
||||
|
||||
debug
|
||||
A problem with generating debugging information.
|
||||
|
||||
fortran
|
||||
A problem with the Fortran compiler.
|
||||
|
||||
java
|
||||
A problem with the Java compiler.
|
||||
|
||||
libf2c
|
||||
A problem in the Fortran runtime library.
|
||||
|
||||
libgcj
|
||||
A problem in the Java runtime library.
|
||||
|
||||
libobjc
|
||||
A problem in the Objective C runtime library.
|
||||
|
||||
libstdc++
|
||||
A problem in the Standard C++ runtime library.
|
||||
|
||||
middle-end
|
||||
A problem in the internal compiler passes.
|
||||
|
||||
objc
|
||||
A problem with the Objective C compiler.
|
||||
|
||||
optimization
|
||||
A problem only occurring under optimization.
|
||||
|
||||
preprocessor
|
||||
A problem with the C preprocessor.
|
||||
|
||||
target
|
||||
The problem depends on the specific target architecture.
|
||||
|
||||
web
|
||||
There is an error or omission on the Web pages.
|
||||
|
||||
other
|
||||
The problem is in none of these categories.
|
||||
|
||||
Class
|
||||
A classification of the problem; one of
|
||||
|
||||
doc-bug
|
||||
The documentation is incorrect.
|
||||
|
||||
accepts-illegal
|
||||
GCC fails to reject erroneous code.
|
||||
|
||||
rejects-legal
|
||||
GCC gives an error message for correct code.
|
||||
|
||||
wrong-code
|
||||
The machine code generated by GCC is incorrect.
|
||||
|
||||
ice-on-legal-code
|
||||
GCC gives an Internal Compiler Error (ICE) for correct
|
||||
code.
|
||||
|
||||
ice-on-illegal-code
|
||||
GCC gives an ICE instead of reporting an error.
|
||||
|
||||
pessimizes-code
|
||||
GCC misses an important optimization opportunity.
|
||||
|
||||
sw-bug
|
||||
Software bug of some other class than above.
|
||||
|
||||
change-request
|
||||
A feature in GCC is missing.
|
||||
|
||||
support
|
||||
I need help with GCC.
|
||||
|
||||
Release
|
||||
GCC version, as obtained from 'gcc -v' (one line).
|
||||
|
||||
Environment
|
||||
Information about your operating system version, hardware
|
||||
architecture, and environment settings that affect GCC.
|
||||
|
||||
Description
|
||||
Precise description of the problem. You should put the error
|
||||
messages printed by GCC here; source code should go into the
|
||||
next section.
|
||||
|
||||
How-To-Repeat
|
||||
Please put the complete source code to reproduce the problem
|
||||
here. The gccbug script currently does not support file
|
||||
attachments. Instead, if you have multiple files, include them
|
||||
uuencoded (compressing them before if they are large). If you
|
||||
use gnatsweb, you can use the file attachments button instead.
|
||||
|
||||
Fix
|
||||
How to correct or work around the problem, if known (multiple
|
||||
lines).
|
||||
|
||||
References
|
||||
|
||||
1. http://gcc.gnu.org/bugs.html
|
||||
2. http://gcc.gnu.org/cgi-bin/gnatsweb.pl?database=gcc&user=guest&password=guest&cmd=login
|
254
contrib/gcc/MAINTAINERS
Normal file
254
contrib/gcc/MAINTAINERS
Normal file
@ -0,0 +1,254 @@
|
||||
Note
|
||||
====
|
||||
|
||||
This file contains information about people who are permitted to make
|
||||
changes to various parts of the compiler and associated libraries.
|
||||
|
||||
Please do not contact the people in this file directly to report
|
||||
problems in GCC.
|
||||
|
||||
For general information about GCC, please visit:
|
||||
|
||||
http://gcc.gnu.org
|
||||
|
||||
To report problems in GCC, please visit:
|
||||
|
||||
http://gcc.gnu.org/bugs.html
|
||||
|
||||
Maintainers
|
||||
===========
|
||||
|
||||
Blanket Write Privs.
|
||||
|
||||
John Carr jfc@mit.edu
|
||||
Richard Earnshaw rearnsha@arm.com
|
||||
Richard Henderson rth@redhat.com
|
||||
Geoffrey Keating geoffk@geoffk.org
|
||||
Richard Kenner kenner@nyu.edu
|
||||
Jeff Law law@redhat.com
|
||||
Jason Merrill jason@redhat.com
|
||||
Michael Meissner meissner@redhat.com
|
||||
David S. Miller davem@redhat.com
|
||||
Mark Mitchell mark@codesourcery.com
|
||||
Bernd Schmidt bernds@redhat.com
|
||||
Jim Wilson wilson@redhat.com
|
||||
|
||||
|
||||
CPU Port Maintainers (CPU alphabetical order)
|
||||
|
||||
alpha port Richard Henderson rth@redhat.com
|
||||
arc port Richard Kenner kenner@nyu.edu
|
||||
arm port Nick Clifton nickc@redhat.com
|
||||
arm port Richard Earnshaw rearnsha@arm.com
|
||||
avr port Denis Chertykov denisc@overta.ru
|
||||
avr port Marek Michalkiewicz marekm@linux.org.pl
|
||||
c4x port Michael Hayes m.hayes@elec.canterbury.ac.nz
|
||||
cris port Hans-Peter Nilsson hp@axis.com
|
||||
fr30 port Nick Clifton nickc@redhat.com
|
||||
h8 port Jeff Law law@redhat.com
|
||||
h8 port Kazu Hirata kazu@cs.umass.edu
|
||||
hppa port Jeff Law law@redhat.com
|
||||
hppa port Dave Anglin dave.anglin@nrc.ca
|
||||
i386 port Richard Henderson rth@redhat.com
|
||||
i860 port Jason Eckhardt jle@redhat.com
|
||||
i960 port Jim Wilson wilson@redhat.com
|
||||
ia64 port Jim Wilson wilson@redhat.com
|
||||
m32r port Nick Clifton nickc@redhat.com
|
||||
m32r port Michael Meissner meissner@redhat.com
|
||||
m68hc11 port Stephane Carrez stcarrez@nerim.fr
|
||||
m68k port (?) Jeff Law law@redhat.com
|
||||
m68k-motorola-sysv port Philippe De Muyter phdm@macqel.be
|
||||
mcore port Nick Clifton nickc@redhat.com
|
||||
mips port Eric Christopher echristo@redhat.com
|
||||
mmix port Hans-Peter Nilsson hp@bitrange.com
|
||||
mn10200 port Jeff Law law@redhat.com
|
||||
mn10300 port Jeff Law law@redhat.com
|
||||
mn10300 port Alexandre Oliva aoliva@redhat.com
|
||||
rs6000 port Geoff Keating geoffk@geoffk.org
|
||||
rs6000 port David Edelsohn dje@watson.ibm.com
|
||||
s390 port Hartmut Penner hpenner@de.ibm.com
|
||||
s390 port Ulrich Weigand uweigand@de.ibm.com
|
||||
sh port Joern Rennecke joern.rennecke@superh.com
|
||||
sh port Alexandre Oliva aoliva@redhat.com
|
||||
sparc port Richard Henderson rth@redhat.com
|
||||
sparc port David S. Miller davem@redhat.com
|
||||
sparc port Jakub Jelinek jakub@redhat.com
|
||||
v850 port Nick Clifton nickc@redhat.com
|
||||
v850 port Michael Meissner meissner@redhat.com
|
||||
vax port Dave Anglin dave.anglin@nrc.ca
|
||||
x86-64 port Jan Hubicka jh@suse.cz
|
||||
xstormy16 port Geoffrey Keating geoffk@geoffk.org
|
||||
xtensa port Bob Wilson bob.wilson@acm.org
|
||||
|
||||
OS Port Maintainers (OS alphabetical order)
|
||||
|
||||
darwin port Stan Shebs shebs@apple.com
|
||||
netbsd Jason Thorpe thorpej@wasabisystems.com
|
||||
sco5, unixware, sco udk Robert Lipe robertlipe@usa.net
|
||||
|
||||
Various Maintainers
|
||||
|
||||
C front end/ISO C99 Joseph Myers jsm28@cam.ac.uk
|
||||
C front end/ISO C99 Richard Henderson rth@redhat.com
|
||||
Ada front end Geert Bosch bosch@gnat.com
|
||||
Ada front end Robert Dewar dewar@gnat.com
|
||||
fortran Richard Henderson rth@redhat.com
|
||||
fortran Toon Moene toon@moene.indiv.nluug.nl
|
||||
c++ Jason Merrill jason@redhat.com
|
||||
c++ Mark Mitchell mark@codesourcery.com
|
||||
cpplib Dave Brolley brolley@redhat.com
|
||||
cpplib Per Bothner per@bothner.com
|
||||
cpplib Zack Weinberg zack@codesourcery.com
|
||||
cpplib Neil Booth neil@daikokuya.co.uk
|
||||
java Per Bothner per@bothner.com
|
||||
java Alexandre Petit-Bianco apbianco@redhat.com
|
||||
mercury Fergus Henderson fjh@cs.mu.oz.au
|
||||
objective-c Stan Shebs shebs@apple.com
|
||||
objective-c Ovidiu Predescu ovidiu@cup.hp.com
|
||||
alias analysis John Carr jfc@mit.edu
|
||||
loop unrolling Jim Wilson wilson@redhat.com
|
||||
loop discovery Michael Hayes m.hayes@elec.canterbury.ac.nz
|
||||
scheduler (+ haifa) Jim Wilson wilson@redhat.com
|
||||
scheduler (+ haifa) Michael Meissner meissner@redhat.com
|
||||
scheduler (+ haifa) Jeff Law law@redhat.com
|
||||
reorg Jeff Law law@redhat.com
|
||||
caller-save.c Jeff Law law@redhat.com
|
||||
debugging code Jim Wilson wilson@redhat.com
|
||||
dwarf debugging code Jason Merrill jason@redhat.com
|
||||
c++ runtime libs Paolo Carlini pcarlini@unitus.it
|
||||
c++ runtime libs Gabriel Dos Reis gdr@integrable-solutions.net
|
||||
c++ runtime libs Ulrich Drepper drepper@redhat.com
|
||||
c++ runtime libs Phil Edwards pme@gcc.gnu.org
|
||||
c++ runtime libs Benjamin Kosnik bkoz@redhat.com
|
||||
*synthetic multiply Torbjorn Granlund tege@swox.com
|
||||
*c-torture Torbjorn Granlund tege@swox.com
|
||||
fixincludes Bruce Korb bkorb@gnu.org
|
||||
gcse.c Jeff Law law@redhat.com
|
||||
global opt framework Jeff Law law@redhat.com
|
||||
jump.c David S. Miller davem@redhat.com
|
||||
web pages Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
|
||||
config.sub/config.guess Ben Elliston config-patches@gnu.org
|
||||
basic block reordering Jason Eckhardt jle@redhat.com
|
||||
i18n Philipp Thomas pthomas@suse.de
|
||||
diagnostic messages Gabriel Dos Reis gdr@integrable-solutions.net
|
||||
windows, cygwin, mingw Christopher Faylor cgf@redhat.com
|
||||
windows, cygwin, mingw DJ Delorie dj@redhat.com
|
||||
DJGPP DJ Delorie dj@delorie.com
|
||||
libiberty DJ Delorie dj@redhat.com
|
||||
build machinery (*.in) DJ Delorie dj@redhat.com
|
||||
build machinery (*.in) Alexandre Oliva aoliva@redhat.com
|
||||
docs co-maintainer Gerald Pfeifer pfeifer@dbai.tuwien.ac.at
|
||||
docs co-maintainer Joseph Myers jsm28@cam.ac.uk
|
||||
Pico-Java port Steve Chamberlain sac@transmeta.com
|
||||
RTEMS Ports Joel Sherrill
|
||||
predict.def Jan Hubicka jh@suse.cz
|
||||
contrib/regression Geoff Keating geoffk@geoffk.org
|
||||
|
||||
Note individuals who maintain parts of the compiler need approval to check
|
||||
in changes outside of the parts of the compiler they maintain.
|
||||
|
||||
|
||||
Write After Approval (last name alphabetical order)
|
||||
|
||||
Matt Austern austern@apple.com
|
||||
Scott Bambrough scottb@netwinder.org
|
||||
Daniel Berlin dan@dberlin.org
|
||||
David Billinghurst David.Billinghurst@riotinto.com
|
||||
Laurynas Biveinis lauras@softhome.net
|
||||
Jim Blandy jimb@redhat.com
|
||||
Phil Blundell pb@futuretv.com
|
||||
Hans Boehm hboehm@gcc.gnu.org
|
||||
Eric Botcazou ebotcazou@libertysurf.fr
|
||||
Andrew Cagney cagney@redhat.com
|
||||
Chandra Chavva cchavva@redhat.com
|
||||
William Cohen wcohen@redhat.com
|
||||
Chris Demetriou cgd@broadcom.com
|
||||
*Paul Eggert eggert@twinsun.com
|
||||
Ben Elliston bje@redhat.com
|
||||
Marc Espie espie@cvs.openbsd.org
|
||||
Doug Evans devans@transmeta.com
|
||||
Kaveh Ghazi ghazi@caip.rutgers.edu
|
||||
Matthew Gingell gingell@gnat.com
|
||||
Anthony Green green@redhat.com
|
||||
Stu Grossman grossman@redhat.com
|
||||
Laurent Guerby guerby@acm.org
|
||||
Andrew Haley aph@redhat.com
|
||||
Stuart Hastings stuart@apple.com
|
||||
Aldy Hernandez aldyh@redhat.com
|
||||
Matthew Hiller hiller@redhat.com
|
||||
Manfred Hollstein mhollstein@redhat.com
|
||||
Andreas Jaeger aj@suse.de
|
||||
Jakub Jelinek jakub@redhat.com
|
||||
Dale Johannesen dalej@apple.com
|
||||
Janis Johnson janis187@us.ibm.com
|
||||
Klaus Kaempf kkaempf@progis.de
|
||||
Brendan Kehoe brendan@zen.org
|
||||
Mumit Khan khan@xraylith.wisc.edu
|
||||
Matthias Klose doko@debian.org
|
||||
Jeff Knaggs jknaggs@redhat.com
|
||||
Matt Kraai kraai@alumni.carnegiemellon.edu
|
||||
Ziemowit Laski zlaski@apple.com
|
||||
Marc Lehmann pcg@goof.com
|
||||
Alan Lehotsky apl@alum.mit.edu
|
||||
Warren Levy warrenl@redhat.com
|
||||
Kriang Lerdsuwanakij lerdsuwa@users.sourceforge.net
|
||||
Don Lindsay dlindsay@redhat.com
|
||||
Dave Love d.love@dl.ac.uk
|
||||
Martin v. Löwis loewis@informatik.hu-berlin.de
|
||||
*HJ Lu hjl@lucon.org
|
||||
Andrew Macleod amacleod@redhat.com
|
||||
Vladimir Makarov vmakarov@redhat.com
|
||||
Michael Matz matz@suse.de
|
||||
Greg McGary gkm@gnu.org
|
||||
Bryce McKinlay bryce@gcc.gnu.org
|
||||
Adam Megacz adam@xwt.org
|
||||
Alan Modra amodra@bigpond.net.au
|
||||
Toon Moene toon@moene.indiv.nluug.nl
|
||||
Catherine Moore clm@redhat.com
|
||||
Adam Nemet anemet@lnxw.com
|
||||
Diego Novillo dnovillo@redhat.com
|
||||
David O'Brien obrien@FreeBSD.org
|
||||
Turly O'Connor turly@apple.com
|
||||
Jeffrey D. Oldham oldham@codesourcery.com
|
||||
Rainer Orth ro@TechFak.Uni-Bielefeld.DE
|
||||
Devang Patel dpatel@apple.com
|
||||
Nicola Pero n.pero@mi.flashnet.it
|
||||
Alexandre Petit-Bianco apbianco@redhat.com
|
||||
Clinton Popetz cpopetz@cpopetz.com
|
||||
Ken Raeburn raeburn@redhat.com
|
||||
Rolf Rasmussen rolfwr@gcc.gnu.org
|
||||
Loren J. Rittle ljrittle@acm.org
|
||||
Tom Rix trix@redhat.com
|
||||
Craig Rodrigues rodrigc@gcc.gnu.org
|
||||
Gavin Romig-Koch gavin@redhat.com
|
||||
Ira Ruben ira@apple.com
|
||||
Alex Samuel samuel@codesourcery.com
|
||||
Richard Sandiford rsandifo@redhat.com
|
||||
Roger Sayle roger@eyesopen.com
|
||||
Bernd Schmidt bernds@redhat.com
|
||||
Andreas Schwab schwab@suse.de
|
||||
Stan Shebs shebs@apple.com
|
||||
Nathan Sidwell nathan@acm.org
|
||||
Franz Sirl franz.sirl-kernel@lauterbach.com
|
||||
Danny Smith dannysmith@users.sourceforge.net
|
||||
Michael Sokolov msokolov@ivan.Harhan.ORG
|
||||
Richard Stallman rms@gnu.org
|
||||
Graham Stott grahams@redhat.com
|
||||
Mike Stump mrs@apple.com
|
||||
Ian Taylor ian@zembu.com
|
||||
Michael Tiemann tiemann@redhat.com
|
||||
Philipp Thomas pthomas@suse.de
|
||||
Kresten Krab Thorup krab@gcc.gnu.org
|
||||
Tom Tromey tromey@redhat.com
|
||||
John Wehle john@feith.com
|
||||
Florian Weimer fw@deneb.enyo.de
|
||||
Mark Wielaard mark@gcc.gnu.org
|
||||
|
||||
GNATS only accounts
|
||||
|
||||
James Dennett jdennett jdennett@acm.org
|
||||
|
||||
Peter Bienstman(?)
|
||||
Benjamin Chelf(?)
|
||||
Mark Galassi(?)
|
||||
Jeff Strum(?)
|
File diff suppressed because it is too large
Load Diff
17
contrib/gcc/README
Normal file
17
contrib/gcc/README
Normal file
@ -0,0 +1,17 @@
|
||||
This directory contains the GNU Compiler Collection (GCC).
|
||||
|
||||
The GNU Compiler Collection is free software. See the file COPYING
|
||||
for copying permission. The manuals, and some of the runtime
|
||||
libraries, are under different terms; see the individual source files
|
||||
for details.
|
||||
|
||||
The directory INSTALL contains copies of the installation information
|
||||
as HTML and plain text. The source of this information is
|
||||
gcc/doc/install.texi. The installation information includes details
|
||||
of what is included in the GCC sources and what files GCC installs.
|
||||
|
||||
See the file gcc/doc/gcc.texi (together with other files that it
|
||||
includes) for usage and porting information. An online readable
|
||||
version of the manual is in the files gcc/doc/gcc.info*.
|
||||
|
||||
See http://gcc.gnu.org/bugs.html for how to report bugs usefully.
|
698
contrib/gcc/bugs.html
Normal file
698
contrib/gcc/bugs.html
Normal file
@ -0,0 +1,698 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>GCC Bugs</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>GCC Bugs</h1>
|
||||
|
||||
<p>The latest version of this document is always available at
|
||||
<a href="http://www.gnu.org/software/gcc/bugs.html">http://www.gnu.org/software/gcc/bugs.html</a>.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<h2>Table of Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#report">Reporting Bugs</a>
|
||||
<ul>
|
||||
<li><a href="#need">What we need</a></li>
|
||||
<li><a href="#dontwant">What we DON'T want</a></li>
|
||||
<li><a href="#where">Where to post it</a></li>
|
||||
<li><a href="#detailed">Detailed bug reporting instructions</a></li>
|
||||
<li><a href="#gnat">Detailed bug reporting instructions for GNAT</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#manage">Managing Bugs (GNATS and the test-suite)</a></li>
|
||||
<li><a href="#known">Frequently Reported Bugs in GCC</a>
|
||||
<ul>
|
||||
<li><a href="#general">General</a></li>
|
||||
<li><a href="#fortran">Fortran</a></li>
|
||||
<li><a href="#c">C</a></li>
|
||||
<li><a href="#cplusplus">C++</a>
|
||||
<ul>
|
||||
<li><a href="#updating">Common problems updating from G++ 2.95 to
|
||||
G++ 3.0</a></li>
|
||||
<li><a href="#nonbugs">Non-bugs</a></li>
|
||||
<li><a href="#missing">Missing features</a></li>
|
||||
<li><a href="#parsing">Parse errors for "simple" code</a></li>
|
||||
<li><a href="#-O3">Optimization at <code>-O3</code> takes a
|
||||
very long time</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1><a name="report">Reporting Bugs</a></h1>
|
||||
|
||||
<p>Our preferred way of receiving bugs is via the
|
||||
<a href="gnats.html">GCC GNATS bug reporting system</a>.</p>
|
||||
|
||||
<p>Before you report a bug, please check the
|
||||
<a href="#known">list of well-known bugs</a> and, <strong>if possible
|
||||
in any way, try a current development snapshot</strong>.
|
||||
If you want to report a bug with versions of GCC before 3.1 we strongly
|
||||
recommend upgrading to the current release first.</p>
|
||||
|
||||
<p>Before reporting that GCC compiles your code incorrectly, please
|
||||
compile it with <code>gcc -Wall</code> and see whether this shows
|
||||
anything wrong with your code that could be the cause instead of a bug
|
||||
in GCC.</p>
|
||||
|
||||
<h2>Summarized bug reporting instructions</h2>
|
||||
|
||||
<p>After this summary, you'll find detailed bug reporting
|
||||
instructions, that explain how to obtain some of the information
|
||||
requested in this summary.</p>
|
||||
|
||||
<h3><a name="need">What we need</a></h3>
|
||||
|
||||
Please include in your bug report all of the following items, the first
|
||||
three of which can be obtained from the output of <code>gcc -v</code>:
|
||||
|
||||
<ul>
|
||||
<li>the exact version of GCC;</li>
|
||||
<li>the system type;</li>
|
||||
<li>the options given when GCC was configured/built;</li>
|
||||
<li>the complete command line that triggers the bug;</li>
|
||||
<li>the compiler output (error messages, warnings, etc.); and</li>
|
||||
<li>the <em>preprocessed</em> file (<code>*.i*</code>) that triggers the
|
||||
bug, generated by adding <code>-save-temps</code> to the complete
|
||||
compilation command, or, in the case of a bug report for the GNAT front end,
|
||||
a complete set of source files (see below).</li>
|
||||
</ul>
|
||||
|
||||
<h3><a name="dontwant">What we do <strong>not</strong> want</a></h3>
|
||||
|
||||
<ul>
|
||||
<li>A source file that <code>#include</code>s header files that are left
|
||||
out of the bug report (see above)</li>
|
||||
|
||||
<li>That source file and a collection of header files.</li>
|
||||
|
||||
<li>An attached archive (tar, zip, shar, whatever) containing all
|
||||
(or some :-) of the above.</li>
|
||||
|
||||
<li>A code snippet that won't cause the compiler to produce the
|
||||
exact output mentioned in the bug report (e.g., a snippet with just
|
||||
a few lines around the one that <b>apparently</b> triggers the bug,
|
||||
with some pieces replaced with ellipses or comments for extra
|
||||
obfuscation :-)</li>
|
||||
|
||||
<li>The location (URL) of the package that failed to build (we won't
|
||||
download it, anyway, since you've already given us what we need to
|
||||
duplicate the bug, haven't you? :-)</li>
|
||||
|
||||
<li>An error that occurs only some of the times a certain file is
|
||||
compiled, such that retrying a sufficient number of times results in
|
||||
a successful compilation; this is a symptom of a hardware problem,
|
||||
not of a compiler bug (sorry)</li>
|
||||
|
||||
<li>E-mail messages that complement previous, incomplete bug
|
||||
reports. Post a new, self-contained, full bug report instead, if
|
||||
possible as a follow-up to the original bug report</li>
|
||||
|
||||
<li>Assembly files (<code>*.s</code>) produced by the compiler, or any
|
||||
binary files, such as object files, executables or core files</li>
|
||||
|
||||
<li>Duplicate bug reports, or reports of bugs already fixed in the
|
||||
development tree, especially those that have already been reported
|
||||
as fixed last week :-)</li>
|
||||
|
||||
<li>Bugs in the assembler, the linker or the C library. These are
|
||||
separate projects, with separate mailing lists and different bug
|
||||
reporting procedures</li>
|
||||
|
||||
<li>Bugs in releases or snapshots of GCC not issued by the GNU
|
||||
Project. Report them to whoever provided you with the release</li>
|
||||
|
||||
<li>Questions about the correctness or the expected behavior of
|
||||
certain constructs that are not GCC extensions. Ask them in forums
|
||||
dedicated to the discussion of the programming language</li>
|
||||
</ul>
|
||||
|
||||
<h3><a name="where">Where to post it</a></h3>
|
||||
|
||||
<p>Please submit your bug report directly to the
|
||||
<a href="gnats.html">GCC GNATS bug database</a>.
|
||||
Only if this is not possible, mail all information to
|
||||
<a href="mailto:bug-gcc@gnu.org">bug-gcc@gnu.org</a> or
|
||||
<a href="mailto:gcc-bugs@gcc.gnu.org">gcc-bugs@gcc.gnu.org</a>.</p>
|
||||
|
||||
<p>The GCC lists have message size limits (200 kbytes) and bug reports
|
||||
over those limits will currently be bounced. If your bug is larger
|
||||
than that, please post it using the <a href="gnats.html">GCC GNATS bug
|
||||
database</a>.</p>
|
||||
|
||||
<h2><a name="detailed">Detailed bug reporting instructions</a></h2>
|
||||
|
||||
<p>Please refer to the <a href="#gnat">next section</a> when reporting
|
||||
bugs in GNAT, the Ada compiler.</p>
|
||||
|
||||
<p>In general, all the information we need can be obtained by
|
||||
collecting the command line below, as well as its output and the
|
||||
preprocessed file it generates.</p>
|
||||
|
||||
<blockquote><code>gcc -v -save-temps <i>all-your-options
|
||||
source-file</i></code></blockquote>
|
||||
|
||||
<p>Typically the preprocessed file (extension <code>.i</code> for C or
|
||||
<code>.ii</code> for C++) will be large, so please compress the
|
||||
resulting file with one of the popular compression programs such as
|
||||
bzip2, gzip, zip or compress (in
|
||||
decreasing order of preference). Use maximum compression
|
||||
(<code>-9</code>) if available. Please include the compressed
|
||||
preprocessor output in your bug report, even if the source code is
|
||||
freely available elsewhere; it makes the job of our volunteer testers
|
||||
much easier.</p>
|
||||
|
||||
<p>The <b>only</b> excuses to not send us the preprocessed sources are
|
||||
(i) if you've found a bug in the preprocessor, or (ii) if you've
|
||||
reduced the testcase to a small file that doesn't include any
|
||||
other file. If you can't post the preprocessed sources because
|
||||
they're proprietary code, then try to create a small file that
|
||||
triggers the same problem.</p>
|
||||
|
||||
<p>Since we're supposed to be able to re-create the assembly output
|
||||
(extension <code>.s</code>), you usually should not include
|
||||
it in the bug report, although you may want to post parts of it to
|
||||
point out assembly code you consider to be wrong.</p>
|
||||
|
||||
<p>Whether to use MIME attachments or <code>uuencode</code> is up to
|
||||
you. In any case, make sure the compiler command line, version and
|
||||
error output are in plain text, so that we don't have to decode the
|
||||
bug report in order to tell who should take care of it. A meaningful
|
||||
subject indicating language and platform also helps.</p>
|
||||
|
||||
<p>Please avoid posting an archive (.tar, .shar or .zip); we generally
|
||||
need just a single file to reproduce the bug (the .i/.ii preprocessed
|
||||
file), and, by storing it in an archive, you're just making our
|
||||
volunteers' jobs harder. Only when your bug report requires multiple
|
||||
source files to be reproduced should you use an archive. In any case,
|
||||
make sure the compiler version, error message, etc, are included in
|
||||
the body of your bug report as plain text, even if needlessly
|
||||
duplicated as part of an archive.</p>
|
||||
|
||||
<p>If you fail to supply enough information for a bug report to be
|
||||
reproduced, someone will probably ask you to post additional
|
||||
information (or just ignore your bug report, if they're in a bad day,
|
||||
so try to get it right on the first posting :-). In this case, please
|
||||
post the additional information to the bug reporting mailing list, not
|
||||
just to the person who requested it, unless explicitly told so. If
|
||||
possible, please include in this follow-up all the information you had
|
||||
supplied in the incomplete bug report (including the preprocessor
|
||||
output), so that the new bug report is self-contained.</p>
|
||||
|
||||
<h2><a name="gnat">Detailed bug reporting instructions for GNAT</a></h2>
|
||||
|
||||
<p>See the <a href="#detailed">previous section</a> for bug reporting
|
||||
instructions for GCC language implementations other than Ada.</p>
|
||||
|
||||
<p>Bug reports have to contain at least the following information in
|
||||
order to be useful:</p>
|
||||
|
||||
<ul>
|
||||
<li>the exact version of GCC, as shown by "<code>gcc -v</code>";</li>
|
||||
<li>the system type;</li>
|
||||
<li>the options when GCC was configured/built;</li>
|
||||
<li>the exact command line passed to the <code>gcc</code> program
|
||||
triggering the bug
|
||||
(not just the flags passed to <code>gnatmake</code>, but
|
||||
<code>gnatmake</code> prints the parameters it passed to <code>gcc</code>)</li>
|
||||
<li>a collection of source files for reproducing the bug,
|
||||
preferably a minimal set (see below);</li>
|
||||
<li>a description of the expected behavior;</li>
|
||||
<li>a description of actual behavior.</li>
|
||||
</ul>
|
||||
|
||||
<p>If your code depends on additional source files (usually package
|
||||
specifications), submit the source code for these compilation units in
|
||||
a single file that is acceptable input to <code>gnatchop</code>,
|
||||
i.e. contains no non-Ada text. If the compilation terminated
|
||||
normally, you can usually obtain a list of dependencies using the
|
||||
"<code>gnatls -d <i>main_unit</i></code>" command, where
|
||||
<code><i>main_unit</i></code> is the file name of the main compilation
|
||||
unit (which is also passed to <code>gcc</code>).</p>
|
||||
|
||||
<p>If you report a bug which causes the compiler to print a bug box,
|
||||
include that bug box in your report, and do not forget to send all the
|
||||
source files listed after the bug box along with your report.</p>
|
||||
|
||||
<p>If you use <code>gnatprep</code>, be sure to send in preprocessed
|
||||
sources (unless you have to report a bug in <code>gnatprep</code>).</p>
|
||||
|
||||
<p>When you have checked that your report meets these criteria, please
|
||||
submit it accoding to our <a href="#where">generic instructions</a>.
|
||||
(If you use a mailing list for reporting, please include an
|
||||
"<code>[Ada]</code>" tag in the subject.)</p>
|
||||
|
||||
<h1><a name="manage">Managing Bugs (GNATS and the test-suite)</a></h1>
|
||||
|
||||
<p>This section contains information mostly intended for GCC
|
||||
contributors.</p>
|
||||
|
||||
<p>If you find a bug, but you are not fixing it (yet):</p>
|
||||
<ol>
|
||||
<li>Create a (minimal) test-case.</li>
|
||||
<li>Add the test-case to our test-suite, marking it as XFAIL unless
|
||||
the bug is a regression.</li>
|
||||
<li>Add a bug report referencing the test-case to GNATS.</li>
|
||||
</ol>
|
||||
|
||||
<p>If you fix a bug for which there is already a GNATS entry:</p>
|
||||
<ol>
|
||||
<li>Remove the XFAIL on the test-case.</li>
|
||||
<li>Close the bug report in GNATS.</li>
|
||||
</ol>
|
||||
|
||||
<p>If you find a bug, and you are fixing it right then:</p>
|
||||
<ol>
|
||||
<li>Create a (minimal) test-case.</li>
|
||||
<li>Add the test-case to our test-suite, marking it as PASS.</li>
|
||||
<li>Check in your fixes.</li>
|
||||
</ol>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1><a name="known">Frequently Reported Bugs in GCC</a></h1>
|
||||
|
||||
<h2><a name="fortran">Fortran</a></h2>
|
||||
|
||||
<p>Fortran bugs are documented in the G77 manual rather than
|
||||
explicitly listed here. Please see
|
||||
<a href="http://gcc.gnu.org/onlinedocs/g77/Trouble.html">Known Causes of
|
||||
Trouble with GNU Fortran</a> in the G77 manual.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<h2><a name="c">C</a></h2>
|
||||
|
||||
<p>The following are not bugs in the C compiler, but are reported
|
||||
often enough to warrant a mention here.</p>
|
||||
|
||||
<dl>
|
||||
<dt>Cannot initialize a static variable with <code>stdin</code>.</dt>
|
||||
<dd><p>This has nothing to do with GCC, but people ask us about it a
|
||||
lot. Code like this:</p>
|
||||
|
||||
<blockquote><pre>
|
||||
#include <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>
|
871
contrib/gcc/config-ml.in
Normal file
871
contrib/gcc/config-ml.in
Normal file
@ -0,0 +1,871 @@
|
||||
# Configure fragment invoked in the post-target section for subdirs
|
||||
# wanting multilib support.
|
||||
#
|
||||
# It is advisable to support a few --enable/--disable options to let the
|
||||
# user select which libraries s/he really wants.
|
||||
#
|
||||
# Subdirectories wishing to use multilib should put the following lines
|
||||
# in the "post-target" section of configure.in.
|
||||
#
|
||||
# if [ "${srcdir}" = "." ] ; then
|
||||
# if [ "${with_target_subdir}" != "." ] ; then
|
||||
# . ${with_multisrctop}../../config-ml.in
|
||||
# else
|
||||
# . ${with_multisrctop}../config-ml.in
|
||||
# fi
|
||||
# else
|
||||
# . ${srcdir}/../config-ml.in
|
||||
# fi
|
||||
#
|
||||
#
|
||||
# Things are complicated because 6 separate cases must be handled:
|
||||
# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
|
||||
#
|
||||
# srcdir=. is special. It must handle make programs that don't handle VPATH.
|
||||
# To implement this, a symlink tree is built for each library and for each
|
||||
# multilib subdir.
|
||||
#
|
||||
# The build tree is layed out as
|
||||
#
|
||||
# ./
|
||||
# newlib
|
||||
# m68020/
|
||||
# newlib
|
||||
# m68881/
|
||||
# newlib
|
||||
#
|
||||
# The nice feature about this arrangement is that inter-library references
|
||||
# in the build tree work without having to care where you are. Note that
|
||||
# inter-library references also work in the source tree because symlink trees
|
||||
# are built when srcdir=.
|
||||
#
|
||||
# Unfortunately, trying to access the libraries in the build tree requires
|
||||
# the user to manually choose which library to use as GCC won't be able to
|
||||
# find the right one. This is viewed as the lesser of two evils.
|
||||
#
|
||||
# Configure variables:
|
||||
# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
|
||||
# Set by top level Makefile.
|
||||
# ${with_multisrctop} = how many levels of multilibs there are in the source
|
||||
# tree. It exists to handle the case of configuring in the source tree:
|
||||
# ${srcdir} is not constant.
|
||||
# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
|
||||
#
|
||||
# Makefile variables:
|
||||
# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
|
||||
# (FIXME: note that this is different than ${with_multisrctop}. Check out.).
|
||||
# MULTIBUILDTOP = number of multilib levels in build tree
|
||||
# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
|
||||
# (only defined in each library's main Makefile).
|
||||
# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
|
||||
# (only defined in each multilib subdir).
|
||||
|
||||
# FIXME: Multilib is currently disabled by default for everything other than
|
||||
# newlib. It is up to each target to turn on multilib support for the other
|
||||
# libraries as desired.
|
||||
|
||||
# We have to handle being invoked by both Cygnus configure and Autoconf.
|
||||
#
|
||||
# Cygnus configure incoming variables:
|
||||
# srcdir, subdir, host, arguments
|
||||
#
|
||||
# Autoconf incoming variables:
|
||||
# srcdir, host, ac_configure_args
|
||||
#
|
||||
# We *could* figure srcdir and host out, but we'd have to do work that
|
||||
# our caller has already done to figure them out and requiring these two
|
||||
# seems reasonable.
|
||||
# Note that `host' in this case is GCC's `target'. Target libraries are
|
||||
# configured for a particular host.
|
||||
|
||||
if [ -n "${ac_configure_args}" ]; then
|
||||
Makefile=${ac_file-Makefile}
|
||||
ml_config_shell=${CONFIG_SHELL-/bin/sh}
|
||||
ml_arguments="${ac_configure_args}"
|
||||
ml_realsrcdir=${srcdir}
|
||||
else
|
||||
Makefile=${Makefile-Makefile}
|
||||
ml_config_shell=${config_shell-/bin/sh}
|
||||
ml_arguments="${arguments}"
|
||||
if [ -n "${subdir}" -a "${subdir}" != "." ] ; then
|
||||
ml_realsrcdir=${srcdir}/${subdir}
|
||||
else
|
||||
ml_realsrcdir=${srcdir}
|
||||
fi
|
||||
fi
|
||||
|
||||
# Scan all the arguments and set all the ones we need.
|
||||
|
||||
ml_verbose=--verbose
|
||||
for option in ${ml_arguments}
|
||||
do
|
||||
case $option in
|
||||
--*) ;;
|
||||
-*) option=-$option ;;
|
||||
esac
|
||||
|
||||
case $option in
|
||||
--*=*)
|
||||
optarg=`echo $option | sed -e 's/^[^=]*=//'`
|
||||
;;
|
||||
esac
|
||||
|
||||
case $option in
|
||||
--disable-*)
|
||||
enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
|
||||
eval $enableopt=no
|
||||
;;
|
||||
--enable-*)
|
||||
case "$option" in
|
||||
*=*) ;;
|
||||
*) optarg=yes ;;
|
||||
esac
|
||||
enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
|
||||
eval $enableopt="$optarg"
|
||||
;;
|
||||
--norecursion | --no*)
|
||||
ml_norecursion=yes
|
||||
;;
|
||||
--silent | --sil* | --quiet | --q*)
|
||||
ml_verbose=--silent
|
||||
;;
|
||||
--verbose | --v | --verb*)
|
||||
ml_verbose=--verbose
|
||||
;;
|
||||
--with-*)
|
||||
case "$option" in
|
||||
*=*) ;;
|
||||
*) optarg=yes ;;
|
||||
esac
|
||||
withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
|
||||
eval $withopt="$optarg"
|
||||
;;
|
||||
--without-*)
|
||||
withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
|
||||
eval $withopt=no
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Only do this if --enable-multilib.
|
||||
if [ "${enable_multilib}" = yes ]; then
|
||||
|
||||
# Compute whether this is the library's top level directory
|
||||
# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
|
||||
# ${with_multisubdir} tells us we're in the right branch, but we could be
|
||||
# in a subdir of that.
|
||||
# ??? The previous version could void this test by separating the process into
|
||||
# two files: one that only the library's toplevel configure.in ran (to
|
||||
# configure the multilib subdirs), and another that all configure.in's ran to
|
||||
# update the Makefile. It seemed reasonable to collapse all multilib support
|
||||
# into one file, but it does leave us with having to perform this test.
|
||||
ml_toplevel_p=no
|
||||
if [ -z "${with_multisubdir}" ]; then
|
||||
if [ "${srcdir}" = "." ]; then
|
||||
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
|
||||
# ${with_target_subdir} = "." for native, otherwise target alias.
|
||||
if [ "${with_target_subdir}" = "." ]; then
|
||||
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
|
||||
ml_toplevel_p=yes
|
||||
fi
|
||||
else
|
||||
if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
|
||||
ml_toplevel_p=yes
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
|
||||
if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
|
||||
ml_toplevel_p=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# If this is the library's top level directory, set multidirs to the
|
||||
# multilib subdirs to support. This lives at the top because we need
|
||||
# `multidirs' set right away.
|
||||
|
||||
if [ "${ml_toplevel_p}" = yes ]; then
|
||||
|
||||
multidirs=
|
||||
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
|
||||
dir=`echo $i | sed -e 's/;.*$//'`
|
||||
if [ "${dir}" = "." ]; then
|
||||
true
|
||||
else
|
||||
if [ -z "${multidirs}" ]; then
|
||||
multidirs="${dir}"
|
||||
else
|
||||
multidirs="${multidirs} ${dir}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Target libraries are configured for the host they run on, so we check
|
||||
# $host here, not $target.
|
||||
|
||||
case "${host}" in
|
||||
arc-*-elf*)
|
||||
if [ x$enable_biendian != xyes ]
|
||||
then
|
||||
old_multidirs=${multidirs}
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "${x}" in
|
||||
*be*) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
;;
|
||||
arm-*-*)
|
||||
if [ x"$enable_fpu" = xno ]
|
||||
then
|
||||
old_multidirs=${multidirs}
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "${x}" in
|
||||
*fpu*) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x"$enable_26bit" = xno ]
|
||||
then
|
||||
old_multidirs=${multidirs}
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "${x}" in
|
||||
*26bit*) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x"$enable_underscore" = xno ]
|
||||
then
|
||||
old_multidirs=${multidirs}
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "${x}" in
|
||||
*under*) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x"$enable_interwork" = xno ]
|
||||
then
|
||||
old_multidirs=${multidirs}
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "${x}" in
|
||||
*interwork*) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_biendian = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*le* ) : ;;
|
||||
*be* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x"$enable_nofmult" = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*nofmult* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
;;
|
||||
m68*-*-*)
|
||||
if [ x$enable_softfloat = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*soft-float* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_m68881 = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*m68881* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_m68000 = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*m68000* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_m68020 = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*m68020* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
;;
|
||||
mips*-*-*)
|
||||
if [ x$enable_single_float = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*single* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_biendian = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*el* ) : ;;
|
||||
*eb* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_softfloat = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*soft-float* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
case " $multidirs " in
|
||||
*" mabi=64 "*)
|
||||
# We will not be able to create libraries with -mabi=64 if
|
||||
# we cannot even link a trivial program. It usually
|
||||
# indicates the 64bit libraries are missing.
|
||||
if echo 'main() {}' > conftest.c &&
|
||||
${CC-gcc} -mabi=64 conftest.c -o conftest; then
|
||||
:
|
||||
else
|
||||
echo Could not link program with -mabi=64, disabling it.
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*mabi=64* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
powerpc*-*-* | rs6000*-*-*)
|
||||
if [ x$enable_aix64 = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*ppc64* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_pthread = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*pthread* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_softfloat = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*soft-float* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_powercpu = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
power | */power | */power/* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_powerpccpu = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*powerpc* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_powerpcos = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*mcall-linux* | *mcall-solaris* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_biendian = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*mlittle* | *mbig* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_sysv = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*mcall-sysv* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
if [ x$enable_aix = xno ]
|
||||
then
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*mcall-aix* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
;;
|
||||
sparc*-*-*)
|
||||
case " $multidirs " in
|
||||
*" m64 "*)
|
||||
# We will not be able to create libraries with -m64 if
|
||||
# we cannot even link a trivial program. It usually
|
||||
# indicates the 64bit libraries are missing.
|
||||
if echo 'main() {}' > conftest.c &&
|
||||
${CC-gcc} -m64 conftest.c -o conftest; then
|
||||
:
|
||||
else
|
||||
echo Could not link program with -m64, disabling it.
|
||||
old_multidirs="${multidirs}"
|
||||
multidirs=""
|
||||
for x in ${old_multidirs}; do
|
||||
case "$x" in
|
||||
*m64* ) : ;;
|
||||
*) multidirs="${multidirs} ${x}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
# Remove extraneous blanks from multidirs.
|
||||
# Tests like `if [ -n "$multidirs" ]' require it.
|
||||
multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
|
||||
|
||||
# Add code to library's top level makefile to handle building the multilib
|
||||
# subdirs.
|
||||
|
||||
cat > Multi.tem <<\EOF
|
||||
|
||||
# FIXME: There should be an @-sign in front of the `if'.
|
||||
# Leave out until this is tested a bit more.
|
||||
multi-do:
|
||||
if [ -z "$(MULTIDIRS)" ]; then \
|
||||
true; \
|
||||
else \
|
||||
rootpre=`pwd`/; export rootpre; \
|
||||
srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \
|
||||
lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
|
||||
compiler="$(CC)"; \
|
||||
for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
|
||||
dir=`echo $$i | sed -e 's/;.*$$//'`; \
|
||||
if [ "$${dir}" = "." ]; then \
|
||||
true; \
|
||||
else \
|
||||
if [ -d ../$${dir}/$${lib} ]; then \
|
||||
flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
|
||||
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
|
||||
CFLAGS="$(CFLAGS) $${flags}" \
|
||||
prefix="$(prefix)" \
|
||||
exec_prefix="$(exec_prefix)" \
|
||||
GCJFLAGS="$(GCJFLAGS) $${flags}" \
|
||||
CXXFLAGS="$(CXXFLAGS) $${flags}" \
|
||||
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
|
||||
LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
|
||||
LDFLAGS="$(LDFLAGS) $${flags}" \
|
||||
$(DO)); then \
|
||||
true; \
|
||||
else \
|
||||
exit 1; \
|
||||
fi; \
|
||||
else true; \
|
||||
fi; \
|
||||
fi; \
|
||||
done; \
|
||||
fi
|
||||
|
||||
# FIXME: There should be an @-sign in front of the `if'.
|
||||
# Leave out until this is tested a bit more.
|
||||
multi-clean:
|
||||
if [ -z "$(MULTIDIRS)" ]; then \
|
||||
true; \
|
||||
else \
|
||||
lib=`pwd | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
|
||||
for dir in Makefile $(MULTIDIRS); do \
|
||||
if [ -f ../$${dir}/$${lib}/Makefile ]; then \
|
||||
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
|
||||
then true; \
|
||||
else exit 1; \
|
||||
fi; \
|
||||
else true; \
|
||||
fi; \
|
||||
done; \
|
||||
fi
|
||||
EOF
|
||||
|
||||
cat ${Makefile} Multi.tem > Makefile.tem
|
||||
rm -f ${Makefile} Multi.tem
|
||||
mv Makefile.tem ${Makefile}
|
||||
|
||||
fi # ${ml_toplevel_p} = yes
|
||||
|
||||
if [ "${ml_verbose}" = --verbose ]; then
|
||||
echo "Adding multilib support to Makefile in ${ml_realsrcdir}"
|
||||
if [ "${ml_toplevel_p}" = yes ]; then
|
||||
echo "multidirs=${multidirs}"
|
||||
fi
|
||||
echo "with_multisubdir=${with_multisubdir}"
|
||||
fi
|
||||
|
||||
if [ "${srcdir}" = "." ]; then
|
||||
if [ "${with_target_subdir}" != "." ]; then
|
||||
ml_srcdotdot="../"
|
||||
else
|
||||
ml_srcdotdot=""
|
||||
fi
|
||||
else
|
||||
ml_srcdotdot=""
|
||||
fi
|
||||
|
||||
if [ -z "${with_multisubdir}" ]; then
|
||||
ml_subdir=
|
||||
ml_builddotdot=
|
||||
: # ml_srcdotdot= # already set
|
||||
else
|
||||
ml_subdir="/${with_multisubdir}"
|
||||
# The '[^/][^/]*' appears that way to work around a SunOS sed bug.
|
||||
ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
|
||||
if [ "$srcdir" = "." ]; then
|
||||
ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
|
||||
else
|
||||
: # ml_srcdotdot= # already set
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${ml_toplevel_p}" = yes ]; then
|
||||
ml_do='$(MAKE)'
|
||||
ml_clean='$(MAKE)'
|
||||
else
|
||||
ml_do=true
|
||||
ml_clean=true
|
||||
fi
|
||||
|
||||
# TOP is used by newlib and should not be used elsewhere for this purpose.
|
||||
# MULTI{SRC,BUILD}TOP are the proper ones to use. MULTISRCTOP is empty
|
||||
# when srcdir != builddir. MULTIBUILDTOP is always some number of ../'s.
|
||||
# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
|
||||
# delete TOP. Newlib may wish to continue to use TOP for its own purposes
|
||||
# of course.
|
||||
# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
|
||||
# and lists the subdirectories to recurse into.
|
||||
# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
|
||||
# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
|
||||
# a leading '/'.
|
||||
# MULTIDO is used for targets like all, install, and check where
|
||||
# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
|
||||
# MULTICLEAN is used for the *clean targets.
|
||||
#
|
||||
# ??? It is possible to merge MULTIDO and MULTICLEAN into one. They are
|
||||
# currently kept separate because we don't want the *clean targets to require
|
||||
# the existence of the compiler (which MULTIDO currently requires) and
|
||||
# therefore we'd have to record the directory options as well as names
|
||||
# (currently we just record the names and use --print-multi-lib to get the
|
||||
# options).
|
||||
|
||||
sed -e "s:^TOP[ ]*=[ ]*\([./]*\)[ ]*$:TOP = ${ml_builddotdot}\1:" \
|
||||
-e "s:^MULTISRCTOP[ ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
|
||||
-e "s:^MULTIBUILDTOP[ ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
|
||||
-e "s:^MULTIDIRS[ ]*=.*$:MULTIDIRS = ${multidirs}:" \
|
||||
-e "s:^MULTISUBDIR[ ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
|
||||
-e "s:^MULTIDO[ ]*=.*$:MULTIDO = $ml_do:" \
|
||||
-e "s:^MULTICLEAN[ ]*=.*$:MULTICLEAN = $ml_clean:" \
|
||||
${Makefile} > Makefile.tem
|
||||
rm -f ${Makefile}
|
||||
mv Makefile.tem ${Makefile}
|
||||
|
||||
# If this is the library's top level, configure each multilib subdir.
|
||||
# This is done at the end because this is the loop that runs configure
|
||||
# in each multilib subdir and it seemed reasonable to finish updating the
|
||||
# Makefile before going on to configure the subdirs.
|
||||
|
||||
if [ "${ml_toplevel_p}" = yes ]; then
|
||||
|
||||
# We must freshly configure each subdirectory. This bit of code is
|
||||
# actually partially stolen from the main configure script. FIXME.
|
||||
|
||||
if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
|
||||
|
||||
if [ "${ml_verbose}" = --verbose ]; then
|
||||
echo "Running configure in multilib subdirs ${multidirs}"
|
||||
echo "pwd: `pwd`"
|
||||
fi
|
||||
|
||||
ml_origdir=`pwd`
|
||||
ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'`
|
||||
# cd to top-level-build-dir/${with_target_subdir}
|
||||
cd ..
|
||||
|
||||
for ml_dir in ${multidirs}; do
|
||||
|
||||
if [ "${ml_verbose}" = --verbose ]; then
|
||||
echo "Running configure in multilib subdir ${ml_dir}"
|
||||
echo "pwd: `pwd`"
|
||||
fi
|
||||
|
||||
if [ -d ${ml_dir} ]; then true; else
|
||||
# ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
|
||||
pathcomp=""
|
||||
for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
|
||||
pathcomp="$pathcomp$d"
|
||||
case "$pathcomp" in
|
||||
-* ) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp" 1>&2
|
||||
mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
|
||||
fi
|
||||
if test ! -d "$pathcomp"; then
|
||||
exit $lasterr
|
||||
fi
|
||||
pathcomp="$pathcomp/"
|
||||
done
|
||||
fi
|
||||
if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
|
||||
|
||||
# Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
|
||||
dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
|
||||
|
||||
case ${srcdir} in
|
||||
".")
|
||||
echo Building symlink tree in `pwd`/${ml_dir}/${ml_libdir}
|
||||
if [ "${with_target_subdir}" != "." ]; then
|
||||
ml_unsubdir="../"
|
||||
else
|
||||
ml_unsubdir=""
|
||||
fi
|
||||
(cd ${ml_dir}/${ml_libdir};
|
||||
../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
|
||||
if [ -f ${ml_dir}/${ml_libdir}/Makefile ]; then
|
||||
if [ x"${MAKE}" = x ]; then
|
||||
(cd ${ml_dir}/${ml_libdir}; make distclean)
|
||||
else
|
||||
(cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
|
||||
fi
|
||||
fi
|
||||
ml_newsrcdir="."
|
||||
ml_srcdiroption=
|
||||
multisrctop=${dotdot}
|
||||
;;
|
||||
*)
|
||||
case "${srcdir}" in
|
||||
/* | [A-Za-z]:[\\/]* ) # absolute path
|
||||
ml_newsrcdir=${srcdir}
|
||||
;;
|
||||
*) # otherwise relative
|
||||
ml_newsrcdir=${dotdot}${srcdir}
|
||||
;;
|
||||
esac
|
||||
ml_srcdiroption="-srcdir=${ml_newsrcdir}"
|
||||
multisrctop=
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${progname}" in
|
||||
/* | [A-Za-z]:[\\/]* ) ml_recprog=${progname} ;;
|
||||
*) ml_recprog=${dotdot}${progname} ;;
|
||||
esac
|
||||
|
||||
# FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
|
||||
ML_POPDIR=`pwd`
|
||||
cd ${ml_dir}/${ml_libdir}
|
||||
|
||||
if [ -f ${ml_newsrcdir}/configure ]; then
|
||||
ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
|
||||
fi
|
||||
|
||||
# find compiler flag corresponding to ${ml_dir}
|
||||
for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
|
||||
dir=`echo $i | sed -e 's/;.*$//'`
|
||||
if [ "${dir}" = "${ml_dir}" ]; then
|
||||
flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
|
||||
break
|
||||
fi
|
||||
done
|
||||
ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" GCJ="${GCJ_}$flags"'
|
||||
|
||||
if [ "${with_target_subdir}" = "." ]; then
|
||||
CC_=$CC' '
|
||||
CXX_=$CXX' '
|
||||
GCJ_=$GCJ' '
|
||||
else
|
||||
# Create a regular expression that matches any string as long
|
||||
# as ML_POPDIR.
|
||||
popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
|
||||
CC_=
|
||||
for arg in ${CC}; do
|
||||
case $arg in
|
||||
-[BIL]"${ML_POPDIR}"/*)
|
||||
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
|
||||
"${ML_POPDIR}"/*)
|
||||
CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
||||
*)
|
||||
CC_="${CC_}${arg} " ;;
|
||||
esac
|
||||
done
|
||||
|
||||
CXX_=
|
||||
for arg in ${CXX}; do
|
||||
case $arg in
|
||||
-[BIL]"${ML_POPDIR}"/*)
|
||||
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
||||
"${ML_POPDIR}"/*)
|
||||
CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
||||
*)
|
||||
CXX_="${CXX_}${arg} " ;;
|
||||
esac
|
||||
done
|
||||
|
||||
GCJ_=
|
||||
for arg in ${GCJ}; do
|
||||
case $arg in
|
||||
-[BIL]"${ML_POPDIR}"/*)
|
||||
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
||||
"${ML_POPDIR}"/*)
|
||||
GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
|
||||
*)
|
||||
GCJ_="${GCJ_}${arg} " ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test "x${LD_LIBRARY_PATH+set}" = xset; then
|
||||
LD_LIBRARY_PATH_=
|
||||
for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
|
||||
case "$arg" in
|
||||
"${ML_POPDIR}"/*)
|
||||
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
|
||||
;;
|
||||
esac
|
||||
if test "x$LD_LIBRARY_PATH_" != x; then
|
||||
LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
|
||||
else
|
||||
LD_LIBRARY_PATH_=$arg
|
||||
fi
|
||||
done
|
||||
ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
|
||||
fi
|
||||
|
||||
if test "x${SHLIB_PATH+set}" = xset; then
|
||||
SHLIB_PATH_=
|
||||
for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
|
||||
case "$arg" in
|
||||
"${ML_POPDIR}"/*)
|
||||
arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
|
||||
;;
|
||||
esac
|
||||
if test "x$SHLIB_PATH_" != x; then
|
||||
SHLIB_PATH_=$SHLIB_PATH_:$arg
|
||||
else
|
||||
SHLIB_PATH_=$arg
|
||||
fi
|
||||
done
|
||||
ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
|
||||
fi
|
||||
fi
|
||||
|
||||
if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
|
||||
--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
|
||||
${ml_arguments} ${ml_srcdiroption} ; then
|
||||
true
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd ${ML_POPDIR}
|
||||
|
||||
done
|
||||
|
||||
cd ${ml_origdir}
|
||||
fi
|
||||
|
||||
fi # ${ml_toplevel_p} = yes
|
||||
fi # ${enable_multilib} = yes
|
1331
contrib/gcc/config.guess
vendored
1331
contrib/gcc/config.guess
vendored
File diff suppressed because it is too large
Load Diff
79
contrib/gcc/config.if
Normal file
79
contrib/gcc/config.if
Normal file
@ -0,0 +1,79 @@
|
||||
#! /dev/null
|
||||
# Don't call it directly. This shell script fragment is called to
|
||||
# determine:
|
||||
#
|
||||
# 1. libstcxx_incdir: the interface name for libstdc++.
|
||||
# 2. libc_interface: the interface name for libc.
|
||||
#
|
||||
|
||||
# Get the top level src dir.
|
||||
if [ -z "${topsrcdir}" -a -z "${top_srcdir}" ]
|
||||
then
|
||||
echo "Undefined top level src dir: topsrcdir and top_srcdir are empty" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${topsrcdir}" ]
|
||||
then
|
||||
if_topsrcdir=${topsrcdir}
|
||||
else
|
||||
if_topsrcdir=${top_srcdir}
|
||||
fi
|
||||
|
||||
# Set libstdcxx_incdir.
|
||||
# This is the same as gcc/configure.in and libstdc++-v3/acinclude.m4.
|
||||
gcc_version_trigger=${if_topsrcdir}/gcc/version.c
|
||||
gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*"\([^"]*\)".*/\1/'`
|
||||
gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
|
||||
libstdcxx_incdir=c++/${gcc_version}
|
||||
|
||||
# The trickiest part is libc_interface.
|
||||
if [ -z "${libc_interface}" ]
|
||||
then
|
||||
case ${target_os} in
|
||||
*linux*libc1*|*linux*libc5*)
|
||||
case ${target_alias} in
|
||||
*alpha*|*powerpc*)
|
||||
libc_interface=-libc5.9-
|
||||
;;
|
||||
*)
|
||||
libc_interface=-libc5-
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*linux*gnu*)
|
||||
# We have to work harder to figure it out.
|
||||
if [ ${target_alias} = ${build_alias} ]
|
||||
then
|
||||
dummy=if$$
|
||||
cat >$dummy.c <<EOF
|
||||
#include <features.h>
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
printf("%d\n", __GLIBC_MINOR__);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
${CC-cc} $dummy.c -o $dummy 2>/dev/null
|
||||
if [ "$?" = 0 ]
|
||||
then
|
||||
libc_interface=-libc6.`./$dummy`-
|
||||
rm -f $dummy.c $dummy
|
||||
else
|
||||
# It should never happen.
|
||||
echo "Cannot find the GNU C library minor version number." >&2
|
||||
rm -f $dummy.c $dummy
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Cross compiling. Assume glibc 2.1.
|
||||
libc_interface=-libc6.1-
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
libc_interface=-
|
||||
;;
|
||||
esac
|
||||
fi
|
1450
contrib/gcc/config.sub
vendored
Executable file
1450
contrib/gcc/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
477
contrib/gcc/config/ChangeLog
Normal file
477
contrib/gcc/config/ChangeLog
Normal file
@ -0,0 +1,477 @@
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-18 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-08-14 Release Manager
|
||||
|
||||
* GCC 3.2 Released.
|
||||
|
||||
2002-07-25 Release Manager
|
||||
|
||||
* GCC 3.1.1 Released.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
2001-10-07 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* acinclude.m4: Fix spelling error of "separate" as "seperate".
|
||||
|
||||
2001-05-22 Jason Merrill <jason_merrill@redhat.com>
|
||||
|
||||
* mt-linux (CXXFLAGS_FOR_TARGET): Lose -fvtable-thunks.
|
||||
|
||||
2001-01-27 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* mt-alphaieee: New file.
|
||||
|
||||
2001-01-02 Laurynas Biveinis <lauras@softhome.net>
|
||||
|
||||
* mh-djgpp: do not set CFLAGS.
|
||||
|
||||
2000-08-04 Mark Elbrecht <snowball3@bigfoot.com>
|
||||
|
||||
* mh-djgpp: Conditionally set 'target_alias' to djgpp. Conditionally
|
||||
modify 'gcc_version'.
|
||||
|
||||
2000-07-21 Andrew Haley <aph@cygnus.com>
|
||||
|
||||
* mh-ia64pic: New file.
|
||||
* mt-ia64pic: New file.
|
||||
|
||||
Fri Jul 14 18:13:23 2000 Mark P Mitchell <mark@codesourcery.com>
|
||||
|
||||
* mh-irix6 (CC): Don't set it.
|
||||
|
||||
2000-06-21 Branko Cibej <branko.cibej@hermes.si>
|
||||
|
||||
* mh-sparcpic: Use single instead of double quotes.
|
||||
* mt-sparcpic: Likewise.
|
||||
|
||||
2000-06-19 Syd Polk <spolk@redhat.com>
|
||||
|
||||
* acinclude.m4: Updated for Incr Tcl 3.0.
|
||||
|
||||
2000-02-23 Linas Vepstas <linas@linas.org>
|
||||
|
||||
* mh-i370pic: New file.
|
||||
* mt-i370pic: New file.
|
||||
|
||||
2000-02-22 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* config/mt-wince: new file: Makefile fragment for WinCE targets.
|
||||
|
||||
2000-01-06 Geoff Keating <geoffk@cygnus.com>
|
||||
|
||||
* mh-aix43: Delete, move to mt-aix43.
|
||||
* mt-aix43: New file.
|
||||
|
||||
Tue Sep 7 23:31:01 1999 Linas Vepstas <linas@linas.org>
|
||||
|
||||
* mh-openedition: New file.
|
||||
|
||||
1999-04-07 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* mt-d30v: New file, pass -g -Os -Wa,-C as default options.
|
||||
|
||||
1999-02-08 Syd Polk <spolk@cygnus.com>
|
||||
|
||||
* acinclude.m4: Added macros to find itcl files.
|
||||
Export TCL_CFLAGS from tclConfig.sh.
|
||||
Export TCL_LIB_FULL_PATH, TK_LIB_FULL_PATH, ITCL_LIB_FULL_PATH,
|
||||
ITK_LIB_FULL_PATH, and TIX_LIB_FULL_PATH
|
||||
Replace TIX macros with better ones from snavigator.
|
||||
|
||||
Tue Feb 2 22:51:21 1999 Philip Blundell <philb@gnu.org>
|
||||
|
||||
* mh-armpic: New file. Patch from Jim Pick <jim@jimpick.com>.
|
||||
* mt-armpic: Likewise.
|
||||
|
||||
Mon Jan 18 19:41:08 1999 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* cygwin.mh: Activate commented out dependencies for
|
||||
gdb: libtermcap.
|
||||
|
||||
Wed Nov 18 20:29:46 1998 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* cygwin.mh: Add extra libtermcap target information.
|
||||
Add commented out dependency for gdb to libtermcap for
|
||||
future readline requirement.
|
||||
|
||||
Mon Nov 2 15:15:33 1998 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: delete
|
||||
* mh-cygwin: was mh-cygwin32
|
||||
|
||||
1998-10-26 Syd Polk <spolk@cygnus.com>
|
||||
|
||||
* acinclude.m4: TCLHDIR and TKHDIR need to be run through
|
||||
cygpath for Microsoft builds.
|
||||
|
||||
1998-10-20 Syd Polk <spolk@cygnus.com>
|
||||
|
||||
* acinclude.m4: Re-exported TCL_LIBS and TCL_LD_SEARCH_FLAGS
|
||||
because itcl needs them.
|
||||
|
||||
Mon Aug 31 17:50:53 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* mh-aix43 (NM_FOR_TARGET): Add -X32_64 as well.
|
||||
|
||||
Sat Aug 29 14:32:55 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* mh-aix43: New file.
|
||||
|
||||
Mon Aug 10 00:15:47 1998 HJ Lu (hjl@gnu.org)
|
||||
|
||||
* mt-linux (CXXFLAGS_FOR_TARGET): Add -D_GNU_SOURCE.
|
||||
|
||||
1998-05-29 Rob Savoye <rob@chinadoll.cygnus.com>
|
||||
|
||||
* acinclude.m4: New collection of generic autoconf macros.
|
||||
|
||||
Wed Apr 22 12:24:28 1998 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* mt-ospace: New file, support using -Os instead of -O2 to compile
|
||||
the libraries.
|
||||
|
||||
Wed Apr 22 10:53:14 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* mt-linux (CXXFLAGS_FOR_TARGET): Set this instead of CXXFLAGS.
|
||||
|
||||
Sat Apr 11 22:43:17 1998 J. Kean Johnston <jkj@sco.com>
|
||||
|
||||
* mh-svsv5: New file - support for SCO UnixWare 7 / SVR5.
|
||||
|
||||
Thu Mar 26 01:54:25 1998 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: stop configuring and building dosrel.
|
||||
|
||||
Thu Sep 11 16:43:27 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* mh-elfalphapic, mt-elfalphapic: New files.
|
||||
|
||||
Wed Jul 23 12:32:18 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
|
||||
|
||||
* mh-go32 (CFLAGS): Don't set -fno-omit-frame-pointer.
|
||||
|
||||
Mon Jun 16 19:06:41 1997 Geoff Keating <geoffk@ozemail.com.au>
|
||||
|
||||
* mh-ppcpic: New file.
|
||||
* mt-ppcpic: New file.
|
||||
|
||||
Thu Mar 27 15:52:40 1997 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: override CXXFLAGS, setting to -O2 only
|
||||
(no debug)
|
||||
|
||||
Tue Mar 25 18:16:43 1997 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: override LIBGCC2_DEBUG_CFLAGS so debug info
|
||||
isn't included in cygwin32-hosted libgcc2.a by default
|
||||
|
||||
Wed Jan 8 19:56:43 1997 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: override CFLAGS so debug info isn't included
|
||||
in cygwin32-hosted tools by default
|
||||
|
||||
Tue Dec 31 16:04:26 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-linux: Remove.
|
||||
|
||||
Mon Nov 11 10:29:51 1996 Michael Meissner <meissner@tiktok.cygnus.com>
|
||||
|
||||
* mt-ppc: Delete file, options moved to newlib configure.
|
||||
|
||||
Fri Oct 4 12:21:03 1996 Angela Marie Thomas (angela@cygnus.com)
|
||||
|
||||
* mh-dgux386: New file. x86 dgux specific flags
|
||||
|
||||
Mon Sep 30 15:10:07 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (EXTRALIBS_PPC_XCOFF): New, was EXTRALIBS_PPC.
|
||||
(EXTRALIBS_PPC): Use shared libraries instead of xcoff.
|
||||
|
||||
Sat Aug 17 04:56:25 1996 Geoffrey Noer <noer@skaro.cygnus.com>
|
||||
|
||||
* mh-cygwin32: don't -D_WIN32 here anymore
|
||||
|
||||
Thu Aug 15 19:46:44 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (SEGFLAG_68K, SEGFLAG_PPC): Remove.
|
||||
(EXTRALIBS_PPC): Add libgcc.xcoff.
|
||||
|
||||
Thu Aug 8 14:51:47 1996 Michael Meissner <meissner@tiktok.cygnus.com>
|
||||
|
||||
* mt-ppc: New file, add -mrelocatable-lib and -mno-eabi to all
|
||||
target builds for PowerPC eabi targets.
|
||||
|
||||
Fri Jul 12 12:06:01 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw: New subdir, Mac MPW configuration support bits.
|
||||
|
||||
Mon Jul 8 17:30:52 1996 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* mh-irix6: New file.
|
||||
|
||||
Mon Jul 8 15:15:37 1996 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* mt-sparcpic (PICFLAG_FOR_TARGET): Use -fPIC.
|
||||
|
||||
Fri Jul 5 11:49:02 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-irix4 (RANLIB): Don't define; Irix 4 does have ranlib.
|
||||
|
||||
Sun Jun 23 22:59:25 1996 Geoffrey Noer <noer@cygnus.com>
|
||||
|
||||
* mh-cygwin32: new file. Like mh-go32 without the CFLAGS entry.
|
||||
|
||||
Tue Mar 26 14:10:41 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-go32 (CFLAGS): Define.
|
||||
|
||||
Thu Mar 14 19:20:54 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-necv4: New file.
|
||||
|
||||
Thu Feb 15 13:07:43 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-cxux (CC): New variable.
|
||||
(CFLAGS, LDFLAGS): Remove.
|
||||
* mh-ncrsvr43 (CC): New variable.
|
||||
(CFLAGS): Remove.
|
||||
* mh-solaris (CFLAGS): Remove.
|
||||
|
||||
* mh-go32: Remove most variable settings, since they presumed a
|
||||
Canadian Cross, which is now handled correctly by the configure
|
||||
script.
|
||||
|
||||
* mh-sparcpic (PICFLAG): Set to -fPIC, not -fpic.
|
||||
|
||||
Mon Feb 12 14:53:39 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* mh-m68kpic, mt-m68kpic: New files.
|
||||
|
||||
Thu Feb 1 14:15:42 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (CC_MWC68K): Add options similar to those used
|
||||
in CC_MWCPPC, and -mc68020 -model far.
|
||||
(AR_MWLINK68K): Add -xm library.
|
||||
(AR_AR): Define.
|
||||
(CC_LD_MWLINK68K): Remove -d.
|
||||
(EXTRALIBS_MWC68K): Define.
|
||||
|
||||
Thu Jan 25 16:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-ncrsvr43 (CFLAGS): Remove -Hnocopyr.
|
||||
|
||||
Tue Nov 7 15:41:30 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (CC_MWC68K, CC_MWCPPC): Remove unused include path.
|
||||
(CC_MWCPPC): Add -mpw_chars, disable warnings, add comments
|
||||
explaining reasons for various flags.
|
||||
(EXTRALIBS_PPC, EXTRALIBS_MWCPPC ): Put runtime library first.
|
||||
|
||||
Fri Oct 13 14:44:25 1995 Jason Molenda (crash@phydeaux.cygnus.com)
|
||||
|
||||
* mh-aix, mh-sun: Removed.
|
||||
|
||||
* mh-decstation (X11_EXTRA_CFLAGS): Define.
|
||||
|
||||
* mh-sco, mh-solaris, mh-sysv4 (X11_EXTRA_LIBS): Define.
|
||||
|
||||
* mh-hp300, mh-hpux, mh-hpux8, mh-solaris, mh-sun3, mh-sysv4: Don't
|
||||
hardcode location of X stuff here.
|
||||
|
||||
Thu Sep 28 13:14:56 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw: Add definitions for various 68K and PowerMac
|
||||
compilers, add definitions for library and link steps for
|
||||
PowerMacs.
|
||||
|
||||
Thu Sep 14 08:20:04 1995 Fred Fish <fnf@cygnus.com>
|
||||
|
||||
* mh-hp300 (CC): Add "CC = cc -Wp,-H256000" to avoid
|
||||
"too much defining" errors from the HPUX compiler.
|
||||
|
||||
Thu Aug 17 17:28:56 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
|
||||
|
||||
* mh-hp300 (RANLIB): Use "ar ts", in case GNU ar was used and
|
||||
didn't build a symbol table.
|
||||
|
||||
Thu Jun 22 17:47:24 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (CC): Define ANSI_PROTOTYPES.
|
||||
|
||||
Mon Apr 10 12:29:48 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-mh-mpw (EXTRALIBS): Always link in Math.o, CSANELIB.o,
|
||||
and ToolLibs.o.
|
||||
|
||||
* mpw-mh-mpw (CC): Define ALMOST_STDC.
|
||||
(CFLAGS): Remove ALMOST_STDC, -mc68881.
|
||||
(LDFLAGS): add -w.
|
||||
|
||||
* mpw-mh-mpw (CFLAGS): Add -b option to put strings at the ends of
|
||||
functions.
|
||||
|
||||
* mpw-mh-mpw: New file, host makefile definitions for MPW.
|
||||
|
||||
Fri Mar 31 11:35:17 1995 Jason Molenda (crash@phydeaux.cygnus.com)
|
||||
|
||||
* mt-netware: New file.
|
||||
|
||||
Mon Mar 13 12:31:29 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-hpux8: New file.
|
||||
* mh-hpux: Use X11R5 rather than X11R4.
|
||||
|
||||
Thu Feb 9 11:04:13 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* mh-linux (SYSV): Don't define.
|
||||
(RANLIB): Don't define.
|
||||
|
||||
Wed Jan 11 16:29:34 1995 Jason Merrill <jason@phydeaux.cygnus.com>
|
||||
|
||||
* m?-*pic (LIBCXXFLAGS): Add -fno-implicit-templates.
|
||||
|
||||
Thu Nov 3 17:27:19 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
|
||||
|
||||
* mh-irix4 (CC): Increase maximum string length.
|
||||
|
||||
* mh-sco (CC): Define away const, it doesn't work right; elements
|
||||
of arrays of ptr-to-const are considered const themselves.
|
||||
|
||||
Sat Jul 16 12:17:49 1994 Stan Shebs (shebs@andros.cygnus.com)
|
||||
|
||||
* mh-cxux: New file, from Bob Rusk (rrusk@mail.csd.harris.com).
|
||||
|
||||
Sat Jun 4 17:22:12 1994 Per Bothner (bothner@kalessin.cygnus.com)
|
||||
|
||||
* mh-ncrsvr43: New file from Tom McConnell
|
||||
<tmcconne@sedona.intel.com>.
|
||||
|
||||
Thu May 19 00:32:11 1994 Jeff Law (law@snake.cs.utah.edu)
|
||||
|
||||
* mh-hpux (CC): Add -Wp,-H256000 to avoid "too much defining"
|
||||
errors from the HPUX 8 compilers.
|
||||
|
||||
Wed May 4 20:14:47 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
|
||||
|
||||
* mh-lynxrs6k: set SHELL to /bin/bash
|
||||
|
||||
Tue Apr 12 12:38:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||
|
||||
* mh-irix4 (CC): Change -XNh1500 to -XNh2000.
|
||||
|
||||
Sat Dec 25 20:03:45 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||
|
||||
* mt-hppa: Delete.
|
||||
|
||||
Tue Nov 16 22:54:39 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* mh-a68bsd: Define CC to gcc.
|
||||
|
||||
Mon Nov 15 16:56:51 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* mh-linux: Don't put -static in LDFLAGS. Add comments.
|
||||
|
||||
Mon Nov 15 13:37:58 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com)
|
||||
|
||||
* mh-sysv4 (AR_FLAGS): change from cq to cr
|
||||
|
||||
Fri Nov 5 08:12:32 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com)
|
||||
|
||||
* mh-unixware: remove. It's the same as sysv4, and config.guess
|
||||
can't tell the difference. So don't allow skew.
|
||||
|
||||
Wed Oct 20 20:35:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* mh-hp300: Revert yesterday's change, but add comment explaining.
|
||||
|
||||
Tue Oct 19 18:58:21 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* mh-hp300: Don't define CFLAGS to empty. Why should hp300 be
|
||||
different from anything else? ("gdb doesn't understand the native
|
||||
debug format" isn't a good enough answer because we might be using
|
||||
gcc).
|
||||
|
||||
Tue Oct 5 12:17:40 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
|
||||
|
||||
* mh-alphaosf: Remove, no longer necessary now that gdb knows
|
||||
how to handle OSF/1 shared libraries.
|
||||
|
||||
Tue Jul 6 11:27:33 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
|
||||
|
||||
* mh-alphaosf: New file.
|
||||
|
||||
Thu Jul 1 15:49:33 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* mh-riscos: New file.
|
||||
|
||||
Mon Jun 14 12:03:18 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
|
||||
|
||||
* mh-aix, mh-aix386, mh-decstation, mh-delta88, mh-hpux, mh-irix4,
|
||||
mh-ncr3000, mh-solaris, mh-sysv, mh-sysv4: remove INSTALL=cp line,
|
||||
now that we're using install.sh globally
|
||||
|
||||
Fri Jun 4 16:09:34 1993 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* mh-sysv4 (INSTALL): Use cp, not /usr/ucb/install.
|
||||
|
||||
Thu Apr 8 11:21:52 1993 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* mt-a29k, mt-ebmon29k, mt-os68k, mt-ose68000, mt-ose68k,
|
||||
mt-vxworks68, mt-vxworks960: Removed obsolete, unused target
|
||||
Makefile fragment files.
|
||||
|
||||
Mon Mar 8 15:05:25 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* mh-aix386: New file; old mh-aix, plus no-op RANLIB.
|
||||
|
||||
Thu Oct 1 13:50:48 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
|
||||
|
||||
* mh-solaris: INSTALL is NOT /usr/ucb/install
|
||||
|
||||
Mon Aug 24 14:25:35 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* mt-ose68000, mt-ose68k: renamed from mt-OSE*.
|
||||
|
||||
Tue Jul 21 02:11:01 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
|
||||
|
||||
* mt-OSE68k, mt-680000: new configs.
|
||||
|
||||
Thu Jul 16 17:12:09 1992 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* mh-irix4: merged changes from progressive.
|
||||
|
||||
Tue Jun 9 23:29:38 1992 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
* Everywhere: Change RANLIB=echo>/dev/null (which confuses
|
||||
some shells - and I don't blame them) to RANLIB=true.
|
||||
* mh-solaris: Use /usr/ucb/install for INSTALL.
|
||||
|
||||
Sun May 31 14:45:23 1992 Mark Eichin (eichin at cygnus.com)
|
||||
|
||||
* mh-solaris2: Add new configuration for Solaris 2 (sysv, no ranlib)
|
||||
|
||||
Fri Apr 10 23:10:08 1992 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
* mh-ncr3000: Add new configuration for NCR 3000.
|
||||
|
||||
Tue Dec 10 00:10:55 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* ChangeLog: fresh changelog.
|
||||
|
1995
contrib/gcc/config/acinclude.m4
Normal file
1995
contrib/gcc/config/acinclude.m4
Normal file
File diff suppressed because it is too large
Load Diff
12
contrib/gcc/config/mh-a68bsd
Normal file
12
contrib/gcc/config/mh-a68bsd
Normal file
@ -0,0 +1,12 @@
|
||||
RANLIB=true
|
||||
|
||||
#None of the Apollo compilers can compile gas or binutils. The preprocessor
|
||||
# chokes on bfd, the compiler won't let you assign integers to enums, and
|
||||
# other problems. Defining CC to gcc is a questionable way to say "don't use
|
||||
# the apollo compiler" (the preferred version of GCC could be called cc,
|
||||
# or whatever), but I'm not sure leaving CC as cc is any better...
|
||||
|
||||
#CC=cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DNO_STDARG
|
||||
CC=gcc
|
||||
|
||||
BISON=yacc
|
1
contrib/gcc/config/mh-aix386
Normal file
1
contrib/gcc/config/mh-aix386
Normal file
@ -0,0 +1 @@
|
||||
RANLIB = @:
|
3
contrib/gcc/config/mh-apollo68
Normal file
3
contrib/gcc/config/mh-apollo68
Normal file
@ -0,0 +1,3 @@
|
||||
HDEFINES = -DUSG
|
||||
RANLIB=true
|
||||
CC= cc -A ansi -A runtype,any -A systype,any -U__STDC__ -DUSG
|
1
contrib/gcc/config/mh-armpic
Normal file
1
contrib/gcc/config/mh-armpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fPIC
|
14
contrib/gcc/config/mh-cxux
Normal file
14
contrib/gcc/config/mh-cxux
Normal file
@ -0,0 +1,14 @@
|
||||
# Configuration for Harris CX/UX 7 (and maybe 6), based on sysv4 configuration.
|
||||
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
||||
|
||||
# C++ debugging is not yet supported under SVR4 (DWARF)
|
||||
CXXFLAGS=-O
|
||||
|
||||
# The l flag generates a warning from the SVR4 archiver, remove it.
|
||||
AR_FLAGS = cq
|
||||
|
||||
# Under CX/UX, we want to tell the compiler to use ANSI mode.
|
||||
CC=cc -Xa
|
6
contrib/gcc/config/mh-cygwin
Normal file
6
contrib/gcc/config/mh-cygwin
Normal file
@ -0,0 +1,6 @@
|
||||
EXTRA_TARGET_HOST_ALL_MODULES=all-libtermcap
|
||||
EXTRA_TARGET_HOST_INSTALL_MODULES=install-libtermcap
|
||||
|
||||
all-gdb: all-libtermcap
|
||||
|
||||
install-gdb: all-libtermcap
|
5
contrib/gcc/config/mh-decstation
Normal file
5
contrib/gcc/config/mh-decstation
Normal file
@ -0,0 +1,5 @@
|
||||
CC = cc -Wf,-XNg1000
|
||||
|
||||
# for X11, since the native DECwindows include files are really broken when
|
||||
# it comes to function prototypes.
|
||||
X11_EXTRA_CFLAGS = "-DNeedFunctionPrototypes=0"
|
4
contrib/gcc/config/mh-delta88
Normal file
4
contrib/gcc/config/mh-delta88
Normal file
@ -0,0 +1,4 @@
|
||||
RANLIB = true
|
||||
|
||||
|
||||
|
4
contrib/gcc/config/mh-dgux
Normal file
4
contrib/gcc/config/mh-dgux
Normal file
@ -0,0 +1,4 @@
|
||||
HDEFINES=-DHOST_SYS=DGUX_SYS
|
||||
CC=gcc -Wall -ansi -D__using_DGUX
|
||||
RANLIB=true
|
||||
|
22
contrib/gcc/config/mh-dgux386
Normal file
22
contrib/gcc/config/mh-dgux386
Normal file
@ -0,0 +1,22 @@
|
||||
# from mh-dgux
|
||||
HDEFINES=-DHOST_SYS=DGUX_SYS
|
||||
CC=gcc -Wall -ansi -D__using_DGUX
|
||||
RANLIB = true
|
||||
|
||||
# from mh-sysv4
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
||||
|
||||
# C++ debugging is not yet supported under SVR4 (DWARF)
|
||||
CXXFLAGS=-O
|
||||
|
||||
# The l flag generates a warning from the SVR4 archiver, remove it.
|
||||
AR_FLAGS = cr
|
||||
|
||||
X11_EXTRA_LIBS = -lnsl
|
||||
|
||||
# from angela
|
||||
# no debugging due to broken compiler, use BSD style timeofday
|
||||
CFLAGS=-O -D_BSD_TIMEOFDAY_FLAVOR
|
||||
|
14
contrib/gcc/config/mh-djgpp
Normal file
14
contrib/gcc/config/mh-djgpp
Normal file
@ -0,0 +1,14 @@
|
||||
# Shorten the target alias so when it is used to set 'libsubdir'
|
||||
# the name will work in both short and long filename environments.
|
||||
ifeq ($(findstring -pc-msdosdjgpp,$(target_alias)),-pc-msdosdjgpp)
|
||||
target_alias=djgpp
|
||||
endif
|
||||
|
||||
# The version string must be modified to contain just one dot
|
||||
# because DOS filenames can only have one dot when long filenames
|
||||
# are not available.
|
||||
__version:=$(gcc_version)
|
||||
__version:=$(subst ., ,$(__version))
|
||||
ifeq ($(words $(__version)),3)
|
||||
gcc_version=$(word 1,$(__version)).$(word 2,$(__version))$(word 3,$(__version))
|
||||
endif
|
1
contrib/gcc/config/mh-elfalphapic
Normal file
1
contrib/gcc/config/mh-elfalphapic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fPIC
|
13
contrib/gcc/config/mh-hp300
Normal file
13
contrib/gcc/config/mh-hp300
Normal file
@ -0,0 +1,13 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV
|
||||
# Avoid "too much defining" errors from HPUX compiler.
|
||||
CC = cc -Wp,-H256000
|
||||
# If "ar" in $PATH is GNU ar, the symbol table may need rebuilding.
|
||||
# If it's HP/UX ar, this should be harmless.
|
||||
RANLIB = ar ts
|
||||
|
||||
# Native cc can't bootstrap gcc with -g. Defining CFLAGS here loses (a)
|
||||
# for non-gcc directories, (b) if we are compiling with gcc, not
|
||||
# native cc. Neither (a) nor (b) has a trivial fix though.
|
||||
|
||||
CFLAGS =
|
4
contrib/gcc/config/mh-hpux
Normal file
4
contrib/gcc/config/mh-hpux
Normal file
@ -0,0 +1,4 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
CC = cc -Wp,-H256000
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
4
contrib/gcc/config/mh-hpux8
Normal file
4
contrib/gcc/config/mh-hpux8
Normal file
@ -0,0 +1,4 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
CC = cc -Wp,-H256000
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
1
contrib/gcc/config/mh-i370pic
Normal file
1
contrib/gcc/config/mh-i370pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fPIC
|
1
contrib/gcc/config/mh-ia64pic
Normal file
1
contrib/gcc/config/mh-ia64pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fpic
|
14
contrib/gcc/config/mh-interix
Normal file
14
contrib/gcc/config/mh-interix
Normal file
@ -0,0 +1,14 @@
|
||||
# The shell may not be in /bin.
|
||||
SHELL = sh
|
||||
RANLIB = true
|
||||
|
||||
# We don't want debugging info in Interix-hosted toolchains.
|
||||
# Accomplish this by overriding CFLAGS. This is also a workaround
|
||||
# for LD crash when building shared libstdc++.
|
||||
CFLAGS=-O2
|
||||
CXXFLAGS=-O2
|
||||
|
||||
# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
|
||||
# built without debugging information
|
||||
|
||||
LIBGCC2_DEBUG_CFLAGS=
|
7
contrib/gcc/config/mh-irix4
Normal file
7
contrib/gcc/config/mh-irix4
Normal file
@ -0,0 +1,7 @@
|
||||
# Makefile changes for SGI's running IRIX-4.x.
|
||||
# Tell compiler to use K&R C. We can't compile under the SGI Ansi
|
||||
# environment. Also bump switch table size so that cp-parse will
|
||||
# compile. Bump string length limit so linker builds.
|
||||
|
||||
CC = cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 -Wf,-XNl8192
|
||||
SYSV = -DSYSV
|
3
contrib/gcc/config/mh-irix5
Normal file
3
contrib/gcc/config/mh-irix5
Normal file
@ -0,0 +1,3 @@
|
||||
# Makefile changes for SGI's running IRIX-5.x.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
3
contrib/gcc/config/mh-irix6
Normal file
3
contrib/gcc/config/mh-irix6
Normal file
@ -0,0 +1,3 @@
|
||||
# Makefile changes for SGI's running IRIX-6.x.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
2
contrib/gcc/config/mh-lynxos
Normal file
2
contrib/gcc/config/mh-lynxos
Normal file
@ -0,0 +1,2 @@
|
||||
# /bin/cc is less than useful for our purposes. Always use GCC
|
||||
CC = /bin/gcc
|
8
contrib/gcc/config/mh-lynxrs6k
Normal file
8
contrib/gcc/config/mh-lynxrs6k
Normal file
@ -0,0 +1,8 @@
|
||||
# LynxOS running on the rs6000 doesn't have ranlib
|
||||
RANLIB = true
|
||||
|
||||
# /bin/cc is less than useful for our purposes. Always use GCC
|
||||
CC = /usr/cygnus/progressive/bin/gcc
|
||||
|
||||
# /bin/sh is too buggy, so use /bin/bash instead.
|
||||
SHELL = /bin/bash
|
1
contrib/gcc/config/mh-m68kpic
Normal file
1
contrib/gcc/config/mh-m68kpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fpic
|
12
contrib/gcc/config/mh-mingw32
Normal file
12
contrib/gcc/config/mh-mingw32
Normal file
@ -0,0 +1,12 @@
|
||||
# We don't want debugging info in Win32-hosted toolchains.
|
||||
# Accomplish this by overriding CFLAGS.
|
||||
CFLAGS=-O2
|
||||
CXXFLAGS=-O2
|
||||
|
||||
# We also need to override LIBGCC2_DEBUG_CFLAGS so libgcc2 will be
|
||||
# built without debugging information
|
||||
|
||||
LIBGCC2_DEBUG_CFLAGS=
|
||||
|
||||
# custom installation rules for mingw32 (append .exe to binaries, etc.)
|
||||
# INSTALL_DOSREL=install-dosrel
|
17
contrib/gcc/config/mh-ncr3000
Normal file
17
contrib/gcc/config/mh-ncr3000
Normal file
@ -0,0 +1,17 @@
|
||||
# Host configuration file for an NCR 3000 (i486/SVR4) system.
|
||||
|
||||
# The NCR 3000 ships with a MetaWare compiler installed as /bin/cc.
|
||||
# This compiler not only emits obnoxious copyright messages every time
|
||||
# you run it, but it chokes and dies on a whole bunch of GNU source
|
||||
# files. Default to using the AT&T compiler installed in /usr/ccs/ATT/cc.
|
||||
# Unfortunately though, the AT&T compiler sometimes generates code that
|
||||
# the assembler barfs on if -g is used, so disable it by default as well.
|
||||
CC = /usr/ccs/ATT/cc
|
||||
CFLAGS =
|
||||
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
||||
|
||||
# The l flag generates a warning from the SVR4 archiver, remove it.
|
||||
AR_FLAGS = cq
|
9
contrib/gcc/config/mh-ncrsvr43
Normal file
9
contrib/gcc/config/mh-ncrsvr43
Normal file
@ -0,0 +1,9 @@
|
||||
# Host configuration file for an NCR 3000 (i486/SVR43) system.
|
||||
|
||||
# The MetaWare compiler will generate a copyright message unless you
|
||||
# turn it off by adding the -Hnocopyr flag.
|
||||
CC = cc -Hnocopyr
|
||||
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
11
contrib/gcc/config/mh-necv4
Normal file
11
contrib/gcc/config/mh-necv4
Normal file
@ -0,0 +1,11 @@
|
||||
# Host Makefile fragment for NEC MIPS SVR4.
|
||||
|
||||
# The C compiler on NEC MIPS SVR4 needs bigger tables.
|
||||
CC = cc -ZXNd=5000 -ZXNg=1000
|
||||
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
||||
|
||||
# NEC -lX11 needs some other libraries.
|
||||
X11_EXTRA_LIBS = -lsocket -lnsl
|
2
contrib/gcc/config/mh-openedition
Normal file
2
contrib/gcc/config/mh-openedition
Normal file
@ -0,0 +1,2 @@
|
||||
RANLIB = true
|
||||
CC = c89
|
1
contrib/gcc/config/mh-papic
Normal file
1
contrib/gcc/config/mh-papic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fPIC
|
1
contrib/gcc/config/mh-ppcpic
Normal file
1
contrib/gcc/config/mh-ppcpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fPIC
|
15
contrib/gcc/config/mh-riscos
Normal file
15
contrib/gcc/config/mh-riscos
Normal file
@ -0,0 +1,15 @@
|
||||
# This is for a MIPS running RISC/os 4.52C.
|
||||
|
||||
# This is needed for GDB, but needs to be in the top-level make because
|
||||
# if a library is compiled with the bsd headers and gets linked with the
|
||||
# sysv system libraries all hell can break loose (e.g. a jmp_buf might be
|
||||
# a different size).
|
||||
# ptrace(2) apparently has problems in the BSD environment. No workaround is
|
||||
# known except to select the sysv environment. Could we use /proc instead?
|
||||
# These "sysv environments" and "bsd environments" often end up being a pain.
|
||||
#
|
||||
# This is not part of CFLAGS because perhaps not all C compilers have this
|
||||
# option.
|
||||
CC= cc -systype sysv
|
||||
|
||||
RANLIB = true
|
10
contrib/gcc/config/mh-sco
Normal file
10
contrib/gcc/config/mh-sco
Normal file
@ -0,0 +1,10 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
||||
# You may need this if you don't have bison.
|
||||
# BISON = yacc -Sm10400
|
||||
# The native C compiler botches some simple uses of const. Unfortunately,
|
||||
# it doesn't defined anything like "__sco__" for us to test for in ansidecl.h.
|
||||
CC = cc -Dconst=
|
||||
|
||||
X11_EXTRA_LIBS = -lsocket -lm -lintl -lmalloc
|
6
contrib/gcc/config/mh-solaris
Normal file
6
contrib/gcc/config/mh-solaris
Normal file
@ -0,0 +1,6 @@
|
||||
# Makefile changes for Suns running Solaris 2
|
||||
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
||||
|
||||
X11_EXTRA_LIBS = -lnsl -lsocket
|
1
contrib/gcc/config/mh-sparcpic
Normal file
1
contrib/gcc/config/mh-sparcpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
|
3
contrib/gcc/config/mh-sun3
Normal file
3
contrib/gcc/config/mh-sun3
Normal file
@ -0,0 +1,3 @@
|
||||
# Sun's C compiler needs the -J flag to be able to compile cp-parse.c
|
||||
# without overflowing the jump tables (-J says to use a 32 bit table)
|
||||
CC = cc -J
|
3
contrib/gcc/config/mh-sysv
Normal file
3
contrib/gcc/config/mh-sysv
Normal file
@ -0,0 +1,3 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV
|
||||
RANLIB = true
|
11
contrib/gcc/config/mh-sysv4
Normal file
11
contrib/gcc/config/mh-sysv4
Normal file
@ -0,0 +1,11 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4
|
||||
RANLIB = true
|
||||
|
||||
# C++ debugging is not yet supported under SVR4 (DWARF)
|
||||
CXXFLAGS=-O
|
||||
|
||||
# The l flag generates a warning from the SVR4 archiver, remove it.
|
||||
AR_FLAGS = cr
|
||||
|
||||
X11_EXTRA_LIBS = -lnsl
|
8
contrib/gcc/config/mh-sysv5
Normal file
8
contrib/gcc/config/mh-sysv5
Normal file
@ -0,0 +1,8 @@
|
||||
# Define SYSV as -DSYSV if you are using a System V operating system.
|
||||
SYSV = -DSYSV -DSVR4 -DSVR5
|
||||
RANLIB = true
|
||||
|
||||
# The l flag generates a warning from the SVR4 archiver, remove it.
|
||||
AR_FLAGS = cr
|
||||
|
||||
X11_EXTRA_LIBS = -lnsl
|
2
contrib/gcc/config/mh-vaxult2
Normal file
2
contrib/gcc/config/mh-vaxult2
Normal file
@ -0,0 +1,2 @@
|
||||
# The old BSD pcc isn't up to compiling parts of gdb so use gcc
|
||||
CC = gcc
|
1
contrib/gcc/config/mh-x86pic
Normal file
1
contrib/gcc/config/mh-x86pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG=-fpic
|
157
contrib/gcc/config/mpw-mh-mpw
Normal file
157
contrib/gcc/config/mpw-mh-mpw
Normal file
@ -0,0 +1,157 @@
|
||||
# This is an MPW makefile fragment.
|
||||
|
||||
# Since there are a multiplicity of Mac compilers and two different
|
||||
# processors, this file is primarily a library of options for each
|
||||
# compiler. Somebody else (such as a configure or build script) will
|
||||
# make the actual choice.
|
||||
|
||||
# Compiler to use for compiling.
|
||||
|
||||
CC_MPW_C = C -d MPW_C -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -w
|
||||
|
||||
CC_SC = SC -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -mc68020 -model far -b -i '' -i :
|
||||
|
||||
CC_MWC68K = MWC68K -d MPW -enum int -mpw_chars -sym on -w off -mc68020 -model far
|
||||
|
||||
CC_PPCC = PPCC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -w
|
||||
|
||||
CC_MRC = MrC -d powerc=1 -d pascal= -d ALMOST_STDC -d ANSI_PROTOTYPES -d MPW -i '' -i : -jm
|
||||
|
||||
CC_SMrC = SMrC -d MPW
|
||||
|
||||
# "-mpw_chars" is necessary because GNU sources often mix signed and
|
||||
# unsigned casually.
|
||||
# "-w off" is not a great idea, but CW7 is complaining about enum
|
||||
# assignments.
|
||||
# "-opt global,peep,l4,speed" is sometimes good, and sometimes bad.
|
||||
# We must use {CIncludes} so that MPW tools will work; {MWCIncludes}
|
||||
# defines stdout, islower, etc, in ways that are incompatible with MPW's
|
||||
# runtime. However, this cannot be done via -i "{CIncludes}", since
|
||||
# that does not affect how <>-type includes happen; instead, the variable
|
||||
# MWCIncludes must be set to point at {CIncludes}.
|
||||
|
||||
CC_MWCPPC = MWCPPC -d MPW -enum int -mpw_chars -sym on -w off
|
||||
|
||||
# Note that GCC does *not* wire in a definition of "pascal", so that
|
||||
# it can be handled in another way if desired.
|
||||
|
||||
CC_68K_GCC = gC -Dpascal= -DANSI_PROTOTYPES -DMPW
|
||||
|
||||
CC_PPC_GCC = gC -Dpowerc=1 -Dpascal= -DANSI_PROTOTYPES -DMPW
|
||||
|
||||
# Nothing for the default CFLAGS.
|
||||
|
||||
CFLAGS =
|
||||
|
||||
# Tool to use for making libraries/archives.
|
||||
|
||||
AR_LIB = Lib
|
||||
|
||||
AR_MWLINK68K = MWLink68K -xm library
|
||||
|
||||
AR_PPCLINK = PPCLink -xm library
|
||||
|
||||
AR_MWLINKPPC = MWLinkPPC -xm library
|
||||
|
||||
AR_AR = ar
|
||||
|
||||
AR_FLAGS = -o
|
||||
|
||||
RANLIB_NULL = null-command
|
||||
|
||||
RANLIB_RANLIB = ranlib
|
||||
|
||||
# Compiler and/or linker to use for linking.
|
||||
|
||||
CC_LD_LINK = Link -w -d -model far {CC_LD_TOOL_FLAGS}
|
||||
|
||||
CC_LD_MWLINK68K = MWLink68K -w {CC_LD_TOOL_FLAGS} -sym on -model far
|
||||
|
||||
CC_LD_PPCLINK = PPCLink -main __start -outputformat xcoff
|
||||
|
||||
CC_LD_MWLINKPPC = MWLinkPPC -w {CC_LD_TOOL_FLAGS} -sym on
|
||||
|
||||
CC_LD_GLD = gC
|
||||
|
||||
# Extension for linker output.
|
||||
|
||||
PROG_EXT_68K =
|
||||
|
||||
PROG_EXT_XCOFF = .xcoff
|
||||
|
||||
# Nothing for the default LDFLAGS.
|
||||
|
||||
LDFLAGS = -w
|
||||
|
||||
CC_LD_TOOL_FLAGS = -c 'MPS ' -t MPST
|
||||
|
||||
# Libraries to link against.
|
||||
|
||||
# It would appear that the math libraries are not
|
||||
# needed except to provide a definition for scalb,
|
||||
# which is called from ldexp, which is referenced
|
||||
# in the m68k opcodes library.
|
||||
|
||||
EXTRALIBS_C = \Option-d
|
||||
"{CLibraries}"StdClib.o \Option-d
|
||||
"{CLibraries}"Math.o \Option-d
|
||||
"{CLibraries}"CSANELib.o \Option-d
|
||||
"{Libraries}"Stubs.o \Option-d
|
||||
"{Libraries}"Runtime.o \Option-d
|
||||
"{Libraries}"Interface.o \Option-d
|
||||
"{Libraries}"ToolLibs.o
|
||||
|
||||
EXTRALIBS_MWC68K = \Option-d
|
||||
"{CLibraries}"StdClib.o \Option-d
|
||||
"{CLibraries}"Math.o \Option-d
|
||||
"{CLibraries}"CSANELib.o \Option-d
|
||||
"{Libraries}"Stubs.o \Option-d
|
||||
"{Libraries}"Runtime.o \Option-d
|
||||
"{Libraries}"Interface.o \Option-d
|
||||
"{Libraries}"ToolLibs.o \Option-d
|
||||
"{MW68KLibraries}MPW ANSI (4i) C.68K.Lib"
|
||||
|
||||
EXTRALIBS_PPC_XCOFF = \Option-d
|
||||
"{PPCLibraries}"StdCRuntime.o \Option-d
|
||||
"{PPCLibraries}"InterfaceLib.xcoff \Option-d
|
||||
"{PPCLibraries}"MathLib.xcoff \Option-d
|
||||
"{PPCLibraries}"StdCLib.xcoff \Option-d
|
||||
"{PPCLibraries}"PPCToolLibs.o \Option-d
|
||||
"{PPCLibraries}"PPCCRuntime.o \Option-d
|
||||
"{GCCPPCLibraries}"libgcc.xcoff
|
||||
|
||||
EXTRALIBS_PPC = \Option-d
|
||||
"{PPCLibraries}"StdCRuntime.o \Option-d
|
||||
"{SharedLibraries}"InterfaceLib \Option-d
|
||||
"{SharedLibraries}"MathLib \Option-d
|
||||
"{SharedLibraries}"StdCLib \Option-d
|
||||
"{PPCLibraries}"PPCToolLibs.o \Option-d
|
||||
"{PPCLibraries}"PPCCRuntime.o \Option-d
|
||||
"{GCCPPCLibraries}"libgcc.xcoff
|
||||
|
||||
EXTRALIBS_MWCPPC = \Option-d
|
||||
"{MWPPCLibraries}"MWStdCRuntime.Lib \Option-d
|
||||
"{MWPPCLibraries}"InterfaceLib \Option-d
|
||||
"{MWPPCLibraries}"StdCLib \Option-d
|
||||
"{MWPPCLibraries}"MathLib \Option-d
|
||||
"{MWPPCLibraries}"PPCToolLibs.o
|
||||
|
||||
# Tool to make PEF with, if needed.
|
||||
|
||||
MAKEPEF_NULL = null-command
|
||||
|
||||
MAKEPEF_PPC = MakePEF
|
||||
|
||||
MAKEPEF_FLAGS = \Option-d
|
||||
-l InterfaceLib.xcoff=InterfaceLib \Option-d
|
||||
-l MathLib.xcoff=MathLib \Option-d
|
||||
-l StdCLib.xcoff=StdCLib
|
||||
|
||||
MAKEPEF_TOOL_FLAGS = -ft MPST -fc 'MPS '
|
||||
|
||||
# Resource compiler to use.
|
||||
|
||||
REZ_68K = Rez
|
||||
|
||||
REZ_PPC = Rez -d WANT_CFRG
|
||||
|
81
contrib/gcc/config/mpw/ChangeLog
Normal file
81
contrib/gcc/config/mpw/ChangeLog
Normal file
@ -0,0 +1,81 @@
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-18 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-08-14 Release Manager
|
||||
|
||||
* GCC 3.2 Released.
|
||||
|
||||
2002-07-25 Release Manager
|
||||
|
||||
* GCC 3.1.1 Released.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
Tue Nov 26 12:34:12 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Fix some comments.
|
||||
|
||||
Mon Sep 16 14:42:52 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed (HLDENV): Edit out all references.
|
||||
|
||||
Thu Aug 15 19:49:23 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* true: New script, identical to mpw-true.
|
||||
* g-mpw-make.sed: Add @DASH_C_FLAG@ and @SEGMENT_FLAG()@
|
||||
to the editors for compile commands.
|
||||
|
||||
Thu Aug 1 15:01:42 1996 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* mpw-true, mpw-touch, null-command: New scripts.
|
||||
* README: Describe usage in more detail.
|
||||
|
||||
Tue Dec 12 14:51:51 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Don't edit out "version=" occurrences.
|
||||
|
||||
Fri Dec 1 11:46:18 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed (bindir, libdir): Edit the positions of
|
||||
pathname separators to work with other pathnames better.
|
||||
|
||||
Tue Nov 7 15:08:07 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Add comment about Duplicate vs Catenate,
|
||||
add additional pattern for editing link-compile commands.
|
||||
|
||||
Tue Oct 24 14:28:51 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: Add handling for *.tab.[hc] files.
|
||||
(CHILL_FOR_TARGET, CHILL_LIB): Edit out tricky definitions
|
||||
of these.
|
||||
|
||||
Thu Sep 28 21:05:10 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* g-mpw-make.sed: New file, generic sed commands to translate
|
||||
Unix makefiles into MPW makefile syntax.
|
||||
|
||||
Fri Mar 17 11:51:20 1995 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* README: Clarify instructions.
|
||||
* fi: Remove.
|
||||
|
||||
Wed Dec 21 15:45:53 1994 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
* MoveIfChange, README, fi, forward-include, open-brace,
|
||||
tr-7to8-src: New files.
|
19
contrib/gcc/config/mpw/MoveIfChange
Normal file
19
contrib/gcc/config/mpw/MoveIfChange
Normal file
@ -0,0 +1,19 @@
|
||||
# Rename a file only if it is different from a previously existing
|
||||
# file of the same name. This is useful for keeping make from doing
|
||||
# too much work if the contents of a file haven't changed.
|
||||
|
||||
# This is an MPW translation of the standard GNU sh script move-if-change.
|
||||
|
||||
Set exit 0
|
||||
|
||||
If "`exists -f "{2}"`"
|
||||
Compare "{1}" "{2}" >dev:null
|
||||
If {status} != 0
|
||||
Rename -y "{1}" "{2}"
|
||||
Else
|
||||
Echo "{2}" is unchanged
|
||||
Delete -i -y "{1}"
|
||||
End
|
||||
Else
|
||||
Rename -y "{1}" "{2}"
|
||||
End
|
23
contrib/gcc/config/mpw/README
Normal file
23
contrib/gcc/config/mpw/README
Normal file
@ -0,0 +1,23 @@
|
||||
This directory contains MPW scripts and related files that are needed to
|
||||
build Cygnus GNU tools for MPW. The scripts should be somewhere on the
|
||||
command path; our usual practice has been to have a separate directory
|
||||
for the scripts, and put the tools (byacc, flex, and sed at least) there
|
||||
also; then it's easier to drag the support bits around as a group, or to
|
||||
upgrade MPW versions. The complete package of scripts and tool binaries
|
||||
is usually available as pub/mac/buildtools.cpt.hqx on ftp.cygnus.com.
|
||||
|
||||
"tr-7to8-src" is actually the source to an MPW script that transforms
|
||||
sequences like "\Option-d" into the actual 8-bit chars that MPW needs.
|
||||
It's only the source because it can't itself include any 8-bit chars.
|
||||
It *can* be processed into a genuine "tr-7to8" by using itself:
|
||||
|
||||
tr-7to8 tr-7to8-src | sed -e 's/Src//' >new-tr-7to8
|
||||
|
||||
Use this to verify:
|
||||
|
||||
compare tr-7to8 new-tr-7to8
|
||||
|
||||
If you don't have a working tr-7to8, then you will have to manually
|
||||
replace all occurrences of "\Option-d" with real Option-d (which looks
|
||||
like a delta), then do similarly with all the other "\Option-..."
|
||||
strings, and then change "\SrcOption-d" into the string "\Option-d".
|
3
contrib/gcc/config/mpw/forward-include
Normal file
3
contrib/gcc/config/mpw/forward-include
Normal file
@ -0,0 +1,3 @@
|
||||
Echo '#include' ¶""{1}"¶" >"{2}".tem
|
||||
MoveIfChange "{2}".tem "{2}"
|
||||
|
293
contrib/gcc/config/mpw/g-mpw-make.sed
Normal file
293
contrib/gcc/config/mpw/g-mpw-make.sed
Normal file
@ -0,0 +1,293 @@
|
||||
# Sed commands to translate Unix makefiles into MPW makefiles.
|
||||
# These are nominally generic, but work best on the makefiles used
|
||||
# for GNU programs.
|
||||
|
||||
# Whack out any commented-out lines that are probably commands;
|
||||
# they can only cause trouble later on.
|
||||
/^# /d
|
||||
|
||||
# Change dependency char.
|
||||
/:$/s/:/ \\Option-f/g
|
||||
/^[^ :#][^:]*:/s/\([ ]*\):\([ ]*\)/ \\Option-f /g
|
||||
|
||||
# Change syntax of Makefile vars.
|
||||
/\$/s/\${\([a-zA-Z0-9_-]*\)}/{\1}/g
|
||||
/\$/s/\$(\([a-zA-Z0-9_-]*\))/{\1}/g
|
||||
/ $@/s/ $@/ {Targ}/
|
||||
|
||||
# Double-$ are literals to Unix but not to MPW make.
|
||||
/\$\$/s/\$\$/$/g
|
||||
|
||||
# Change pathname syntax.
|
||||
/\//s,\.\./\/\.\./,:::,g
|
||||
/\//s,\.\./,::,g
|
||||
/\.\//s,\./,:,g
|
||||
/\//s,/,:,g
|
||||
# Undo excess changes.
|
||||
/and/s,and:or$,and/or,
|
||||
/and/s,and:or ,and/or ,
|
||||
/want/s,want:need,want/need,
|
||||
# Fixing up sed commands.
|
||||
/-e/s_":\([^:]*\):d"_"/\1/d"_g
|
||||
/-e/s_":\([^:]*\):,:\([^:]*\):d"_"/\1/,/\2/d"_g
|
||||
|
||||
/=/s/ = \.$/ = :/
|
||||
|
||||
# Make these go away so that later edits not confused.
|
||||
/HLDENV/s/{HLDENV}//
|
||||
|
||||
# Comment out any explicit srcdir setting.
|
||||
/srcdir/s/^srcdir/# srcdir/
|
||||
|
||||
/BASEDIR/s/^BASEDIR =.*$/BASEDIR = "{srcroot}"/
|
||||
/{BASEDIR}:/s/{BASEDIR}:/{BASEDIR}/g
|
||||
/{srcdir}:/s/{srcdir}:/"{srcdir}"/g
|
||||
/"{srcdir}":/s/"{srcdir}":/"{srcdir}"/g
|
||||
|
||||
# Tweak some conventions that are backwards for the Mac.
|
||||
/bindir/s/{exec_prefix}:bin/{exec_prefix}bin:/
|
||||
/libdir/s/{exec_prefix}:lib/{exec_prefix}lib:/
|
||||
|
||||
# Comment out settings of anything set by mpw host config.
|
||||
/CC/s/^CC *=/#CC =/
|
||||
/CFLAGS/s/^CFLAGS *=/#CFLAGS =/
|
||||
/AR/s/^AR *=/#AR =/
|
||||
/AR_FLAGS/s/^AR_FLAGS *=/#AR_FLAGS =/
|
||||
/RANLIB/s/^RANLIB *=/#RANLIB =/
|
||||
/CC_LD/s/^CC_LD *=/#CC_LD =/
|
||||
/LDFLAGS/s/^LDFLAGS *=/#LDFLAGS =/
|
||||
|
||||
# Change -I usages.
|
||||
/-I/s/-I\./-i :/g
|
||||
/-I/s/-I::bfd/-i ::bfd:/g
|
||||
/-I/s/-I::include/-i ::include:/g
|
||||
/-I/s/-I/-i /g
|
||||
|
||||
# Change -D usage.
|
||||
/-D/s/\([ =]\)-D\([^ ]*\)/\1-d \2/g
|
||||
|
||||
# Change continuation char.
|
||||
/\\$/s/\\$/\\Option-d/
|
||||
|
||||
# Change wildcard char.
|
||||
/\*/s/\*/\\Option-x/g
|
||||
|
||||
# Change path of various types of source files. This rule does not allow
|
||||
# for file names with multiple dots in the name.
|
||||
/\.[chly]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/\1"{s}"\2.\3/g
|
||||
/\.[chly]/s/^\([-a-zA-Z0-9_${}:"]*\)\.\([chly]\)/"{s}"\1.\2/
|
||||
# Allow files named *.tab.[ch] as a special case.
|
||||
/\.tab\.[ch]/s/\([ ><=]\)\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/\1"{s}"\2.\3/g
|
||||
/\.tab\.[ch]/s/^\([-a-zA-Z0-9_${}:"]*\.tab\)\.\([ch]\)/"{s}"\1.\2/
|
||||
# Fix some overenthusiasms.
|
||||
/{s}/s/"{s}""{srcdir}"/"{srcdir}"/g
|
||||
/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)dir}/"{\1dir}"/g
|
||||
/{s}/s/"{s}"{\([a-zA-Z0-9_]*\)DIR}/"{\1DIR}"/g
|
||||
/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)dir}"/"{\1dir}"/g
|
||||
/{s}/s/"{s}""{\([a-zA-Z0-9_]*\)DIR}"/"{\1DIR}"/g
|
||||
/{s}/s/"{s}":/:/g
|
||||
/{s}/s/^"{s}"//g
|
||||
/{s}/s/"{s}""{s}"/"{s}"/g
|
||||
/{s}/s/"{s}""{srcdir}"/"{s}"/g
|
||||
/{s}/s/"{srcdir}""{s}"/"{s}"/g
|
||||
|
||||
# The .def files are also typically source files.
|
||||
/\.def/s/\([ ><]\)\([-a-zA-Z0-9_${}:"]*\)\.def/\1"{s}"\2.def/g
|
||||
/\.def/s/^\([-a-zA-Z0-9_${}:"]*\)\.def/"{s}"\1.def/g
|
||||
|
||||
# Change extension and path of objects.
|
||||
/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.o/\1"{o}"\2.c.o/g
|
||||
/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.o/"{o}"\1.c.o/
|
||||
# Allow *.tab.o files as a special case of a 2-dot-name file.
|
||||
/\.o/s/\([ =]\)\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/\1"{o}"\2.tab.c.o/g
|
||||
/\.o/s/^\([-a-zA-Z0-9_${}:"]*\)\.tab\.o/"{o}"\1.tab.c.o/
|
||||
# Clean up.
|
||||
/"{o}"/s/"{o}""{o}"/"{o}"/g
|
||||
/"{o}"/s/^"{o}"\([a-zA-Z0-9_]*\)=/\1=/
|
||||
|
||||
# Change extension of libs.
|
||||
/\.a/s/lib\([a-z]*\)\.a/lib\1.o/g
|
||||
|
||||
# Remove non-fail option.
|
||||
/-/s/^\([ ]*\)-/\1/
|
||||
# Fix overeagernesses - assumes no one-letter commands.
|
||||
/^[ ]*[a-z] /s/^\([ ]*\)\([a-z]\) /\1-\2 /
|
||||
|
||||
# Remove non-echo option. (watch out for autoconf things)
|
||||
/@/s/^\([ ]*\)@/\1/
|
||||
|
||||
# Change cp to Duplicate.
|
||||
# Catenate is perhaps more accurate, but the pattern would have to
|
||||
# identify the output file and add a '>' redirection into it.
|
||||
/cp/s/^\([ ]*\)cp /\1Duplicate -d -y /
|
||||
# Change mv to Rename.
|
||||
/mv/s/^\([ ]*\)mv /\1Rename -y /
|
||||
/Rename/s/^\([ ]*\)Rename -y -f/\1Rename -y/
|
||||
# Change rm to Delete.
|
||||
/rm -rf/s/^\([ ]*\)rm -rf /\1Delete -i -y /
|
||||
/rm -f/s/^\([ ]*\)rm -f /\1Delete -i -y /
|
||||
/rm/s/^\([ ]*\)rm /\1Delete -i -y /
|
||||
# Note that we don't mess with ln - directory-specific scripts
|
||||
# must decide what to do with symlinks.
|
||||
# Change cat to Catenate.
|
||||
/cat/s/^\([ ]*\)cat /\1Catenate /
|
||||
# Change touch to mpw-touch.
|
||||
/touch/s/^\([ ]*\)touch /\1mpw-touch /
|
||||
# Change mkdir to NewFolder.
|
||||
/mkdir/s/^\([ ]*\)mkdir /\1NewFolder /
|
||||
# Change var setting to Set.
|
||||
/=/s/^\([ ]*\)\([-a-zA-Z0-9_]*\)=\([^;]*\); \\Option-d/\1Set \2 \3/
|
||||
|
||||
# Change tests.
|
||||
/if /s/if \[ *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
|
||||
/if /s/if \[ *-f \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
|
||||
/if /s/if \[ ! *-f \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
|
||||
/if /s/if \[ ! *-f \([^ ]*\) ] *; *then \\Option-d/If "`Exists "\1"`" == ""/
|
||||
|
||||
/if /s/if \[ *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" != ""/
|
||||
/if /s/if \[ *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" != ""/
|
||||
/if /s/if \[ ! *-d \([^ ]*\) ] *; *\\Option-d/If "`Exists "\1"`" == ""/
|
||||
/if /s/if \[ ! *-d \([^ ]*\) ] *; *then *\\Option-d/If "`Exists "\1"`" == ""/
|
||||
|
||||
/if /s/if \[ -d \([^ ]*\) ] *; then true *; else mkdir \([^ ;]*\) *; fi/If "`Exists "\1"`" != "" NewFolder \2 End If/
|
||||
|
||||
/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *\\Option-d/If "\1" == "\2"/
|
||||
/if /s/if \[ \([^ ]*\) = \([^ ]*\) ] *; *then *\\Option-d/If "\1" == "\2"/
|
||||
|
||||
/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
|
||||
/if /s/if \[ \([^ ]*\) != \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
|
||||
|
||||
/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *\\Option-d/If "\1" != "\2"/
|
||||
/if /s/if \[ \([^ ]*\) -eq \([^ ]*\) ] *; *then *\\Option-d/If "\1" != "\2"/
|
||||
|
||||
/^[ ]*else true$/c\
|
||||
Else\
|
||||
mpw-true\
|
||||
|
||||
|
||||
/else/s/^\([ ]*\)else[ ]*$/\1Else/
|
||||
/else/s/^\([ ]*\)else[; ]*\\Option-d$/\1Else/
|
||||
|
||||
/^[ ]*else[ ]*true[ ]*$/c\
|
||||
Else\
|
||||
mpw-true
|
||||
|
||||
/^[ ]*else[ ]*true[; ]*fi$/c\
|
||||
Else\
|
||||
mpw-true\
|
||||
End If
|
||||
|
||||
/fi/s/^\([ ]*\)fi *$/\1End/
|
||||
/fi/s/^\([ ]*\)fi *; *\\Option-d/\1End/
|
||||
|
||||
# Change looping.
|
||||
/for/s/^\([ ]*\)for \([-a-zA-Z0-9_]*\) in \([^;]*\); *do *\\Option-d/\1For \2 In \3/
|
||||
/^\([ ]*\)do *\\Option-d/d
|
||||
/done/s/^\([ ]*\)done *; *\\Option-d/\1End/
|
||||
/done/s/^\([ ]*\)done$/\1End/
|
||||
|
||||
# Trailing semicolons and continued lines are unneeded sh syntax.
|
||||
/; \\Option-d/s/; \\Option-d//
|
||||
|
||||
# Change move-if-change to MoveIfChange.
|
||||
/move-if-change/s/\([^ ]*\)move-if-change/MoveIfChange/g
|
||||
|
||||
# Change $(SHELL) to the script name by itself.
|
||||
/SHELL/s/^\([ ]*\){SHELL} /\1/
|
||||
|
||||
# Change syntax of default rule dependency.
|
||||
/^\.c\.o/s/^\.c\.o \\Option-f$/.c.o \\Option-f .c/
|
||||
|
||||
# Change default rule's action.
|
||||
/{CC} -c/s/{CC} -c \(.*\) \$<$/{CC} @DASH_C_FLAG@ {DepDir}{Default}.c \1 @SEGMENT_FLAG({Default})@ -o {TargDir}{Default}.c.o/
|
||||
|
||||
# This is pretty disgusting, but I can't seem to detect empty rules.
|
||||
/Option-f$/s/Option-f$/Option-f _oldest/g
|
||||
|
||||
# Remove -c from explicit compiler calls. (but should not if GCC)
|
||||
# Handle the case of a source file that is "{xxx}"file.c.
|
||||
/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5.c -o "{o}"\5.c.o/
|
||||
# Handle the case of a source file that is "{xxx}"dir:file.c.
|
||||
/ -c /s/{\([A-Z_]*\)CC}\(.*\) -c \(.*\)"\([^"]*\)"\([-a-z_]*\):\([-a-z_]*\)\.c/{\1CC}\2 @DASH_C_FLAG@ \3"\4"\5:\6.c -o "{o}"\6.c.o/
|
||||
|
||||
# Change linking cc to linking sequence.
|
||||
/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\){LDFLAGS} \(.*\)-o \([^ ]*\) \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \5 -o \6{PROG_EXT} \7\
|
||||
\1{MAKEPEF} \6{PROG_EXT} -o \6 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
|
||||
\1{REZ} "{s}"\6.r -o \6 -append -d PROG_NAME='"'\6'"' -d VERSION_STRING='"'{version}'"'/
|
||||
/-o/s/^\([ ]*\){CC} \(.*\){\([A-Z_]*\)CFLAGS} \(.*\)-o \([^ ]*\) \(.*\){LDFLAGS} \(.*\)$/\1{CC_LD} \2 {\3CFLAGS} \4 {LDFLAGS} \6 -o \5{PROG_EXT} \7\
|
||||
\1{MAKEPEF} \5{PROG_EXT} -o \5 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
|
||||
\1{REZ} "{s}"\5.r -o \5 -append -d PROG_NAME='"'\5'"' -d VERSION_STRING='"'{version}'"'/
|
||||
/-o/s/^\([ ]*\){HOST_CC} \(.*\)-o \([^ ]*\) \(.*\)$/\1{HOST_CC_LD} \2 -o \3{PROG_EXT} \4\
|
||||
\1{MAKEPEF} \3{PROG_EXT} -o \3 {MAKEPEF_TOOL_FLAGS} {MAKEPEF_FLAGS}\
|
||||
\1{REZ} "{s}"\3.r -o \3 -append -d PROG_NAME='"'\3'"' -d VERSION_STRING='"'{version}'"'/
|
||||
|
||||
# Comment out .NOEXPORT rules.
|
||||
/\.NOEXPORT/s/^\.NOEXPORT/#\.NOEXPORT/
|
||||
# Comment out .PHONY rules.
|
||||
/\.PHONY/s/^\.PHONY/#\.PHONY/
|
||||
# Comment out .PRECIOUS rules.
|
||||
/\.PRECIOUS/s/^\.PRECIOUS/#\.PRECIOUS/
|
||||
# Comment out .SUFFIXES rules.
|
||||
/\.SUFFIXES/s/^\.SUFFIXES/#\.SUFFIXES/
|
||||
|
||||
# Set the install program appropriately.
|
||||
/INSTALL/s/^INSTALL *= *`.*`:install.sh -c/INSTALL = Duplicate -y/
|
||||
|
||||
# Don't try to decide whether to use the tree's own tools.
|
||||
/bison/s/`.*bison:bison.*`/bison -y/
|
||||
/byacc/s/`.*byacc:byacc.*`/byacc/
|
||||
/flex/s/`.*flex:flex.*`/flex/
|
||||
|
||||
# Turn transformed C comments in echo commands back into comments.
|
||||
/echo/s,echo '\(.*\):\\Option-x\(.*\)\\Option-x:\(.*\)',echo '\1/*\2*/\3',
|
||||
|
||||
# Whack out various clever expressions that search for tools, since
|
||||
# the clever code is too /bin/sh specific.
|
||||
|
||||
/^AR_FOR_TARGET = `/,/`$/c\
|
||||
AR_FOR_TARGET = ::binutils:ar\
|
||||
|
||||
|
||||
/^RANLIB_FOR_TARGET = `/,/`$/c\
|
||||
RANLIB_FOR_TARGET = ::binutils:ranlib\
|
||||
|
||||
|
||||
/^RANLIB_TEST_FOR_TARGET = /,/ranlib ] )$/c\
|
||||
RANLIB_TEST_FOR_TARGET = \
|
||||
|
||||
|
||||
/^EXPECT = `/,/`$/c\
|
||||
EXPECT = \
|
||||
|
||||
|
||||
/^RUNTEST = `/,/`$/c\
|
||||
RUNTEST = \
|
||||
|
||||
|
||||
/^CC_FOR_TARGET = `/,/`$/c\
|
||||
CC_FOR_TARGET = \
|
||||
|
||||
|
||||
/^CXX_FOR_TARGET = `/,/`$/c\
|
||||
CXX_FOR_TARGET = \
|
||||
|
||||
|
||||
/^CHILL_FOR_TARGET = `/,/`$/c\
|
||||
CHILL_FOR_TARGET = \
|
||||
|
||||
|
||||
/^CHILL_LIB = `/,/`$/c\
|
||||
CHILL_LIB = \
|
||||
|
||||
/sanit/s/{start-sanit...-[a-z0-9]*}//
|
||||
/sanit/s/{end-sanit...-[a-z0-9]*}//
|
||||
|
||||
# Add standard defines and default rules.
|
||||
/^# srcdir/a\
|
||||
\
|
||||
s = "{srcdir}"\
|
||||
\
|
||||
o = :\
|
||||
\
|
||||
"{o}" \\Option-f : "{s}"
|
||||
|
7
contrib/gcc/config/mpw/mpw-touch
Normal file
7
contrib/gcc/config/mpw/mpw-touch
Normal file
@ -0,0 +1,7 @@
|
||||
# "Touch" command.
|
||||
|
||||
If "`Exists "{1}"`" != ""
|
||||
SetFile -m . "{1}"
|
||||
Else
|
||||
Echo ' ' > "{1}"
|
||||
End If
|
1
contrib/gcc/config/mpw/mpw-true
Normal file
1
contrib/gcc/config/mpw/mpw-true
Normal file
@ -0,0 +1 @@
|
||||
Exit 0
|
1
contrib/gcc/config/mpw/null-command
Normal file
1
contrib/gcc/config/mpw/null-command
Normal file
@ -0,0 +1 @@
|
||||
# This command does nothing.
|
4
contrib/gcc/config/mpw/open-brace
Normal file
4
contrib/gcc/config/mpw/open-brace
Normal file
@ -0,0 +1,4 @@
|
||||
# MPW makefiles seem not to have any way to get a literal open
|
||||
# brace into a rule anywhere, so this does the job.
|
||||
|
||||
Echo '{'
|
9
contrib/gcc/config/mpw/tr-7to8-src
Normal file
9
contrib/gcc/config/mpw/tr-7to8-src
Normal file
@ -0,0 +1,9 @@
|
||||
StreamEdit -e \Option-d
|
||||
'/\Option-x/ \Option-d
|
||||
Replace /\Option-d\SrcOption-d/ "\Option-d\Option-d" -c \Option-5 ; \Option-d
|
||||
Replace /\Option-d\SrcOption-f/ "\Option-d\Option-f" -c \Option-5 ; \Option-d
|
||||
Replace /\Option-d\SrcOption-8/ "\Option-d\Option-8" -c \Option-5 ; \Option-d
|
||||
Replace /\Option-d\SrcOption-5/ "\Option-d\Option-5" -c \Option-5 ; \Option-d
|
||||
Replace /\Option-d\SrcOption-x/ "\Option-d\Option-x" -c \Option-5 ; \Option-d
|
||||
Replace /\Option-d\SrcOption-r/ "\Option-d\Option-r" -c \Option-5' \Option-d
|
||||
"{1}"
|
1
contrib/gcc/config/mpw/true
Normal file
1
contrib/gcc/config/mpw/true
Normal file
@ -0,0 +1 @@
|
||||
Exit 0
|
4
contrib/gcc/config/mt-aix43
Normal file
4
contrib/gcc/config/mt-aix43
Normal file
@ -0,0 +1,4 @@
|
||||
# AIX 4.3 and above requires -X32_64 flag to all ar and nm commands
|
||||
# to handle both 32-bit and 64-bit objects.
|
||||
AR_FOR_TARGET=ar -X32_64
|
||||
NM_FOR_TARGET=nm -B -X32_64
|
2
contrib/gcc/config/mt-alphaieee
Normal file
2
contrib/gcc/config/mt-alphaieee
Normal file
@ -0,0 +1,2 @@
|
||||
CFLAGS_FOR_TARGET += -mieee
|
||||
CXXFLAGS_FOR_TARGET += -mieee
|
1
contrib/gcc/config/mt-armpic
Normal file
1
contrib/gcc/config/mt-armpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
4
contrib/gcc/config/mt-d30v
Normal file
4
contrib/gcc/config/mt-d30v
Normal file
@ -0,0 +1,4 @@
|
||||
# Build libraries optimizing for space, not speed.
|
||||
# Turn off warnings about symbols named the same as registers
|
||||
CFLAGS_FOR_TARGET = -g -Os -Wa,-C
|
||||
CXXFLAGS_FOR_TARGET = -g -Os -Wa,-C
|
1
contrib/gcc/config/mt-elfalphapic
Normal file
1
contrib/gcc/config/mt-elfalphapic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
1
contrib/gcc/config/mt-i370pic
Normal file
1
contrib/gcc/config/mt-i370pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
1
contrib/gcc/config/mt-ia64pic
Normal file
1
contrib/gcc/config/mt-ia64pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
1
contrib/gcc/config/mt-linux
Normal file
1
contrib/gcc/config/mt-linux
Normal file
@ -0,0 +1 @@
|
||||
CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
|
1
contrib/gcc/config/mt-m68kpic
Normal file
1
contrib/gcc/config/mt-m68kpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
1
contrib/gcc/config/mt-netware
Normal file
1
contrib/gcc/config/mt-netware
Normal file
@ -0,0 +1 @@
|
||||
GDB_NLM_DEPS = all-gcc all-ld
|
3
contrib/gcc/config/mt-ospace
Normal file
3
contrib/gcc/config/mt-ospace
Normal file
@ -0,0 +1,3 @@
|
||||
# Build libraries optimizing for space, not speed.
|
||||
CFLAGS_FOR_TARGET = -g -Os
|
||||
CXXFLAGS_FOR_TARGET = -g -Os
|
1
contrib/gcc/config/mt-papic
Normal file
1
contrib/gcc/config/mt-papic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
1
contrib/gcc/config/mt-ppcpic
Normal file
1
contrib/gcc/config/mt-ppcpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fPIC
|
1
contrib/gcc/config/mt-sparcpic
Normal file
1
contrib/gcc/config/mt-sparcpic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
|
4
contrib/gcc/config/mt-v810
Normal file
4
contrib/gcc/config/mt-v810
Normal file
@ -0,0 +1,4 @@
|
||||
CC_FOR_TARGET = ca732 -ansi
|
||||
AS_FOR_TARGET = as732
|
||||
AR_FOR_TARGET = ar732
|
||||
RANLIB_FOR_TARGET = true
|
10
contrib/gcc/config/mt-wince
Normal file
10
contrib/gcc/config/mt-wince
Normal file
@ -0,0 +1,10 @@
|
||||
# For Windows CE, we need to build the program that converts, copies,
|
||||
# and renames the platform SDK files into gcc directories.
|
||||
|
||||
EXTRA_TARGET_HOST_ALL_MODULES:=$(EXTRA_TARGET_HOST_ALL_MODULES) all-utils
|
||||
EXTRA_TARGET_HOST_INSTALL_MODULES:=$(EXTRA_TARGET_HOST_INSTALL_MODULES) install-utils
|
||||
|
||||
all-utils : all-libiberty
|
||||
|
||||
install-utils : all-libiberty
|
||||
|
1
contrib/gcc/config/mt-x86pic
Normal file
1
contrib/gcc/config/mt-x86pic
Normal file
@ -0,0 +1 @@
|
||||
PICFLAG_FOR_TARGET=-fpic
|
10425
contrib/gcc/configure
vendored
10425
contrib/gcc/configure
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
721
contrib/gcc/contrib/ChangeLog
Normal file
721
contrib/gcc/contrib/ChangeLog
Normal file
@ -0,0 +1,721 @@
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-19 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-11-18 Release Manager
|
||||
|
||||
* GCC 3.2.1 Released.
|
||||
|
||||
2002-08-14 Release Manager
|
||||
|
||||
* GCC 3.2 Released.
|
||||
|
||||
2002-08-14 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gennews (files): Add GCC 3.2 files.
|
||||
|
||||
2002-07-25 Release Manager
|
||||
|
||||
* GCC 3.1.1 Released.
|
||||
|
||||
2002-07-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gennews (files): Add proper files for the GCC 3.1 release series.
|
||||
Simplify and reformat introductory wording.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
2002-05-14 Release Manager
|
||||
|
||||
* GCC 3.1 Released.
|
||||
|
||||
2002-04-03 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* texi2pod.pl: Handle @end ftable and @end vtable.
|
||||
|
||||
2002-03-12 Zack Weinberg <zack@codesourcery.com>
|
||||
|
||||
* texi2pod.pl: Handle @include, @ftable, @vtable.
|
||||
Reformat some code for clarity.
|
||||
|
||||
2002-02-24 Christian Jönsson <c.christian.joensson@telia.com>
|
||||
|
||||
* test_summary: Additional to XPASS and FAIL, add UNRESOLVED,
|
||||
WARNING and ERROR output from the *.sum files.
|
||||
|
||||
2002-01-26 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gennews (files): Replace gcc-2.95/gcc-2.95.html,
|
||||
gcc-2.95/gcc-2.95.1.html, gcc-2.95/gcc-2.95.2.html,
|
||||
and gcc-2.95/gcc-2.95.3.html by gcc-2.95/index.html.
|
||||
|
||||
2002-01-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gennews (files): Replace egcs-1.1/egcs-1.1.2.html,
|
||||
egcs-1.1/egcs-1.1.1.html, and egcs-1.1/egcs-1.1.html by
|
||||
egcs-1.1/index.html.
|
||||
|
||||
2002-01-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* warn_summary: Add -ada subdirectory flag.
|
||||
|
||||
2001-12-12 Matthias Klose <doko@debian.org>
|
||||
|
||||
* texi2pod.pl: Merge changes from binutils' texi2pod.pl. Allows
|
||||
generation of more than one man page from one source.
|
||||
Add '-' to set of valid chars for an identifier.
|
||||
Let -D option accept flags of the form <flag>=<value>.
|
||||
Use \s+ for whitespace detection in '@c man' lines.
|
||||
Handle @set and @clear independent of $output.
|
||||
Substitute all @value{}'s in a line.
|
||||
|
||||
2001-11-14 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Handle @ifnottex, @iftex and @display. Handle @var
|
||||
in verbatim blocks specially. Handle @unnumbered, @unnumberedsec
|
||||
and @center. Allow [a-z] after @enumerate. Handle 0 and numbers
|
||||
greater than 9 in enumerations.
|
||||
|
||||
2001-11-07 Laurent Guerby <guerby@acm.org>
|
||||
|
||||
* gcc_update (files_and_dependencies): Add Ada dependencies.
|
||||
|
||||
2001-10-08 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* snapshot: Remove.
|
||||
|
||||
2001-09-07 Richard Sandiford <rsandifo@redhat.com>
|
||||
|
||||
Revert:
|
||||
* gcc_update: (files_and_dependencies) Add gcc/java/parse.c
|
||||
gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to
|
||||
touch.
|
||||
|
||||
2001-09-04 David.Billinghurst <David.Billinghurst@riotinto.com>
|
||||
|
||||
* gcc_update: (files_and_dependencies) Add gcc/java/parse.c
|
||||
gcc/java/parse-scan.c and gcc/java/keyword.h to list of files to
|
||||
touch.
|
||||
|
||||
Mon Aug 13 02:29:08 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* analyze_brprob: Update for changes in gcc debug output.
|
||||
|
||||
Sat Jul 28 22:37:49 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* analyze_brprob: Avoid more overflows.
|
||||
|
||||
2001-07-27 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* test_summary: Copy LAST_UPDATED UTC time to head of summary.
|
||||
|
||||
Fri Jul 27 18:01:21 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* analyze_brprob: Avoid overflows.
|
||||
|
||||
2001-07-27 Richard Henderson <rth@redhat.com>
|
||||
|
||||
* gcc_update: Dump timestamp in LAST_UPDATED.
|
||||
|
||||
2001-07-26 Andreas Jaeger <aj@suse.de>,
|
||||
Hans-Peter Nilsson <hp@bitrange.com>
|
||||
|
||||
* analyze_brprob: Fix documentation.
|
||||
|
||||
Mon Jul 23 15:47:19 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* analyze_brprob: Fix awk compatibility problems; update comment.
|
||||
|
||||
2001-07-23 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* analyze_brprob: Fix more typos.
|
||||
|
||||
2001-07-23 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* analyze_brprob: Fix typos.
|
||||
|
||||
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Handle @r inside @item.
|
||||
|
||||
2001-07-02 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* gcc_update: Remove entries for gcc.1, cpp.1, gcov.1.
|
||||
|
||||
2001-07-01 Zoltan Felleg <zfelleg@telnet.hu>
|
||||
|
||||
* warn_summary: Fix typo in a comment.
|
||||
|
||||
2001-06-14 Albert Chin-A-Young <china@thewrittenword.com>
|
||||
|
||||
* contrib/gcc_update: Fix timestamp on gcc/f/intdoc.texi.
|
||||
|
||||
2001-06-13 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gennews: Set TERM to vt100 for Lynx.
|
||||
|
||||
2001-06-13 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* release: Remove.
|
||||
|
||||
Tue Jun 12 12:21:40 CEST 2001 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* analyze_brprob: New file.
|
||||
|
||||
2001-06-11 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Output information about the commands used to
|
||||
configure the compiler.
|
||||
|
||||
2001-06-07 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gennews: Update for GCC 3.0.
|
||||
|
||||
2001-06-02 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gcc_update: Update for move of documentation to gcc/doc.
|
||||
|
||||
2001-05-28 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
|
||||
|
||||
* contrib/test_summary (files): Sort before evaluating.
|
||||
|
||||
2001-05-23 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gcc_update (UPDATE_OPTIONS): Add -d to the default settings.
|
||||
|
||||
2001-05-21 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Use -d when invoking gcc_update.
|
||||
|
||||
2001-05-18 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* gcc_update: Add rules for libf2c/libI77.
|
||||
|
||||
2001-05-17 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gcc_update (touch_files): Use simpler, yet as portable, syntax.
|
||||
|
||||
2001-05-14 Loren J. Rittle <ljrittle@acm.org>
|
||||
|
||||
* gcc_update (touch_files): Enhance make portability.
|
||||
|
||||
2001-05-14 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gcc_update (touch_files): Use a Makefile to touch files.
|
||||
|
||||
2001-05-03 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Add copyright and GPL notices.
|
||||
|
||||
2001-01-24 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Handle "\,".
|
||||
|
||||
2001-01-15 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Fix regular expression for @r to avoid exponential
|
||||
recursion. From Russ Allbery <rra@stanford.edu>. Remove perl
|
||||
version check.
|
||||
|
||||
2001-01-15 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* warn_summary (stageNfilter): Update for recent changes in
|
||||
bootstrap logic.
|
||||
|
||||
2001-01-14 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Require at least perl 5.6.0.
|
||||
|
||||
2001-01-13 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gcc_update: Add gcc/gcc.1 to generated files.
|
||||
* texi2pod.pl: Handle @r and @gccoptlist. Handle @gol. Handle
|
||||
discarding to end of sentence with @xref where the sentence has an
|
||||
interior "." in markup, and handle discarding parentheses around
|
||||
such a sentence.
|
||||
|
||||
2001-01-11 Bernd Schmidt <bernds@redhat.com>
|
||||
|
||||
* gennews: Add gcc-2.95.3.
|
||||
|
||||
2001-01-10 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* texi2pod.pl: Handle @gcctabopt and @env in tables. Handle
|
||||
@command. Format URLs and email addresses in bold.
|
||||
|
||||
2001-01-03 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gcc_update: Add cpp.1 to the list of generated files.
|
||||
|
||||
* texi2pod.pl: Handle @option and @env.
|
||||
|
||||
2001-01-03 Mike Stump <mrs@wrs.com>
|
||||
|
||||
* snapshot: Update to account for java libraries.
|
||||
|
||||
2000-12-28 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
* test_summary: Export filesuffix, not fileprefix.
|
||||
|
||||
2000-12-22 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* release: Change some EGCS references to GCC.
|
||||
|
||||
2000-12-14 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* warn_summary: Fix subdirectory filtering. Add -intl and -fixinc
|
||||
subdirectory flags. Add source directory prefix filtering.
|
||||
Redirect diagnostic output to stderr.
|
||||
|
||||
2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
|
||||
|
||||
* texi2pod.pl: If multiple @c man sections with the same tag
|
||||
appear, concatenate them in the final output. When skipping,
|
||||
ignore block commands that can't cause skipping, and honor
|
||||
those that can. Ensure that verbatim blocks are separate
|
||||
paragraphs.
|
||||
|
||||
2000-12-07 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gcc_update: Don't touch tradcif.c or java/parse.h.
|
||||
|
||||
2000-12-05 Zack Weinberg <zack@wolery.stanford.edu>
|
||||
|
||||
* texi2pod.pl: Restructure for comprehensibility, add
|
||||
comments. Merge handling of @ignore and @ifxxx. Handle a
|
||||
whole bunch more Texinfo commands. Use consistent formatting
|
||||
style.
|
||||
|
||||
2000-12-04 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gennews: New script.
|
||||
|
||||
2000-11-22 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gcc_update: Update a comment as we now require bison for CVS users.
|
||||
|
||||
2000-11-22 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gcc_update: Add gcov.1 to the list of generated files.
|
||||
|
||||
2000-11-21 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Remove code to put information in a log file.
|
||||
|
||||
2000-11-19 Zack Weinberg <zackw@stanford.edu>
|
||||
|
||||
* texi2pod.pl:
|
||||
- Add real command line parsing.
|
||||
- Support @ifset, @ifclear, @set, @value, -D switch.
|
||||
- Support @sc. Improve handling of @ref and friends.
|
||||
- Discard @subsection, @need, @node lines.
|
||||
- Un-nest font changes to match texinfo semantics.
|
||||
- Handle @{ and @}. Oops.
|
||||
- Don't emit E<> directives inside verbatim blocks.
|
||||
|
||||
2000-11-12 Bruce Korb <bkorb@gnu.org>
|
||||
|
||||
* release: generalize the release script a bit.
|
||||
|
||||
Sat Nov 11 17:29:03 2000 Mark P Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Add -o option for setting the objdir to use.
|
||||
|
||||
2000-11-11 Jeff Law <law@redhat.com>,
|
||||
|
||||
* release: New file.
|
||||
|
||||
2000-11-08 Jeff Law <law@redhat.com>,
|
||||
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* snapshot: New file.
|
||||
|
||||
2000-11-08 Jeffrey Oldham <oldham@oz.codesourcery.com>
|
||||
|
||||
* gcc_build (bootstrap_gcc): New function.
|
||||
(configure_gcc): Likewise.
|
||||
(build_gcc): Rewritten to use configure and bootstrap.
|
||||
(MAKE_BOOTSTRAP_OPTIONS): Replaced MAKE_OPTIONS.
|
||||
|
||||
2000-10-31 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build (MAKE): New variable.
|
||||
(build_gcc): Use it. Fix logging of errors.
|
||||
(install_gcc): Likewise.
|
||||
|
||||
2000-10-29 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Save the output from CVS into the logfile as well.
|
||||
|
||||
2000-10-25 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: Fix typos.
|
||||
|
||||
2000-10-14 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gperf-2.7-19981006.pat: Remove.
|
||||
|
||||
2000-10-08 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* test_installed: Change EGCS references to refer to GCC.
|
||||
|
||||
2000-09-28 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gcc_update (touch_files): Add some informative output.
|
||||
|
||||
2000-09-16 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* gcc_update: Remove gcc/c-parse.gperf.
|
||||
|
||||
2000-08-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>,
|
||||
Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* gcc_update: Execute touch_files_reexec even if `cvs update`
|
||||
failed.
|
||||
|
||||
2000-08-09 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* test_summary: AWK breaks with filenames containing `='.
|
||||
|
||||
Sun Jul 16 12:04:33 2000 Mark P Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_build: New script.
|
||||
|
||||
2000-07-13 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_update (files_and_dependencies): Remove generated YACC files.
|
||||
|
||||
2000-07-12 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* gcc_update (files_and_dependencies): Remove generated YACC files.
|
||||
|
||||
2000-06-04 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* newcvsroot: Handle filenames that contain spaces.
|
||||
|
||||
2000-06-03 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* test_summary: In generated script, use cat <<'EOF' not cat <<\EOF.
|
||||
Elide --with-gcc-version-trigger and --norecursion from
|
||||
configure flags. Remove code to report status of haifa scheduler.
|
||||
|
||||
2000-05-18 Alexandre Oliva <aoliva@cygnus.com>
|
||||
|
||||
* gcc_update (self): Set to `$0'.
|
||||
(touch_files_reexec): Use `$self' instead of `$0'.
|
||||
|
||||
2000-05-12 Alexandre Oliva <aoliva@cygnus.com>
|
||||
|
||||
* gcc_update (touch_files_reexec): New function, run after the
|
||||
tree is modified.
|
||||
|
||||
2000-05-08 Richard Hendeson <rth@cygnus.com>
|
||||
|
||||
* gcc_update: Remove references to inclhack.tpl.
|
||||
|
||||
2000-04-28 Jason Merrill <jason@casey.cygnus.com>
|
||||
|
||||
* index-prop: Use a single pattern. Also support *** cdiffs.
|
||||
|
||||
2000-04-28 Pavel Roskin <pavel_roskin@geocities.com>
|
||||
|
||||
* index-prop: Don't change /dev/null.
|
||||
|
||||
2000-04-27 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gcc_update: Refer to GCC and gcc_update instead of egcs and
|
||||
egcs_update.
|
||||
|
||||
2000-04-26 Jonathan Larmour <jlarmour@redhat.co.uk>
|
||||
|
||||
* index-prop: Fix occasional problem when using cvs diff -p.
|
||||
|
||||
2000-04-18 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc_update: Remove references to cexp.c/cexp.y.
|
||||
|
||||
1999-12-18 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* newcvsroot: Add check on the number of command-line arguments.
|
||||
Add usage.
|
||||
|
||||
Sun Nov 28 00:41:44 1999 William Bader (william@nscs.fast.net)
|
||||
|
||||
* gcc_update: Allow patches compressed by bzip2.
|
||||
|
||||
1999-10-11 Martin v. Löwis <loewis@informatik.hu-berlin.de>
|
||||
|
||||
* newcvsroot: New file.
|
||||
|
||||
1999-09-11 Craig Burley <craig@jcb-sc.com>
|
||||
|
||||
* convert_to_f2c, convert_to_g2c, download_f2c: New file.
|
||||
|
||||
1999-08-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* gcc_update: New file.
|
||||
* egcs_update: Renamed to gcc_update.
|
||||
|
||||
1999-08-09 Robert Lipe <robertlipe@usa.net>
|
||||
|
||||
* test_summary: Quote curly braces in 1999-07-03 change.
|
||||
|
||||
1999-07-28 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* egcs_update (files_and_dependencies): Fixed typo in
|
||||
gcc/cstamp-h.in. Added gcc/config.in.
|
||||
|
||||
1999-07-27 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* egcs_update (files_and_dependencies): New function, with
|
||||
complete list of files to be updated, as well as their
|
||||
dependencies.
|
||||
(touch_files): Check the timestamp of each generated file against
|
||||
its dependencies'.
|
||||
(main): New flags --touch, --list and --help. Remove the
|
||||
pre-update step.
|
||||
|
||||
1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: Replace egcs with gcc. Update e-mail address.
|
||||
|
||||
1999-07-05 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
Jerry Quinn <jquinn@nortelnetworks.com>
|
||||
|
||||
* egcs_update (touch_files, apply_patch): New functions.
|
||||
Use them. New command-line option --patch. Split test of local
|
||||
tree into two parts. Add comments.
|
||||
|
||||
1999-07-03 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: If Target is `unix{*}', append the Target variants
|
||||
to Host.
|
||||
|
||||
1999-06-12 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: Set default mail-address and version for egcs
|
||||
instead of relying on unpredictable pathnames.
|
||||
Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||
|
||||
Fri Apr 2 16:09:02 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* fixinc/*: Delete obsolete files.
|
||||
|
||||
1999-02-04 Robert Lipe <robertlipe@usa.net>
|
||||
|
||||
* egcs_update: Test return values of 'cvs update'. Propogate
|
||||
to caller as exit values.
|
||||
|
||||
1999-01-25 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Use "if" instead of "&&". Touch generated files
|
||||
only after the corresponding *.y files.
|
||||
|
||||
1999-01-19 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Do not use xargs, but a backquote construct.
|
||||
|
||||
1999-01-07 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (version): Remove carriage return that gawk inserts
|
||||
in the version string for some reason.
|
||||
|
||||
1998-11-30 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Only touch files that already exist.
|
||||
|
||||
1998-11-29 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (EOF): Remove double backslash.
|
||||
Reported by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
|
||||
|
||||
1998-11-28 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (address): Set to egcs-testresults mailing list.
|
||||
|
||||
1998-11-27 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (address): Added Marc Lehmann's testsuite-results
|
||||
to the default e-mail address.
|
||||
|
||||
1998-11-25 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary (-p, prepend_logs): Add these before the summary.
|
||||
(Compiler, Platform): Print these just before configflags.
|
||||
|
||||
Sat Oct 31 10:53:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* warn_summary (longLineFilter): New shell function to encapsulate
|
||||
this functionality. It is off by default, only active if -llf
|
||||
flag is specified.
|
||||
(subdirectoryFilter): Fix bug in filtering which made some
|
||||
subdirectory warnings erroneously appear in the toplevel set.
|
||||
(stageNfilter): Renamed from `stageNwarns'. Updated to collect
|
||||
warnings from stage1 as well as stage0, which means warnings from
|
||||
outside the bootstrap directory. Eg, the libraries, etc.
|
||||
(warningFilter): New shell function to encapsulate this
|
||||
functionality.
|
||||
(keywordFilter): New shell function to encapsulate this
|
||||
functionality.
|
||||
|
||||
Store data in a temp file rather than calculating it 3x. Arrange
|
||||
to remove it on exit and signals.
|
||||
|
||||
Add -pass/-wpass flags to do "pass through" (i.e. manual
|
||||
inspection) of bootstrap output from a particular stageN as well
|
||||
as language subdirs.
|
||||
|
||||
Add better comments/documentation.
|
||||
|
||||
Sat Oct 31 16:39:31 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Add comment about keeping the FAQ synchronized.
|
||||
|
||||
Fri Oct 30 00:39:27 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs_update: Do touch java/parse.c and java/parse-scan.c. They're
|
||||
in the repo again.
|
||||
|
||||
Fri Oct 16 07:35:00 1998 Bruce Korb <korb@datadesign.com>
|
||||
|
||||
* egcs_update: Added gcc/fixinc/* generated files to touch list.
|
||||
|
||||
Tue Oct 13 23:28:33 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs_update: Remove gcc/java/parse.c from list of files to
|
||||
touch.
|
||||
|
||||
Wed Oct 7 13:00:40 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gperf-2.7-19981006.pat: New file, patch for egcs-local gperf.
|
||||
|
||||
Mon Oct 5 14:19:48 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* warn_summary (subdirectoryFilter): New shell function to
|
||||
optionally filter in/out gcc subdirectories when summarizing
|
||||
warnings. Add new flags to support subdirectory filtering.
|
||||
|
||||
Also, ensure the bootstrap stage is a number. Add some more C
|
||||
keywords that are preserved in the "warning type" summary and
|
||||
tighten up the "arg ???" regexp.
|
||||
|
||||
Tue Sep 22 07:30 Bruce Korb <korb@datadesign.com>
|
||||
|
||||
* fixinc/inclhack.def: Not all C++ comments in C headers
|
||||
were treated alike. They are now. Also fixed syntax
|
||||
of sed expression in "systypes" fix.
|
||||
|
||||
* fixinc/inclhack.def: Removed SVR4.2-ism from shell invocation
|
||||
|
||||
* egcs_update: Added fixinc/* generated files to touch list.
|
||||
|
||||
Wed Sep 16 16:06:51 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* egcs_update: Additionally touch gcc/java/parse.[ch].
|
||||
|
||||
Thu Sep 9 16:48 Bruce Korb <korb@datadesign.com>
|
||||
|
||||
* fixinc/inclhack.def: Added two files required by
|
||||
SCO's Open Server 5's avoid_bool fix.
|
||||
Regenerated fixinc.x and inclhack.sh to incorporate
|
||||
the update.
|
||||
|
||||
Thu Sep 3 10:11:32 1998 Robert Lipe <robertl@dgii.com>
|
||||
|
||||
* egcs_update: Do the pass 1 CVS update only for files that
|
||||
may reasonably be under CVS control.
|
||||
|
||||
1998-08-14 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_installed: New script for testing already-installed
|
||||
gcc/g++/g77.
|
||||
|
||||
Wed Aug 12 19:59:36 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: Assigned copyright to FSF.
|
||||
|
||||
Tue Aug 11 17:55:53 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* egcs_update: New switch --nostdflags and documentation
|
||||
enhancements.
|
||||
|
||||
Tue Aug 11 17:33:19 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* egcs_update: New script.
|
||||
|
||||
1998-08-05 Bruce Korb <korbb@datadesign.com>
|
||||
|
||||
* fixinc/Makefile
|
||||
Added define for target machine so machine-specific tests
|
||||
can be selected for or against.
|
||||
|
||||
* fixinc/fixincl.c
|
||||
Added an array of string pointers to machines to select
|
||||
or avoid, depending on a FD_MACH_IFNOT bit flag.
|
||||
Used a shell script to match the defined TARGET_MACHINE
|
||||
with any of the given match patterns.
|
||||
|
||||
* fixinc/fixincl.tpl
|
||||
Generate the array of strings and bit flag, as needed,
|
||||
depending on "mach" and "not_machine" attributes for a fix.
|
||||
|
||||
* fixinc/mkfixinc.sh
|
||||
Invoke the make with TARGET assigned the value of the
|
||||
machine name argument.
|
||||
|
||||
Mon Jul 27 22:08:12 1998 Mike Stump (mrs@wrs.com)
|
||||
|
||||
* compare_tests: New script.
|
||||
|
||||
1998-07-28 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: Assigned copyright to FSF.
|
||||
|
||||
Mon Jul 27 20:33:02 1998 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* test_summary: Corrected script name in comments providing
|
||||
documentation. Added linebreaks for lines with > 80 characters.
|
||||
|
||||
Fri Jun 19 02:36:59 1998 Alexandre Oliva <oliva@dcc.unicamp.br>
|
||||
|
||||
* test_summary: New switch, -i, and environment variable,
|
||||
append_logs, for including files in the report.
|
||||
|
||||
1998-06-01 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* warn_summary: Update to Kaveh's latest version allowing to
|
||||
specify the last stage built.
|
||||
|
||||
1998-05-29 Bruce Korb <korbb@datadesign.com>
|
||||
|
||||
* fixinc/mkfixinc.sh
|
||||
Changes to make it easier to invoke on platforms that
|
||||
normally do not invoke fixincludes.
|
||||
|
||||
* fixinc/inclhack.def
|
||||
Applied fixes from egcs/gcc/fixincludes from the past several
|
||||
months.
|
||||
|
||||
1998-05-28 Bruce Korb <korbb@datadesign.com>
|
||||
|
||||
* fixinc/*: Updated most everything for a first real
|
||||
try at getting "fast_fixincludes" working.
|
||||
|
||||
1998-05-28 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* index-prop: New file.
|
||||
|
||||
Sat May 23 23:38:49 1998 Matthias Klose <doko@cs.tu-berlin.de>
|
||||
|
||||
* test_summary: find good awk (copied from warn_summary).
|
||||
|
||||
Sat May 23 23:38:33 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* test_summary, warn_summary: New files
|
146
contrib/gcc/contrib/analyze_brprob
Executable file
146
contrib/gcc/contrib/analyze_brprob
Executable file
@ -0,0 +1,146 @@
|
||||
#!/usr/bin/awk -f
|
||||
# Script to analyze experimental results of our branch prediction heuristics
|
||||
# Contributed by Jan Hubicka, SuSE Inc.
|
||||
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU CC.
|
||||
#
|
||||
# GNU CC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU CC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU CC; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
#
|
||||
# This script is used to calculate two basic properties of the branch prediction
|
||||
# heuristics - coverage and hitrate. Coverage is number of executions of a given
|
||||
# branch matched by the heuristics and hitrate is probability that once branch is
|
||||
# predicted as taken it is really taken.
|
||||
#
|
||||
# These values are useful to determine the quality of given heuristics. Hitrate
|
||||
# may be directly used in predict.c.
|
||||
#
|
||||
# Usage:
|
||||
# Step 1: Compile and profile your program. You need to use -fprofile-arcs
|
||||
# flag to get the profiles
|
||||
# Step 2: Generate log files. The information about given heuristics are
|
||||
# saved into *.life dumps. You need to pass the -df switch to the compiler as well
|
||||
# as -fbranch-probabilities to get the results of profiling noted in the dumps.
|
||||
# Ensure that there are no "Arc profiling: some edge counts were bad." warnings.
|
||||
# Step 3: Run this script to concatenate all *.life files:
|
||||
# analyze_brprob `find . -name *.life`
|
||||
# the information is collected and print once all files are parsed. This
|
||||
# may take a while.
|
||||
# Note that the script does use bc to perform long arithmetic.
|
||||
# Step 4: Read the results. Basically the following table is printed:
|
||||
# (this is just an example from a very early stage of branch prediction pass
|
||||
# development, so please don't take these numbers seriously)
|
||||
#
|
||||
#HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL)
|
||||
#opcode 2889 83.7% 94.96%/ 97.62% 7516383 75.3%
|
||||
#pointer 246 7.1% 99.69%/ 99.86% 118791 1.2%
|
||||
#loop header 449 13.0% 98.32%/ 99.07% 43553 0.4%
|
||||
#first match 3450 100.0% 89.92%/ 97.27% 9979782 100.0%
|
||||
#loop exit 924 26.8% 88.95%/ 95.58% 9026266 90.4%
|
||||
#error return 150 4.3% 64.48%/ 86.81% 453542 4.5%
|
||||
#call 803 23.3% 51.66%/ 98.61% 3614037 36.2%
|
||||
#loop branch 51 1.5% 99.26%/ 99.27% 26854 0.3%
|
||||
#noreturn call 951 27.6% 100.00%/100.00% 1759809 17.6%
|
||||
#
|
||||
# The heuristic called "first match" is a heuristic used by GCC branch
|
||||
# prediction pass and it predicts 89.92% branches correctly.
|
||||
#
|
||||
# The quality of heuristics can be rated using both, coverage and hitrate
|
||||
# parameters. For example "loop branch" heuristics (predicting loopback edge
|
||||
# as taken) have both very high hitrate and coverage, so it is very useful.
|
||||
# On the other hand, "exit block" heuristics (predicting exit edges as not
|
||||
# taken) have good hitrate, but poor coverage, so only 3 branches have been
|
||||
# predicted. The "loop header" heuristic has problems, since it tends to
|
||||
# misspredict.
|
||||
#
|
||||
# The implementation of this script is somewhat brute force. My awk skills
|
||||
# are limited.
|
||||
|
||||
function longeval(e)
|
||||
{
|
||||
e = "echo \"scale = 2 ;"e"\" | bc"
|
||||
e | getline res
|
||||
close (e)
|
||||
return res
|
||||
}
|
||||
|
||||
BEGIN {nnames = 0}
|
||||
|
||||
/^ .* heuristics: .*.$/ {
|
||||
name=$0
|
||||
sub (/^ /,"",name)
|
||||
sub (/ heuristics: .*.$/,"",name)
|
||||
if (!(name in branches))
|
||||
{
|
||||
names[nnames] = name
|
||||
branches[name]=0
|
||||
counts[name]=0
|
||||
hits[name]=0
|
||||
phits[name]=0
|
||||
nnames++
|
||||
}
|
||||
branches[name]+=1
|
||||
}
|
||||
|
||||
/^ .* heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/ {
|
||||
name=$0
|
||||
sub (/^ /,"",name)
|
||||
sub (/ heuristics: .*. exec [0-9]* hit [0-9]* (.*.)$/,"",name)
|
||||
pred=$0
|
||||
sub (/^ .* heuristics: /,"",pred)
|
||||
sub (/. exec [0-9]* hit [0-9]* (.*.)$/,"",pred)
|
||||
count=$0
|
||||
sub (/^ .* heuristics: .*. exec /,"",count)
|
||||
sub (/ hit [0-9]* (.*.)$/,"",count)
|
||||
hit=$0
|
||||
sub (/^ .* heuristics: .*. exec [0-9]* hit /,"",hit)
|
||||
sub (/ (.*.)$/,"",hit)
|
||||
|
||||
if (int(pred) < 50.0)
|
||||
{
|
||||
hit = count"-"hit;
|
||||
}
|
||||
counts[name]=counts[name] "+" count
|
||||
hits[name]=hits[name] "+" hit
|
||||
phits[name]=phits[name] "+(("hit")<"count"/2)*("count"-("hit"))+(("hit")>="count"/2)*("hit")"
|
||||
|
||||
#BC crashes on long strings. Irritating.
|
||||
if (length(counts[name]) > 2000)
|
||||
counts[name] = longeval(counts[name])
|
||||
if (length(hits[name]) > 2000)
|
||||
hits[name] = longeval(hits[name])
|
||||
if (length(phits[name]) > 2000)
|
||||
phits[name] = longeval(phits[name])
|
||||
}
|
||||
END {
|
||||
# Heuristics called combined predicts just everything.
|
||||
maxcounts = longeval(counts["combined"])
|
||||
maxbranches = branches["combined"]
|
||||
max = names["combined"]
|
||||
printf("HEURISTICS BRANCHES (REL) HITRATE COVERAGE (REL)\n")
|
||||
for (i = 0; i < nnames ; i++)
|
||||
{
|
||||
name = names[i]
|
||||
counts[name] = longeval(counts[name])
|
||||
printf ("%-27s %8i %5.1f%% %6s%%/%6s%% %12s %5.1f%%\n",
|
||||
name,
|
||||
branches[name], branches[name] * 100 / maxbranches,
|
||||
longeval("("hits[name]") * 100 /(" counts[name]"-0.00001)"),
|
||||
longeval("("phits[name]") * 100 /(" counts[name]"-0.00001)"),
|
||||
counts[name], longeval(counts[name]" * 100 / ("maxcounts"-0.00001)"))
|
||||
}
|
||||
}
|
98
contrib/gcc/contrib/compare_tests
Executable file
98
contrib/gcc/contrib/compare_tests
Executable file
@ -0,0 +1,98 @@
|
||||
#!/bin/sh
|
||||
# This script automatically test the given tool with the tool's test cases,
|
||||
# reporting anything of interest.
|
||||
|
||||
# exits with 1 if there is nothing of interest
|
||||
# exits with 0 if there is something interesting
|
||||
# exits with 2 if an error occurred
|
||||
|
||||
# Give two .sum files to compare them
|
||||
|
||||
# Written by Mike Stump <mrs@cygnus.com>
|
||||
|
||||
tmp1=/tmp/$tool-testing.$$a
|
||||
tmp2=/tmp/$tool-testing.$$b
|
||||
now_s=/tmp/$tool-testing.$$d
|
||||
before_s=/tmp/$tool-testing.$$e
|
||||
|
||||
if [ "$2" = "" ]; then
|
||||
echo "Usage: $0 previous current" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" >$tmp1
|
||||
sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" >$tmp2
|
||||
|
||||
before=$tmp1
|
||||
now=$tmp2
|
||||
|
||||
trap "rm -f $tmp1 $tmp2 $now_s $before_s" 0 1 2 3 5 9 13 15
|
||||
|
||||
sort +0.4 "$now" > "$now_s"
|
||||
sort +0.4 "$before" > "$before_s"
|
||||
|
||||
grep '^FAIL' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^PASS' "$before_s" | sed 's/^....: //' | comm -12 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "Tests that now fail, but worked before:"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
||||
|
||||
grep '^PASS' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^FAIL' "$before_s" | sed 's/^....: //' | comm -12 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "Tests that now work, but didn't before:"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
||||
|
||||
grep '^FAIL' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^....: //' | comm -23 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "New tests that FAIL:"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
||||
|
||||
grep '^PASS' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^[PF]A[SI][SL]' "$before_s" | sed 's/^....: //' | comm -23 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "New tests that PASS:"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
||||
|
||||
grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^PASS' "$before_s" | sed 's/^....: //' | comm -13 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "Old tests that passed, that have disappeared: (Eeek!)"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
||||
|
||||
grep '^[PF]A[SI][SL]' "$now_s" | sed 's/^....: //' >$tmp1
|
||||
grep '^FAIL' "$before_s" | sed 's/^....: //' | comm -13 $tmp1 - >$tmp2
|
||||
|
||||
grep -s . $tmp2 >/dev/null
|
||||
if [ $? = 0 ]; then
|
||||
echo "Old tests that failed, that have disappeared: (Eeek!)"
|
||||
echo
|
||||
cat $tmp2
|
||||
echo
|
||||
fi
|
48
contrib/gcc/contrib/convert_to_f2c
Executable file
48
contrib/gcc/contrib/convert_to_f2c
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# convert_to_f2c [g2c-dir]
|
||||
#
|
||||
# Renames certain files in a g2c (libg2c) directory so they no longer have the
|
||||
# `.netlib' suffix, a la netlib's f2c distribution. If `g2c-dir' is not
|
||||
# specified, `g2c-YYYYMMDD' is the default, where YYYYMMDD is the current
|
||||
# date. The directory is renamed such that the first `g' becomes an `f',
|
||||
# usually `g2c-YYYYMMDD' -> `f2c-YYYYMMDD'.
|
||||
#
|
||||
# (C) 1999 Free Software Foundation
|
||||
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
|
||||
#
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
set -e
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
dir=g2c-`date +%Y%m%d`
|
||||
else
|
||||
dir=$1
|
||||
fi
|
||||
|
||||
newdir=`echo $dir | sed -e "s:g:f:"`
|
||||
|
||||
cd $dir
|
||||
|
||||
set +e
|
||||
|
||||
mv -i changes.netlib changes
|
||||
mv -i disclaimer.netlib disclaimer
|
||||
mv -i g2c.hin f2c.h
|
||||
mv -i permission.netlib permission
|
||||
mv -i readme.netlib readme
|
||||
cd libF77
|
||||
mv -i README.netlib README
|
||||
mv -i makefile.netlib makefile
|
||||
cd ../libI77
|
||||
mv -i README.netlib README
|
||||
mv -i makefile.netlib makefile
|
||||
cd ..
|
||||
|
||||
cd ..
|
||||
|
||||
mv -iv $dir $newdir
|
48
contrib/gcc/contrib/convert_to_g2c
Executable file
48
contrib/gcc/contrib/convert_to_g2c
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# convert_to_g2c [f2c-dir]
|
||||
#
|
||||
# Renames certain files in a netlib f2c directory so they have the `.netlib'
|
||||
# suffix, a la g77's version of f2c (libg2c). If `f2c-dir' is not specified,
|
||||
# `f2c-YYYYMMDD' is the default, where YYYYMMDD is the current date.
|
||||
# The directory is renamed such that the first `f' becomes a `g',
|
||||
# usually `f2c-YYYYMMDD' -> `g2c-YYYYMMDD'.
|
||||
#
|
||||
# (C) 1999 Free Software Foundation
|
||||
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
|
||||
#
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
set -e
|
||||
|
||||
if [ x$1 = x ]
|
||||
then
|
||||
dir=f2c-`date +%Y%m%d`
|
||||
else
|
||||
dir=$1
|
||||
fi
|
||||
|
||||
newdir=`echo $dir | sed -e "s:f:g:"`
|
||||
|
||||
cd $dir
|
||||
|
||||
set +e
|
||||
|
||||
mv -i changes changes.netlib
|
||||
mv -i disclaimer disclaimer.netlib
|
||||
mv -i f2c.h g2c.hin
|
||||
mv -i permission permission.netlib
|
||||
mv -i readme readme.netlib
|
||||
cd libF77
|
||||
mv -i README README.netlib
|
||||
mv -i makefile makefile.netlib
|
||||
cd ../libI77
|
||||
mv -i README README.netlib
|
||||
mv -i makefile makefile.netlib
|
||||
cd ..
|
||||
|
||||
cd ..
|
||||
|
||||
mv -iv $dir $newdir
|
77
contrib/gcc/contrib/download_f2c
Executable file
77
contrib/gcc/contrib/download_f2c
Executable file
@ -0,0 +1,77 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# download_f2c
|
||||
#
|
||||
# Unpacks a directory full of f2c stuff obtained from netlib, naming
|
||||
# the directory f2c-YYYYMMDD (YYYYMMDD being the current date),
|
||||
# leaving it in current working directory.
|
||||
#
|
||||
# This shell script downloads the tarball from netlib, unpacks everything,
|
||||
# and strips off the redundant files, leaving a bare-bones (but fully
|
||||
# reproducible) f2c source directory. (You must have yacc/bison to rebuild
|
||||
# gram.c, by the way.)
|
||||
#
|
||||
# (C) 1999 Free Software Foundation
|
||||
# Originally by James Craig Burley <craig@jcb-sc.com>, September 1999.
|
||||
#
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
#
|
||||
# FIXME: Replace WHOAMI with whatever is the canonical way to
|
||||
# obtain the user's email address these days.
|
||||
|
||||
dir=f2c-`date +%Y%m%d`
|
||||
if [ ! -d $dir ]
|
||||
then
|
||||
mkdir $dir
|
||||
fi
|
||||
cd $dir
|
||||
|
||||
echo Preparing $dir...
|
||||
|
||||
if [ ! -d tmp ]
|
||||
then
|
||||
mkdir tmp
|
||||
fi
|
||||
|
||||
if [ ! -f tmp/f2c.tar ]
|
||||
then
|
||||
cd tmp
|
||||
echo Downloading f2c.tar via ftp...
|
||||
ftp -n netlib.bell-labs.com <<EOF
|
||||
user ftp WHOAMI
|
||||
type binary
|
||||
cd netlib
|
||||
get f2c.tar
|
||||
quit
|
||||
EOF
|
||||
cd ..
|
||||
fi
|
||||
|
||||
echo Unpacking f2c.tar...
|
||||
|
||||
tar xf tmp/f2c.tar
|
||||
cd f2c
|
||||
find . -name "*.gz" -print | sed -e "s:^\(.*\).gz:rm -f \1.Z:g" | sh
|
||||
mv src libf77.gz libi77.gz f2c.1t.gz f2c.h.gz changes.gz disclaimer.gz readme.gz permission.gz ..
|
||||
cd ..
|
||||
rm -fr f2c
|
||||
gunzip *.gz
|
||||
(cd src; rm -f MD5 MD5.gz gram.c.gz .depend .depend.gz f2c.1.gz index.html index.html.gz; gunzip *.gz)
|
||||
sh libf77 > /dev/null && rm libf77
|
||||
rm -f libF77/xsum0.out libF77/libF77.xsum
|
||||
sh libi77 > /dev/null && rm libi77
|
||||
rm -f libI77/xsum0.out libI77/libI77.xsum
|
||||
rm -f src/xsum0.out
|
||||
touch src/xsum.out
|
||||
cmp f2c.h src/f2c.h && rm -fv src/f2c.h
|
||||
cmp src/readme src/README && rm -fv src/readme
|
||||
|
||||
echo Deleting f2c.tar...
|
||||
rm tmp/f2c.tar
|
||||
rmdir tmp
|
||||
|
||||
cd ..
|
||||
|
||||
echo Latest f2c now in $dir.
|
316
contrib/gcc/contrib/gcc_build
Executable file
316
contrib/gcc/contrib/gcc_build
Executable file
@ -0,0 +1,316 @@
|
||||
#! /bin/sh
|
||||
|
||||
########################################################################
|
||||
#
|
||||
# File: gcc_build
|
||||
# Author: Mark Mitchell
|
||||
# Date: 07/10/2000
|
||||
#
|
||||
# Contents:
|
||||
# Script to automatically download and build GCC.
|
||||
#
|
||||
# Copyright (c) 2000, 2001 Free Software Foundation.
|
||||
#
|
||||
# This file is part of GNU CC.
|
||||
#
|
||||
# GNU CC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU CC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU CC; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
########################################################################
|
||||
|
||||
########################################################################
|
||||
# Notes
|
||||
########################################################################
|
||||
|
||||
# If you are using password-based CVS, you must manually log in, and
|
||||
# not log out from, the CVS server before running this script.
|
||||
|
||||
# You can set the following variables in the environment. They
|
||||
# have no corresponding command-line options because they should
|
||||
# only be needed infrequently:
|
||||
#
|
||||
# MAKE The path to `make'.
|
||||
|
||||
########################################################################
|
||||
# Functions
|
||||
########################################################################
|
||||
|
||||
# Issue the error message given by $1 and exit with a non-zero
|
||||
# exit code.
|
||||
|
||||
error() {
|
||||
echo "gcc_build: error: $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Issue a usage message explaining how to use this script.
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
gcc_build [-c configure_options]
|
||||
[-d destination_directory]
|
||||
[-m make_boot_options]
|
||||
[-o objdir]
|
||||
[-u username]
|
||||
[-p protocol]
|
||||
[-t tarfile]
|
||||
[bootstrap]
|
||||
[build]
|
||||
[checkout]
|
||||
[configure]
|
||||
[export]
|
||||
[install]
|
||||
[test]
|
||||
[update]
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Change to the directory given by $1.
|
||||
|
||||
changedir() {
|
||||
cd $1 || \
|
||||
error "Could not change directory to $1"
|
||||
}
|
||||
|
||||
# Set up CVS environment variables
|
||||
|
||||
cvs_setup() {
|
||||
CVSROOT=":${CVS_PROTOCOL}:${CVS_USERNAME}@"
|
||||
CVSROOT="${CVSROOT}${CVS_SERVER}:${CVS_REPOSITORY}"
|
||||
export CVSROOT
|
||||
}
|
||||
|
||||
# Checkout a fresh copy of the GCC build tree.
|
||||
|
||||
checkout_gcc() {
|
||||
# Tell CVS where to find everything.
|
||||
cvs_setup
|
||||
|
||||
# If the destination already exists, don't risk destroying it.
|
||||
test -e ${DESTINATION} && \
|
||||
error "${DESTINATION} already exists"
|
||||
|
||||
# CVS doesn't allow an absolute path for the destination directory.
|
||||
DESTINATION_PARENT=`dirname ${DESTINATION}`
|
||||
test -d ${DESTINATION_PARENT} || \
|
||||
error "${DESTINATION_PARENT} is not a directory"
|
||||
changedir ${DESTINATION_PARENT}
|
||||
|
||||
# Checkout the tree
|
||||
cvs -z 9 co -d `basename ${DESTINATION}` gcc || \
|
||||
error "Could not check out GCC"
|
||||
}
|
||||
|
||||
# Update GCC.
|
||||
|
||||
update_gcc() {
|
||||
# Tell CVS where to find everything
|
||||
cvs_setup
|
||||
|
||||
# If the destination does not already exist, complain.
|
||||
test -d ${DESTINATION} || \
|
||||
error "{$DESTINATION} does not exist"
|
||||
# Enter the destination directory.
|
||||
changedir ${DESTINATION}
|
||||
|
||||
# Update the tree
|
||||
./contrib/gcc_update -d || \
|
||||
error "Could not update GCC"
|
||||
}
|
||||
|
||||
# Configure for a build of GCC.
|
||||
|
||||
configure_gcc() {
|
||||
# Go to the source directory.
|
||||
changedir ${DESTINATION}
|
||||
|
||||
# Remove the object directory.
|
||||
rm -rf ${OBJDIR}
|
||||
# Create it again.
|
||||
mkdir ${OBJDIR} || \
|
||||
error "Could not create ${OBJDIR}"
|
||||
# Enter it.
|
||||
changedir ${OBJDIR}
|
||||
|
||||
# Configure the tree.
|
||||
echo "Configuring: ${DESTINATION}/configure ${CONFIGURE_OPTIONS}"
|
||||
eval ${DESTINATION}/configure ${CONFIGURE_OPTIONS} || \
|
||||
error "Could not configure the compiler"
|
||||
}
|
||||
|
||||
# Bootstrap GCC. Assume configuration has already occurred.
|
||||
|
||||
bootstrap_gcc() {
|
||||
# Go to the source directory.
|
||||
changedir ${DESTINATION}
|
||||
# Go to the object directory.
|
||||
changedir ${OBJDIR}
|
||||
|
||||
# Bootstrap the compiler
|
||||
echo "Building: ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap"
|
||||
eval ${MAKE} ${MAKE_BOOTSTRAP_OPTIONS} bootstrap || \
|
||||
error "Could not bootstrap the compiler"
|
||||
}
|
||||
|
||||
# Test GCC.
|
||||
|
||||
test_gcc() {
|
||||
# Go to the source directory.
|
||||
changedir ${DESTINATION}
|
||||
# Go to the object directory.
|
||||
changedir ${OBJDIR}
|
||||
|
||||
echo "Running tests... This will take a while."
|
||||
${MAKE} -k check
|
||||
${DESTINATION}/contrib/test_summary
|
||||
}
|
||||
|
||||
# Export the GCC source tree.
|
||||
|
||||
export_gcc() {
|
||||
# Go to the source directory.
|
||||
changedir ${DESTINATION}
|
||||
# Go up one level.
|
||||
changedir ..
|
||||
# Build a tarball of the source directory.
|
||||
tar czf ${TARFILE} \
|
||||
--exclude=${OBJDIR} \
|
||||
--exclude=CVS \
|
||||
--exclude='.#*' \
|
||||
--exclude='*~' \
|
||||
`basename ${DESTINATION}`
|
||||
}
|
||||
|
||||
# Install GCC.
|
||||
|
||||
install_gcc() {
|
||||
# Go to the source directory.
|
||||
changedir ${DESTINATION}
|
||||
# Go to the object directory.
|
||||
changedir ${OBJDIR}
|
||||
|
||||
${MAKE} install || error "Installation failed"
|
||||
}
|
||||
|
||||
########################################################################
|
||||
# Initialization
|
||||
########################################################################
|
||||
|
||||
# The CVS server containing the GCC repository.
|
||||
CVS_SERVER="gcc.gnu.org"
|
||||
# The path to the repository on that server.
|
||||
CVS_REPOSITORY="/cvs/gcc"
|
||||
# The CVS protocol to use.
|
||||
CVS_PROTOCOL="pserver"
|
||||
# The username to use when connecting to the server.
|
||||
CVS_USERNAME="anoncvs"
|
||||
|
||||
# The directory where the checked out GCC will be placed.
|
||||
DESTINATION="${HOME}/dev/gcc"
|
||||
# The relative path from the top of the source tree to the
|
||||
# object directory.
|
||||
OBJDIR="objdir"
|
||||
|
||||
# The file where the tarred up sources will be placed.
|
||||
TARFILE="${HOME}/dev/gcc.tgz"
|
||||
|
||||
# Options to pass to configure.
|
||||
CONFIGURE_OPTIONS=
|
||||
# The `make' program.
|
||||
MAKE=${MAKE:-make}
|
||||
# Options to pass to make.
|
||||
MAKE_BOOTSTRAP_OPTIONS=
|
||||
|
||||
# Modes of operation
|
||||
BOOTSTRAP=0
|
||||
CHECKOUT=0
|
||||
CONFIGURE=0
|
||||
EXPORT=0
|
||||
INSTALL=0
|
||||
TEST=0
|
||||
UPDATE=0
|
||||
|
||||
########################################################################
|
||||
# Main Program
|
||||
########################################################################
|
||||
|
||||
# Parse the options.
|
||||
while getopts "c:d:m:o:p:t:u:" ARG; do
|
||||
case $ARG in
|
||||
c) CONFIGURE_OPTIONS="${OPTARG}";;
|
||||
d) DESTINATION="${OPTARG}";;
|
||||
m) MAKE_BOOTSTRAP_OPTIONS="${OPTARG}";;
|
||||
o) OBJDIR="${OPTARG}";;
|
||||
p) CVS_PROTOCOL="${OPTARG}";;
|
||||
t) CVS_TARGFILE="${OPTARG}";;
|
||||
u) CVS_USERNAME="${OPTARG}";;
|
||||
\?) usage;;
|
||||
esac
|
||||
done
|
||||
shift `expr ${OPTIND} - 1`
|
||||
|
||||
# Handle the major modes.
|
||||
while [ $# -ne 0 ]; do
|
||||
case $1 in
|
||||
bootstrap) BOOTSTRAP=1;;
|
||||
build) CONFIGURE=1; BOOTSTRAP=1;;
|
||||
checkout) CHECKOUT=1;;
|
||||
configure) CONFIGURE=1;;
|
||||
export) EXPORT=1;;
|
||||
install) INSTALL=1;;
|
||||
test) TEST=1;;
|
||||
update) UPDATE=1;;
|
||||
*) usage;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Check the arguments for sanity.
|
||||
if [ ${CHECKOUT} -ne 0 ] && [ ${UPDATE} -ne 0 ]; then
|
||||
error "Cannot checkout and update simultaneously"
|
||||
fi
|
||||
|
||||
# Checkout the tree.
|
||||
if [ ${CHECKOUT} -ne 0 ]; then
|
||||
checkout_gcc
|
||||
elif [ ${UPDATE} -ne 0 ]; then
|
||||
update_gcc
|
||||
fi
|
||||
|
||||
# Configure to build the tree.
|
||||
if [ ${CONFIGURE} -ne 0 ]; then
|
||||
configure_gcc
|
||||
fi
|
||||
|
||||
# Bootstrap the compiler.
|
||||
if [ ${BOOTSTRAP} -ne 0 ]; then
|
||||
bootstrap_gcc
|
||||
fi
|
||||
|
||||
# Test the compiler
|
||||
if [ ${TEST} -ne 0 ]; then
|
||||
test_gcc
|
||||
fi
|
||||
|
||||
# Install the compiler.
|
||||
if [ ${INSTALL} -ne 0 ]; then
|
||||
install_gcc
|
||||
fi
|
||||
|
||||
# Export the sources
|
||||
if [ ${EXPORT} -ne 0 ]; then
|
||||
export_gcc
|
||||
fi
|
226
contrib/gcc/contrib/gcc_update
Executable file
226
contrib/gcc/contrib/gcc_update
Executable file
@ -0,0 +1,226 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Update a local CVS tree from the GCC repository, with an emphasis
|
||||
# on treating generated files correctly, so that autoconf, gperf et
|
||||
# al are not required for the ``end'' user.
|
||||
#
|
||||
# By default all command-line options are passed to `cvs update` in
|
||||
# addition to $UPDATE_OPTIONS (defined below). If the first parameter
|
||||
# reads --nostdflags, $UPDATE_OPTIONS as well as this parameter itself
|
||||
# are omitted.
|
||||
#
|
||||
# If the first parameter reads --patch, the second parameter is considered
|
||||
# a patch file.
|
||||
#
|
||||
# If the first parameter is --touch, no cvs operation will be performed,
|
||||
# only generated files that appear to be out of date in the local tree
|
||||
# will be touched.
|
||||
#
|
||||
# If the first parameter is --list, a list of the generated files and
|
||||
# their dependencies will be printed; --help prints this message.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# contrib/gcc_update -r gcc_latest_snapshot
|
||||
# contrib/gcc_update -A
|
||||
# contrib/gcc_update --nostdflags -P -r gcc-2_95-branch gcc/testsuite
|
||||
# contrib/gcc_update --patch some-patch
|
||||
# contrib/gcc_update --touch
|
||||
# contrib/gcc_update --list
|
||||
#
|
||||
#
|
||||
# (C) 1998, 1999, 2000, 2001 Free Software Foundation
|
||||
# Originally by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>, August 1998.
|
||||
#
|
||||
# This script is Free Software, and it can be copied, distributed and
|
||||
# modified as defined in the GNU General Public License. A copy of
|
||||
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
|
||||
# Default options used when updating via CVS.
|
||||
UPDATE_OPTIONS=-Pd
|
||||
# Use -P to prune empty directories.
|
||||
# Use -d to create any directories that exist in the repository but not
|
||||
# locally.
|
||||
# Use -A to reset any sticky tags, dates, or `-k' options.
|
||||
|
||||
######## Anything below shouldn't be changed by regular users.
|
||||
|
||||
# Arrange for the value of $0 to be available for functions
|
||||
self=$0
|
||||
|
||||
# This function prints a list of all generated files, along with their
|
||||
# dependencies. Note that only one target is supported per line: the
|
||||
# colon is stripped from the output.
|
||||
files_and_dependencies () {
|
||||
sed -e 's/ *#.*//' -e '/^$/d' -e 's/://' <<\EOF
|
||||
# All automake dependencies within texinfo
|
||||
# In fact, not all, since we do not care about sub-directories that
|
||||
# we do not build. In particular, *.po and *.gmo are not touched.
|
||||
texinfo/aclocal.m4: texinfo/configure.in texinfo/acinclude.m4
|
||||
texinfo/Makefile.in: texinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
|
||||
texinfo/configure: texinfo/configure.in texinfo/aclocal.m4
|
||||
texinfo/stamp-h.in: texinfo/configure.in texinfo/aclocal.m4 texinfo/acconfig.h
|
||||
texinfo/lib/Makefile.in: texinfo/lib/Makefile.am texinfo/configure.in texinfo/aclocal.m4
|
||||
texinfo/makeinfo/Makefile.in: texinfo/makeinfo/Makefile.am texinfo/configure.in texinfo/aclocal.m4
|
||||
texinfo/util/Makefile.in: texinfo/util/Makefile.am texinfo/configure.in texinfo/aclocal.m4
|
||||
# Now, proceed to gcc automatically generated files
|
||||
gcc/configure: gcc/configure.in
|
||||
gcc/cstamp-h.in: gcc/configure.in gcc/acconfig.h
|
||||
gcc/config.in: gcc/cstamp-h.in
|
||||
gcc/fixinc/fixincl.x: gcc/fixinc/fixincl.tpl gcc/fixinc/inclhack.def
|
||||
# And then, language-specific files
|
||||
gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def
|
||||
gcc/ada/treeprs.ads: gcc/ada/treeprs.adt gcc/ada/sinfo.ads gcc/ada/xtreeprs.adb
|
||||
gcc/ada/einfo.h: gcc/ada/einfo.ads gcc/ada/einfo.adb gcc/ada/xeinfo.adb
|
||||
gcc/ada/sinfo.h: gcc/ada/sinfo.ads gcc/ada/xsinfo.adb
|
||||
gcc/ada/nmake.adb: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
|
||||
gcc/ada/nmake.ads: gcc/ada/sinfo.ads gcc/ada/nmake.adt gcc/ada/xnmake.adb
|
||||
# And libraries, at last
|
||||
libchill/configure: libchill/configure.in
|
||||
libf2c/configure: libf2c/configure.in
|
||||
libf2c/libF77/configure: libf2c/libF77/configure.in
|
||||
libf2c/libI77/configure: libf2c/libI77/configure.in
|
||||
libf2c/libI77/stamp-h.in: libf2c/libI77/configure.in
|
||||
libf2c/libI77/config.h.in: libf2c/libI77/configure.in libf2c/libI77/stamp-h.in
|
||||
libf2c/libU77/configure: libf2c/libU77/configure.in
|
||||
libf2c/libU77/stamp-h.in: libf2c/libU77/configure.in libf2c/libU77/acconfig.h
|
||||
libobjc/configure: libobjc/configure.in
|
||||
# fastjar
|
||||
fastjar/aclocal.m4: fastjar/configure.in
|
||||
fastjar/Makefile.in: fastjar/Makefile.am fastjar/configure.in fastjar/aclocal.m4
|
||||
fastjar/configure: fastjar/configure.in fastjar/aclocal.m4
|
||||
fastjar/stamp-h.in: fastjar/configure.in fastjar/aclocal.m4
|
||||
boehm-gc/aclocal.m4: boehm-gc/configure.in boehm-gc/acinclude.m4
|
||||
boehm-gc/Makefile.in: boehm-gc/Makefile.am boehm-gc/configure.in boehm-gc/aclocal.m4
|
||||
boehm-gc/configure: boehm-gc/configure.in boehm-gc/aclocal.m4
|
||||
libjava/aclocal.m4: libjava/configure.in libjava/acinclude.m4
|
||||
libjava/Makefile.in: libjava/Makefile.am libjava/configure.in libjava/aclocal.m4
|
||||
libjava/configure: libjava/configure.in libjava/aclocal.m4
|
||||
libjava/libltdl/aclocal.m4: libjava/libltdl/configure.in libjava/libltdl/acinclude.m4
|
||||
libjava/libltdl/Makefile.in: libjava/libltdl/Makefile.am libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
|
||||
libjava/libltdl/configure: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4
|
||||
libjava/libltdl/stamp-h.in: libjava/libltdl/configure.in libjava/libltdl/aclocal.m4 libjava/libltdl/acconfig.h
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
# This function touches generated files such that the ``end'' user does
|
||||
# not have to rebuild them.
|
||||
touch_files () {
|
||||
rm -f Makefile.$$
|
||||
echo 'all: \' > Makefile.$$
|
||||
files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
|
||||
echo '; @true' >> Makefile.$$
|
||||
files_and_dependencies | sed 's, ,: ,' >> Makefile.$$
|
||||
files_and_dependencies | sed 's, .*, \\,' >> Makefile.$$
|
||||
echo ':' >> Makefile.$$
|
||||
echo ' @for f in $?; do test -f $$f || exit 0; done; \' >> Makefile.$$
|
||||
echo ' echo Touching $@...; \' >> Makefile.$$
|
||||
echo ' echo Touching $@... 1>&2; \' >> Makefile.$$
|
||||
echo ' touch $@' >> Makefile.$$
|
||||
files_and_dependencies | sed 's,[^ ]* ,,;s,$, :,' >> Makefile.$$
|
||||
while ${MAKE-make} -f Makefile.$$ all | grep . > /dev/null; do
|
||||
sleep 1
|
||||
done 2>&1
|
||||
rm -f Makefile.$$
|
||||
}
|
||||
|
||||
|
||||
# Whenever we update the tree or install a patch, we may be modifying
|
||||
# this script. By re-execing it, we ensure that the appropriate
|
||||
# dependencies and rules will be used.
|
||||
touch_files_reexec () {
|
||||
echo "Adjusting file timestamps"
|
||||
exec ${CONFIG_SHELL-/bin/sh} $self --touch
|
||||
}
|
||||
|
||||
# This functions applies a patch to an existing tree.
|
||||
apply_patch () {
|
||||
if [ -f $1 ]; then
|
||||
echo "Applying patch file $1"
|
||||
case "$1" in
|
||||
*gz)
|
||||
gzip -d -c $1 | patch -p1 ;;
|
||||
*bz2)
|
||||
bzip2 -d -c $1 | patch -p1 ;;
|
||||
*)
|
||||
cat $1 | patch -p1 ;;
|
||||
esac
|
||||
fi
|
||||
touch_files_reexec
|
||||
}
|
||||
|
||||
# Check whether this indeed looks like a local tree.
|
||||
if [ ! -f gcc/version.c ]; then
|
||||
echo "This does not seem to be a GCC tree!"
|
||||
exit
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
# First of all, check whether we are going to process a patch.
|
||||
--patch)
|
||||
if test "$#" != 2; then
|
||||
echo "$1" expects only one argument >&2
|
||||
exit 1
|
||||
fi
|
||||
apply_patch "${2}"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
--touch)
|
||||
if test "$#" != 1; then
|
||||
echo "$1" does not expect any argument >&2
|
||||
exit 1
|
||||
fi
|
||||
touch_files
|
||||
exit $?
|
||||
;;
|
||||
|
||||
--list)
|
||||
if test "$#" != 1; then
|
||||
echo "$1" does not expect any argument >&2
|
||||
exit 1
|
||||
fi
|
||||
files_and_dependencies | sed 's/ /: /'
|
||||
exit $?
|
||||
;;
|
||||
|
||||
--help)
|
||||
sed -e '1,2d' -e '/^UPDATE_OPTIONS=/{i\
|
||||
\
|
||||
|
||||
p
|
||||
}' \
|
||||
-e '/^$/,$d' -e 's/#//' -e 's/^ //' < $0
|
||||
exit $?
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Check whether this indeed looks like a local CVS tree.
|
||||
if [ ! -d CVS ]; then
|
||||
echo "This does not seem to be a GCC CVS tree!"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check command-line options
|
||||
if [ x"${1}"x = x"--nostdflags"x ]; then
|
||||
shift
|
||||
else
|
||||
set -- $UPDATE_OPTIONS ${1+"$@"}
|
||||
fi
|
||||
|
||||
echo "Updating CVS tree"
|
||||
cvs -q update ${1+"$@"}
|
||||
if [ $? -ne 0 ]; then
|
||||
(touch_files_reexec)
|
||||
echo "CVS update of full tree failed." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
{
|
||||
date
|
||||
TZ=UTC date
|
||||
} > LAST_UPDATED
|
||||
touch_files_reexec
|
84
contrib/gcc/contrib/gccbug.el
Normal file
84
contrib/gcc/contrib/gccbug.el
Normal file
@ -0,0 +1,84 @@
|
||||
;;; gccbug.el --- forward bug reports to gnats
|
||||
;; (C) 2000 Free Software Foundation
|
||||
;; Written by Martin v. Löwis
|
||||
;; Usage:
|
||||
;; In rmail, bind a key to rmail-gccbug-reply, e.g.
|
||||
;; (require 'rmail)
|
||||
;; (require 'gccbug)
|
||||
;; (define-key rmail-mode-map "R" 'rmail-gccbug-reply)
|
||||
;; Then, when reviewing a report, type R to create a gnats-formatted
|
||||
;; message.
|
||||
|
||||
(provide 'gccbug)
|
||||
|
||||
(defun gccbug-reply ()
|
||||
(interactive)
|
||||
(let ((orig-yank-prefix mail-yank-prefix))
|
||||
(insert ">Submitter-Id: net\n")
|
||||
(insert ">Originator: \n")
|
||||
(insert ">Confidential: no\n")
|
||||
(insert ">Synopsis: ")
|
||||
(save-excursion
|
||||
(mail-subject)
|
||||
(let ((stop (point)))
|
||||
(re-search-backward "Re: ")
|
||||
(copy-region-as-kill (match-end 0) stop)))
|
||||
(yank)
|
||||
(insert "\n")
|
||||
(insert ">Severity: serious\n")
|
||||
(insert ">Priority: medium\n")
|
||||
(insert ">Category: \n")
|
||||
(insert ">Class: \n")
|
||||
;(insert ">State: analyzed\n")
|
||||
(insert ">Release: 2.95.2\n")
|
||||
(insert ">Environment:\n")
|
||||
(insert ">Description:\n")
|
||||
(set 'mail-yank-prefix nil)
|
||||
(set 'mail-yank-ignored-headers
|
||||
"^via:\\|^mail-from:\\|^origin:\\|^status:\\|^remailed\\|^received:\\|^summary-line:\\|^to:\\|^subject:\\|^in-reply-to:\\|^return-path:\\|^X-.*:\\|^User-Agent:\\|^MIME-Version:\\|^Content-.*:\\|^List-.*:\\|C[Cc]:\\|^Precedence:\\|^Sender:\\|^Mailing-List:\\|^Delivered-To:\\|^>From")
|
||||
(mail-yank-original t)
|
||||
(set 'mail-yank-prefix orig-yank-prefix)
|
||||
; Copy From: field to Originator:
|
||||
(re-search-backward "From: ")
|
||||
(let ((beg (match-end 0)))
|
||||
(end-of-line)
|
||||
(kill-region beg (point)))
|
||||
(re-search-backward ">Originator: ")
|
||||
(goto-char (match-end 0))
|
||||
(yank)
|
||||
; Kill From: line
|
||||
(re-search-forward "From:")
|
||||
(beginning-of-line)
|
||||
(kill-line 1)
|
||||
; Replace Message-ID: with Original-Message-ID
|
||||
(beginning-of-buffer)
|
||||
(re-search-forward "Message-ID: .*")
|
||||
(replace-match "Original-\\&")
|
||||
; Replace To: line, adding recipient to Notify list
|
||||
(mail-to)
|
||||
(re-search-backward "To: ")
|
||||
(replace-match "To: gcc-gnats@gcc.gnu.org\nX-GNATS-Notify: ")
|
||||
; add additional fields
|
||||
(end-of-buffer)
|
||||
(insert ">How-To-Repeat: \n>Fix: \n")
|
||||
; See whether an Organization: is present
|
||||
(let ((org (re-search-backward "Organization:.*" nil t)))
|
||||
(if org
|
||||
(progn
|
||||
(kill-region (point) (match-end 0))
|
||||
(re-search-backward ">Confidential")
|
||||
(insert ">")
|
||||
(yank)
|
||||
(insert "\n"))))
|
||||
; This kills CC: lines, but rmail-reply below won't create any
|
||||
; (mail-cc)
|
||||
; (beginning-of-line)
|
||||
; (kill-line 1)
|
||||
))
|
||||
|
||||
(defun rmail-gccbug-reply ()
|
||||
(interactive)
|
||||
(rmail-toggle-header 0)
|
||||
(rmail-reply t)
|
||||
(gccbug-reply))
|
||||
|
56
contrib/gcc/contrib/gennews
Executable file
56
contrib/gcc/contrib/gennews
Executable file
@ -0,0 +1,56 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Script to generate the NEWS file from online release notes.
|
||||
# Contributed by Joseph Myers <jsm28@cam.ac.uk>.
|
||||
#
|
||||
# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# This file is part of GNU CC.
|
||||
#
|
||||
# GNU CC is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU CC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU CC; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
website=http://gcc.gnu.org/
|
||||
files="gcc-3.2/index.html gcc-3.2/changes.html
|
||||
gcc-3.1/index.html gcc-3.1/changes.html
|
||||
gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
|
||||
gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
|
||||
egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
|
||||
egcs-1.0/egcs-1.0.3.html egcs-1.0/egcs-1.0.2.html egcs-1.0/egcs-1.0.1.html
|
||||
egcs-1.0/egcs-1.0.html egcs-1.0/features.html egcs-1.0/caveats.html"
|
||||
|
||||
set -e
|
||||
|
||||
cat <<EOF
|
||||
This file contains information about GCC releases which has been generated
|
||||
automatically from the online release notes. It covers releases of GCC
|
||||
(and the former EGCS project) since EGCS 1.0, on the line of development
|
||||
that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
|
||||
see ONEWS.
|
||||
|
||||
EOF
|
||||
|
||||
header="======================================================================"
|
||||
|
||||
echo $header
|
||||
|
||||
for file in $files; do
|
||||
wfile=$website$file
|
||||
echo $wfile
|
||||
# We lie to Lynx about the kind of terminal in use because we
|
||||
# want to get consistent output everywhere, and we want this
|
||||
# script to work even when it is not run interactively.
|
||||
env TERM=vt100 lynx -dump $wfile
|
||||
echo $header
|
||||
done
|
26
contrib/gcc/contrib/index-prop
Executable file
26
contrib/gcc/contrib/index-prop
Executable file
@ -0,0 +1,26 @@
|
||||
#! /usr/bin/perl -wi
|
||||
# Fix up the output of cvs diff -c so that it works with patch.
|
||||
# We do this by propagating the full pathname from the Index: line
|
||||
# into the diff itself.
|
||||
#
|
||||
# Thrown together by Jason Merrill <jason@cygnus.com>
|
||||
|
||||
while (<>)
|
||||
{
|
||||
if (/^Index: (.*)/)
|
||||
{
|
||||
$full = $1;
|
||||
print;
|
||||
for (1..7)
|
||||
{
|
||||
$_ = <>;
|
||||
s/^([-+*]{3}) [^\t]+\t/$1 $full\t/
|
||||
unless m{ /dev/null\t};
|
||||
print;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
print;
|
||||
}
|
||||
}
|
34
contrib/gcc/contrib/newcvsroot
Executable file
34
contrib/gcc/contrib/newcvsroot
Executable file
@ -0,0 +1,34 @@
|
||||
#! /usr/bin/env bash
|
||||
# Written by Roland McGrath <roland@gnu.org>
|
||||
|
||||
# Replaces all CVS/Root and CVS/Repository files in a checked-out CVS
|
||||
# tree. Requires shell with # and % variable substitution (e.g. bash).
|
||||
|
||||
# Usage: newcvsroot <newroot> <modulename> <toplevel directory>
|
||||
|
||||
if [ $# != 3 ]; then
|
||||
echo "usage: `basename $0` <newroot> <modulename> <toplevel directory>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
root=$1; shift
|
||||
module=$1; shift
|
||||
topdir=$1; shift
|
||||
|
||||
rep=${root##*:}
|
||||
|
||||
case "$topdir" in
|
||||
/*|./*|../*) echo >&2 "$0 wants relative path from top of checkout"; exit 1;;
|
||||
esac
|
||||
|
||||
find $topdir \( -name Repository -o -name Root \) -print | while read f; do
|
||||
|
||||
case "$f" in
|
||||
*/CVS/Root) echo $root > "$f" ;;
|
||||
*/CVS/Repository)
|
||||
r=${module}${f#${topdir}}
|
||||
echo > "$f" $rep/${r%/CVS/Repository}
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user