mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 03:46:53 -05:00
Compare commits
300 Commits
trunk
...
prerelease
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a9ae6cb1a | ||
|
|
552a1e5915 | ||
|
|
495bf6087a | ||
|
|
620a5a20ec | ||
|
|
bee14d86c6 | ||
|
|
97b2bc8c58 | ||
|
|
0fd259829d | ||
|
|
4864f1a613 | ||
|
|
dc790b3c86 | ||
|
|
b866e182d5 | ||
|
|
96452592af | ||
|
|
c43d777605 | ||
|
|
03ab4d306a | ||
|
|
3e260314f7 | ||
|
|
ecfe148ef9 | ||
|
|
75f71db751 | ||
|
|
c182a0b19b | ||
|
|
e4336350cd | ||
|
|
f623349c80 | ||
|
|
83f3c8788c | ||
|
|
83ad9cfa81 | ||
|
|
d20323edaa | ||
|
|
d2fbc2cacc | ||
|
|
e8a96824e6 | ||
|
|
716028ee7b | ||
|
|
d1f51ac44d | ||
|
|
5f8b9c80df | ||
|
|
3ceda776d8 | ||
|
|
d356de352f | ||
|
|
c78880d8f4 | ||
|
|
9925224fd8 | ||
|
|
57b67f059c | ||
|
|
b0acdc8d21 | ||
|
|
6afaaa9805 | ||
|
|
ffaffba589 | ||
|
|
de0f25ebe2 | ||
|
|
ecd14aafa3 | ||
|
|
0370c84e4f | ||
|
|
5e7174a37e | ||
|
|
ad3064bf4e | ||
|
|
ee19c9c019 | ||
|
|
826603f8c0 | ||
|
|
31eb7f8508 | ||
|
|
1d7f28e10f | ||
|
|
8015016f52 | ||
|
|
2db2f067d8 | ||
|
|
200e1cad10 | ||
|
|
c0bc8f6d6b | ||
|
|
bcce5e6dd6 | ||
|
|
6019e1d30f | ||
|
|
209ccdf447 | ||
|
|
ed172e0f4c | ||
|
|
1203e2021f | ||
|
|
c0723b338a | ||
|
|
5d1f565be1 | ||
|
|
3c1fb6619f | ||
|
|
f7ed698119 | ||
|
|
56e7c89c1a | ||
|
|
52af7fac04 | ||
|
|
1822f8a606 | ||
|
|
d49a20c537 | ||
|
|
1061012ce7 | ||
|
|
b33e8379a0 | ||
|
|
cb8c34c9c4 | ||
|
|
ba3e5fab3e | ||
|
|
c69f7bf109 | ||
|
|
9ae71a7b1f | ||
|
|
800eb7024c | ||
|
|
53be309931 | ||
|
|
ccf0a65fd6 | ||
|
|
ddb0137cdc | ||
|
|
4ceeccef8a | ||
|
|
d4f37c4108 | ||
|
|
2a744ad845 | ||
|
|
d4bc4ea11e | ||
|
|
1d28117548 | ||
|
|
57f38a83c3 | ||
|
|
62e2f2bb24 | ||
|
|
490998071c | ||
|
|
d75ea2235a | ||
|
|
1da898c9aa | ||
|
|
ff42f49576 | ||
|
|
c5c62c710e | ||
|
|
35de800fd4 | ||
|
|
49d1a05bc7 | ||
|
|
bdefce42b2 | ||
|
|
5d9d4b78d5 | ||
|
|
1ef1fc006f | ||
|
|
db1e9ec96f | ||
|
|
09f009c66f | ||
|
|
9e6ff9720c | ||
|
|
1cf6e81ebd | ||
|
|
22be406441 | ||
|
|
a571a47df6 | ||
|
|
d785152f1e | ||
|
|
99d73a5bdb | ||
|
|
03dd49a5ae | ||
|
|
e9605a1375 | ||
|
|
cc7147b09a | ||
|
|
8e93a9b021 | ||
|
|
70b6178184 | ||
|
|
8cf3875bbc | ||
|
|
f91abed3f9 | ||
|
|
4bef1d02be | ||
|
|
665888b2b6 | ||
|
|
0ecab26a23 | ||
|
|
46dc31e022 | ||
|
|
2cf2492a13 | ||
|
|
d77f84b246 | ||
|
|
7a0a316ee0 | ||
|
|
41557c9e76 | ||
|
|
20023daf91 | ||
|
|
5e37f712a8 | ||
|
|
fb7f625d37 | ||
|
|
ef9fdf4063 | ||
|
|
c768367f97 | ||
|
|
ba74fdcabf | ||
|
|
9ced742dd7 | ||
|
|
a803aef793 | ||
|
|
f752601513 | ||
|
|
be199bba25 | ||
|
|
2b608dc1a6 | ||
|
|
a9acaaf952 | ||
|
|
8267f8537f | ||
|
|
495e08fe92 | ||
|
|
d3dafdc105 | ||
|
|
9f76b2e45a | ||
|
|
5091895c33 | ||
|
|
14fedef297 | ||
|
|
76137ec33f | ||
|
|
ede0267db0 | ||
|
|
26454846e3 | ||
|
|
12e4154db5 | ||
|
|
af7b14d22c | ||
|
|
3a734db370 | ||
|
|
6d6072abdb | ||
|
|
19360d7ec3 | ||
|
|
ec7d9d8374 | ||
|
|
86d7f04809 | ||
|
|
43a5d5f69f | ||
|
|
70348dbe8c | ||
|
|
5a329fbdc1 | ||
|
|
a0c183e435 | ||
|
|
8663984845 | ||
|
|
6a0ef5713d | ||
|
|
06651d44fa | ||
|
|
b93e562d78 | ||
|
|
75035e2703 | ||
|
|
14c29c4a27 | ||
|
|
60ac04b1bb | ||
|
|
012f028aa5 | ||
|
|
8ea8344137 | ||
|
|
93cea42399 | ||
|
|
3819b88a28 | ||
|
|
02790d8320 | ||
|
|
7286055c93 | ||
|
|
15994d38d5 | ||
|
|
723ee92c8b | ||
|
|
06a9dfe96b | ||
|
|
286a0ba36f | ||
|
|
4d171019b8 | ||
|
|
646a55305d | ||
|
|
727245674f | ||
|
|
8f9f8b0aa5 | ||
|
|
0981c341b5 | ||
|
|
cfc51775f3 | ||
|
|
563e36c075 | ||
|
|
9a8c1559d1 | ||
|
|
8ef1b93db4 | ||
|
|
ef32ca543b | ||
|
|
a7ec16dd3d | ||
|
|
03fbbb5896 | ||
|
|
6ba67f47c6 | ||
|
|
81d76e3821 | ||
|
|
d5f93fcf83 | ||
|
|
cb304028e6 | ||
|
|
51612eb96d | ||
|
|
ed056cffc8 | ||
|
|
00ec9a5eca | ||
|
|
b8e6c0dccd | ||
|
|
73c31ac78f | ||
|
|
3a2922ddc9 | ||
|
|
1ac9d634cb | ||
|
|
942f225e5e | ||
|
|
c796a36caa | ||
|
|
bf42905928 | ||
|
|
a76f89932c | ||
|
|
b55e00bd69 | ||
|
|
52907c9897 | ||
|
|
bfba1e3d3b | ||
|
|
0a0f3e7885 | ||
|
|
823634555a | ||
|
|
67af3bf1e1 | ||
|
|
e4bd01fc09 | ||
|
|
135729bd63 | ||
|
|
d14de6e74c | ||
|
|
1392e1900c | ||
|
|
036dd21d41 | ||
|
|
261c05ad46 | ||
|
|
67de69fd49 | ||
|
|
11c4a5a2e8 | ||
|
|
ec8373300d | ||
|
|
a8b708d130 | ||
|
|
6c7d009424 | ||
|
|
8faadf1c45 | ||
|
|
7835fcb96f | ||
|
|
16683156e1 | ||
|
|
858e168d7f | ||
|
|
bb0acf84f9 | ||
|
|
aa0defa73c | ||
|
|
286e6ab133 | ||
|
|
3be6e264b2 | ||
|
|
4b377d5ea1 | ||
|
|
988cf86b46 | ||
|
|
4fac523af0 | ||
|
|
00dfbe1ae5 | ||
|
|
b957dce210 | ||
|
|
9a23f86ad7 | ||
|
|
33d6a14e5b | ||
|
|
5cf8e6165f | ||
|
|
56263a063a | ||
|
|
4010c87762 | ||
|
|
ee3644d3b3 | ||
|
|
d4f68a8339 | ||
|
|
ca6de10f6a | ||
|
|
dcc7ba04b1 | ||
|
|
cb395d583f | ||
|
|
ebd5e1d91d | ||
|
|
ee51cb8ea5 | ||
|
|
9842107d02 | ||
|
|
991ca513a9 | ||
|
|
d65b9e64e0 | ||
|
|
f3988e7863 | ||
|
|
d1e4a14575 | ||
|
|
95c73423f9 | ||
|
|
58ae042a84 | ||
|
|
86fcc806d6 | ||
|
|
9f9dbd6abd | ||
|
|
3d1440b3d0 | ||
|
|
970c5441f4 | ||
|
|
cfc5f8beda | ||
|
|
f5ce08ecc4 | ||
|
|
a427764e0f | ||
|
|
1009cb24db | ||
|
|
a94fc2eb50 | ||
|
|
7a155c1472 | ||
|
|
4b8cc7c55e | ||
|
|
4149fd3ef6 | ||
|
|
ac1e0fbb3a | ||
|
|
2722d2343e | ||
|
|
fc8cde864d | ||
|
|
f8d0aaf077 | ||
|
|
2f19e79de7 | ||
|
|
98e53a77fe | ||
|
|
e6dff3075c | ||
|
|
3f72001bac | ||
|
|
980bf49358 | ||
|
|
65bdbea37e | ||
|
|
79c5b0a7ee | ||
|
|
e18138c8f7 | ||
|
|
a368532c2c | ||
|
|
67328e449d | ||
|
|
fd47683704 | ||
|
|
faee6a5f2f | ||
|
|
f3bd21b697 | ||
|
|
d2fe4f6ae7 | ||
|
|
8df604fc16 | ||
|
|
9a3c8dac62 | ||
|
|
4ea1c8efa4 | ||
|
|
bd93ed181f | ||
|
|
e9c6a40fec | ||
|
|
ab1f110528 | ||
|
|
a594134ed1 | ||
|
|
11f8059d78 | ||
|
|
f6f739981a | ||
|
|
335f9c1060 | ||
|
|
80cc31cddc | ||
|
|
f2a53ad7e8 | ||
|
|
b25cf9d2d4 | ||
|
|
6bb1a8c25f | ||
|
|
7d96302225 | ||
|
|
6b7c9e5100 | ||
|
|
d9af52b46d | ||
|
|
2cf3141e12 | ||
|
|
efd60d18d8 | ||
|
|
ff5b5c164a | ||
|
|
9c82d0d1fd | ||
|
|
2862b9c355 | ||
|
|
9ba0177642 | ||
|
|
2b04f1785b | ||
|
|
de68fe9861 | ||
|
|
5df7011f90 | ||
|
|
b46af585fa | ||
|
|
f8db4bd153 | ||
|
|
b1d0fc355d | ||
|
|
0d0bf87bcd | ||
|
|
d1693a76da | ||
|
|
40a58b4367 | ||
|
|
31d71f5d55 | ||
|
|
4aea9e0184 |
484
COPYING.LIB
484
COPYING.LIB
@@ -1,481 +1,3 @@
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the library GPL. It is
|
||||
numbered 2 because it goes with version 2 of the ordinary GPL.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Library General Public License, applies to some
|
||||
specially designated Free Software Foundation software, and to any
|
||||
other libraries whose authors decide to use it. You can use it for
|
||||
your libraries, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if
|
||||
you distribute copies of the library, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link a program with the library, you must provide
|
||||
complete object files to the recipients so that they can relink them
|
||||
with the library, after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
Our method of protecting your rights has two steps: (1) copyright
|
||||
the library, and (2) offer you this license which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
Also, for each distributor's protection, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
library. If the library is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original
|
||||
version, so that any problems introduced by others will not reflect on
|
||||
the original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that companies distributing free
|
||||
software will individually obtain patent licenses, thus in effect
|
||||
transforming the program into proprietary software. To prevent this,
|
||||
we have made it clear that any patent must be licensed for everyone's
|
||||
free use or not licensed at all.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the ordinary
|
||||
GNU General Public License, which was designed for utility programs. This
|
||||
license, the GNU Library General Public License, applies to certain
|
||||
designated libraries. This license is quite different from the ordinary
|
||||
one; be sure to read it in full, and don't assume that anything in it is
|
||||
the same as in the ordinary license.
|
||||
|
||||
The reason we have a separate public license for some libraries is that
|
||||
they blur the distinction we usually make between modifying or adding to a
|
||||
program and simply using it. Linking a program with a library, without
|
||||
changing the library, is in some sense simply using the library, and is
|
||||
analogous to running a utility program or application program. However, in
|
||||
a textual and legal sense, the linked executable is a combined work, a
|
||||
derivative of the original library, and the ordinary General Public License
|
||||
treats it as such.
|
||||
|
||||
Because of this blurred distinction, using the ordinary General
|
||||
Public License for libraries did not effectively promote software
|
||||
sharing, because most developers did not use the libraries. We
|
||||
concluded that weaker conditions might promote sharing better.
|
||||
|
||||
However, unrestricted linking of non-free programs would deprive the
|
||||
users of those programs of all benefit from the free status of the
|
||||
libraries themselves. This Library General Public License is intended to
|
||||
permit developers of non-free programs to use free libraries, while
|
||||
preserving your freedom as a user of such programs to change the free
|
||||
libraries that are incorporated in them. (We have not seen how to achieve
|
||||
this as regards changes in header files, but we have achieved it as regards
|
||||
changes in the actual functions of the Library.) The hope is that this
|
||||
will lead to faster development of free libraries.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, while the latter only
|
||||
works together with the library.
|
||||
|
||||
Note that it is possible for a library to be covered by the ordinary
|
||||
General Public License rather than by this special one.
|
||||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library which
|
||||
contains a notice placed by the copyright holder or other authorized
|
||||
party saying it may be distributed under the terms of this Library
|
||||
General Public License (also called "this License"). Each licensee is
|
||||
addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also compile or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
c) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
d) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the source code distributed need not include anything that is normally
|
||||
distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Library General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
50
ChangeLog
50
ChangeLog
@@ -1,3 +1,53 @@
|
||||
Thu Apr 23 01:40:32 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.0.3 release.
|
||||
|
||||
Sun Mar 15 23:38:21 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.0.2 release.
|
||||
|
||||
Sun Mar 15 23:32:17 1998 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
Pieter Nagel <pnagel@epiuse.co.za>
|
||||
|
||||
* Makefile.in (BASE_FLAGS_TO_PASS): Pass gxx_include_dir down
|
||||
to sub-makes.
|
||||
|
||||
Sun Feb 22 15:23:27 1998 H.J. Lu (hjl@gnu.ai.mit.edu)
|
||||
|
||||
* configure.in (alpha*-*-linux*): Treat alpha*-*-linux* as
|
||||
alpha*-*-linux* not alpha*-*-*.
|
||||
|
||||
Fri Jan 2 11:34:38 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.0.1 release.
|
||||
|
||||
Wed Dec 3 07:55:59 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* egcs-1.0 release.
|
||||
|
||||
* configure (gxx_include_dir): Fix thinko.
|
||||
|
||||
Thu Nov 27 01:31:30 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* Makefile.in (INSTALL_TARGET): Do install-gcc first.
|
||||
* configure (gxx_include_dir): Provide a definition for subdirs
|
||||
which do not use autoconf.
|
||||
|
||||
Wed Nov 26 16:08:50 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* From Franz Sirl.
|
||||
* config.guess (powerpc*-*-linux): Handle glibc2 beta release
|
||||
found on RedHat Linux systems.
|
||||
|
||||
Fri Nov 21 09:51:01 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* config.guess (alpha stuff): Merge with FSF to avoid incorrect
|
||||
guesses.
|
||||
|
||||
Thu Nov 13 11:38:37 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* configure.in (i[3456]86-ncr-sysv4.3*): Tweak.
|
||||
|
||||
Mon Oct 27 12:03:53 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* Makefile.in: check-target-libio depends on all-target-libstdc++.
|
||||
|
||||
50
INSTALL/BUILD
Normal file
50
INSTALL/BUILD
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
Building egcs-1.0.3
|
||||
|
||||
Now that egcs is configured, you are ready to build the compiler and
|
||||
runtime libraries.
|
||||
|
||||
We highly recommend that egcs be built using gnu-make; other versions
|
||||
make work, then again they might not. To be safe build with gnu-make.
|
||||
|
||||
Building a native compiler
|
||||
|
||||
For a native build issue the command "make bootstrap". This will build
|
||||
the entire egcs compiler system, which includes the following steps:
|
||||
* Build host tools necessary to build the compiler such as texinfo,
|
||||
bison, gperf.
|
||||
* Build target tools for use by the compiler such as gas, gld, and
|
||||
binutils.
|
||||
* Perform a 3-stage bootstrap of the compiler.
|
||||
* Perform a comparison test of the stage2 and stage3 compilers.
|
||||
* Build runtime libraries using the stage3 compiler from the
|
||||
previous step.
|
||||
|
||||
If you are short on disk space you might consider "make
|
||||
bootstrap-lean" instead. This is identical to "make bootstrap" except
|
||||
that object files from the stage1 and stage2 of the 3-stage bootstrap
|
||||
of the compiler are deleted as soon as they are no longer needed.
|
||||
|
||||
Building a cross compiler
|
||||
|
||||
We recommend reading the [1]crossgcc FAQ for information about
|
||||
building cross compilers.
|
||||
|
||||
For a cross build, issue the command "make cross", which performs the
|
||||
following steps:
|
||||
* Build host tools necessary to build the compiler such as texinfo,
|
||||
bison, gperf.
|
||||
* Build target tools for use by the compiler such as gas, gld, and
|
||||
binutils.
|
||||
* Build the compiler (single stage only).
|
||||
* Build runtime libraries using the compiler from the previous step.
|
||||
|
||||
Note that if an error occurs in any step the make process will exit.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
|
||||
References
|
||||
|
||||
1. ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1
|
||||
90
INSTALL/CONFIGURE
Normal file
90
INSTALL/CONFIGURE
Normal file
@@ -0,0 +1,90 @@
|
||||
|
||||
Configuring egcs-1.0.3
|
||||
|
||||
Like most GNU software, egcs must be configured before it can be
|
||||
built. This document attempts to describe the recommended
|
||||
configuration procedure for both native and cross targets.
|
||||
|
||||
We use srcdir to refer to the toplevel source directory for egcs; we
|
||||
use objdir to refer to the toplevel build/object directory for egcs.
|
||||
|
||||
First, we highly recommend that egcs be built into a separate
|
||||
directory than the sources. This is how we generally build egcs;
|
||||
building where srcdir == objdir should still work, but doesn't get
|
||||
extensive testing.
|
||||
|
||||
Second, when configuring a native system, either "cc" must be in your
|
||||
path or you must set CC in your environment before running configure.
|
||||
Otherwise the configuration scripts may fail.
|
||||
|
||||
To configure egcs:
|
||||
|
||||
|
||||
% mkdir objdir
|
||||
% cd objdir
|
||||
% srcdir/configure [target] [options]
|
||||
|
||||
target specification
|
||||
* egcs has code to correctly determine the correct value for target
|
||||
for nearly all native systems. Therefore, we highly recommend you
|
||||
not provide a configure target when configuring a native compiler.
|
||||
* target must be specified when configuring a cross compiler;
|
||||
examples of valid targets would be i960-rtems, m68k-coff, sh-elf,
|
||||
etc.
|
||||
|
||||
options specification
|
||||
|
||||
Use options to override several configure time options for egcs. A
|
||||
partial list of supported options:
|
||||
* --prefix=dirname -- Specify the toplevel installation directory.
|
||||
This is the recommended way to install the tools into a directory
|
||||
other than the default. The toplevel installation directory
|
||||
defaults to /usr/local.
|
||||
These additional options control where certain parts of the
|
||||
distribution are installed. Normally you should not need to use
|
||||
these options.
|
||||
+ --with-local-prefix=dirname -- Specify the installation
|
||||
directory for local include files. The default is /usr/local.
|
||||
+ --with-gxx-include-dir=dirname -- Specify the installation
|
||||
directory for g++ header files. The default is
|
||||
/usr/local/include/g++.
|
||||
* --enable-shared -- Build shared versions of the C++ runtime
|
||||
libraries if supported --disable-shared is the default.
|
||||
* --enable-haifa -- Enable the new Haifa instruction scheduler in
|
||||
the compiler; the new scheduler can significantly improve code on
|
||||
some targets. --disable-haifa is currently the default on all
|
||||
platforms except the HPPA.
|
||||
* --with-gnu-as -- Specify that the compiler should assume the GNU
|
||||
assembler (aka gas) is available.
|
||||
* --with-gnu-ld -- Specify that the compiler should assume the GNU
|
||||
linker (aka gld) is available.
|
||||
* --with-stabs -- Specify that stabs debugging information should be
|
||||
used instead of whatever format the host normally uses. Normally
|
||||
GCC uses the same debug format as the host system.
|
||||
* --enable-multilib -- Specify that multiple target libraries should
|
||||
be built to support different target variants, calling
|
||||
conventions, etc. This is the default.
|
||||
* --enable-threads -- Specify that the target supports threads. This
|
||||
only effects the Objective-C compiler and runtime library.
|
||||
* --enable-threads=lib -- Specify that lib is the thread support
|
||||
library. This only effects the Objective-C compiler and runtime
|
||||
library.
|
||||
* --with-cpu=cpu -- Specify which cpu variant the compiler should
|
||||
generate code for by default. This is currently only supported on
|
||||
the RS6000/PowerPC ports.
|
||||
|
||||
Some options which only apply to building cross compilers:
|
||||
* --with-headers=dir -- Specifies a directory which has target
|
||||
include files.
|
||||
* --with-libs=dirs -- Specifies a list of directories which contain
|
||||
the target runtime libraries.
|
||||
* --with-newlib -- Specifies that "newlib" is being used as the
|
||||
target C library. This causes __eprintf to be omitted from
|
||||
libgcc.a on the assumption that it will be provided by newlib.
|
||||
|
||||
Note that each --enable option has a corresponding --disable option
|
||||
and that each --with option has a corresponding --without option.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
633
INSTALL/FAQ
Normal file
633
INSTALL/FAQ
Normal file
@@ -0,0 +1,633 @@
|
||||
|
||||
egcs Frequently Asked Questions
|
||||
|
||||
1. [1]How is egcs different from gcc2?
|
||||
2. [2]What is an open development model?
|
||||
3. [3]Releases and Forking
|
||||
4. [4]bits/libc-lock.h: No such file or directory
|
||||
5. [5]`_IO_stdfile_0_lock' was not declared in this scope
|
||||
6. [6]Problems building the Fortran compiler
|
||||
7. [7]Problems building on MIPS platforms
|
||||
8. [8]Problems with exception handling on x86 platforms
|
||||
9. [9]Bootstrap comparison failures on HPs
|
||||
10. [10]Bootstrap loops rebuilding cc1 over and over
|
||||
11. [11]Dynamic linker is unable to find GCC libraries
|
||||
12. [12]libstdc++/libio tests fail badly with --enable-shared
|
||||
13. [13]Unable to run the testsuite
|
||||
14. [14]How to build a cross compiler
|
||||
15. [15]How to install both gcc2 and egcs
|
||||
16. [16]Snapshots, how, when, why
|
||||
17. [17]Problems building Linux kernels
|
||||
18. [18]Virtual memory exhausted
|
||||
19. [19]GCC can not find GAS
|
||||
20. [20]egcs does not work on Red Hat 5.0
|
||||
21. [21]Unable to bootstrap on x86 Solaris2.{5,6}
|
||||
22. [22]EGCS with Windows
|
||||
23. [23]EGCS with OS/2
|
||||
24. [24]cpp: Usage:... Error
|
||||
25. [25]EGCS will not build KDE
|
||||
26. [26]Friend Templates
|
||||
27. [27]Where to find libg++
|
||||
28. [28]Why do I need autoconf & bison
|
||||
29. [29]EGCS does not work on AIX 4.3
|
||||
30. [30]Problems debugging egcs code
|
||||
31. [31]Conflicts when using cvs update
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
How is egcs be different from gcc2?
|
||||
|
||||
Six years ago, gcc version 1 had reached a point of stability. For the
|
||||
targets it could support, it worked well. It had limitations inherent
|
||||
in its design that would be difficult to resolve, so a major effort
|
||||
was made and gcc version 2 was the result. When we had gcc2 in a
|
||||
useful state, development efforts on gcc1 stopped and we all
|
||||
concentrated on making gcc2 better than gcc1 could ever be. This is
|
||||
the kind of step forward we want to make with egcs.
|
||||
|
||||
In brief, the three biggest differences between egcs and gcc2 are:
|
||||
* More rexamination of basic architectual decisions of gcc and an
|
||||
interest in adding new optimizations;
|
||||
* working with the groups who have fractured out from gcc2 (like the
|
||||
Linux folks, the Intel optimizations folks, Fortran folks)
|
||||
including more front-ends; and finally
|
||||
* An open development model ([32]see below) for the development
|
||||
process.
|
||||
|
||||
These three differences will work together to result in a more useful
|
||||
compiler, a more stable compiler, a central compiler that works for
|
||||
more people, a compiler that generates better code.
|
||||
|
||||
There are a lot of exciting compiler optimizations that have come out.
|
||||
We want them in gcc. There are a lot of front ends out there for gcc
|
||||
for languages like Fortran or Pascal. We want them easily installable
|
||||
by users. After six years of working on gcc2, we've come to see
|
||||
problems and limitations in the way gcc is architected; it is time to
|
||||
address these again.
|
||||
_________________________________________________________________
|
||||
|
||||
What is an open development model?
|
||||
|
||||
With egcs, we are going to try a bazaar style[33][1] approach to its
|
||||
development: We're going to be making snapshots publicly available to
|
||||
anyone who wants to try them; we're going to welcome anyone to join
|
||||
the development mailing list. All of the discussions on the
|
||||
development mailing list are available via the web. We're going to be
|
||||
making releases with a much higher frequency than they have been made
|
||||
in the past: We're shooting for three by the end of 1997.
|
||||
|
||||
In addition to weekly snapshots of the egcs development sources, we
|
||||
are going to look at making the sources readable from a CVS server by
|
||||
anyone. We want to make it so external maintainers of parts of egcs
|
||||
are able to commit changes to their part of egcs directly into the
|
||||
sources without going through an intermediary.
|
||||
|
||||
There have been many potential gcc developers who were not able to
|
||||
participate in gcc development in the past. We these people to help in
|
||||
any way they can; we ultimately want gcc to be the best compiler in
|
||||
the world.
|
||||
|
||||
A compiler is a complicated piece of software, there will still be
|
||||
strong central maintainers who will reject patches, who will demand
|
||||
documentation of implementations, and who will keep the level of
|
||||
quality as high as it is today. Code that could use wider testing may
|
||||
be intergrated--code that is simply ill-conceived won't be.
|
||||
|
||||
egcs is not the first piece of software to use this open development
|
||||
process; FreeBSD, the Emacs lisp repository, and Linux are a few
|
||||
examples of the bazaar style of development.
|
||||
|
||||
With egcs, we will be adding new features and optimizations at a rate
|
||||
that has not been done since the creation of gcc2; these additions
|
||||
will inevitably have a temporarily destabilizing effect. With the help
|
||||
of developers working together with this bazaar style development, the
|
||||
resulting stability and quality levels will be better than we've had
|
||||
before.
|
||||
|
||||
[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 ``[34]The Cathedral and the Bazaar''. The paper is a useful
|
||||
starting point for discussions.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
Releases and Forking?
|
||||
|
||||
Some folks have questioned whether or not making releases is
|
||||
consistent with the goals of the egcs project and whether or not
|
||||
making releases is a fork from gcc2.
|
||||
|
||||
The egcs project has several goals, including:
|
||||
|
||||
* Experimenting with a new development model, release process and
|
||||
release packaging,
|
||||
|
||||
* Using the new development model to accelerate development of new
|
||||
features, optimizations, etc for future inclusion in gcc,
|
||||
|
||||
* Providing high quality releases to the public.
|
||||
|
||||
An egcs release is a copy of the egcs sources that the developers have
|
||||
tested and are believed to be suitable for wider scale use and testing.
|
||||
|
||||
Making releases of stable, tested sources is both a goal and a means by
|
||||
which we hope to achieve other goals of the egcs project.
|
||||
|
||||
The existence of a stable tested release allows egcs to be more thoroughly
|
||||
used and tested by a wider audience than is capable of testing snapshots.
|
||||
The expanded audience provides developers with critical feedback in a
|
||||
timely manner, which is beneficial to GCC as a whole and is consistent with
|
||||
the stated goals of egcs.
|
||||
|
||||
The gcc maintainers are encouraged to migrate tested fixes and new features
|
||||
from egcs into gcc at their discretion. egcs maintainers are willing to
|
||||
assist the gcc maintainers as time permits. egcs periodically merges in
|
||||
changes from gcc into the egcs sources.
|
||||
|
||||
What will keep egcs from becoming a fork is cooperation between the
|
||||
developers of gcc and egcs.
|
||||
|
||||
We don't see this situation as significantly different than other projects
|
||||
that make releases based on some version of the gcc sources (Cygnus, g77,
|
||||
etc). All the code is still available for inclusion in gcc at the discretion
|
||||
of the gcc maintainers.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
bits/libc-lock.h: No such file or directory
|
||||
|
||||
This entry should be obsolete, egcs should handle these beta versions
|
||||
of glibc2 correctly.
|
||||
|
||||
egcs includes a tightly integrated libio and libstdc++ implementation
|
||||
which can cause problems on hosts which have libio integrated into
|
||||
their C library (most notably Linux).
|
||||
|
||||
We believe that we've solved the major technical problems for the most
|
||||
common versions of libc found on Linux systems. However, some versions
|
||||
of Linux use pre-release versions of glibc2, which egcs has trouble
|
||||
detecting and correctly handling.
|
||||
|
||||
If you're using one of these pre-release versions of glibc2, you may
|
||||
get a message "bits/libc-lock.h: No such file or directory" when
|
||||
building egcs. Unfortunately, to fix this problem you will need to
|
||||
update your C library to glibc2.0.5c.
|
||||
_________________________________________________________________
|
||||
|
||||
`_IO_stdfile_0_lock' was not declared in this scope
|
||||
|
||||
If you get this error, it means either egcs incorrectly guessed what
|
||||
version of libc is installed on your linux system, or you incorrectly
|
||||
specified a version of glibc when configuring egcs.
|
||||
|
||||
If you did not provide a target name when configuring egcs, then
|
||||
you've found a bug which needs to be reported. If you did provide a
|
||||
target name at configure time, then you should reconfigure without
|
||||
specifying a target name.
|
||||
_________________________________________________________________
|
||||
|
||||
Problems building the Fortran compiler
|
||||
|
||||
The Fortran front end can not be built with most vendor compilers; it
|
||||
must be built with gcc. As a result, you may get an error if you do
|
||||
not follow the install instructions carefully.
|
||||
|
||||
In particular, instead of using "make" to build egcs, you should use
|
||||
"make bootstrap" if you are building a native compiler or "make cross"
|
||||
if you are building a cross compiler.
|
||||
|
||||
It has also been reported that the Fortran compiler can not be built
|
||||
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
|
||||
binutils or to Red Hat 5.0; we'll provide more information as it
|
||||
becomes available.
|
||||
_________________________________________________________________
|
||||
|
||||
Problems building on MIPS platforms
|
||||
|
||||
egcs requires the use of GAS on all versions of Irix, except Irix 6
|
||||
due to limitations in older Irix assemblers.
|
||||
|
||||
Either of these messages indicates that you are using the MIPS
|
||||
assembler when instead you should be using GAS.
|
||||
|
||||
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
|
||||
.4byte $LECIE1-$LSCIE1
|
||||
as0: Error: ./libgcc2.c, line 1:malformed statement
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol i
|
||||
n expression
|
||||
.word $LECIE1-$LSCIE1
|
||||
|
||||
For Irix 6, you should use the native assembler as GAS is not
|
||||
supported on Irix 6.
|
||||
_________________________________________________________________
|
||||
|
||||
Problems with exception handling on x86 platforms
|
||||
|
||||
If you are using the GNU assembler (aka gas) on an x86 platform and
|
||||
exception handling is not working correctly, then odds are you're
|
||||
using a buggy assembler.
|
||||
|
||||
We recommend binutils-2.8.1.0.15 or newer.
|
||||
[35]binutils-2.8.1.0.20 source
|
||||
[36]binutils-2.8.1.0.20 x86 binary for libc5
|
||||
[37]binutils-2.8.1.0.20 x86 binary for glibc2 Or, you can try a
|
||||
[38]binutils snapshot; however, be aware that the binutils snapshot is
|
||||
untested and may not work (or even build). Use it at your own risk.
|
||||
_________________________________________________________________
|
||||
|
||||
Bootstrap comparison failures on HPs
|
||||
|
||||
If you bootstrap the compiler on hpux10 using the HP assembler instead
|
||||
of gas, every file will fail the comparison test.
|
||||
|
||||
The HP asembler inserts timestamps into object files it creates,
|
||||
causing every file to be different. The location of the timestamp
|
||||
varies for each object file, so there's no real way to work around
|
||||
this mis-feature.
|
||||
|
||||
Odds are your compiler is fine, but there's no way to be certain.
|
||||
|
||||
If you use GAS on HPs, then you will not run into this problem because
|
||||
GAS never inserts timestamps into object files. For this and various
|
||||
other reasons we highly recommend using GAS on HPs.
|
||||
_________________________________________________________________
|
||||
|
||||
Bootstrap loops rebuilding cc1 over and over
|
||||
|
||||
When building egcs, the build process loops rebuilding cc1 over and
|
||||
over again. This happens on mips-sgi-irix5.2, and possibly other
|
||||
platforms.
|
||||
|
||||
This is probably a bug somewhere in the egcs Makefile. Until we find
|
||||
and fix this bug we recommend you use GNU make instead of vendor
|
||||
supplied make programs.
|
||||
_________________________________________________________________
|
||||
|
||||
Dynamic linker is unable to find GCC libraries
|
||||
|
||||
This problem manifests itself by programs not finding shared libraries
|
||||
they depend on when the programs are started. Note this problem often
|
||||
manifests itself with failures in the libio/libstdc++ tests after
|
||||
configuring with --enable-shared and building egcs.
|
||||
|
||||
GCC does not specify a runpath so that the dynamic linker can find
|
||||
dynamic libraries at runtime.
|
||||
|
||||
The short explaination is that if you always pass a -R option to the
|
||||
linker, then your programs become dependent on directories which may
|
||||
be NFS mounted, and programs may hang unnecessarily when an NFS server
|
||||
goes down.
|
||||
|
||||
The problem is not programs that do require the directories; those
|
||||
programs are going to hang no matter what you do. The problem is
|
||||
programs that do not require the directories.
|
||||
|
||||
SunOS effectively always passed a -R option for every -L option; this
|
||||
was a bad idea, and so it was removed for Solaris. We should not
|
||||
recreate it.
|
||||
_________________________________________________________________
|
||||
|
||||
Unable to run the testsuite
|
||||
|
||||
If you get a message about unable to find "standard.exp" when trying
|
||||
to run the egcs testsuites, then your dejagnu is too old to run the
|
||||
egcs tests. You will need to get a newer version of dejagnu; we've
|
||||
made a [39]dejagnu snapshot available until a new version of dejagnu
|
||||
can be released.
|
||||
_________________________________________________________________
|
||||
|
||||
How to build a cross compiler
|
||||
|
||||
Building cross compilers is a rather complex undertaking because they
|
||||
usually need additional software (cross assembler, cross linker,
|
||||
target libraries, target include files, etc).
|
||||
|
||||
We recommend reading the [40]crossgcc FAQ for information about
|
||||
building cross compilers.
|
||||
|
||||
If you have all the pieces available, then `make cross' should build a
|
||||
cross compiler. `make LANGUAGES="c c++" install'will install the cross
|
||||
compiler.
|
||||
|
||||
Note that if you're trying to build a cross compiler in a tree which
|
||||
includes binutils-2.8 in addition to egcs, then you're going to need
|
||||
to make a couple minor tweaks so that the cross assembler, linker and
|
||||
nm utilities will be found.
|
||||
|
||||
binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs
|
||||
gcc looks for them using gas-new, ld-new and nm-new, so you may have
|
||||
to arrange for any symlinks which point to <file>.new to be changed
|
||||
to <file>-new.
|
||||
_________________________________________________________________
|
||||
|
||||
Snapshots, how, when, why
|
||||
|
||||
We make snapshots of the egcs sources about once a week; there is no
|
||||
predetermined schedule. These snapshots are intended to give everyone
|
||||
access to work in progress. Any given snapshot may generate incorrect
|
||||
code or even fail to build.
|
||||
|
||||
If you plan on downloading and using snapshots, we highly recommend
|
||||
you subscribe to the egcs mailing lists. See [41]mailing lists on the
|
||||
main egcs page for instructions on how to subscribe.
|
||||
|
||||
When using the diff files to update from older snapshots to newer
|
||||
snapshots, make sure to use "-E" and "-p" arguments to patch so that
|
||||
empty files are deleted and full pathnames are provided to patch. If
|
||||
your version of patch does not support "-E", you'll need to get a
|
||||
newer version. Also note that you may need autoconf, autoheader and
|
||||
various other programs if you use diff files to update from one
|
||||
snapshot to the next.
|
||||
_________________________________________________________________
|
||||
|
||||
How to install both egcs and gcc2
|
||||
|
||||
It may be desirable to install both egcs and gcc2 on the same system.
|
||||
This can be done by using different prefix paths at configure time and
|
||||
a few symlinks.
|
||||
|
||||
Basically, configure the two compilers with different --prefix
|
||||
options, then build and install each compiler. Assume you want "gcc"
|
||||
to be the egcs compiler and available in /usr/local/bin; also assume
|
||||
that you want "gcc2" to be the gcc2 compiler and also available in
|
||||
/usr/local/bin.
|
||||
|
||||
The easiest way to do this is to configure egcs with
|
||||
--prefix=/usr/local/egcs and gcc2 with --prefix=/usr/local/gcc2. Build
|
||||
and install both compilers. Then make a symlink from
|
||||
/usr/local/bin/gcc to /usr/local/egcs/bin/gcc and from
|
||||
/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
|
||||
for the "g++", "c++" and "g77" compiler drivers.
|
||||
_________________________________________________________________
|
||||
|
||||
Problems building Linux kernels
|
||||
|
||||
If you installed a recent binutils/gas snapshot on your Linux system,
|
||||
you may not be able to build the kernel because objdump does not
|
||||
understand the "-k" switch. The solution for this problem is to remove
|
||||
/usr/bin/encaps.
|
||||
|
||||
The reason you must remove /usr/bin/encaps is because it is an
|
||||
obsolete program that was part of older binutils distributions; the
|
||||
Linux kernel's Makefile looks for this program to decide if you have
|
||||
an old or a new binutils. Problems occur if you installed a new
|
||||
binutils but haven't removed encaps, because the Makefile thinks you
|
||||
have the old one. So zap it; trust us, you won't miss it.
|
||||
|
||||
You may get an internal compiler error compiling process.c in newer
|
||||
versions of the Linux kernel on x86 machines. This is a bug in an asm
|
||||
statement in process.c, not a bug in egcs. XXX How to fix?!?
|
||||
|
||||
You may get errors with the X driver of the form
|
||||
_X11TransSocketUNIXConnect: Can't connect: errno = 111
|
||||
|
||||
It's a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c
|
||||
does an illegal hack which used to work but is now broken since GCC
|
||||
optimizes more aggressively . The newer 2.1.x kernels already have a
|
||||
fix which should also work in 2.0.32.
|
||||
_________________________________________________________________
|
||||
|
||||
Virtual memory exhausted error
|
||||
|
||||
This error means your system ran out of memory; this can happen for
|
||||
large files, particularly when optimizing. If you're getting this
|
||||
error you should consider trying to simplify your files or reducing
|
||||
the optimization level.
|
||||
|
||||
Note that using -pedantic or -Wreturn-type can cause an explosion in
|
||||
the amount of memory needed for template-heavy C++ code, such as code
|
||||
that uses STL. Also note that -Wall includes -Wreturn-type, so if you
|
||||
use -Wall you will need to specify -Wno-return-type to turn it off.
|
||||
_________________________________________________________________
|
||||
|
||||
GCC can not find GAS
|
||||
|
||||
Some configurations like irix4, irix5, hpux* require the use of the
|
||||
GNU assembler intead of the system assembler. To ensure that egcs
|
||||
finds the GNU assembler, you should configure the GNU assembler with
|
||||
the same --prefix option as you used for egcs. Then build & install
|
||||
the GNU assembler. After the GNU assembler has been installed, proceed
|
||||
with building egcs.
|
||||
_________________________________________________________________
|
||||
|
||||
egcs does not work on Red Hat 5.0
|
||||
|
||||
This entry is obsolete with the release of egcs-1.0.1 which should
|
||||
handle Red Hat 5.0 correctly.
|
||||
|
||||
egcs-1.0 does not currently work with Red Hat 5.0 on some platforms;
|
||||
we'll update this entry with more information as it becomes available.
|
||||
|
||||
You may want to try this [42]proposed patch for Red Hat 5.0. Please
|
||||
let us know if you use this patch and whether or not it works.
|
||||
_________________________________________________________________
|
||||
|
||||
Unable to bootstrap on x86 Solaris 2.{5,6}
|
||||
|
||||
This entry is obsolete with the release of egcs-1.0.1 which should
|
||||
handle x86 Solaris systems correctly.
|
||||
|
||||
This patch should fix the problem
|
||||
Index: t-sol2
|
||||
===================================================================
|
||||
RCS file: /cvs/cvsfiles/egcs/gcc/config/i386/t-sol2,v
|
||||
retrieving revision 1.2
|
||||
diff -c -3 -p -r1.2 t-sol2
|
||||
*** t-sol2 1997/09/04 23:54:04 1.2
|
||||
--- t-sol2 1997/12/04 07:19:07
|
||||
*************** crtn.o: $(srcdir)/config/i386/sol2-cn.as
|
||||
*** 31,36 ****
|
||||
# to produce a shared library, but since we don't know ahead of time when
|
||||
# we will be doing that, we just always use -fPIC when compiling the
|
||||
# routines in crtstuff.c.
|
||||
|
||||
! CRTSTUFF_T_CFLAGS = -fPIC
|
||||
TARGET_LIBGCC2_CFLAGS = -fPIC
|
||||
--- 31,40 ----
|
||||
# to produce a shared library, but since we don't know ahead of time when
|
||||
# we will be doing that, we just always use -fPIC when compiling the
|
||||
# routines in crtstuff.c.
|
||||
+ #
|
||||
+ # We must also enable optimization to avoid having any code appear after
|
||||
+ # the call & alignment statement, but before we switch back to the
|
||||
+ # .text section.
|
||||
|
||||
! CRTSTUFF_T_CFLAGS = -fPIC -O2
|
||||
TARGET_LIBGCC2_CFLAGS = -fPIC
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
EGCS with Windows
|
||||
|
||||
egcs does not currently support windows, either natively or with the
|
||||
cygwin32 dll. However Mumit Khan has been working on supporting
|
||||
Windows with egcs. You should check out his site if you're interested
|
||||
in Windows support. [43]GNU Win32 related projects
|
||||
_________________________________________________________________
|
||||
|
||||
EGCS with OS/2
|
||||
|
||||
egcs does not currently support OS/2. However, Andrew Zabolotny has
|
||||
been working on a generic os/2 port with pgcc. The current code code
|
||||
can be found at [44]http://www.goof.com/pcg/os2.
|
||||
_________________________________________________________________
|
||||
|
||||
cpp: Usage:... Error
|
||||
|
||||
If you get an error like this when building egcs (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.
|
||||
_________________________________________________________________
|
||||
|
||||
EGCS will not build KDE
|
||||
|
||||
Previous versions of g++ accepted (as a GNU extension)
|
||||
constructor-arguments for the objects in an array of objects
|
||||
dynamically allocated with new. Here's an example of this construct:
|
||||
|
||||
struct S { S(int); }
|
||||
void f() { new S[3](6); }
|
||||
|
||||
However, this construct is not allowed by the ANSI/ISO Standard, and
|
||||
is no longer accepted by g++.
|
||||
|
||||
KDE uses such constructs and therefore will not build with egcs; note
|
||||
patches are available to fix KDE.
|
||||
_________________________________________________________________
|
||||
|
||||
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. An error in the last public comment
|
||||
draft of the ANSI/ISO C++ Standard has led people to believe that was not
|
||||
necessary, but it is, and it was fixed in the final version of the Standard.
|
||||
__________________________________________________________________________
|
||||
|
||||
Where to find libg++
|
||||
|
||||
Many folks have been asking where to find libg++ for egcs. First we should
|
||||
point out that few programs actually need libg++; most only need
|
||||
libstdc++/libio which are included in the egcs distribution.
|
||||
|
||||
If you do need libg++ you can get a libg++ snapshot which works with egcs from
|
||||
[45]ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz
|
||||
__________________________________________________________________________
|
||||
|
||||
Why do I need autoconf/bison
|
||||
|
||||
If you're using diffs up dated from one snapshot to the next, or if you're
|
||||
using the CVS repository, you may need autoconf, bison, or possibly other tools
|
||||
to rebuild egcs.
|
||||
|
||||
This is necessary because neither diff nor cvs keep timestamps correct. So it
|
||||
is possible for "make" to think a generated file is out of date.
|
||||
|
||||
If you do not have autoconf, bison, etc, then you can issue the following
|
||||
commands to touch all the generated files.
|
||||
|
||||
|
||||
touch `find egcs -name configure -print`
|
||||
touch egcs/gcc/c-parse.y
|
||||
touch egcs/gcc/objc/objc-parse.y
|
||||
touch egcs/gcc/{cstamp-h.in,c-gperf.h,c-parse.c,c-parse.h,cexp.c}
|
||||
touch egcs/gcc/cp/{parse.c,parse.h}
|
||||
touch egcs/gcc/objc/objc-parse.c
|
||||
|
||||
__________________________________________________________________________
|
||||
|
||||
EGCS does not work on AIX 4.3
|
||||
|
||||
EGCS does not currently support AIX4.3; however, if you want to try and make it
|
||||
work with AIX 4.3 we highly recommend you get the fix for APAR IX74254 (64BIT
|
||||
DISASSEMBLED OUPUT FROM COMPILER FAILS TO ASSEMBLE/BIND) which is available
|
||||
from IBM Customer Support and IBM's service.boulder.ibm.com website.
|
||||
__________________________________________________________________________
|
||||
|
||||
Problems debugging egcs code
|
||||
|
||||
On some systems egcs will produce dwarf debug records by default; however the
|
||||
current gdb-4.16 release may not be able to read such debug records.
|
||||
|
||||
You can either use the argument "-gstabs" instead of "-g" or pick up the
|
||||
current beta copy of gdb-4.17 to work around the problem.
|
||||
__________________________________________________________________________
|
||||
|
||||
Conflicts when using cvs update
|
||||
|
||||
It is not uncommon to get cvs conflict messages for some generated files when
|
||||
updating your local sources from the CVS repository. Typically such conflicts
|
||||
occur with bison or autoconf generated files.
|
||||
|
||||
As long as you haven't been making modifications to the generated files or the
|
||||
generator files, it is safe to delete the offending file, then run cvs update
|
||||
again to get a new copy.
|
||||
__________________________________________________________________________
|
||||
|
||||
[46]Return to the egcs home page
|
||||
|
||||
Last modified: March 04, 1998
|
||||
|
||||
References
|
||||
|
||||
1. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gcc-2-diff
|
||||
2. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#open-development
|
||||
3. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#release-fork
|
||||
4. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#libc-lock
|
||||
5. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#morelibc
|
||||
6. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#fortran
|
||||
7. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#mips
|
||||
8. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#x86eh
|
||||
9. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#hpcompare
|
||||
10. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#makebugs
|
||||
11. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rpath
|
||||
12. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rpath
|
||||
13. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#dejagnu
|
||||
14. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#cross
|
||||
15. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#multiple
|
||||
16. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#snapshot
|
||||
17. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#linuxkernel
|
||||
18. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#memexhausted
|
||||
19. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gas
|
||||
20. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#rh5.0
|
||||
21. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#x86solaris
|
||||
22. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#windows
|
||||
23. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#os2
|
||||
24. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#environ
|
||||
25. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#kde
|
||||
26. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#friend
|
||||
27. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#libg++
|
||||
28. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#autoconf/bison++
|
||||
29. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#aix
|
||||
30. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#gdb
|
||||
31. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#conflicts
|
||||
32. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#open-development
|
||||
33. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html#cathedral-vs-bazaar
|
||||
34. http://locke.ccil.org/~esr/writings/cathedral.html
|
||||
35. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.tar.gz
|
||||
36. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.bin.tar.gz
|
||||
37. ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.glibc.bin.tar.gz
|
||||
38. ftp://egcs.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz
|
||||
39. ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz
|
||||
40. ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1
|
||||
41. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/index.html#mailinglists
|
||||
42. http://www.cygnus.com/ml/egcs/1997-Dec/0594.html
|
||||
43. http://www.xraylith.wisc.edu/~khan/software/gnu-win32
|
||||
44. http://www.goof.com/pcg/os2
|
||||
45. ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz
|
||||
46. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/index.html
|
||||
26
INSTALL/FINALINSTALL
Normal file
26
INSTALL/FINALINSTALL
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
Final install egcs-1.0.3
|
||||
|
||||
Now that egcs has been built and tested, you can install it with `cd
|
||||
objdir; make install' for a native compiler or `cd objdir; make
|
||||
install LANGUAGES="c c++"' for a cross compiler (note installing cross
|
||||
compilers will be easier in the next release!).
|
||||
|
||||
That step completes the installation of egcs; user level binaries can
|
||||
be found in prefix/bin where prefix is the value you specified with
|
||||
the --prefix to configure (or /usr/local by default).
|
||||
|
||||
If you don't mind, please send egcs@cygnus.com a short mail message
|
||||
indicating that you successfully built and installed egcs. Include the
|
||||
output from running srcdir/config.guess.
|
||||
|
||||
If you find a bug in egcs, please report it to
|
||||
[1]egcs-bugs@cygnus.com.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
|
||||
References
|
||||
|
||||
1. mailto:egcs-bugs@cygnus.com
|
||||
46
INSTALL/INDEX
Normal file
46
INSTALL/INDEX
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
Installing egcs-1.0.3
|
||||
|
||||
This document describes the generic installation procedure for egcs as
|
||||
well as detailing some target specific installation instructions for
|
||||
egcs.
|
||||
|
||||
egcs includes several components that previously were separate
|
||||
distributions with their own installation instructions. This document
|
||||
supercedes all package specific installation instructions. We provide
|
||||
the component specific installation information in the source
|
||||
distribution for historical reference purposes only.
|
||||
|
||||
We recommend you read the entire generic installation instructions as
|
||||
well as any target specific installation instructions before you
|
||||
proceed to configure, build, test and install egcs.
|
||||
|
||||
If something goes wrong in the configure, build, test or install
|
||||
procedures, first double check that you followed the generic and
|
||||
target specific installation instructions carefully. Then check the
|
||||
[1]FAQ to see if your problem is covered before you file a bug report.
|
||||
|
||||
The installation procedure is broken into four steps.
|
||||
* [2]configure
|
||||
* [3]build
|
||||
* [4]test (optional)
|
||||
* [5]install
|
||||
|
||||
Before starting the build/install procedure please browse the
|
||||
[6]host/target specific installation notes.
|
||||
_________________________________________________________________
|
||||
|
||||
[7]Return to the egcs home page
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
|
||||
References
|
||||
|
||||
1. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/faq.html
|
||||
2. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/configure.html
|
||||
3. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/build.html
|
||||
4. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/test.html
|
||||
5. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/finalinstall.html
|
||||
6. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/INSTALL/specific.html
|
||||
7. file://localhost/.automount/hurl/root/puke/law/egcs-1.0.1/index.html
|
||||
14
INSTALL/README
Normal file
14
INSTALL/README
Normal file
@@ -0,0 +1,14 @@
|
||||
This directory contains installation instrutions for egcs-1.00.
|
||||
|
||||
We're providing installation instructions in two forms, html and
|
||||
plaintext.
|
||||
|
||||
index.html is the toplevel install file for html browsers.
|
||||
|
||||
INDEX is the toplevel install file in plaintext form.
|
||||
|
||||
The most recent HTML installation instructions for egcs can be obtained from
|
||||
the egcs web site:
|
||||
|
||||
http://www.cygnus.com/egcs/install
|
||||
|
||||
122
INSTALL/SPECIFIC
Normal file
122
INSTALL/SPECIFIC
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
Host/Target specific installation notes for egcs-1.0.1
|
||||
|
||||
alpha*-*-*
|
||||
No specific installation needs/instructions.
|
||||
|
||||
i?86-*-linux*
|
||||
You will need binutils-2.8.1.0.15 or newer for exception handling to
|
||||
work.
|
||||
|
||||
i?86-*-sco3.2v5*
|
||||
The SCO assembler is currently required. The GNU assembler is not up
|
||||
to the task of switching between ELF and COFF at runtime.
|
||||
Unlike various prereleases of GCC, that used '-belf' and defaulted to
|
||||
COFF, you must now use the '-melf' and '-mcoff' flags to toggle
|
||||
between the two object file formats. ELF is now the default.
|
||||
Look in gcc/config/i386/sco5.h (search for "messy") for additional
|
||||
OpenServer-specific flags.
|
||||
|
||||
i?86-pc-solaris*
|
||||
You'll need a patch to fix an egcs bug on this platform. [1]x86
|
||||
solaris patch
|
||||
|
||||
hppa*-hp-hpux*
|
||||
We highly recommend using gas/binutils-2.8 on all hppa platforms; you
|
||||
may encounter a variety of problems when using the HP assembler.
|
||||
|
||||
hppa*-hp-hpux9
|
||||
The HP assembler has major problems on this platform. We've tried to
|
||||
work around the worst of the problems. However, those workarounds may
|
||||
be causing linker crashes in some circumstances; the workarounds also
|
||||
probably prevent shared libraries from working. Use the GNU assembler
|
||||
to avoid these problems.
|
||||
The configuration scripts for egcs will also trigger a bug in the
|
||||
hpux9 shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and
|
||||
SHELL to /bin/ksh in your environment.
|
||||
|
||||
hppa*-hp-hpux10
|
||||
For hpux10.20, we highly recommend you pick up the latest sed patch
|
||||
from HP. HP has two sites which provide patches free of charge.
|
||||
[2]US, Canada, Asia-Pacific, and Latin-America
|
||||
[3]Europe
|
||||
|
||||
Retrieve patch PHCO_12862.
|
||||
|
||||
The HP assembler on these systems is much better than the hpux9
|
||||
assembler, but still has some problems. Most notably the assembler
|
||||
inserts timestamps into each object file it creates, causing the
|
||||
3-stage comparison test to fail during a "make bootstrap". You should
|
||||
be able to continue by saying "make all" after getting the failure
|
||||
from "make bootstrap".
|
||||
|
||||
m68k-*-nextstep*
|
||||
You absolutely must use GNU sed and GNU make on this platform.
|
||||
|
||||
If you try to build the integrated C++ & C++ runtime libraries on this
|
||||
system you will run into trouble with include files. The way to get
|
||||
around this is to use the following sequence. Note you must have write
|
||||
permission to prefix for this sequence to work.
|
||||
|
||||
cd objdir
|
||||
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld
|
||||
cd gcc
|
||||
make bootstrap
|
||||
make install-headers-tar
|
||||
cd ..
|
||||
make bootstrap3
|
||||
|
||||
m68k-sun-sunos4.1.1
|
||||
It is reported that you may need the GNU assembler on this platform.
|
||||
|
||||
mips*-sgi-irix4
|
||||
mips*-sgi-irix5
|
||||
You must use GAS on these platforms, the native assembler can not
|
||||
handle the code for exception handling support on this platform.
|
||||
|
||||
These systems don't have ranlib, which various components in egcs
|
||||
need; you should be able to avoid this problem by installing GNU
|
||||
binutils, which includes a functional ranlib for this system.
|
||||
|
||||
You may get the following warning on irix4 platforms, it can be safely
|
||||
ignored.
|
||||
|
||||
warning: foo.o does not have gp tables for all its sections.
|
||||
|
||||
mips*-sgi-irix6
|
||||
You must not use GAS on irix6 platforms; doing so will only cause
|
||||
problems.
|
||||
|
||||
These systems don't have ranlib, which various components in egcs
|
||||
need; you should be able to avoid this problem by making a dummy
|
||||
script called ranlib which just exits with zero status and placing it
|
||||
in your path.
|
||||
|
||||
rs6000-ibm-aix*
|
||||
powerpc-ibm-aix*
|
||||
At least one person as reported problems with older versions of
|
||||
gnu-make on this platform. make-3.76 is reported to work correctly.
|
||||
|
||||
powerpc-*-linux-gnu*
|
||||
You will need [4]binutils-2.8.1.0.17 for a working egcs. It is
|
||||
strongly recommended to recompile binutils with egcs if you initially
|
||||
built it with gcc-2.7.2.*.
|
||||
|
||||
sparc-unkonwn-linux-gnulibc1
|
||||
It has been reported that you might need binutils-2.8.1.0.17 for this
|
||||
platform too. [5]binutils-2.8.1.0.17
|
||||
|
||||
exception handling
|
||||
|
||||
XXX Linux stuff -k encaps stuff
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
|
||||
References
|
||||
|
||||
1. http://www.cygnus.com/egcs/faq.html#x86solaris
|
||||
2. http://us-support.external.hp.com/
|
||||
3. http://europe-support.external.hp.com/
|
||||
4. ftp://ftp.yggdrasil.com/private/hjl
|
||||
5. ftp://ftp.yggdrasil.com/private/hjl
|
||||
34
INSTALL/TEST
Normal file
34
INSTALL/TEST
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
Testing egcs-1.0.3
|
||||
|
||||
Before you install egcs, you might wish to run the egcs testsuite;
|
||||
this step is optional and may require you to download additional
|
||||
software.
|
||||
|
||||
First, you must have downloaded the egcs testsuites; the full
|
||||
distribution contains testsuites. If you downloaded the "core"
|
||||
compiler plus any front ends, then you do not have the testsuites. You
|
||||
can download the testsuites from the same site where you downloaded
|
||||
the core distribution and language front ends.
|
||||
|
||||
Second, you must have a new version of dejagnu on your system;
|
||||
dejagnu-1.3 will not work. We have made a [1]dejagnu snapshot
|
||||
available in egcs.cygnus.com:/pub/egcs/infrastructure until a new
|
||||
version of dejagnu can be released.
|
||||
|
||||
Assuming you've got the testsuites unpacked and have installed an
|
||||
appropriate dejagnu, you can run the testsuite with "cd objdir; make
|
||||
-k check". This may take a long time. Go get some lunch.
|
||||
|
||||
The testing process will try to test as many components in the egcs
|
||||
distrubution as possible, including the C, C++ and Fortran compiler as
|
||||
well as the C++ runtime libraries.
|
||||
|
||||
How to interpret test results TBD.
|
||||
_________________________________________________________________
|
||||
|
||||
Last modified on Jan 2, 1998.
|
||||
|
||||
References
|
||||
|
||||
1. ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz
|
||||
67
INSTALL/build.html
Normal file
67
INSTALL/build.html
Normal file
@@ -0,0 +1,67 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Building egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Building egcs-1.0.3</h1>
|
||||
|
||||
<p>Now that egcs is configured, you are ready to build the compiler and
|
||||
runtime libraries.
|
||||
|
||||
<p>We <b>highly</b> recommend that egcs be built using gnu-make; other
|
||||
versions make work, then again they might not. To be safe build with gnu-make.
|
||||
|
||||
<p><b>Building a native compiler</b>
|
||||
<p>For a native build issue the command "make bootstrap". This will build
|
||||
the entire egcs compiler system, which includes the following steps:
|
||||
|
||||
<ul>
|
||||
<li> Build host tools necessary to build the compiler such as texinfo, bison,
|
||||
gperf.<p>
|
||||
|
||||
<li> Build target tools for use by the compiler such as gas, gld, and
|
||||
binutils.<p>
|
||||
|
||||
<li> Perform a 3-stage bootstrap of the compiler.<p>
|
||||
|
||||
<li> Perform a comparison test of the stage2 and stage3 compilers.<p>
|
||||
|
||||
<li> Build runtime libraries using the stage3 compiler from the previous
|
||||
step.<p>
|
||||
</ul>
|
||||
|
||||
<p>If you are short on disk space you might consider "make bootstrap-lean"
|
||||
instead. This is identical to "make bootstrap" except that object files
|
||||
from the stage1 and stage2 of the 3-stage bootstrap of the compiler are
|
||||
deleted as soon as they are no longer needed.
|
||||
|
||||
<p><b>Building a cross compiler</b>
|
||||
|
||||
<p> We recommend reading the
|
||||
<a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
|
||||
crossgcc FAQ</a> for information about building cross compilers.
|
||||
|
||||
<p>For a cross build, issue the command "make cross", which performs the
|
||||
following steps:
|
||||
<ul>
|
||||
<li> Build host tools necessary to build the compiler such as texinfo, bison,
|
||||
gperf.<p>
|
||||
|
||||
<li> Build target tools for use by the compiler such as gas, gld, and
|
||||
binutils.<p>
|
||||
|
||||
<li> Build the compiler (single stage only).<p>
|
||||
|
||||
<li> Build runtime libraries using the compiler from the previous
|
||||
step.<p>
|
||||
</ul>
|
||||
|
||||
<p>Note that if an error occurs in any step the make process will exit.
|
||||
|
||||
<p>
|
||||
<hr>
|
||||
<i>Last modified on Jan 2, 1998.</i>
|
||||
|
||||
<!--#include virtual="/glimpsebox.html"-->
|
||||
</body>
|
||||
</html>
|
||||
122
INSTALL/configure.html
Normal file
122
INSTALL/configure.html
Normal file
@@ -0,0 +1,122 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Configuring egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Configuring egcs-1.0.3</h1>
|
||||
|
||||
<p>Like most GNU software, egcs must be configured before it can be built.
|
||||
This document attempts to describe the recommended configuration procedure
|
||||
for both native and cross targets.
|
||||
|
||||
<p>We use <i>srcdir</i> to refer to the toplevel source directory for
|
||||
egcs; we use <i>objdir</i> to refer to the toplevel build/object
|
||||
directory for egcs.
|
||||
|
||||
<p>First, we <b>highly</b> recommend that egcs be built into a separate
|
||||
directory than the sources. This is how we generally build egcs; building
|
||||
where <i>srcdir</i> == <i>objdir</i> should still work, but doesn't get
|
||||
extensive testing.
|
||||
|
||||
<p>Second, when configuring a native system, either "cc" must be in your
|
||||
path or you must set CC in your environment before running configure.
|
||||
Otherwise the configuration scripts may fail.
|
||||
|
||||
<p>To configure egcs:
|
||||
|
||||
<blockquote>
|
||||
<tt>
|
||||
<br>% mkdir <i>objdir</i>
|
||||
<br>% cd <i>objdir</i>
|
||||
<br>% <i>srcdir</i>/configure <b>[target]</b> <b>[options]</b>
|
||||
</tt>
|
||||
</blockquote>
|
||||
|
||||
|
||||
<p><b>target specification</b>
|
||||
<ul>
|
||||
<li> egcs has code to correctly determine the correct value for
|
||||
<b>target</b> for nearly all native systems. Therefore, we highly
|
||||
recommend you not provide a configure target when configuring a
|
||||
native compiler.
|
||||
|
||||
<li> <b>target</b> must be specified when configuring a cross compiler;
|
||||
examples of valid targets would be i960-rtems, m68k-coff, sh-elf, etc.
|
||||
</ul>
|
||||
|
||||
|
||||
<p><b> options specification</b>
|
||||
|
||||
<p>Use <b>options</b> to override several configure time options for
|
||||
egcs. A partial list of supported <tt>options</tt>:
|
||||
|
||||
<ul>
|
||||
<li> <tt>--prefix=</tt><i>dirname</i> -- Specify the toplevel installation
|
||||
directory. This is the recommended way to install the tools into a directory
|
||||
other than the default. The toplevel installation directory defaults to
|
||||
/usr/local.
|
||||
|
||||
<br>These additional options control where certain parts of the distribution
|
||||
are installed. Normally you should not need to use these options.
|
||||
<ul>
|
||||
<li> <tt>--with-local-prefix=</tt><i>dirname</i> -- Specify the installation
|
||||
directory for local include files. The default is /usr/local.
|
||||
|
||||
<li> <tt>--with-gxx-include-dir=</tt><i>dirname</i> -- Specify the installation
|
||||
directory for g++ header files. The default is /usr/local/include/g++.
|
||||
</ul>
|
||||
|
||||
<li> <tt>--enable-shared</tt> -- Build shared versions of the C++ runtime
|
||||
libraries if supported <tt>--disable-shared</tt> is the default.
|
||||
|
||||
<li> <tt>--enable-haifa</tt> -- Enable the new Haifa instruction scheduler in the
|
||||
compiler; the new scheduler can significantly improve code on some targets.
|
||||
<tt>--disable-haifa</tt> is currently the default on all platforms except the HPPA.
|
||||
|
||||
<li> <tt>--with-gnu-as</tt> -- Specify that the compiler should assume the GNU
|
||||
assembler (aka gas) is available.
|
||||
|
||||
<li> <tt>--with-gnu-ld</tt> -- Specify that the compiler should assume the GNU
|
||||
linker (aka gld) is available.
|
||||
|
||||
<li> <tt>--with-stabs</tt> -- Specify that stabs debugging information should be used
|
||||
instead of whatever format the host normally uses. Normally GCC uses the
|
||||
same debug format as the host system.
|
||||
|
||||
<li> <tt>--enable-multilib</tt> -- Specify that multiple target libraries
|
||||
should be built to support different target variants, calling conventions,
|
||||
etc. This is the default.
|
||||
|
||||
<li> <tt>--enable-threads</tt> -- Specify that the target supports threads.
|
||||
This only effects the Objective-C compiler and runtime library.
|
||||
|
||||
<li> <tt>--enable-threads=</tt><i>lib</i> -- Specify that <i>lib</i> is the
|
||||
thread support library. This only effects the Objective-C compiler and
|
||||
runtime library.
|
||||
|
||||
<li> <tt>--with-cpu=</tt><i>cpu</i> -- Specify which cpu variant the compiler should
|
||||
generate code for by default. This is currently only supported on the
|
||||
RS6000/PowerPC ports.
|
||||
</ul>
|
||||
|
||||
<p>Some options which only apply to building cross compilers:
|
||||
<ul>
|
||||
<li> <tt>--with-headers=</tt><i>dir</i> -- Specifies a directory which has target
|
||||
include files.
|
||||
<li> <tt>--with-libs=</tt><i>dirs</i> -- Specifies a list of directories which contain
|
||||
the target runtime libraries.
|
||||
<li> <tt>--with-newlib</tt> -- Specifies that "newlib" is being used as the target
|
||||
C library. This causes __eprintf to be omitted from libgcc.a on the
|
||||
assumption that it will be provided by newlib.
|
||||
</ul>
|
||||
|
||||
<p>Note that each <tt>--enable</tt> option has a corresponding <tt>--disable</tt> option and
|
||||
that each <tt>--with</tt> option has a corresponding <tt>--without</tt> option.
|
||||
|
||||
|
||||
<p>
|
||||
<hr>
|
||||
<i>Last modified on Jan 2, 1998.</i>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
583
INSTALL/faq.html
Normal file
583
INSTALL/faq.html
Normal file
@@ -0,0 +1,583 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>egcs Frequently Asked Questions</title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">egcs Frequently Asked Questions</h1>
|
||||
|
||||
<ol>
|
||||
<li><a href="#gcc-2-diff">How is egcs different from gcc2?</a>
|
||||
<li><a href="#open-development">What is an open development model?</a>
|
||||
<li><a href="#release-fork">Releases and Forking</a>
|
||||
<li><a href="#libc-lock">bits/libc-lock.h: No such file or directory</a>
|
||||
<li><a href="#morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a>
|
||||
<li><a href="#fortran">Problems building the Fortran compiler</a>
|
||||
<li><a href="#mips">Problems building on MIPS platforms</a>
|
||||
<li><a href="#x86eh">Problems with exception handling on x86 platforms</a>
|
||||
<li><a href="#hpcompare">Bootstrap comparison failures on HPs</a>
|
||||
<li><a href="#makebugs">Bootstrap loops rebuilding cc1 over and over</a>
|
||||
<li><a href="#rpath">Dynamic linker is unable to find GCC libraries</a>
|
||||
<li><a href="#rpath">libstdc++/libio tests fail badly with --enable-shared</a>
|
||||
<li><a href="#dejagnu">Unable to run the testsuite</a>
|
||||
<li><a href="#cross">How to build a cross compiler</a>
|
||||
<li><a href="#multiple">How to install both gcc2 and egcs</a>
|
||||
<li><a href="#snapshot">Snapshots, how, when, why</a>
|
||||
<li><a href="#linuxkernel">Problems building Linux kernels</a>
|
||||
<li><a href="#memexhausted">Virtual memory exhausted</a>
|
||||
<li><a href="#gas">GCC can not find GAS</a>
|
||||
<li><a href="#rh5.0">egcs does not work on Red Hat 5.0</a>
|
||||
<li><a href="#x86solaris">Unable to bootstrap on x86 Solaris2.{5,6}</a>
|
||||
<li><a href="#windows">EGCS with Windows</a>
|
||||
<li><a href="#os2">EGCS with OS/2</a>
|
||||
<li><a href="#environ">cpp: Usage:... Error</a>
|
||||
<li><a href="#kde">EGCS will not build KDE</a>
|
||||
<li><a href="#friend">Friend Templates</a>
|
||||
<li><a href="#libg++">Where to find libg++</a>
|
||||
<li><a href="#autoconf/bison++">Why do I need autoconf & bison</a>
|
||||
<li><a href="#aix">EGCS does not work on AIX 4.3</a>
|
||||
<li><a href="#gdb">Problems debugging egcs code</a>
|
||||
<li><a href="#conflicts">Conflicts when using cvs update </a>
|
||||
</ol>
|
||||
|
||||
<hr>
|
||||
<h2><a name="gcc-2-diff">How is egcs be different from gcc2?</a></h2>
|
||||
|
||||
<p>Six years ago, gcc version 1 had reached a point of stability. For the
|
||||
targets it could support, it worked well. It had limitations inherent in
|
||||
its design that would be difficult to resolve, so a major effort was made
|
||||
and gcc version 2 was the result. When we had gcc2 in a useful state,
|
||||
development efforts on gcc1 stopped and we all concentrated on making
|
||||
gcc2 better than gcc1 could ever be. This is the kind of step forward
|
||||
we want to make with egcs.
|
||||
|
||||
<p>In brief, the three biggest differences between egcs and gcc2 are:
|
||||
|
||||
<ul>
|
||||
<li>More rexamination of basic architectual decisions of
|
||||
gcc and an interest in adding new optimizations;
|
||||
|
||||
<li>working with the groups who have fractured out from gcc2 (like
|
||||
the Linux folks, the Intel optimizations folks, Fortran folks)
|
||||
including more front-ends; and finally
|
||||
|
||||
<li>An open development model (<a
|
||||
href="#open-development">see below</a>) for the development process.
|
||||
</ul>
|
||||
|
||||
<p>These three differences will work together to result in a more
|
||||
useful compiler, a more stable compiler, a central compiler that works
|
||||
for more people, a compiler that generates better code.
|
||||
|
||||
|
||||
<p>There are a lot of exciting compiler optimizations that have come
|
||||
out. We want them in gcc. There are a lot of front ends out there for
|
||||
gcc for languages like Fortran or Pascal. We want them easily
|
||||
installable by users. After six years of working on gcc2, we've come
|
||||
to see problems and limitations in the way gcc is architected; it is
|
||||
time to address these again.
|
||||
|
||||
<hr>
|
||||
<h2><a name="open-development">What is an open development model?</a></h2>
|
||||
|
||||
<p>With egcs, we are going to try a bazaar style<a
|
||||
href="#cathedral-vs-bazaar"><b>[1]</b></a> approach to its
|
||||
development: We're going to be making snapshots publicly available
|
||||
to anyone who wants to try them; we're going to welcome anyone to join
|
||||
the development mailing list. All of the discussions on the
|
||||
development mailing list are available via the web. We're going to be
|
||||
making releases with a much higher frequency than they have been made
|
||||
in the past: We're shooting for three by the end of 1997.
|
||||
|
||||
<p>In addition to weekly snapshots of the egcs development sources, we
|
||||
are going to look at making the sources readable from a CVS server by
|
||||
anyone. We want to make it so external maintainers of parts of egcs
|
||||
are able to commit changes to their part of egcs directly into the
|
||||
sources without going through an intermediary.
|
||||
|
||||
<p>There have been many potential gcc developers who were not able to
|
||||
participate in gcc development in the past. We these people to help in
|
||||
any way they can; we ultimately want gcc to be the best compiler in the
|
||||
world.
|
||||
|
||||
<p>A compiler is a complicated piece of software, there will still be
|
||||
strong central maintainers who will reject patches, who will demand
|
||||
documentation of implementations, and who will keep the level of
|
||||
quality as high as it is today. Code that could use wider testing may
|
||||
be intergrated--code that is simply ill-conceived won't be.
|
||||
|
||||
<p>egcs is not the first piece of software to use this open development
|
||||
process; FreeBSD, the Emacs lisp repository, and Linux are a few
|
||||
examples of the bazaar style of development.
|
||||
|
||||
<p>With egcs, we will be adding new features and optimizations at a
|
||||
rate that has not been done since the creation of gcc2; these additions
|
||||
will inevitably have a temporarily destabilizing effect. With the help
|
||||
of developers working together with this bazaar style development, the
|
||||
resulting stability and quality levels will be better than we've had
|
||||
before.
|
||||
|
||||
<blockquote>
|
||||
<a name="cathedral-vs-bazaar"><b>[1]</b></a>
|
||||
We've been discussing different development models a lot over the
|
||||
past few months. The paper which started all of this introduced two
|
||||
terms: A <b>cathedral</b> development model versus a <b>bazaar</b>
|
||||
development model. The paper is written by Eric S. Raymond, it is
|
||||
called ``<a
|
||||
href="http://locke.ccil.org/~esr/writings/cathedral.html">The
|
||||
Cathedral and the Bazaar</a>''. The paper is a useful starting point
|
||||
for discussions.
|
||||
</blockquote>
|
||||
|
||||
<hr>
|
||||
<h2><a name="release-fork">Releases and Forking?</a></h2>
|
||||
<p>Some folks have questioned whether or not making releases is consistent
|
||||
with the goals of the egcs project and whether or not making releases is
|
||||
a fork from gcc2.
|
||||
|
||||
<pre>
|
||||
The egcs project has several goals, including:
|
||||
|
||||
* Experimenting with a new development model, release process and
|
||||
release packaging,
|
||||
|
||||
* Using the new development model to accelerate development of new
|
||||
features, optimizations, etc for future inclusion in gcc,
|
||||
|
||||
* Providing high quality releases to the public.
|
||||
|
||||
An egcs release is a copy of the egcs sources that the developers have
|
||||
tested and are believed to be suitable for wider scale use and testing.
|
||||
|
||||
Making releases of stable, tested sources is both a goal and a means by
|
||||
which we hope to achieve other goals of the egcs project.
|
||||
|
||||
The existence of a stable tested release allows egcs to be more thoroughly
|
||||
used and tested by a wider audience than is capable of testing snapshots.
|
||||
The expanded audience provides developers with critical feedback in a
|
||||
timely manner, which is beneficial to GCC as a whole and is consistent with
|
||||
the stated goals of egcs.
|
||||
|
||||
The gcc maintainers are encouraged to migrate tested fixes and new features
|
||||
from egcs into gcc at their discretion. egcs maintainers are willing to
|
||||
assist the gcc maintainers as time permits. egcs periodically merges in
|
||||
changes from gcc into the egcs sources.
|
||||
|
||||
What will keep egcs from becoming a fork is cooperation between the
|
||||
developers of gcc and egcs.
|
||||
|
||||
We don't see this situation as significantly different than other projects
|
||||
that make releases based on some version of the gcc sources (Cygnus, g77,
|
||||
etc). All the code is still available for inclusion in gcc at the discretion
|
||||
of the gcc maintainers.
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<h2><a name="libc-lock">bits/libc-lock.h: No such file or directory</a></h2>
|
||||
<p>This entry should be obsolete, egcs should handle these beta versions of
|
||||
glibc2 correctly.
|
||||
|
||||
<p>egcs includes a tightly integrated libio and libstdc++ implementation which
|
||||
can cause problems on hosts which have libio integrated into their C library
|
||||
(most notably Linux).
|
||||
|
||||
<p>We believe that we've solved the major technical problems for the most
|
||||
common versions of libc found on Linux systems. However, some versions
|
||||
of Linux use pre-release versions of glibc2, which egcs has trouble detecting
|
||||
and correctly handling.
|
||||
|
||||
<p>If you're using one of these pre-release versions of glibc2, you may get
|
||||
a message "bits/libc-lock.h: No such file or directory" when building egcs.
|
||||
Unfortunately, to fix this problem you will need to update your C library to
|
||||
glibc2.0.5c.
|
||||
|
||||
<hr>
|
||||
<h2><a name="morelibc">`_IO_stdfile_0_lock' was not declared in this scope</a></h2>
|
||||
<p>If you get this error, it means either egcs incorrectly guessed what version
|
||||
of libc is installed on your linux system, or you incorrectly specified a
|
||||
version of glibc when configuring egcs.
|
||||
|
||||
<p>If you did not provide a target name when configuring egcs, then you've
|
||||
found a bug which needs to be reported. If you did provide a target name at
|
||||
configure time, then you should reconfigure without specifying a target name.
|
||||
|
||||
<hr>
|
||||
<h2><a name="fortran">Problems building the Fortran compiler</a></h2>
|
||||
<p>The Fortran front end can not be built with most vendor compilers; it must
|
||||
be built with gcc. As a result, you may get an error if you do not follow
|
||||
the install instructions carefully.
|
||||
|
||||
<p>In particular, instead of using "make" to build egcs, you should use
|
||||
"make bootstrap" if you are building a native compiler or "make cross"
|
||||
if you are building a cross compiler.
|
||||
|
||||
<p>It has also been reported that the Fortran compiler can not be built
|
||||
on Red Hat 4.X linux for the Alpha. Fixing this may require upgrading
|
||||
binutils or to Red Hat 5.0; we'll provide more information as it becomes
|
||||
available.
|
||||
|
||||
<hr>
|
||||
<h2><a name="mips">Problems building on MIPS platforms</a></h2>
|
||||
<p>egcs requires the use of GAS on all versions of Irix, except Irix 6 due
|
||||
to limitations in older Irix assemblers.
|
||||
|
||||
<p> Either of these messages indicates that you are using the MIPS assembler
|
||||
when instead you should be using GAS.
|
||||
|
||||
<pre>
|
||||
as0: Error: ./libgcc2.c, line 1:Badly delimited numeric literal
|
||||
.4byte $LECIE1-$LSCIE1
|
||||
as0: Error: ./libgcc2.c, line 1:malformed statement
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<pre>
|
||||
as0: Error: /home/law/egcs_release/gcc/libgcc2.c, line 1:undefined symbol in expression
|
||||
.word $LECIE1-$LSCIE1
|
||||
|
||||
</pre>
|
||||
|
||||
|
||||
<p> For Irix 6, you should use the native assembler as GAS is not supported
|
||||
on Irix 6.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="x86eh">Problems with exception handling on x86 platforms</a></h2>
|
||||
<p>If you are using the GNU assembler (aka gas) on an x86 platform and
|
||||
exception handling is not working correctly, then odds are you're using a
|
||||
buggy assembler.
|
||||
|
||||
<p>We recommend binutils-2.8.1.0.15 or newer.
|
||||
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.tar.gz"> binutils-2.8.1.0.20 source</a>
|
||||
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.bin.tar.gz"> binutils-2.8.1.0.20 x86 binary for libc5</a>
|
||||
<br><a href="ftp://tsx-11.mit.edu/pub/linux/packages/GCC/binutils-2.8.1.0.20.glibc.bin.tar.gz"> binutils-2.8.1.0.20 x86 binary for glibc2</a>
|
||||
Or, you can try a
|
||||
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/gas-970915.tar.gz"> binutils snapshot</a>; however, be aware that the binutils snapshot is untested
|
||||
and may not work (or even build). Use it at your own risk.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="hpcompare">Bootstrap comparison failures on HPs</a></h2>
|
||||
<p>If you bootstrap the compiler on hpux10 using the HP assembler instead of
|
||||
gas, every file will fail the comparison test.
|
||||
|
||||
<p>The HP asembler inserts timestamps into object files it creates, causing
|
||||
every file to be different. The location of the timestamp varies for each
|
||||
object file, so there's no real way to work around this mis-feature.
|
||||
|
||||
<p>Odds are your compiler is fine, but there's no way to be certain.
|
||||
|
||||
<p>If you use GAS on HPs, then you will not run into this problem because
|
||||
GAS never inserts timestamps into object files. For this and various other
|
||||
reasons we highly recommend using GAS on HPs.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="makebugs">Bootstrap loops rebuilding cc1 over and over</a></h2>
|
||||
<p>When building egcs, the build process loops rebuilding cc1 over and
|
||||
over again. This happens on mips-sgi-irix5.2, and possibly other platforms.
|
||||
|
||||
<p>This is probably a bug somewhere in the egcs Makefile. Until we find and
|
||||
fix this bug we recommend you use GNU make instead of vendor supplied make
|
||||
programs.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="rpath">Dynamic linker is unable to find GCC libraries</a></h2>
|
||||
<p>This problem manifests itself by programs not finding shared libraries
|
||||
they depend on when the programs are started. Note this problem often manifests
|
||||
itself with failures in the libio/libstdc++ tests after configuring with
|
||||
--enable-shared and building egcs.
|
||||
|
||||
<p>GCC does not specify a runpath so that the dynamic linker can find dynamic
|
||||
libraries at runtime.
|
||||
|
||||
<p>The short explaination is that if you always pass a -R option to the
|
||||
linker, then your programs become dependent on directories which
|
||||
may be NFS mounted, and programs may hang unnecessarily when an
|
||||
NFS server goes down.
|
||||
|
||||
<p>The problem is not programs that do require the directories; those
|
||||
programs are going to hang no matter what you do. The problem is
|
||||
programs that do not require the directories.
|
||||
|
||||
<p>SunOS effectively always passed a -R option for every -L option;
|
||||
this was a bad idea, and so it was removed for Solaris. We should
|
||||
not recreate it.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="dejagnu">Unable to run the testsuite</a></h2>
|
||||
<p>If you get a message about unable to find "standard.exp" when trying to
|
||||
run the egcs testsuites, then your dejagnu is too old to run the egcs tests.
|
||||
You will need to get a newer version of dejagnu; we've made a
|
||||
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz">
|
||||
dejagnu snapshot</a> available until a new version of dejagnu can be released.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="cross">How to build a cross compiler</a></h2>
|
||||
<p> Building cross compilers is a rather complex undertaking because they
|
||||
usually need additional software (cross assembler, cross linker, target
|
||||
libraries, target include files, etc).
|
||||
|
||||
<p> We recommend reading the <a href="ftp://ftp.cygnus.com/pub/embedded/crossgcc/FAQ-0.8.1">
|
||||
crossgcc FAQ</a> for information about building cross compilers.
|
||||
|
||||
<p> If you have all the pieces available, then `make cross' should build a
|
||||
cross compiler. `make LANGUAGES="c c++" install'will install the cross
|
||||
compiler.
|
||||
|
||||
<p> Note that if you're trying to build a cross compiler in a tree which
|
||||
includes binutils-2.8 in addition to egcs, then you're going to need to
|
||||
make a couple minor tweaks so that the cross assembler, linker and
|
||||
nm utilities will be found.
|
||||
|
||||
<p>binutils-2.8 builds those files as gas.new, ld.new and nm.new; egcs gcc
|
||||
looks for them using gas-new, ld-new and nm-new, so you may have to arrange
|
||||
for any symlinks which point to <file>.new to be changed to <file>-new.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="snapshot">Snapshots, how, when, why</a></h2>
|
||||
<p> We make snapshots of the egcs sources about once a week; there is no
|
||||
predetermined schedule. These snapshots are intended to give everyone
|
||||
access to work in progress. Any given snapshot may generate incorrect code
|
||||
or even fail to build.
|
||||
|
||||
<p>If you plan on downloading and using snapshots, we highly recommend you
|
||||
subscribe to the egcs mailing lists. See <a href="index.html#mailinglists">
|
||||
mailing lists</a> on the main egcs page for instructions on how to subscribe.
|
||||
|
||||
<p>When using the diff files to update from older snapshots to newer snapshots,
|
||||
make sure to use "-E" and "-p" arguments to patch so that empty files are
|
||||
deleted and full pathnames are provided to patch. If your version of
|
||||
patch does not support "-E", you'll need to get a newer version. Also note
|
||||
that you may need autoconf, autoheader and various other programs if you use
|
||||
diff files to update from one snapshot to the next.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="multiple">How to install both egcs and gcc2</a></h2>
|
||||
<p>It may be desirable to install both egcs and gcc2 on the same system. This
|
||||
can be done by using different prefix paths at configure time and a few
|
||||
symlinks.
|
||||
|
||||
<p>Basically, configure the two compilers with different --prefix options,
|
||||
then build and install each compiler. Assume you want "gcc" to be the egcs
|
||||
compiler and available in /usr/local/bin; also assume that you want "gcc2"
|
||||
to be the gcc2 compiler and also available in /usr/local/bin.
|
||||
|
||||
<p>The easiest way to do this is to configure egcs with --prefix=/usr/local/egcs
|
||||
and gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers.
|
||||
Then make a symlink from /usr/local/bin/gcc to /usr/local/egcs/bin/gcc and
|
||||
from /usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links
|
||||
for the "g++", "c++" and "g77" compiler drivers.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="linuxkernel">Problems building Linux kernels</a></h2>
|
||||
<p>If you installed a recent binutils/gas snapshot on your Linux system,
|
||||
you may not be able to build the kernel because objdump does not understand
|
||||
the "-k" switch. The solution for this problem is to remove /usr/bin/encaps.
|
||||
|
||||
<p>The reason you must remove /usr/bin/encaps is because it is an obsolete
|
||||
program that was part of older binutils distributions; the Linux kernel's
|
||||
Makefile looks for this program to decide if you have an old or a new
|
||||
binutils. Problems occur if you installed a new binutils but haven't
|
||||
removed encaps, because the Makefile thinks you have the old one. So zap
|
||||
it; trust us, you won't miss it.
|
||||
|
||||
<p>You may get an internal compiler error compiling process.c in newer
|
||||
versions of the Linux kernel on x86 machines. This is a bug in an asm
|
||||
statement in process.c, not a bug in egcs. XXX How to fix?!?
|
||||
|
||||
<p>You may get errors with the X driver of the form
|
||||
<pre>
|
||||
_X11TransSocketUNIXConnect: Can't connect: errno = 111
|
||||
</pre>
|
||||
|
||||
<p>It's a kernel bug. The function sys_iopl in arch/i386/kernel/ioport.c
|
||||
does an illegal hack which used to work but is now broken since GCC optimizes
|
||||
more aggressively . The newer 2.1.x kernels already have a fix which should
|
||||
also work in 2.0.32.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="memexhausted">Virtual memory exhausted error</a></h2>
|
||||
<p> This error means your system ran out of memory; this can happen for large
|
||||
files, particularly when optimizing. If you're getting this error you should
|
||||
consider trying to simplify your files or reducing the optimization level.
|
||||
|
||||
<p>Note that using -pedantic or -Wreturn-type can cause an explosion in the
|
||||
amount of memory needed for template-heavy C++ code, such as code that uses
|
||||
STL. Also note that -Wall includes -Wreturn-type, so if you use -Wall you
|
||||
will need to specify -Wno-return-type to turn it off.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="gas">GCC can not find GAS</a></h2>
|
||||
<p>Some configurations like irix4, irix5, hpux* require the use of the GNU
|
||||
assembler intead of the system assembler. To ensure that egcs finds the GNU
|
||||
assembler, you should configure the GNU assembler with the same --prefix
|
||||
option as you used for egcs. Then build & install the GNU assembler. After
|
||||
the GNU assembler has been installed, proceed with building egcs.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="rh5.0">egcs does not work on Red Hat 5.0</a></h2>
|
||||
<p> This entry is obsolete with the release of egcs-1.0.1 which should
|
||||
handle Red Hat 5.0 correctly.
|
||||
|
||||
<p> egcs-1.0 does not currently work with Red Hat 5.0 on some platforms; we'll
|
||||
update this entry with more information as it becomes available.
|
||||
|
||||
<p> You may want to try this
|
||||
<a href="http://www.cygnus.com/ml/egcs/1997-Dec/0594.html"> proposed patch</a>
|
||||
for Red Hat 5.0. Please let us know if you use this patch and whether or
|
||||
not it works.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="x86solaris">Unable to bootstrap on x86 Solaris 2.{5,6}</a></h2>
|
||||
<p> This entry is obsolete with the release of egcs-1.0.1 which should
|
||||
handle x86 Solaris systems correctly.
|
||||
|
||||
<p>This patch should fix the problem
|
||||
|
||||
<pre>
|
||||
Index: t-sol2
|
||||
===================================================================
|
||||
RCS file: /cvs/cvsfiles/egcs/gcc/config/i386/t-sol2,v
|
||||
retrieving revision 1.2
|
||||
diff -c -3 -p -r1.2 t-sol2
|
||||
*** t-sol2 1997/09/04 23:54:04 1.2
|
||||
--- t-sol2 1997/12/04 07:19:07
|
||||
*************** crtn.o: $(srcdir)/config/i386/sol2-cn.as
|
||||
*** 31,36 ****
|
||||
# to produce a shared library, but since we don't know ahead of time when
|
||||
# we will be doing that, we just always use -fPIC when compiling the
|
||||
# routines in crtstuff.c.
|
||||
|
||||
! CRTSTUFF_T_CFLAGS = -fPIC
|
||||
TARGET_LIBGCC2_CFLAGS = -fPIC
|
||||
--- 31,40 ----
|
||||
# to produce a shared library, but since we don't know ahead of time when
|
||||
# we will be doing that, we just always use -fPIC when compiling the
|
||||
# routines in crtstuff.c.
|
||||
+ #
|
||||
+ # We must also enable optimization to avoid having any code appear after
|
||||
+ # the call & alignment statement, but before we switch back to the
|
||||
+ # .text section.
|
||||
|
||||
! CRTSTUFF_T_CFLAGS = -fPIC -O2
|
||||
TARGET_LIBGCC2_CFLAGS = -fPIC
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<h2> <a name="windows">EGCS with Windows</a></h2>
|
||||
<p>egcs does not currently support windows, either natively or with the
|
||||
cygwin32 dll. However Mumit Khan has been working on supporting Windows
|
||||
with egcs. You should check out his site if you're interested in Windows
|
||||
support.
|
||||
<a href="http://www.xraylith.wisc.edu/~khan/software/gnu-win32">GNU Win32 related projects</a>
|
||||
|
||||
<hr>
|
||||
<h2> <a name="os2">EGCS with OS/2</a></h2>
|
||||
<p>egcs does not currently support OS/2. However, Andrew Zabolotny has been
|
||||
working on a generic os/2 port with pgcc. The current code code can be found
|
||||
at <a href="http://www.goof.com/pcg/os2">http://www.goof.com/pcg/os2</a>.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="environ">cpp: Usage:... Error</a></h2>
|
||||
<p>If you get an error like this when building egcs (particularly when building
|
||||
__mulsi3), then you likely have a problem with your environment variables.
|
||||
<pre>
|
||||
cpp: Usage: /usr/lib/gcc-lib/i586-unknown-linux-gnulibc1/2.7.2.3/cpp
|
||||
[switches] input output
|
||||
</pre>
|
||||
|
||||
<p>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.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="kde">EGCS will not build KDE</a></h2>
|
||||
<p> Previous versions of g++ accepted (as a GNU extension)
|
||||
constructor-arguments for the objects in an array of objects
|
||||
dynamically allocated with new. Here's an example of this construct:
|
||||
|
||||
<pre>
|
||||
struct S { S(int); }
|
||||
void f() { new S[3](6); }
|
||||
</pre>
|
||||
|
||||
<p>However, this construct is not allowed by the ANSI/ISO Standard, and
|
||||
is no longer accepted by g++.
|
||||
|
||||
<p> KDE uses such constructs and therefore will not build with egcs; note
|
||||
patches are available to fix KDE.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="friend">Friend Templates<a></h2>
|
||||
<p>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. An error in
|
||||
the last public comment draft of the ANSI/ISO C++ Standard has led
|
||||
people to believe that was not necessary, but it is, and it was fixed
|
||||
in the final version of the Standard.
|
||||
|
||||
<hr>
|
||||
<h2> <a name="libg++">Where to find libg++<a></h2>
|
||||
<p>Many folks have been asking where to find libg++ for egcs. First we
|
||||
should point out that few programs actually need libg++; most only need
|
||||
libstdc++/libio which are included in the egcs distribution.
|
||||
|
||||
<p>If you do need libg++ you can get a libg++ snapshot which works with egcs
|
||||
from <a href="ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz">
|
||||
ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980119.tar.gz</a>
|
||||
|
||||
<hr>
|
||||
<h2> <a name="autoconf/bison++">Why do I need autoconf/bison<a></h2>
|
||||
<p>If you're using diffs up dated from one snapshot to the next, or
|
||||
if you're using the CVS repository, you may need autoconf, bison, or
|
||||
possibly other tools to rebuild egcs.
|
||||
|
||||
<p>This is necessary because neither diff nor cvs keep timestamps
|
||||
correct. So it is possible for "make" to think a generated file is
|
||||
out of date.
|
||||
|
||||
<p>If you do not have autoconf, bison, etc, then you can issue the
|
||||
following commands to touch all the generated files.
|
||||
|
||||
<pre>
|
||||
touch `find egcs -name configure -print`
|
||||
touch egcs/gcc/c-parse.y
|
||||
touch egcs/gcc/objc/objc-parse.y
|
||||
touch egcs/gcc/{cstamp-h.in,c-gperf.h,c-parse.c,c-parse.h,cexp.c}
|
||||
touch egcs/gcc/cp/{parse.c,parse.h}
|
||||
touch egcs/gcc/objc/objc-parse.c
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
<h2> <a name="aix">EGCS does not work on AIX 4.3<a></h2>
|
||||
<p>EGCS does not currently support AIX4.3; however, if you want to try
|
||||
and make it work with AIX 4.3 we highly recommend you get the
|
||||
fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
|
||||
ASSEMBLE/BIND) which is available from IBM Customer Support and IBM's
|
||||
service.boulder.ibm.com website.
|
||||
|
||||
<hr>
|
||||
<h2><a name="gdb">Problems debugging egcs code</a></h2>
|
||||
<p>On some systems egcs will produce dwarf debug records by default; however
|
||||
the current gdb-4.16 release may not be able to read such debug records.
|
||||
|
||||
<p>You can either use the argument "-gstabs" instead of "-g" or pick up
|
||||
the current beta copy of gdb-4.17 to work around the problem.
|
||||
|
||||
<hr>
|
||||
<h2><a name="conflicts">Conflicts when using cvs update</a></h2>
|
||||
<p>It is not uncommon to get cvs conflict messages for some generated files
|
||||
when updating your local sources from the CVS repository. Typically such
|
||||
conflicts occur with bison or autoconf generated files.
|
||||
|
||||
<p>As long as you haven't been making modifications to the generated files
|
||||
or the generator files, it is safe to delete the offending file, then run
|
||||
cvs update again to get a new copy.
|
||||
|
||||
<hr>
|
||||
<p><a href="index.html">Return to the egcs home page</a>
|
||||
<p><i>Last modified: March 04, 1998</i>
|
||||
|
||||
<!--#include virtual="/glimpsebox.html"-->
|
||||
</body>
|
||||
</html>
|
||||
30
INSTALL/finalinstall.html
Normal file
30
INSTALL/finalinstall.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Final install egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Final install egcs-1.0.3</h1>
|
||||
|
||||
<p>Now that egcs has been built and tested, you can install it with
|
||||
`cd <i>objdir</i>; make install' for a native compiler or
|
||||
`cd <i>objdir</i>; make install LANGUAGES="c c++"' for a cross compiler
|
||||
(note installing cross compilers will be easier in the next release!).
|
||||
|
||||
|
||||
<p>That step completes the installation of egcs; user level binaries can
|
||||
be found in <i>prefix</i>/bin where <i>prefix</i> is the value you specified
|
||||
with the --prefix to configure (or /usr/local by default).
|
||||
|
||||
<p>If you don't mind, please send egcs@cygnus.com a short mail message
|
||||
indicating that you successfully built and installed egcs. Include
|
||||
the output from running <i>srcdir</i>/config.guess.
|
||||
|
||||
<p>If you find a bug in egcs, please report it to
|
||||
<a href="mailto:egcs-bugs@cygnus.com">egcs-bugs@cygnus.com</a>.
|
||||
|
||||
<p>
|
||||
<hr>
|
||||
<i>Last modified on Jan 2, 1998.</i>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
47
INSTALL/index.html
Normal file
47
INSTALL/index.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Installing egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Installing egcs-1.0.3</h1>
|
||||
|
||||
<p>This document describes the generic installation procedure for egcs as
|
||||
well as detailing some target specific installation instructions for egcs.
|
||||
|
||||
<p>egcs includes several components that previously were separate distributions
|
||||
with their own installation instructions. This document supercedes all
|
||||
package specific installation instructions. We provide the component specific
|
||||
installation information in the source distribution for historical reference
|
||||
purposes only.
|
||||
|
||||
<p>We recommend you read the entire generic installation instructions as
|
||||
well as any target specific installation instructions before you proceed
|
||||
to configure, build, test and install egcs.
|
||||
|
||||
<p>If something goes wrong in the configure, build, test or install
|
||||
procedures, first double check that you followed the generic and target
|
||||
specific installation instructions carefully. Then check the
|
||||
<a href="faq.html">FAQ</a> to see if your problem is covered before you file
|
||||
a bug report.
|
||||
|
||||
<p>The installation procedure is broken into four steps.
|
||||
|
||||
<ul>
|
||||
|
||||
<li> <a href="configure.html">configure</a>
|
||||
<li> <a href="build.html">build</a>
|
||||
<li> <a href="test.html">test</a> (optional)
|
||||
<li> <a href="finalinstall.html">install</a>
|
||||
|
||||
</ul>
|
||||
|
||||
<p>Before starting the build/install procedure <b>please</b> browse the
|
||||
<a href="specific.html">host/target specific installation notes</a>.
|
||||
|
||||
<hr>
|
||||
<a href="../index.html">Return to the egcs home page</a>
|
||||
</body>
|
||||
</html>
|
||||
<hr>
|
||||
<i>Last modified on Jan 2, 1998.</i>
|
||||
|
||||
130
INSTALL/specific.html
Normal file
130
INSTALL/specific.html
Normal file
@@ -0,0 +1,130 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Host/Target specific installation notes for egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Host/Target specific installation notes for egcs-1.0.3</h1>
|
||||
|
||||
<p><b>alpha*-*-*</b><br>
|
||||
No specific installation needs/instructions.
|
||||
|
||||
|
||||
<p><b>i?86-*-linux*</b><br>
|
||||
You will need binutils-2.8.1.0.15 or newer for exception handling to work.
|
||||
|
||||
<p><b>i?86-*-sco3.2v5*</b><br>
|
||||
The SCO assembler is currently required. The GNU assembler is not up
|
||||
to the task of switching between ELF and COFF at runtime.
|
||||
|
||||
<br>Unlike various prereleases of GCC, that used '-belf' and defaulted to
|
||||
COFF, you must now use the '-melf' and '-mcoff' flags to toggle between
|
||||
the two object file formats. ELF is now the default.
|
||||
|
||||
<br>Look in gcc/config/i386/sco5.h (search for "messy") for additional
|
||||
OpenServer-specific flags.
|
||||
|
||||
<br>Systems based on OpenServer before 5.0.4 (<code>uname -X</code> will
|
||||
tell you what you're running) require TLS597 from ftp.sco.com/TLS for
|
||||
C++ constructors and destructors to work right.
|
||||
|
||||
<p><b>i?86-pc-solaris*</b><br>
|
||||
You'll need a patch to fix an egcs bug on this platform.
|
||||
<a href="http://www-egcs.cygnus.com/faq.html#x86solaris"> x86 solaris patch</a>
|
||||
|
||||
<p><b>hppa*-hp-hpux*</b><br>
|
||||
We <b>highly</b> recommend using gas/binutils-2.8 on all hppa platforms; you
|
||||
may encounter a variety of problems when using the HP assembler.
|
||||
|
||||
<p><b>hppa*-hp-hpux9</b><br>
|
||||
The HP assembler has major problems on this platform. We've tried to work
|
||||
around the worst of the problems. However, those workarounds may be causing
|
||||
linker crashes in some circumstances; the workarounds also probably prevent
|
||||
shared libraries from working. Use the GNU assembler to avoid these problems.
|
||||
|
||||
<br>The configuration scripts for egcs will also trigger a bug in the hpux9
|
||||
shell. To avoid this problem set CONFIG_SHELL to /bin/ksh and SHELL to
|
||||
/bin/ksh in your environment.
|
||||
|
||||
<p><b>hppa*-hp-hpux10</b><br>
|
||||
For hpux10.20, we <b>highly</b> recommend you pick up the latest sed
|
||||
patch from HP. HP has two sites which provide patches free of charge.
|
||||
|
||||
<br><a href="http://us-support.external.hp.com">US, Canada, Asia-Pacific, and
|
||||
Latin-America</a>
|
||||
<br><a href="http://europe-support.external.hp.com">Europe</a>
|
||||
|
||||
<p>Retrieve patch PHCO_12862.
|
||||
|
||||
<p>The HP assembler on these systems is much better than the hpux9 assembler,
|
||||
but still has some problems. Most notably the assembler inserts timestamps
|
||||
into each object file it creates, causing the 3-stage comparison test to fail
|
||||
during a "make bootstrap". You should be able to continue by saying "make all"
|
||||
after getting the failure from "make bootstrap".
|
||||
|
||||
<p><b>m68k-*-nextstep*</b><br>
|
||||
You absolutely must use GNU sed and GNU make on this platform.
|
||||
|
||||
<p>If you try to build the integrated C++ & C++ runtime libraries on this system
|
||||
you will run into trouble with include files. The way to get around this is
|
||||
to use the following sequence. Note you must have write permission to
|
||||
<i>prefix</i> for this sequence to work.
|
||||
|
||||
<p>cd <i>objdir</i><br>
|
||||
make all-texinfo all-bison all-byacc all-binutils all-gas all-ld<br>
|
||||
cd gcc<br>
|
||||
make bootstrap<br>
|
||||
make install-headers-tar<br>
|
||||
cd ..<br>
|
||||
make bootstrap3<br>
|
||||
|
||||
<p><b>m68k-sun-sunos4.1.1</b><br>
|
||||
It is reported that you may need the GNU assembler on this platform.
|
||||
|
||||
<p><b>mips*-sgi-irix4</b><br>
|
||||
<b>mips*-sgi-irix5</b><br>
|
||||
You must use GAS on these platforms, the native assembler can not handle the
|
||||
code for exception handling support on this platform.
|
||||
|
||||
<p>These systems don't have ranlib, which various components in egcs need; you
|
||||
should be able to avoid this problem by installing GNU binutils, which includes
|
||||
a functional ranlib for this system.
|
||||
|
||||
<p>You may get the following warning on irix4 platforms, it can be safely
|
||||
ignored.
|
||||
<pre>
|
||||
warning: foo.o does not have gp tables for all its sections.
|
||||
</pre>
|
||||
|
||||
<p><b>mips*-sgi-irix6</b><br>
|
||||
You must not use GAS on irix6 platforms; doing so will only cause problems.
|
||||
|
||||
<p>These systems don't have ranlib, which various components in egcs need; you
|
||||
should be able to avoid this problem by making a dummy script called ranlib
|
||||
which just exits with zero status and placing it in your path.
|
||||
|
||||
<p><b>rs6000-ibm-aix*</b><br>
|
||||
<b>powerpc-ibm-aix*</b><br>
|
||||
At least one person as reported problems with older versions of gnu-make on
|
||||
this platform. make-3.76 is reported to work correctly.
|
||||
|
||||
<p><b>powerpc-*-linux-gnu*</b><br>
|
||||
You will need
|
||||
<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils-2.8.1.0.20</a> for
|
||||
a working egcs. It is strongly recommended to recompile binutils with egcs
|
||||
if you initially built it with gcc-2.7.2.*.
|
||||
|
||||
<p><b>sparc-unkonwn-linux-gnulibc1</b><br>
|
||||
It has been reported that you might need binutils-2.8.1.0.20 for this
|
||||
platform too.
|
||||
<a href="ftp://ftp.yggdrasil.com/private/hjl">binutils-2.8.1.0.20</a>
|
||||
|
||||
<p>
|
||||
exception handling
|
||||
<p>XXX Linux stuff
|
||||
-k encaps stuff
|
||||
<hr>
|
||||
<i>Last modified on February 7, 1998.</i>
|
||||
|
||||
<!--#include virtual="/glimpsebox.html"-->
|
||||
</body>
|
||||
</html>
|
||||
38
INSTALL/test.html
Normal file
38
INSTALL/test.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Testing egcs-1.0.3 </title>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
<h1 align="center">Testing egcs-1.0.3</h1>
|
||||
|
||||
<p>Before you install egcs, you might wish to run the egcs testsuite; this
|
||||
step is optional and may require you to download additional software.
|
||||
|
||||
<p>First, you must have downloaded the egcs testsuites; the full distribution
|
||||
contains testsuites. If you downloaded the "core" compiler plus any front
|
||||
ends, then you do not have the testsuites. You can download the testsuites
|
||||
from the same site where you downloaded the core distribution and language
|
||||
front ends.
|
||||
|
||||
<p>Second, you must have a new version of dejagnu on your system; dejagnu-1.3
|
||||
will not work. We have made a
|
||||
<a href="ftp://egcs.cygnus.com/pub/egcs/infrastructure/dejagnu-971222.tar.gz">
|
||||
dejagnu snapshot</a> available in egcs.cygnus.com:/pub/egcs/infrastructure until
|
||||
a new version of dejagnu can be released.
|
||||
|
||||
<p>Assuming you've got the testsuites unpacked and have installed an appropriate
|
||||
dejagnu, you can run the testsuite with "cd <i>objdir</i>; make -k check".
|
||||
This may take a long time. Go get some lunch.
|
||||
|
||||
<p>The testing process will try to test as many components in the egcs
|
||||
distrubution as possible, including the C, C++ and Fortran compiler as
|
||||
well as the C++ runtime libraries.
|
||||
|
||||
<p> How to interpret test results TBD.
|
||||
|
||||
<hr>
|
||||
<i>Last modified on Jan 2, 1998.</i>
|
||||
|
||||
<!--#include virtual="/glimpsebox.html"-->
|
||||
</body>
|
||||
</html>
|
||||
@@ -175,10 +175,10 @@ REALLY_SET_LIB_PATH = \
|
||||
|
||||
ALL = all.normal
|
||||
INSTALL_TARGET = installdirs \
|
||||
install-gcc \
|
||||
$(INSTALL_MODULES) \
|
||||
$(INSTALL_TARGET_MODULES) \
|
||||
$(INSTALL_X11_MODULES) \
|
||||
install-gcc \
|
||||
$(INSTALL_DOSREL)
|
||||
|
||||
|
||||
@@ -349,7 +349,8 @@ BASE_FLAGS_TO_PASS = \
|
||||
"YACC=$(YACC)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"prefix=$(prefix)" \
|
||||
"tooldir=$(tooldir)"
|
||||
"tooldir=$(tooldir)" \
|
||||
"gxx_include_dir=$(gxx_include_dir)"
|
||||
|
||||
# Flags to pass down to most sub-makes, in which we're building with
|
||||
# the host environment.
|
||||
|
||||
92
config.guess
vendored
92
config.guess
vendored
@@ -52,6 +52,9 @@ trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
alpha:OSF1:*:*)
|
||||
if test $UNAME_RELEASE = "V4.0"; then
|
||||
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
|
||||
fi
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
@@ -62,9 +65,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d84
|
||||
cmoveq \$4,0,\$3
|
||||
addl \$3,\$31,\$0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
@@ -72,16 +80,25 @@ EOF
|
||||
if test "$?" = 0 ; then
|
||||
./dummy
|
||||
case "$?" in
|
||||
1)
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
2)
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
rm -f dummy.s dummy
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
|
||||
exit 0 ;;
|
||||
21064:Windows_NT:50:3)
|
||||
echo alpha-dec-winnt3.5
|
||||
@@ -490,7 +507,36 @@ EOF
|
||||
i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
|
||||
sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
|
||||
elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
|
||||
elf32ppc)
|
||||
# Determine Lib Version
|
||||
cat >dummy.c <<EOF
|
||||
#include <features.h>
|
||||
#if defined(__GLIBC__)
|
||||
extern char __libc_version[];
|
||||
extern char __libc_release[];
|
||||
#endif
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
#if defined(__GLIBC__)
|
||||
printf("%s %s\n", __libc_version, __libc_release);
|
||||
#else
|
||||
printf("unkown\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
LIBC=""
|
||||
${CC-cc} dummy.c -o dummy 2>/dev/null
|
||||
if test "$?" = 0 ; then
|
||||
./dummy | grep 1\.99 > /dev/null
|
||||
if test "$?" = 0 ; then
|
||||
LIBC="libc1"
|
||||
fi
|
||||
fi
|
||||
rm -f dummy.c dummy
|
||||
echo powerpc-unknown-linux-gnu${LIBC} ; exit 0 ;;
|
||||
esac
|
||||
|
||||
if test "${UNAME_MACHINE}" = "alpha" ; then
|
||||
@@ -500,9 +546,14 @@ EOF
|
||||
main:
|
||||
.frame \$30,0,\$26,0
|
||||
.prologue 0
|
||||
.long 0x47e03d84
|
||||
cmoveq \$4,0,\$3
|
||||
addl \$3,\$31,\$0
|
||||
.long 0x47e03d80 # implver $0
|
||||
lda \$2,259
|
||||
.long 0x47e20c21 # amask $2,$1
|
||||
srl \$1,8,\$2
|
||||
sll \$2,2,\$2
|
||||
sll \$0,3,\$0
|
||||
addl \$1,\$0,\$0
|
||||
addl \$2,\$0,\$0
|
||||
ret \$31,(\$26),1
|
||||
.end main
|
||||
EOF
|
||||
@@ -511,12 +562,21 @@ EOF
|
||||
if test "$?" = 0 ; then
|
||||
./dummy
|
||||
case "$?" in
|
||||
1)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
2)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
7)
|
||||
UNAME_MACHINE="alpha"
|
||||
;;
|
||||
15)
|
||||
UNAME_MACHINE="alphaev5"
|
||||
;;
|
||||
14)
|
||||
UNAME_MACHINE="alphaev56"
|
||||
;;
|
||||
10)
|
||||
UNAME_MACHINE="alphapca56"
|
||||
;;
|
||||
16)
|
||||
UNAME_MACHINE="alphaev6"
|
||||
;;
|
||||
esac
|
||||
|
||||
objdump --private-headers dummy | \
|
||||
|
||||
11
configure
vendored
11
configure
vendored
@@ -81,7 +81,7 @@ subdirs=
|
||||
target_alias=NOTARGET
|
||||
target_makefile_frag=
|
||||
undefs=NOUNDEFS
|
||||
version="$Revision: 1.1.1.1 $"
|
||||
version="$Revision: 1.2.2.1 $"
|
||||
x11=default
|
||||
|
||||
### we might need to use some other shell than /bin/sh for running subshells
|
||||
@@ -1171,6 +1171,15 @@ EOF
|
||||
echo site_makefile_frag = ${invsubdir}${site_makefile_frag} >>${Makefile}
|
||||
fi
|
||||
|
||||
# provide a proper gxx_include_dir to all subdirs.
|
||||
# Note, if you change the default, make sure to fix both here
|
||||
# and in the gcc subdirectory.
|
||||
if test -z "${with_gxx_include_dir}"; then
|
||||
echo gxx_include_dir = '${prefix}/include/g++' >> ${Makefile}
|
||||
else
|
||||
echo gxx_include_dir = ${with_gxx_include_dir} >> ${Makefile}
|
||||
fi
|
||||
|
||||
# reset prefix, exec_prefix, srcdir, SUBDIRS, NONSUBDIRS,
|
||||
# remove any form feeds.
|
||||
if [ -z "${subdirs}" ]; then
|
||||
|
||||
@@ -122,7 +122,7 @@ case "${host}" in
|
||||
mips*-*-sysv4*) host_makefile_frag=config/mh-sysv4 ;;
|
||||
mips*-*-sysv*) host_makefile_frag=config/mh-riscos ;;
|
||||
i[3456]86-*-dgux*) host_makefile_frag=config/mh-dgux386 ;;
|
||||
i[3456]86-ncr-sysv4.3) host_makefile_frag=config/mh-ncrsvr43 ;;
|
||||
i[3456]86-ncr-sysv4.3*) host_makefile_frag=config/mh-ncrsvr43 ;;
|
||||
i[3456]86-ncr-sysv4*) host_makefile_frag=config/mh-ncr3000 ;;
|
||||
i[3456]86-*-sco3.2v5*) host_makefile_frag=config/mh-sysv ;;
|
||||
i[3456]86-*-sco*) host_makefile_frag=config/mh-sco ;;
|
||||
@@ -416,6 +416,12 @@ case "${target}" in
|
||||
alpha*-*-*vms*)
|
||||
noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
|
||||
;;
|
||||
alpha*-*-linux*)
|
||||
# newlib is not 64 bit ready
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
# linux has rx in libc
|
||||
skipdirs="$skipdirs target-librx"
|
||||
;;
|
||||
alpha*-*-*)
|
||||
# newlib is not 64 bit ready
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
Fri Nov 21 12:54:58 1997 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* Makefile.in: Add --no-split argument to avoid creating files
|
||||
with names longer than 14 characters.
|
||||
|
||||
Tue Oct 7 16:27:34 1997 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* aclocal.m4: Substitute INSTALL.
|
||||
|
||||
@@ -60,7 +60,7 @@ install-info: info
|
||||
dvi: $(DVIFILES)
|
||||
|
||||
standards.info: $(srcdir)/standards.texi
|
||||
$(MAKEINFO) -I$(srcdir) -o standards.info $(srcdir)/standards.texi
|
||||
$(MAKEINFO) --no-split -I$(srcdir) -o standards.info $(srcdir)/standards.texi
|
||||
|
||||
standards.dvi: $(srcdir)/standards.texi
|
||||
TEXINPUTS=$(TEXIDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/standards.texi
|
||||
|
||||
916
gcc/ChangeLog
916
gcc/ChangeLog
@@ -1,3 +1,919 @@
|
||||
Thu Apr 23 01:41:02 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for 1.0.3 pre-release.
|
||||
|
||||
Mon Apr 20 02:17:37 1998 Richard Henderson <rth@cygnus.com>
|
||||
Jim Wilson <wilson@cygnus.com>
|
||||
J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* reload1.c (eliminate_regs): Delete LOAD_EXTENDED_OP code that
|
||||
boiled down to && ! 0.
|
||||
|
||||
* reload.c (find_reloads): Always force (subreg (mem)) to be
|
||||
reloaded if WORD_REGISTER_OPERATIONS.
|
||||
|
||||
* reload.c (find_reloads_toplev): Handle arbitrary non-paradoxical
|
||||
SUBREGs of CONST_INTs.
|
||||
|
||||
* reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
|
||||
SUBREG_REG if the word count is unchanged, also in the input reload
|
||||
case. Disable non-applicable sanity checks.
|
||||
|
||||
* reload.c (push_reload): In WORD_REGISTER_OPERATIONS code, add test
|
||||
to require the SUBREG mode to be smaller than the SUBREG_REG mode.
|
||||
* reload1.c (eliminate_regs): Likewise.
|
||||
|
||||
* reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
|
||||
SUBREG_REG if the word count is unchanged.
|
||||
* reload1.c (eliminate_regs) [case SET]: If W_R_O, preserve
|
||||
subregs of identical word size for push_reload.
|
||||
|
||||
Mon Apr 20 00:58:48 1998 H.J. Lu (hjl@gnu.org)
|
||||
|
||||
* reg-stack.c (subst_asm_stack_regs): Change to return the last
|
||||
new insn generated by this function.
|
||||
(subst_stack_regs): Likewise.
|
||||
(convert_regs): Record the last newly generated insn and use
|
||||
it for change_stack () instead of INSN.
|
||||
|
||||
Sun Apr 19 00:23:23 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* alpha.md (extendsidi2): Kill bogus cvtql+cvtlq case.
|
||||
|
||||
* alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Accept '(' for s/sv/svi.
|
||||
* alpha.c (print_operand): Handle it.
|
||||
* alpha.md (fix_truncsfdi2): Use it. Add earlyclobber pattern
|
||||
for ALPHA_TP_INSN.
|
||||
(fix_truncdfdi2): Likewise.
|
||||
|
||||
* alpha/linux.h (FUNCTION_PROFILER): _mcount expects its pv in $28.
|
||||
|
||||
Sat Apr 18 19:06:59 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.md (floatsidf2_loadaddr): rs6000_fpmem_offset will be
|
||||
negative in a stackless frame.
|
||||
* rs6000.c (rs6000_stack_info): Don't include fixed-size link area
|
||||
in stackless frame size. Support 64-bit stackless frame size.
|
||||
Combine fpmem offset calculations and don't add total_size to
|
||||
offset if not pushing a stack frame.
|
||||
|
||||
Sat Apr 18 17:55:57 1998 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* i386.md (fix_truncsfdi2+[123]): Add + to operand 1 constraints.
|
||||
|
||||
Sun Mar 15 23:39:10 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Update for egcs-1.0.2 release.
|
||||
|
||||
Sun Mar 15 23:29:25 1998 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* config/m68k/mot3300.h (ASM_BYTE_OP): Don't include '\t' in the
|
||||
definition.
|
||||
(ASM_OUTPUT_ASCII): Prefix ASM_BYTE_OP by one single '\t'.
|
||||
|
||||
Sun Mar 15 23:29:18 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* m68k.h: Fix mis-applied fix from the mainline branch.
|
||||
|
||||
Wed Mar 10 14:26:52 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* rtlanal.c (optimize): Declare.
|
||||
|
||||
Sun Mar 8 11:16:23 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* emit-rtl.c (gen_lowpart_common): Handle more case where converting
|
||||
a CONST_INT into SFmode.
|
||||
|
||||
Sat Mar 7 01:12:46 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* i386/aix386ng.h (CPP_PREDEFINES): Put back -Di386.
|
||||
* i386/freebsd-elf.h: Likewise.
|
||||
* i386/gas.h: Likewise.
|
||||
* i386/linux-aout.h: Likewise.
|
||||
* i386/linux-oldld.h: Likewise.
|
||||
* i386/linux.h: Likewise.
|
||||
* i386/osfelf.h: Likewise.
|
||||
* i386/osfrose.h: Likewise.
|
||||
* i386/sco.h: Likewise.
|
||||
* i386/sco4.h: Likewise.
|
||||
* i386/sco4dbx.h: Likewise.
|
||||
* i386/sco5.h: Likewise.
|
||||
* i386/scodbx.h: Likewise.
|
||||
* i386/sol2.h: Likewise.
|
||||
* i386/sysv3.h: Likewise.
|
||||
|
||||
Wed Mar 4 22:03:38 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
|
||||
|
||||
* rs6000/linux.h: don't define DEFAULT_VTABLE_THUNKS to 1 if
|
||||
USE_GNULIBC_1 is defined
|
||||
* configure.in: add a new case powerpc-*-linux-gnulibc1 which
|
||||
includes the t-linux-gnulibc1 fragment
|
||||
|
||||
Tue Mar 3 00:06:45 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for 1.0.2 prerelease diffs.
|
||||
|
||||
Sun Mar 1 18:14:46 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* ginclude/va-ppc.h (va_arg): Fix typo in long long support.
|
||||
|
||||
Tue Feb 24 09:32:24 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* expr.c (emit_move_insn_1): Fix minor buglet in last change
|
||||
caused by importint it into the release branch.
|
||||
|
||||
Sun Feb 22 20:46:31 1998 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
|
||||
|
||||
* expr.c (emit_move_insn_1): When moving complex values in several
|
||||
steps, emit a CLOBBER to show the destination dies.
|
||||
|
||||
Sun Feb 22 20:06:34 1998 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* iris5.h (DWARF2_UNWIND_INFO): Define to 0.
|
||||
* iris5gas.h (DWARF2_UNWIND_INFO): Define to 1.
|
||||
|
||||
Thu Feb 19 09:41:23 1998 Mumit Khan <khan@xraylith.wisc.edu>
|
||||
|
||||
* i386/x-cygwin32 (USE_COLLECT2): Disable collect2 for now on
|
||||
i386-{cygwin32,mingw32}.
|
||||
|
||||
Sun Feb 22 09:45:39 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* collect2.c (scan_prog_file): Completely cover uses of variable
|
||||
`exports' with macro COLLECT_EXPORT_LIST.
|
||||
|
||||
1998-02-20 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* collect2.c (main): Still handle !do_collecting for non-AIX targets.
|
||||
|
||||
Thu Feb 19 22:36:53 1998 Andrey Slepuhin <pooh@msu.net>
|
||||
David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* collect2.c (XCOFF_SCAN_LIBS): Remove.
|
||||
(export_flag): New variable.
|
||||
(export_file): #ifdef COLLECT_EXPORT_LIST.
|
||||
(import_file, exports, imports, undefined): New variables.
|
||||
(libs, cmdline_lib_dirs, libpath_lib_dirs, libpath, libexts): Same.
|
||||
(dump_list, dump_prefix_list, is_in_list): New functions.
|
||||
(write_export_file): $ifdef COLLECT_EXPORT_LIST.
|
||||
(write_import_file, resolve_lib_name): New functions.
|
||||
(use_import_list, ignore_library): Same.
|
||||
(collect_exit): maybe_unlink import_file and #ifdef.
|
||||
(handler): Same.
|
||||
(main): New variable importf, #ifdef exportf. Move parsing of
|
||||
-shared before general argument parsing. Resolve AIX library
|
||||
paths and import libgcc.a symbols. Treat .so shared libraries the
|
||||
same as objects and .a libraries. Create alias for object_lst and
|
||||
increment it instead of original pointer. Scan AIX libraries as
|
||||
objects earlier instead of using scan_libraries. Perform AIX
|
||||
tlink later to resolve templates instead of forking ld.
|
||||
(GCC_OK_SYMBOL): Ensure symbol not in undef section.
|
||||
(GCC_UNDEF_SYMBOL): New macro.
|
||||
(scan_prog_file): Loop for members of AIX libraries. Handle
|
||||
export/import of ctors/dtors.
|
||||
(aix_std_libs): New variable.
|
||||
(scan_libraries, XCOFF): Delete.
|
||||
|
||||
1998-02-19 Mike Stump <mrs@wrs.com>
|
||||
|
||||
* Makefile.in: Use $tooldir for sys-include to match toplevel
|
||||
configure.
|
||||
|
||||
Thu Feb 19 01:41:47 1998 Robin Kirkham <rjk@mlb.dmt.csiro.au>
|
||||
|
||||
* m68k.h (TARGET_SWITCHES): -mcpu32 now clears MASK_68881.
|
||||
(MACHINE_STATE_m68010_up): Replaced __mc68332__ with __mcpu32__.
|
||||
* m68k/m68k-none.h(CPP_FPU_SPEC): Update relative to TARGET_SWITCHES.
|
||||
(CPP_SPEC, ASM_SPEC, CC1_SPEC): Likewise.
|
||||
(CPP_SPEC): -m68332 defines both __mc68332 and __mcpu32__.
|
||||
* m68k/t-m68kbare (MULTILIB_OPTIONS): Add mcpu32.
|
||||
(MULTILIB_MATCHES): -m68332 now uses mcpu32 libraries, not m68000.
|
||||
(MULTILIB_EXCEPTIONS): Don't build 68881 libraries for m68000,
|
||||
mcpu32 or m5200.
|
||||
* longlong.h: Replace __mc68332__ with __mcpu32__.
|
||||
|
||||
Thu Feb 19 01:32:37 1998 Jeffrey A Law (law@cygnus.com)
|
||||
Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* emit-rtl.c (gen_lowpart_common): Suppress last change if __complex__.
|
||||
|
||||
* emit-rtl.c (hard-reg-set.h): Include.
|
||||
(get_lowpart_common): Don't make new REG for hard reg in a
|
||||
class that cannot change size.
|
||||
* Makefile.in (emit-rtl.o): Depend on hard-reg-set.h.
|
||||
|
||||
* combine.c: Revert previous patch.
|
||||
|
||||
Tue Feb 17 23:34:29 1998 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.h (MY_ISCOFF): Add numeric value of U803XTOCMAGIC.
|
||||
* x-aix31 (INSTALL): Delete.
|
||||
|
||||
Tue Feb 17 22:56:14 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* combine.c (simplify_rtx): Obey CLASS_CANNOT_CHANGE_SIZE when
|
||||
simplifying a subreg of a hard reg.
|
||||
(expand_compound_operation): Likewise.
|
||||
(force_to_mode): Likewise.
|
||||
|
||||
Sun Feb 15 21:07:48 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* arm/netbsd.h (DWARF2_UNWIND_INFO): Define as zero for now.
|
||||
* i386/netbsd.h, m68k/netbsd.h, ns32k/netbsd.h: Likewise.
|
||||
* sparc/netbsd.h, vax/netbsd.h: Likewise.
|
||||
|
||||
Sun Feb 15 20:55:23 1998 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
|
||||
|
||||
* i386.c (notice_update_cc): Use reg_overlap_mentioned_p.
|
||||
|
||||
Sat Feb 14 15:54:28 1998 H.J. Lu (hjl@gnu.org)
|
||||
|
||||
* config/alpha/elf.h (LIB_SPEC): New. Defined if
|
||||
USE_GNULIBC_1 is not defined.
|
||||
|
||||
* config/linux.h (LIB_SPEC): Add -lc for -shared if
|
||||
USE_GNULIBC_1 is not defined.
|
||||
* config/sparc/linux.h: Ditto.
|
||||
|
||||
* config/sparc/linux64.h (LIB_SPEC): Add -lc for -shared.
|
||||
|
||||
* config/sparc/linux64.h (LIBGCC_SPEC): Removed.
|
||||
(CPP_SUBTARGET_SPEC): Add %{pthread:-D_REENTRANT}.
|
||||
(LIB_SPEC): Updated for glibc 2.
|
||||
|
||||
Sat Nov 29 12:45:51 1997 Mumit Khan <khan@xraylith.wisc.edu>
|
||||
|
||||
* config/i386/cygwin32.h (DWARF2_UNWIND): Exception handling
|
||||
doesn't work with it yet, so set it to 0.
|
||||
* config/i386/x-cygwin32 (USE_COLLECT2): Delete.
|
||||
* config/i386/xm-cygwin32.h (NO_SYS_SIGLIST): Define.
|
||||
|
||||
Fri Feb 13 01:29:29 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
|
||||
|
||||
* rs6000/sysv4.h (ENDFILE_SPEC): add missing %(endfile_linux)
|
||||
for -mcall-linux
|
||||
|
||||
Fri Feb 13 00:47:21 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* cccp.c (new_include_prefix): Correctly handle -I./.
|
||||
|
||||
Sun Dec 28 00:32:16 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* flow.c (find_basic_blocks): Don't create a new basic block
|
||||
for calls in a LIBCALL block.
|
||||
|
||||
Fri Dec 12 01:19:48 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* flow.c (flow_analysis): Be consistent with find_basic_blocks in
|
||||
determining when a new basic block starts.
|
||||
|
||||
Thu Dec 11 22:02:10 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* flow.c (find_basic_blocks): A CALL_INSN that can throw starts
|
||||
a new basic block.
|
||||
(find_basic_blocks_1): Likewise.
|
||||
|
||||
Thu Dec 4 11:51:00 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* except.c (get_dynamic_handler_chain): Only make the call once per
|
||||
function.
|
||||
|
||||
Wed Dec 3 12:01:56 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* except.c (expand_fixup_region_end): New fn.
|
||||
(expand_fixup_region_start): Likewise.
|
||||
(expand_eh_region_start_tree): Store cleanup into finalization here.
|
||||
* stmt.c (expand_cleanups): Use them to protect fixups.
|
||||
|
||||
Mon Nov 24 22:41:55 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* except.c (get_dynamic_handler_chain): Build up a FUNCTION_DECL.
|
||||
* optabs.c (init_optabs): Lose get_dynamic_handler_chain_libfunc.
|
||||
* expr.h: Likewise.
|
||||
|
||||
Wed Feb 11 01:39:47 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* stor-layout.c (layout_type): Do upper - lower in the native type,
|
||||
so as to properly handle negative indices.
|
||||
|
||||
Tue Feb 10 00:26:25 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* rs6000.c (setup_incoming_varargs): Always set rs6000_sysv_varargs_p.
|
||||
|
||||
Mon Feb 9 23:15:14 1998 Franz Sirl <franz.sirl-kernel@lauterbach.com>
|
||||
|
||||
* rs6000/linux.h (CPP_PREDEFINES): Add -D__ELF__.
|
||||
|
||||
Mon Feb 9 23:08:56 1998 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* i386.md (push): Prohibit symbolic constants if flag_pic.
|
||||
(movsi+1): Likewise for move to non-register.
|
||||
|
||||
Mon Feb 9 23:07:04 1998 John Wehle (john@feith.com)
|
||||
|
||||
* i386.md: Remove redundant integer push patterns.
|
||||
Don't bother checking for TARGET_PUSH_MEMORY when
|
||||
pushing constants or registers.
|
||||
|
||||
1998-01-28 Mike Stump <mrs@wrs.com>
|
||||
|
||||
* rtlanal.c (dead_or_set_regno_p): Ignore REG_DEAD notes after
|
||||
reload completes.
|
||||
* genattrtab.c (reload_completed, optimize): Define.
|
||||
|
||||
Mon Feb 9 22:16:04 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* c-decl.c (grokdeclarator): Get parameter tags from
|
||||
last_function_parm_tags.
|
||||
* dwarfout.c (output_formal_types): Set TREE_ASM_WRITTEN before
|
||||
traversing the parameter types.
|
||||
(output_type): No early exit for FUNCTION_TYPE / METHOD_TYPE context.
|
||||
|
||||
Mon Feb 9 22:10:58 1998 Todd Vierling <tv@pobox.com>
|
||||
|
||||
* fixincludes: Tweak fix for struct exception in math.h
|
||||
|
||||
Mon Feb 9 01:15:08 1998 Mark Mitchell <mmitchell@usa.net>
|
||||
|
||||
* integrate.c (get_label_from_map): New function.
|
||||
(expand_inline_function): Use it. Initialize the label_map to
|
||||
NULL_RTX instead of gen_label_rtx.
|
||||
(copy_rtx_and_substitute): Use get_label_from_map.
|
||||
* integrate.h (get_label_from_map): New function.
|
||||
(set_label_from_map): New macro.
|
||||
* unroll.c (unroll_loop): Use them.
|
||||
(copy_loop_body): Ditto.
|
||||
|
||||
* toplev.c (rest_of_compilation): Don't call save_for_inline_copy
|
||||
if all we're doing is dealing with -Wreturn-type.
|
||||
|
||||
Mon Feb 9 01:07:41 1998 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* i386/x-sco5 (CC): Remove trailing whitespace.
|
||||
|
||||
Mon Feb 9 01:07:37 1998 J. Kean Johnston <jkj@sco.com>
|
||||
|
||||
* i386/sco5.h (STARTFILE_SPEC, ENDFILE_SPEC): Correctly handle
|
||||
"-static".
|
||||
|
||||
Mon Feb 9 00:02:53 1998 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* function.c (assign_parms): New variable named_arg, with value
|
||||
depending on STRICT_ARGUMENT_NAMING. Use instead of ! last_named.
|
||||
|
||||
Mon Feb 9 00:01:00 1998 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* stmt.c (pushcase_range): Clean up handling of "infinite" values.
|
||||
|
||||
* loop.c (strength_reduce): When placing increment for auto-inc
|
||||
case, do comparison in loop order.
|
||||
|
||||
Fri Jan 2 23:40:09 1998 Jim Wilson (wilson@cygnus.com)
|
||||
Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* crtstuff.c (__frame_dummy): New function for irix6.
|
||||
(__do_global_ctors): Call __frame_dummy for irix6.
|
||||
* iris6.h (LINK_SPEC): Hide __frame_dummy too.
|
||||
|
||||
Wed Dec 24 23:03:42 1997 Jim Wilson (wilson@cygnus.com)
|
||||
|
||||
* mips.c (mips_expand_epilogue): Emit blockage insn before call to
|
||||
save_restore_insns if no FP and GP will be restored.
|
||||
|
||||
* abi64.h (LONG_MAX_SPEC): Check MIPS_ABI_DEFAULT and TARGET_DEFAULT,
|
||||
and define __LONG_MAX__ appropriately. Add support for -mabi=X,
|
||||
-mlong64, and -mgp{32,64} options.
|
||||
* mips.c (mips_abi): Change type to int.
|
||||
* mips.h (enum mips_abi_type): Delete.
|
||||
(ABI_32, ABI_N32, ABI_64, ABI_EABI): Define as constants.
|
||||
(mips_abi): Change type to int.
|
||||
|
||||
Mon Dec 22 09:55:01 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for beta release of egcs-1.0.1.
|
||||
|
||||
* haifa-sched.c (create_reg_dead_note): Detect and handle another
|
||||
case where we kill more regs after sched than were killed before
|
||||
sched.
|
||||
* sched.c (create_reg_dead_note): Similarly.
|
||||
|
||||
Sun Dec 21 21:47:38 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* pa.c (emit_move_sequence): Handle a function label source
|
||||
operand.
|
||||
|
||||
Sat Dec 20 16:14:50 1997 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.h (FUNCTION_ARG_PADDING): Define.
|
||||
* rs6000.c (function_arg_padding): New function.
|
||||
|
||||
Sat Dec 20 13:36:06 1997 Paul Eggert <eggert@twinsun.com>
|
||||
Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
H.J. Lu (hjl@gnu.org)
|
||||
|
||||
* frame.h (__register_frame, __register_frame_table,
|
||||
__deregister_frame): New.
|
||||
* frame.c (__register_frame, __register_frame_table,
|
||||
__deregister_frame): New.
|
||||
* frame.c (__deregister_frame_info): Return void *.
|
||||
* frame.h (__deregister_frame_info): Ditto.
|
||||
* collect2.c (__deregister_frame_info): Ditto.
|
||||
|
||||
* frame.h (__register_frame_info_table): Fix typo in declaration.
|
||||
|
||||
* frame.c (__register_frame_info): Renamed from __register_frame.
|
||||
(__register_frame_info_table, __deregister_frame_info): Similarly.
|
||||
* frame.h (__{,de}register_frame_info): Likewise.
|
||||
(__register_frame_info_table): New declaration.
|
||||
* crtstuff.c (__do_global_dtors{,_aux}): Rename __deregister_frame.
|
||||
(frame_dummy, __do_global_ctors): Likewise for __register_frame.
|
||||
* collect2.c (write_c_file_{stat,glob}): Rename __register_frame
|
||||
to __register_frame_info and similarly for __deregister_frame and
|
||||
__register_frame_table.
|
||||
|
||||
* collect2.c (write_c_file_glob):
|
||||
Allocate initial frame object in static storage and pass its address.
|
||||
|
||||
* crtstuff.c (__do_global_ctors): Fix typo in last change.
|
||||
|
||||
* crtstuff.c (__do_global_ctors): Add missing arg to __register_frame.
|
||||
|
||||
* collect2.c (write_c_file_stat): Fix error in last change;
|
||||
use __SIZE_TYPE__, not size_t.
|
||||
|
||||
Alter C startup code so that it doesn't invoke malloc on Solaris.
|
||||
* frame.h (struct object): Decl moved here from frame.c.
|
||||
* frame.c (struct object): Move decl to frame.h.
|
||||
("frame.h"): Include after <stddef.h>, so that size_t is defined.
|
||||
(__register_frame, __register_frame_table, __deregister_frame):
|
||||
It's now the caller's responsibility to allocate storage for object.
|
||||
* crtstuff.c (frame_dummy), collect2.c (write_c_file_stat):
|
||||
Allocate initial frame object in static storage and pass its address.
|
||||
* crtstuff.c (<stddef.h>, "frame.h"): Include.
|
||||
* Makefile.in ($(T)crtbegin.o, $(T)crtend.o, stamp-crtS):
|
||||
Depend on defaults.h and frame.h.
|
||||
|
||||
Fri Dec 19 10:02:57 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* i386.h (INITIAL_ELIMINATION_OFFSET): Correctly test for PIC
|
||||
register used.
|
||||
|
||||
Fri Dec 19 09:50:30 1997 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
|
||||
|
||||
* combine.c (simplify_rtx, case ABS): Don't get confused by a
|
||||
VOIDmode operand.
|
||||
|
||||
* i386.c (notice_update_cc): Remove bogus pentium GCC code.
|
||||
|
||||
Fri Dec 19 09:39:48 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* i386/t-sol2 (CRTSTUFF_T_CFLAGS): Turn on the optimizer.
|
||||
|
||||
* stmt.c (warn_if_unused_value): Don't warn for TRY_CATCH_EXPR.
|
||||
|
||||
* stmt.c (expand_asm_operands): If an ASM has no outputs, then treat
|
||||
it as volatile.
|
||||
|
||||
Wed Dec 3 01:13:45 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Update for egcs-1.0 release.
|
||||
|
||||
Mon Dec 1 15:36:13 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
Tue Nov 25 14:08:12 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2,
|
||||
fix_truncsfdi2): Change *.
|
||||
|
||||
Sun Nov 30 19:59:20 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* stmt.c (expand_decl_cleanup): Update thisblock after eh_region_start.
|
||||
|
||||
Sat Nov 29 12:44:57 1997 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.c (function_arg_partial_nregs): Undo Nov. 26 patch.
|
||||
|
||||
* rs6000/aix41.h (ASM_CPU_SPEC): Define.
|
||||
|
||||
Fri Nov 28 10:00:27 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Prefer stabs again.
|
||||
|
||||
* arm.md (movsfcc, movdfcc): Fix "patch" lossage.
|
||||
|
||||
* configure.in: Fix NCR entries.
|
||||
|
||||
Thu Nov 27 12:20:19 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
* flow.c (find_basic_blocks): Handle cfg issues for rethrows and
|
||||
nested exceptions correctly.
|
||||
|
||||
* unroll.c (find_splittable_givs): Don't split givs with a dest_reg
|
||||
that was created by loop.
|
||||
|
||||
Thu Nov 27 09:34:58 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* expr.c (preexpand_calls): Don't look past a TRY_CATCH_EXPR.
|
||||
|
||||
* except.c (expand_start_all_catch): One more do_pending_stack_adjust.
|
||||
|
||||
Thu Nov 27 09:32:39 1997 Richard Earnshaw (rearnsha@arm.com)
|
||||
|
||||
* arm.md (movsfcc): If not TARGET_HARD_FLOAT, ensure operand[3]
|
||||
valid.
|
||||
|
||||
Wed Nov 26 13:04:46 1997 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* rs6000.c (SMALL_DATA_REG): Register to use for small data relocs.
|
||||
(print_operand): Use SMALL_DATA_REG for the register involved in
|
||||
small data relocations.
|
||||
(print_operand_address): Ditto.
|
||||
|
||||
* rs6000/linux.h (LINK_SPEC): Pass -dynamic-linker /lib/ld.so.1 if
|
||||
-dynamic linker is not used.
|
||||
|
||||
* rs6000.md (call insns): For local calls, use @local suffix under
|
||||
System V. Don't use @plt under Solaris.
|
||||
|
||||
* rs6000.c (output_function_profiler): Put label address in r0, and
|
||||
store LR in 4(sp) for System V/eabi.
|
||||
|
||||
* rs6000.h (ASM_OUTPUT_REG_{PUSH,POP}): Keep stack aligned to 16
|
||||
byte boundary, and maintain stack backchain.
|
||||
|
||||
(patches originally from Geoffrey Keating)
|
||||
* rs6000.c (function_arg): Excess floating point arguments don't
|
||||
go into GPR registers after exhausting FP registers under the
|
||||
System V.4 ABI.
|
||||
(function_arg_partial_nregs): Ditto.
|
||||
|
||||
* rs6000.md (call insns): If -fPIC or -mrelocatable, add @plt
|
||||
suffix to calls.
|
||||
|
||||
Wed Nov 26 13:04:46 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* toplev.c (main): Complain about -gdwarfn.
|
||||
|
||||
Tue Nov 25 22:43:30 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* dwarf2out.c (outout_call_frame_info): Ensure that the info has
|
||||
proper alignment.
|
||||
|
||||
* libgcc2.c (__throw): Initialize HANDLER.
|
||||
|
||||
* dwarfout.c (output_type): If finalizing, write out nested types
|
||||
of types we've already written.
|
||||
|
||||
Tue Nov 25 10:00:42 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Undefine before including
|
||||
svr4.h.
|
||||
|
||||
* sh/elf.h (PREFERRED_DEBUGGING_TYPE): Don't redefine.
|
||||
|
||||
* sh/elf.h (HANDLE_SYSV_PRAGMA): Undefine.
|
||||
|
||||
* sh/elf.h: (LINK_SPEC): Use shlelf.
|
||||
(USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX, ASM_FILE_START): Redefine.
|
||||
|
||||
* sh.h: dwarf patches from Fred Fish.
|
||||
|
||||
* va-sh.h (__va_arg_sh1): Define.
|
||||
(va_arg): Use it.
|
||||
SH3E doesn't use any integer registers for subsequent arguments
|
||||
once a non-float value was passed in the stack.
|
||||
* sh.h (PASS_IN_REG_P): Fix SH3E case.
|
||||
|
||||
Tue Nov 25 10:00:42 1997 Richard Henderson (rth@cygnus.com)
|
||||
|
||||
* alpha.h (CONST_OK_FOR_LETTER): Fix 'L' handling.
|
||||
|
||||
Tue Nov 25 10:00:42 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* configure.in (alphaev56*-*-*): Disable MASK_BYTE_OPS until
|
||||
ev56 support works correctly.
|
||||
|
||||
* crtstuff.c (do_global_dtors_aux): Handle multiple calls better.
|
||||
|
||||
Sun Nov 23 13:01:48 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
Sat Nov 22 18:58:20 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* pa-hpux10.h (NEW_HP_ASSEMBLER): Define.
|
||||
* pa.h (LEGITIMATE_CONSTANT_P): Reject LABEL_REFs if not using
|
||||
gas and not using the new HP assembler.
|
||||
|
||||
Fri Nov 21 15:20:05 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* Makefile.in (program_transform_cross_name): Clean up "-e" confusion.
|
||||
(GCC_INSTALL_NAME, GCC_CROSS_NAME): Likewise.
|
||||
|
||||
* i386.h (TARGET_CMOV): Disable conditional moves for this release.
|
||||
|
||||
Fri Nov 21 12:18:51 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* except.h: Add outer_context_label_stack.
|
||||
* except.c: Likewise.
|
||||
(expand_start_all_catch): Push the outer_context for the try block
|
||||
onto outer_context_label_stack.
|
||||
(expand_end_all_catch): Use it and pop it.
|
||||
|
||||
Fri Nov 21 10:13:11 1997 Robert Lipe (robertl@dgii.com)
|
||||
|
||||
* i386/sco5.h (HAVE_ATEXIT): Revert last change.
|
||||
|
||||
Thu Nov 20 16:11:50 1997 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* alpha.c (alpha_emit_set_const_1): Handle narrow hosts better.
|
||||
|
||||
Thu Nov 20 16:11:50 1997 Klaus Kaempf <kkaempf@progis.de>
|
||||
|
||||
* alpha/vms.h (ASM_OUTPUT_ADDR_VEC_ELT): Add an L for the local label
|
||||
to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.
|
||||
|
||||
Thu Nov 20 14:42:15 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* except.c (output_exception_table): Don't bother with
|
||||
__EXCEPTION_END__.
|
||||
|
||||
Thu Nov 20 16:11:50 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* pa.md (pre_stwm, post_stwm, pre_ldwm, post_ldwm): Base register
|
||||
is an in/out operand.
|
||||
(zero extended variants of stwm/stwm patterns): Similarly.
|
||||
|
||||
* mips/x-iris (FIXPROTO_DEFINES): Add -D_SGI_SOURCE.
|
||||
|
||||
Thu Nov 20 13:19:32 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* dwarf2out.c (ASM_OUTPUT_DWARF_OFFSET4): Rename from VALUE4.
|
||||
Use assemble_name.
|
||||
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Use assemble_name.
|
||||
(output_call_frame_info): Emit a \n after using it.
|
||||
|
||||
Thu Nov 20 00:38:46 1997 Dave Love <d.love@dl.ac.uk>
|
||||
|
||||
* configure.in: Add AC_ARG_ENABLE for Haifa as documentation.
|
||||
|
||||
Wed Nov 19 12:03:04 1997 Philippe De Muyter <phdm@macqel.be>
|
||||
|
||||
* dwarf2out.c (CIE_LENGTH_LABEL, FDE_LENGTH_LABEL): New macros.
|
||||
(ASM_OUTPUT_DWARF_VALUE4): New macro.
|
||||
(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Define if SET_ASM_OP is
|
||||
defined.
|
||||
(output_call_frame_info): Do not output forward label differences
|
||||
if ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL is defined.
|
||||
* m68k/mot3300.h (SET_ASM_OP): Define when not using gas.
|
||||
|
||||
Tue Nov 18 22:50:24 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* mips/mips.c (save_restore_insns): If gp_offset or fp_offset are
|
||||
large_int, emit two insns instead of one splitable insn.
|
||||
* dwarf2out.c (dwarf2out_frame_debug): When set cfa_store_offset
|
||||
from cfa_temp_value, use cfa_offset. Abort if cfa_reg is not SP.
|
||||
|
||||
Fri Nov 7 15:33:11 1997 Robert Lipe (robertl@dgii.com)
|
||||
|
||||
* i386/sco5.h (HAVE_ATEXIT): Delete definition.
|
||||
|
||||
Sun Nov 16 23:52:48 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl
|
||||
return.
|
||||
(cse_end_of_basic_block): Similarly.
|
||||
|
||||
Sun Nov 16 23:01:40 1997 J. Kean Johnston <jkj@sco.com>
|
||||
|
||||
* i386/sco5.h (ASM_OUTPUT_ALIGNED_BSS): Define.
|
||||
(SELECT_RTX_SECTION): Define.
|
||||
(LIBGCC_SPEC, LIB_SPEC): Do the right thing for PIC.
|
||||
|
||||
Sun Nov 16 22:47:03 1997 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* Makefile.in (compare, compare-lean): Define $stage for each
|
||||
shell command.
|
||||
(gnucompare, gnucompare-lean): Likewise.
|
||||
|
||||
Sun Nov 16 22:02:16 1997 Richard Henderson (rth@cygnus.com)
|
||||
|
||||
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE): Fix offsets.
|
||||
|
||||
* alpha.h (ASM_OUTPUT_ADDR_DIFF_ELT): Add an L for the local label
|
||||
to correspond with the change to ASM_GENERATE_INTERNAL_LABEL.
|
||||
|
||||
Fri Nov 14 08:01:25 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
1997-11-14 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
Fix some confusion with IEEE minus zero.
|
||||
|
||||
* real.h (REAL_VALUES_IDENTICAL): New macro.
|
||||
|
||||
* expr.c (is_zeros_p): Don't consider -0.0 to be all zeros.
|
||||
* fold-const.c (operand_equal_p): Don't consider -0.0 to be
|
||||
identical to 0.0.
|
||||
* tree.c (simple_cst_equal): Don't consider -0.0 to have the
|
||||
same tree structure as 0.0.
|
||||
|
||||
* varasm.c (immed_real_const_1): Use new REAL_VALUES_IDENTICAL
|
||||
macro instead of doing it by hand.
|
||||
|
||||
Fri Nov 14 07:24:20 1997 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* expr.c (expand_builtin_setjmp): Set
|
||||
current_function_has_nonlocal_label.
|
||||
* stupid.c (stupid_life_analysis): If has_nonlocal_label, kill
|
||||
call-saved registers across calls.
|
||||
|
||||
* alpha.md (exception_receiver): Remove.
|
||||
(nonlocal_goto_receiver_osf): New
|
||||
(nonlocal_goto_receiver_vms): Renamed from nonlocal_goto_receiver.
|
||||
(nonlocal_goto_receiver): New, select _osf or _vms.
|
||||
|
||||
* alpha.c (output_prolog [*]): Prefix entry labels with '$' to
|
||||
keep them from being propogated to the object file.
|
||||
(alpha_write_linkage): Likewise.
|
||||
* alpha.md (call_vms): Likewise.
|
||||
(call_value_vms): Likewise.
|
||||
(unnamed osf call insns): Likewise.
|
||||
|
||||
* alpha.h (ASM_OUTPUT_INTERNAL_LABEL): Don't omit L from local label.
|
||||
(ASM_GENERATE_INTERNAL_LABEL): Likewise.
|
||||
|
||||
* alpha.c (call_operand): Any reg is valid for WinNT.
|
||||
* alpha.md (call_nt, call_value_nt): Don't force address into $27.
|
||||
(anon nt calls): Add 'R' alternative.
|
||||
* alpha/win-nt.h (TRAMPOLINE_TEMPLATE, TRAMPOLINE_SIZE,
|
||||
INITIALIZE_TRAMPOLINE): Handle lack of original $27 and 32-bit ptrs.
|
||||
|
||||
Thu Nov 13 12:53:44 1997 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete code swapping xplus0 and
|
||||
xplus1 when xplus0 is not a register.
|
||||
|
||||
Thu Nov 13 11:51:32 1997 David Edelsohn <edelsohn@mhpcc.edu>
|
||||
|
||||
* rs6000.md (lshrdi3_power): Delete '&' from first alternative and
|
||||
swap instruction order.
|
||||
|
||||
Thu Nov 13 11:47:55 1997 Michael Meissner <meissner@cygnus.com>
|
||||
|
||||
* rs6000.c (num_insns_constant): Use REAL_VALUE_FROM_CONST_DOUBLE to
|
||||
pick apart floating point values, instead of using CONST_DOUBLE_LOW
|
||||
and CONST_DOUBLE_HIGH.
|
||||
|
||||
* rs6000.md (define_splits for DF constants): Use the appropriate
|
||||
REAL_VALUE_* interface to pick apart DF floating point constants in
|
||||
a machine independent fashion.
|
||||
|
||||
Thu Nov 13 11:41:42 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* flow.c (find_basic_blocks): During marking phase, if we encounter
|
||||
an insn with a REG_LABEL note, make the target block live and
|
||||
create an edge from the insn to the target block. Do not make
|
||||
edges from all blocks to the target block.
|
||||
|
||||
* m68k/x-next (OTHER_FIXINCLUDES_DIRS): Include /NextDeveloper/Headers.
|
||||
|
||||
* configure.in: Tweak NCR entries.
|
||||
* configure: Rebuilt.
|
||||
|
||||
Wed Nov 12 09:37:01 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* except.c: Do not include "assert.h".
|
||||
(save_eh_status): Turn asserts into conditional aborts.
|
||||
(restore_eh_status, scan_region): Likewise.
|
||||
* dwarfout.c: Do not include "assert.h".
|
||||
(bit_offset_attribute): Turn asserts into conditional aborts.
|
||||
(bit_size_attribute, output_inlined_enumeration_type_die): Likewise.
|
||||
(output_inlined_structure_type_die): Likewise.
|
||||
(output_inlined_union_type_die): Likewise
|
||||
(output_tagged_type_instantiation): Likewise.
|
||||
(dwarfout_file_scope_decl): Likewise.
|
||||
* dwarf2out.c: Do not include "assert.h"
|
||||
(expand_builtin_dwarf_reg_size): Turn asserts into conditional aborts.
|
||||
(reg_save, initial_return_save, dwarf2out_frame_debug): Likewise.
|
||||
(add_child_die, modified_type_die, add_bit_offset_attribute): Likewise.
|
||||
(add_bit_size_attribute, scope_die_for): Likewise.
|
||||
(output_pending_types_for_scope): Likewise.
|
||||
(get_inlined_enumeration_type_die): Likewise.
|
||||
(get_inlined_structure_type_die): Likewise.
|
||||
(get_inlined_union_type_die, gen_subprogram_die): Likewise.
|
||||
(gen_tagged_type_instantiation_die): Likewise.
|
||||
|
||||
* flow.c (find_basic_blocks): Refine further to get a more correct
|
||||
cfg, especially in the presense of exception handling, computed
|
||||
gotos, and other non-trivial cases. Call abort if an inaccuracy
|
||||
is detected in the cfg.
|
||||
|
||||
Mon Nov 10 03:02:19 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* stmt.c (expand_decl_cleanup_no_eh): New fn.
|
||||
|
||||
* except.c (expand_leftover_cleanups): do_pending_stack_adjust.
|
||||
|
||||
Sun Oct 19 09:07:38 1997 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* stmt.c (using_eh_for_cleanups_p): New variable.
|
||||
(using_eh_for_cleanups): New function.
|
||||
(expand_decl_cleanup): Don't call expand_eh_region_start_tree
|
||||
unless using EH for cleanups.
|
||||
|
||||
Mon Nov 10 00:05:56 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* alias.c (MAX_ALIAS_LOOP_PASSES): Define.
|
||||
(init_alias_analysis): Break out of loops after MAX_ALIAS_LOOP_PASSES.
|
||||
|
||||
Sun Nov 9 02:07:16 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* fixinc.svr4 (__STDC__): Add another case.
|
||||
|
||||
Sun Nov 9 02:00:29 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* a29k.h (ELIGIBLE_FOR_EPILOGUE_DELAY): Avoid loads from varying
|
||||
addresses in the epilogue delay slot.
|
||||
|
||||
Sun Nov 9 01:40:40 1997 Manfred Hollstein (manfred@s-direktnet.de)
|
||||
|
||||
* m88k/dgux.h (ASM_CPU_SPEC): Reformatted to suppress wrong whitespace
|
||||
in generated `specs' file.
|
||||
|
||||
Fri Nov 7 16:23:20 1997 Jim Wilson (wilson@cygnus.com)
|
||||
|
||||
* flags.h (flag_rerun_loop_opt): Declare.
|
||||
* loop.c (invariant_p, case LABEL_REF): Check flag_rerun_loop_opt.
|
||||
* toplev.c (flag_rerum_loop_opt): Delete static.
|
||||
|
||||
Fri Nov 7 10:22:24 1997 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* frame.c (add_fdes, count_fdes): Go back to checking pc_begin for
|
||||
linked once FDEs.
|
||||
|
||||
Wed Nov 5 01:42:12 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* version.c: Bump for snapshot.
|
||||
|
||||
* alias.c (find_base_value): Only return the known base value for
|
||||
pseudo registers.
|
||||
|
||||
Tue Nov 4 16:07:15 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* fixincludes: Fix "hypot" prototype in NeXT math.h.
|
||||
|
||||
* Makefile.in (USE_ALLOCA): Always include alloca.o.
|
||||
(USE_HOST_ALLOCA): Likewise.
|
||||
|
||||
* alias.c (find_base_value): When copying arguments, return the
|
||||
tenative value for a hard register.
|
||||
|
||||
Tue Nov 4 14:12:30 1997 Richard Henderson (rth@cygnus.com)
|
||||
Jim Wilson (wilson@cygnus.com)
|
||||
|
||||
* alpha.c (summarize_insn): Handle ASM_OPERANDS. Don't recurse
|
||||
for SUBREG, just fall through.
|
||||
|
||||
* alpha.c (alpha_handle_trap_shadows): Init sum.defd to zero.
|
||||
|
||||
* alpha.md (attr trap): Make TRAP_YES non-zero for sanity's sake.
|
||||
|
||||
* combine.c (try_combine): When setting elim_i1, check if newi2pat
|
||||
sets i1dest.
|
||||
|
||||
* combine.c (try_combine): When setting elim_i2, check whether newi2pat
|
||||
sets i2dest. When calling distribute_notes for i3dest_killed, pass
|
||||
elim_i2 and elim_i1.
|
||||
|
||||
Mon Nov 3 14:36:50 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* configure.in (sco5): Use cpio to install header files.
|
||||
|
||||
Sun Nov 2 23:30:31 1997 Manfred Hollstein <manfred@s-direktnet.de>
|
||||
|
||||
* aclocal.m4 (conftestdata_from, conftestdata_to): Names shortened to
|
||||
14 char length.
|
||||
* configure: Rebuild.
|
||||
|
||||
Sun Nov 2 22:53:16 1997 Richard Earnshaw (rearnsha@arm.com)
|
||||
|
||||
* arm.c (load_multiple_sequence): Support SUBREG of MEM.
|
||||
(store_multiple_sequence): Likewise.
|
||||
|
||||
Sun Nov 2 19:44:00 1997 Robert Lipe (robertl@dgii.com)
|
||||
|
||||
* i386/sco5.h: enable -gstabs once again.
|
||||
|
||||
Sun Nov 2 19:27:21 1997 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* arm.c (output_move_double): Allocate 3 entries in otherops array.
|
||||
|
||||
Sat Nov 1 21:43:00 1997 Mike Stump (mrs@wrs.com)
|
||||
|
||||
* except.c (expand_ex_region_start_for_decl): Emit EH_REGION_BEG
|
||||
|
||||
@@ -3,6 +3,9 @@ This file documents the installation of the GNU compiler. Copyright
|
||||
may copy, distribute, and modify it freely as long as you preserve this
|
||||
copyright notice and permission notice.
|
||||
|
||||
Note most of this information is out of date and superceded by the EGCS
|
||||
install procedures. It is provided for historical reference only.
|
||||
|
||||
Installing GNU CC
|
||||
*****************
|
||||
|
||||
|
||||
@@ -17,6 +17,10 @@ Collected papers/sites on standards, compilers, optimization, etc.
|
||||
http://www.goof.com/pcg/docs.html
|
||||
|
||||
|
||||
- AMD site with optimization guide for x86
|
||||
|
||||
http://www.amd.com/K6/k6docs/pdf/21828a.pdf
|
||||
|
||||
- Links related to many compiler topics
|
||||
|
||||
http://www.nullstone.com/htmls/connections.htm
|
||||
@@ -39,3 +43,16 @@ Collected papers/sites on standards, compilers, optimization, etc.
|
||||
http://www.sgi.com/MIPS/arch/ISA5/MIPSVspec.pdf
|
||||
|
||||
|
||||
- IBM Journal of Research and Development
|
||||
|
||||
http://www.almaden.ibm.com/journal/
|
||||
|
||||
|
||||
- System V PowerPC ABI
|
||||
|
||||
http://www.esofta.com/softspecs.html
|
||||
|
||||
- C9X draft
|
||||
|
||||
http://www.dkuug.dk/JTC1/SC22/WG14/www/docs/n794.htm
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ ENQUIRE_LDFLAGS = $(LDFLAGS)
|
||||
|
||||
# Sed command to transform gcc to installed name. Overwritten by configure.
|
||||
program_transform_name = @program_transform_name@
|
||||
program_transform_cross_name = -e s,^,$(target_alias)-,
|
||||
program_transform_cross_name = s,^,$(target_alias)-,
|
||||
|
||||
# Tools to use when building a cross-compiler.
|
||||
# These are used because `configure' appends `cross-make'
|
||||
@@ -394,10 +394,10 @@ HOST_MALLOC=$(MALLOC)
|
||||
HOST_OBSTACK=$(OBSTACK)
|
||||
|
||||
# Actual name to use when installing a native compiler.
|
||||
GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed $$t`
|
||||
GCC_INSTALL_NAME = `t='$(program_transform_name)'; echo gcc | sed -e $$t`
|
||||
|
||||
# Actual name to use when installing a cross-compiler.
|
||||
GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed $$t`
|
||||
GCC_CROSS_NAME = `t='$(program_transform_cross_name)'; echo gcc | sed -e $$t`
|
||||
|
||||
# Choose the real default target.
|
||||
ALL=all.internal
|
||||
@@ -468,8 +468,8 @@ ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS) \
|
||||
ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)
|
||||
|
||||
# Even if ALLOCA is set, don't use it if compiling with GCC.
|
||||
USE_ALLOCA= ` case "${CC}" in "${OLDCC}") echo "${ALLOCA}" ;; esac `
|
||||
USE_HOST_ALLOCA= ` case "${HOST_CC}"@"${HOST_ALLOCA}" in "${OLDCC}"@?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac `
|
||||
USE_ALLOCA= ${ALLOCA}
|
||||
USE_HOST_ALLOCA= ` case "${HOST_ALLOCA}" in ?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac `
|
||||
USE_HOST_MALLOC= ` case "${HOST_MALLOC}" in ?*) echo ${HOST_PREFIX}${HOST_MALLOC} ;; esac `
|
||||
USE_HOST_OBSTACK= ` case "${HOST_OBSTACK}" in ?*) echo ${HOST_PREFIX}${HOST_OBSTACK} ;; esac `
|
||||
|
||||
@@ -1304,7 +1304,8 @@ dwarf2out.o : dwarf2out.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf2.h flags.h \
|
||||
xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoffout.h flags.h
|
||||
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
|
||||
function.h regs.h insn-config.h insn-codes.h real.h expr.h bytecode.h \
|
||||
bc-opcode.h bc-typecd.h bc-typecd.def bc-optab.h bc-emit.h bc-opname.h
|
||||
bc-opcode.h bc-typecd.h bc-typecd.def bc-optab.h bc-emit.h bc-opname.h \
|
||||
hard-reg-set.h
|
||||
real.o : real.c $(CONFIG_H) $(TREE_H)
|
||||
getpwd.o : getpwd.c $(CONFIG_H)
|
||||
|
||||
@@ -1738,7 +1739,7 @@ cccp.o: cccp.c $(CONFIG_H) pcp.h version.c config.status
|
||||
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
|
||||
-DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
|
||||
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
|
||||
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
|
||||
-c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
|
||||
|
||||
@@ -1755,7 +1756,7 @@ cpplib.o: cpplib.c $(CONFIG_H) cpplib.h cpphash.h config.status
|
||||
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
|
||||
-DOLD_GPLUSPLUS_INCLUDE_DIR=\"$(old_gxx_include_dir)\" \
|
||||
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
|
||||
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
|
||||
-c `echo $(srcdir)/cpplib.c | sed 's,^\./,,'`
|
||||
|
||||
@@ -1790,7 +1791,7 @@ stamp-proto: protoize.c getopt.h $(CONFIG_H)
|
||||
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
|
||||
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
|
||||
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
|
||||
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
|
||||
-DSTD_PROTO_DIR=\"$(libsubdir)\" \
|
||||
@@ -1799,7 +1800,7 @@ stamp-proto: protoize.c getopt.h $(CONFIG_H)
|
||||
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
-DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
|
||||
-DGPLUSPLUS_INCLUDE_DIR=\"$(gxx_include_dir)\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
|
||||
-DCROSS_INCLUDE_DIR=\"$(tooldir)/sys-include\" \
|
||||
-DTOOL_INCLUDE_DIR=\"$(tooldir)/include\" \
|
||||
-DLOCAL_INCLUDE_DIR=\"$(includedir)\" \
|
||||
-DSTD_PROTO_DIR=\"$(libsubdir)\" \
|
||||
@@ -2624,6 +2625,7 @@ compare compare3 compare4 compare-lean compare3-lean compare4-lean: force
|
||||
fi; \
|
||||
done
|
||||
-rm -f tmp-foo*
|
||||
case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
|
||||
if [ -f .bad_compare ]; then \
|
||||
echo "Bootstrap comparison failure!"; \
|
||||
cat .bad_compare; \
|
||||
@@ -2652,6 +2654,7 @@ gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-
|
||||
done; \
|
||||
fi; \
|
||||
done
|
||||
case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
|
||||
if [ -f .bad_compare ]; then \
|
||||
echo "Bootstrap comparison failure!"; \
|
||||
cat .bad_compare; \
|
||||
|
||||
2
gcc/NEWS
2
gcc/NEWS
@@ -1,4 +1,4 @@
|
||||
Noteworthy changes in GCC version 2.8.0:
|
||||
Noteworthy changes in GCC for EGCS.
|
||||
|
||||
The -specs=file switch allows you to override default specs used in invoking
|
||||
programs like cc1, as, etc.
|
||||
|
||||
4003
gcc/ORDERS
4003
gcc/ORDERS
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
This directory contains the version 2.7.2 release of the GNU C
|
||||
This directory contains the egcs version 1.0.3 release of the GNU C
|
||||
compiler. It includes all of the support for compiling C++ and
|
||||
Objective C, including a run-time library for Objective C.
|
||||
|
||||
|
||||
@@ -1,3 +1,80 @@
|
||||
AIX 4.3 assembler
|
||||
|
||||
The AIX 4.3.0.0 assembler generates incorrect object files if the ".bs"
|
||||
pseudo-op references symbols in certain sections. If GCC is invoked with
|
||||
the -g debugging option (including during bootstrapping), incorrect object
|
||||
files will be produced and the AIX linker will fail with a severe error.
|
||||
A fix for APAR IX74254 (64BIT DISASSEMBLED OUPUT FROM COMPILER FAILS TO
|
||||
ASSEMBLE/BIND) is available from IBM Customer Support and IBM's
|
||||
service.boulder.ibm.com website.
|
||||
|
||||
|
||||
AIX 4.1 binder
|
||||
|
||||
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
|
||||
the link step now may produce warnings of duplicate symbols which were not
|
||||
reported before. The assembly files generated by GCC for AIX always have
|
||||
included multiple symbol definitions for certain global variable and
|
||||
function declarations in the original program. The warnings should not
|
||||
prevent the linker from producing a correct library or runnable executable.
|
||||
|
||||
|
||||
AIX NLS problems
|
||||
|
||||
AIX on the RS/6000 provides support (NLS) for environments outside of
|
||||
the United States. Compilers and assemblers use NLS to support
|
||||
locale-specific representations of various objects including
|
||||
floating-point numbers ("." vs "," for separating decimal fractions).
|
||||
There have been problems reported where the library linked with GCC does
|
||||
not produce the same floating-point formats that the assembler accepts.
|
||||
If you have this problem, set the LANG environment variable to "C" or
|
||||
"En_US".
|
||||
|
||||
|
||||
AIX 3.2.5 XLC-1.3 problems
|
||||
|
||||
XLC version 1.3.0.0 distributed with AIX 3.2.5 will miscompile jump.c when
|
||||
building the stage1 compiler during the bootstrap process. This will cause
|
||||
GCC to crash and the bootstrap to fail later while compiling libgcc2.c. XLC
|
||||
version 1.3.0.1 or later fixes this problem. XLC-1.3.0.19 also cannot
|
||||
bootstrap GCC so please avoid that release as well. You can obtain
|
||||
XLC-1.3.0.24 by requesting PTF 432238 from IBM, or just ask for the latest
|
||||
release of XLC-1.3.
|
||||
|
||||
There also have been reports of problems bootstrapping GCC with some older
|
||||
releases of xlc-1.2.1, including xlc-1.2.1.8. Newer releases of xlc-1.2.1
|
||||
do not exhibit this problem: xlc-1.2.1.28 is known to bootstrap properly.
|
||||
|
||||
|
||||
AIX 3.2 common-mode support
|
||||
|
||||
AIX common-mode providing transparent support of both the POWER and PowerPC
|
||||
architectures is usable in AIX 3.2.3 and above but an export file and
|
||||
support for hidden export via libc.a will not exist until AIX 4.1. libgcc.a
|
||||
also must be compiled in common-mode. Note that executables generated for
|
||||
the POWER (RIOS1 and RSC) architecture will run directly on systems using
|
||||
the MPC601 chip. Common-mode only improves the performance of a single
|
||||
executable run on both POWER and PowerPC architecture platforms by not using
|
||||
POWER- or PowerPC-specific instructions and eliminating the need to trap to
|
||||
emulation (for POWER instructions run on PowerPC).
|
||||
|
||||
To link a common-mode application prior to AIX 4.1 and run it on a system at
|
||||
AIX level 3.2.3 or above, use the text between the "<>" as an export file
|
||||
(e.g. milli.exp)
|
||||
|
||||
<><><><><><><><><><><>
|
||||
#!
|
||||
__mulh 0x3100
|
||||
__mull 0x3180
|
||||
__divss 0x3200
|
||||
__divus 0x3280
|
||||
__quoss 0x3300
|
||||
__quous 0x3380
|
||||
<><><><><><><><><><><>
|
||||
|
||||
and then link with -Wl,-bI:milli.exp.
|
||||
|
||||
|
||||
AIX 3.1 and 3.2 assembler problems
|
||||
|
||||
Specifying the -g flag to GCC on the RS/6000 requires upgrading the
|
||||
@@ -44,68 +121,3 @@ compiler. This is because the GNU C compiler wants to build a variant of its
|
||||
library, libgcc.a with the -mcpu=common switch to support building programs
|
||||
that can run on either the Power or PowerPC machines.
|
||||
|
||||
|
||||
AIX NLS problems
|
||||
|
||||
AIX on the RS/6000 provides support (NLS) for environments outside of
|
||||
the United States. Compilers and assemblers use NLS to support
|
||||
locale-specific representations of various objects including
|
||||
floating-point numbers ("." vs "," for separating decimal fractions).
|
||||
There have been problems reported where the library linked with GCC does
|
||||
not produce the same floating-point formats that the assembler accepts.
|
||||
If you have this problem, set the LANG environment variable to "C" or
|
||||
"En_US".
|
||||
|
||||
|
||||
AIX 3.2.5 XLC-1.3 problems
|
||||
|
||||
XLC version 1.3.0.0 distributed with AIX 3.2.5 will miscompile jump.c when
|
||||
building the stage1 compiler during the bootstrap process. This will cause
|
||||
GCC to crash and the bootstrap to fail later while compiling libgcc2.c. XLC
|
||||
version 1.3.0.1 or later fixes this problem. XLC-1.3.0.19 also cannot
|
||||
bootstrap GCC so please avoid that release as well. You can obtain
|
||||
XLC-1.3.0.24 by requesting PTF 432238 from IBM, or just ask for the latest
|
||||
release of XLC-1.3.
|
||||
|
||||
There also have been reports of problems bootstrapping GCC with some older
|
||||
releases of xlc-1.2.1, including xlc-1.2.1.8. Newer releases of xlc-1.2.1
|
||||
do not exhibit this problem: xlc-1.2.1.28 is known to bootstrap properly.
|
||||
|
||||
|
||||
AIX 3.2 common-mode support
|
||||
|
||||
AIX common-mode providing transparent support of both the POWER and PowerPC
|
||||
architectures is usable in AIX 3.2.3 and above but an export file and
|
||||
support for hidden export via libc.a will not exist until AIX 4.1. libgcc.a
|
||||
also must be compiled in common-mode. Note that executables generated for
|
||||
the POWER (RIOS1 and RSC) architecture will run directly on systems using
|
||||
the MPC601 chip. Common-mode only improves the performance of a single
|
||||
executable run on both POWER and PowerPC architecture platforms by not using
|
||||
POWER- or PowerPC-specific instructions and eliminating the need to trap to
|
||||
emulation (for POWER instructions run on PowerPC).
|
||||
|
||||
To link a common-mode application prior to AIX 4.1 and run it on a system at
|
||||
AIX level 3.2.3 or above, use the text between the "<>" as an export file
|
||||
(e.g. milli.exp)
|
||||
|
||||
<><><><><><><><><><><>
|
||||
#!
|
||||
__mulh 0x3100
|
||||
__mull 0x3180
|
||||
__divss 0x3200
|
||||
__divus 0x3280
|
||||
__quoss 0x3300
|
||||
__quous 0x3380
|
||||
<><><><><><><><><><><>
|
||||
|
||||
and then link with -Wl,-bI:milli.exp.
|
||||
|
||||
|
||||
AIX 4.1 binder
|
||||
|
||||
Due to changes in the way that GCC invokes the binder (linker) for AIX 4.1,
|
||||
the link step now may produce warnings of duplicate symbols which were not
|
||||
reported before. The assembly files generated by GCC for AIX always have
|
||||
included multiple symbol definitions for certain global variable and
|
||||
function declarations in the original program. The warnings should not
|
||||
prevent the linker from producing a correct library or runnable executable.
|
||||
|
||||
@@ -14,6 +14,10 @@ which is the top-level directory containing the gcc back end, the
|
||||
gcc C front end, and other non-Fortran files, and gcc/f/, which
|
||||
contains all of the Fortran files.
|
||||
|
||||
* Note, if this is an egcs release, all the installation information
|
||||
which follows is not needed. It is provided for historical reference
|
||||
only.
|
||||
|
||||
* To build GNU Fortran, you must have a source distribution of gcc
|
||||
version 2.7.2.2. Do not attempt to use any other version
|
||||
of gcc, because this version of g77 is designed to work only with
|
||||
@@ -163,4 +167,4 @@ the compiler is in the second pass, otherwise it is in the first.
|
||||
(This information might help you reduce a test case and/or work around
|
||||
a bug in g77 until a fix is available.)
|
||||
|
||||
Any questions or comments on these topics, email fortran@gnu.ai.mit.edu.
|
||||
Any questions or comments on these topics, email egcs@cygnus.com
|
||||
|
||||
20
gcc/aclocal.m4
vendored
20
gcc/aclocal.m4
vendored
@@ -30,20 +30,20 @@ dnl See if symbolic links work and if not, try to substitute either hard links o
|
||||
AC_DEFUN(GCC_PROG_LN_S,
|
||||
[AC_MSG_CHECKING(whether ln -s works)
|
||||
AC_CACHE_VAL(gcc_cv_prog_LN_S,
|
||||
[rm -f conftestdata_to
|
||||
echo >conftestdata_from
|
||||
if ln -s conftestdata_from conftestdata_to 2>/dev/null
|
||||
[rm -f conftestdata_t
|
||||
echo >conftestdata_f
|
||||
if ln -s conftestdata_f conftestdata_t 2>/dev/null
|
||||
then
|
||||
gcc_cv_prog_LN_S="ln -s"
|
||||
else
|
||||
if ln conftestdata_from conftestdata_to 2>/dev/null
|
||||
if ln conftestdata_f conftestdata_t 2>/dev/null
|
||||
then
|
||||
gcc_cv_prog_LN_S=ln
|
||||
else
|
||||
gcc_cv_prog_LN_S=cp
|
||||
fi
|
||||
fi
|
||||
rm -f conftestdata_from conftestdata_to
|
||||
rm -f conftestdata_f conftestdata_t
|
||||
])dnl
|
||||
LN_S="$gcc_cv_prog_LN_S"
|
||||
if test "$gcc_cv_prog_LN_S" = "ln -s"; then
|
||||
@@ -62,20 +62,20 @@ dnl See if hard links work and if not, try to substitute either symbolic links o
|
||||
AC_DEFUN(GCC_PROG_LN,
|
||||
[AC_MSG_CHECKING(whether ln works)
|
||||
AC_CACHE_VAL(gcc_cv_prog_LN,
|
||||
[rm -f conftestdata_to
|
||||
echo >conftestdata_from
|
||||
if ln conftestdata_from conftestdata_to 2>/dev/null
|
||||
[rm -f conftestdata_t
|
||||
echo >conftestdata_f
|
||||
if ln conftestdata_f conftestdata_t 2>/dev/null
|
||||
then
|
||||
gcc_cv_prog_LN="ln"
|
||||
else
|
||||
if ln -s conftestdata_from conftestdata_to 2>/dev/null
|
||||
if ln -s conftestdata_f conftestdata_t 2>/dev/null
|
||||
then
|
||||
gcc_cv_prog_LN="ln -s"
|
||||
else
|
||||
gcc_cv_prog_LN=cp
|
||||
fi
|
||||
fi
|
||||
rm -f conftestdata_from conftestdata_to
|
||||
rm -f conftestdata_f conftestdata_t
|
||||
])dnl
|
||||
LN="$gcc_cv_prog_LN"
|
||||
if test "$gcc_cv_prog_LN" = "ln"; then
|
||||
|
||||
47
gcc/alias.c
47
gcc/alias.c
@@ -36,6 +36,12 @@ static int memrefs_conflict_p PROTO((int, rtx, int, rtx,
|
||||
|
||||
#define SIZE_FOR_MODE(X) (GET_MODE_SIZE (GET_MODE (X)))
|
||||
|
||||
/* Cap the number of passes we make over the insns propagating alias
|
||||
information through set chains.
|
||||
|
||||
10 is a completely arbitrary choice. */
|
||||
#define MAX_ALIAS_LOOP_PASSES 10
|
||||
|
||||
/* reg_base_value[N] gives an address to which register N is related.
|
||||
If all sets after the first add or subtract to the current value
|
||||
or otherwise modify it so it does not point to a different top level
|
||||
@@ -95,16 +101,23 @@ find_base_value (src)
|
||||
return src;
|
||||
|
||||
case REG:
|
||||
/* If this REG is related to a known base value, return it. */
|
||||
if (reg_base_value[REGNO (src)])
|
||||
return reg_base_value[REGNO (src)];
|
||||
|
||||
/* At the start of a function argument registers have known base
|
||||
values which may be lost later. Returning an ADDRESS
|
||||
expression here allows optimization based on argument values
|
||||
even when the argument registers are used for other purposes. */
|
||||
if (REGNO (src) < FIRST_PSEUDO_REGISTER && copying_arguments)
|
||||
return new_reg_base_value[REGNO (src)];
|
||||
|
||||
/* If a pseudo has a known base value, return it. Do not do this
|
||||
for hard regs since it can result in a circular dependency
|
||||
chain for registers which have values at function entry.
|
||||
|
||||
The test above is not sufficient because the scheduler may move
|
||||
a copy out of an arg reg past the NOTE_INSN_FUNCTION_BEGIN. */
|
||||
if (REGNO (src) >= FIRST_PSEUDO_REGISTER
|
||||
&& reg_base_value[REGNO (src)])
|
||||
return reg_base_value[REGNO (src)];
|
||||
|
||||
return src;
|
||||
|
||||
case MEM:
|
||||
@@ -955,7 +968,7 @@ void
|
||||
init_alias_analysis ()
|
||||
{
|
||||
int maxreg = max_reg_num ();
|
||||
int changed;
|
||||
int changed, pass;
|
||||
register int i;
|
||||
register rtx insn;
|
||||
rtx note;
|
||||
@@ -995,10 +1008,21 @@ init_alias_analysis ()
|
||||
|
||||
We could propagate more information in the first pass by making use
|
||||
of REG_N_SETS to determine immediately that the alias information
|
||||
for a pseudo is "constant". */
|
||||
for a pseudo is "constant".
|
||||
|
||||
A program with an uninitialized variable can cause an infinite loop
|
||||
here. Instead of doing a full dataflow analysis to detect such problems
|
||||
we just cap the number of iterations for the loop.
|
||||
|
||||
The state of the arrays for the set chain in question does not matter
|
||||
since the program has undefined behavior. */
|
||||
changed = 1;
|
||||
while (changed)
|
||||
pass = 0;
|
||||
while (changed && pass < MAX_ALIAS_LOOP_PASSES)
|
||||
{
|
||||
/* Keep track of the pass number so we can break out of the loop. */
|
||||
pass++;
|
||||
|
||||
/* Assume nothing will change this iteration of the loop. */
|
||||
changed = 0;
|
||||
|
||||
@@ -1123,10 +1147,15 @@ init_alias_analysis ()
|
||||
|
||||
In theory this loop can take as long as O(registers^2), but unless
|
||||
there are very long dependency chains it will run in close to linear
|
||||
time. */
|
||||
time.
|
||||
|
||||
This loop may not be needed any longer now that the main loop does
|
||||
a better job at propagating alias information. */
|
||||
pass = 0;
|
||||
do
|
||||
{
|
||||
changed = 0;
|
||||
pass++;
|
||||
for (i = 0; i < reg_base_value_size; i++)
|
||||
{
|
||||
rtx base = reg_base_value[i];
|
||||
@@ -1141,7 +1170,7 @@ init_alias_analysis ()
|
||||
}
|
||||
}
|
||||
}
|
||||
while (changed);
|
||||
while (changed && pass < MAX_ALIAS_LOOP_PASSES);
|
||||
|
||||
new_reg_base_value = 0;
|
||||
reg_seen = 0;
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
/* auto-config.h. Generated automatically by configure. */
|
||||
/* config.in. Generated automatically from configure.in by autoheader. */
|
||||
/* Whether malloc must be declared even if <stdlib.h> is included. */
|
||||
/* #undef NEED_DECLARATION_MALLOC */
|
||||
|
||||
/* Whether realloc must be declared even if <stdlib.h> is included. */
|
||||
/* #undef NEED_DECLARATION_REALLOC */
|
||||
|
||||
/* Whether calloc must be declared even if <stdlib.h> is included. */
|
||||
/* #undef NEED_DECLARATION_CALLOC */
|
||||
|
||||
/* Whether free must be declared even if <stdlib.h> is included. */
|
||||
/* #undef NEED_DECLARATION_FREE */
|
||||
|
||||
/* Define if `sys_siglist' is declared by <signal.h>. */
|
||||
#define SYS_SIGLIST_DECLARED 1
|
||||
|
||||
/* Define if you have the strerror function. */
|
||||
#define HAVE_STRERROR 1
|
||||
|
||||
/* Define if you have the <inttypes.h> header file. */
|
||||
/* #undef HAVE_INTTYPES_H */
|
||||
|
||||
/* Define if you have the <limits.h> header file. */
|
||||
#define HAVE_LIMITS_H 1
|
||||
|
||||
/* Define if you have the <stddef.h> header file. */
|
||||
#define HAVE_STDDEF_H 1
|
||||
|
||||
/* Define if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define if you have the <time.h> header file. */
|
||||
#define HAVE_TIME_H 1
|
||||
|
||||
/* Define if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
@@ -4827,7 +4827,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
|
||||
{
|
||||
register tree link;
|
||||
|
||||
for (link = current_function_parm_tags;
|
||||
for (link = last_function_parm_tags;
|
||||
link;
|
||||
link = TREE_CHAIN (link))
|
||||
TYPE_CONTEXT (TREE_VALUE (link)) = type;
|
||||
|
||||
@@ -9812,7 +9812,7 @@ new_include_prefix (prev_file_name, prefix, name)
|
||||
len = simplify_filename (dir->fname);
|
||||
|
||||
/* Convert directory name to a prefix. */
|
||||
if (dir->fname[len - 1] != '/') {
|
||||
if (len && dir->fname[len - 1] != '/') {
|
||||
if (len == 1 && dir->fname[len - 1] == '.')
|
||||
len = 0;
|
||||
else
|
||||
|
||||
775
gcc/collect2.c
775
gcc/collect2.c
File diff suppressed because it is too large
Load Diff
@@ -2141,10 +2141,14 @@ try_combine (i3, i2, i1)
|
||||
rtx i3links, i2links, i1links = 0;
|
||||
rtx midnotes = 0;
|
||||
register int regno;
|
||||
/* Compute which registers we expect to eliminate. */
|
||||
rtx elim_i2 = (newi2pat || i2dest_in_i2src || i2dest_in_i1src
|
||||
/* Compute which registers we expect to eliminate. newi2pat may be setting
|
||||
either i3dest or i2dest, so we must check it. */
|
||||
rtx elim_i2 = ((newi2pat && reg_set_p (i2dest, newi2pat))
|
||||
|| i2dest_in_i2src || i2dest_in_i1src
|
||||
? 0 : i2dest);
|
||||
rtx elim_i1 = i1 == 0 || i1dest_in_i1src ? 0 : i1dest;
|
||||
rtx elim_i1 = (i1 == 0 || i1dest_in_i1src
|
||||
|| (newi2pat && reg_set_p (i1dest, newi2pat))
|
||||
? 0 : i1dest);
|
||||
|
||||
/* Get the old REG_NOTES and LOG_LINKS from all our insns and
|
||||
clear them. */
|
||||
@@ -2305,7 +2309,7 @@ try_combine (i3, i2, i1)
|
||||
distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i3dest_killed,
|
||||
NULL_RTX),
|
||||
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
|
||||
NULL_RTX, NULL_RTX);
|
||||
elim_i2, elim_i1);
|
||||
}
|
||||
|
||||
/* For I2 and I1, we have to be careful. If NEWI2PAT exists and sets
|
||||
@@ -4032,6 +4036,11 @@ simplify_rtx (x, op0_mode, last, in_dest)
|
||||
if (GET_CODE (XEXP (x, 0)) == NEG)
|
||||
SUBST (XEXP (x, 0), XEXP (XEXP (x, 0), 0));
|
||||
|
||||
/* If the mode of the operand is VOIDmode (i.e. if it is ASM_OPERANDS),
|
||||
do nothing. */
|
||||
if (GET_MODE (XEXP (x, 0)) == VOIDmode)
|
||||
break;
|
||||
|
||||
/* If operand is something known to be positive, ignore the ABS. */
|
||||
if (GET_CODE (XEXP (x, 0)) == FFS || GET_CODE (XEXP (x, 0)) == ABS
|
||||
|| ((GET_MODE_BITSIZE (GET_MODE (XEXP (x, 0)))
|
||||
|
||||
@@ -987,13 +987,18 @@ extern char *a29k_function_name;
|
||||
|
||||
On the 29k, we must be able to place it in a delay slot, it must
|
||||
not use sp if the frame pointer cannot be eliminated, and it cannot
|
||||
use local regs if we need to push the register stack. */
|
||||
use local regs if we need to push the register stack.
|
||||
If this is a SET with a memory as source, it might load from
|
||||
a stack slot, unless the address is constant. */
|
||||
|
||||
#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN,N) \
|
||||
(get_attr_in_delay_slot (INSN) == IN_DELAY_SLOT_YES \
|
||||
&& ! (frame_pointer_needed \
|
||||
&& reg_mentioned_p (stack_pointer_rtx, PATTERN (INSN))) \
|
||||
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))))
|
||||
&& ! (needs_regstack_p () && uses_local_reg_p (PATTERN (INSN))) \
|
||||
&& (GET_CODE (PATTERN (INSN)) != SET \
|
||||
|| GET_CODE (SET_SRC (PATTERN (INSN))) != MEM \
|
||||
|| ! rtx_varies_p (XEXP (SET_SRC (PATTERN (INSN)), 0))))
|
||||
|
||||
/* Output assembler code for a block containing the constant parts
|
||||
of a trampoline, leaving space for the variable parts.
|
||||
|
||||
@@ -525,7 +525,8 @@ call_operand (op, mode)
|
||||
return 0;
|
||||
|
||||
return (GET_CODE (op) == SYMBOL_REF
|
||||
|| (GET_CODE (op) == REG && (TARGET_OPEN_VMS || REGNO (op) == 27)));
|
||||
|| (GET_CODE (op) == REG
|
||||
&& (TARGET_OPEN_VMS || TARGET_WINDOWS_NT || REGNO (op) == 27)));
|
||||
}
|
||||
|
||||
/* Return 1 if OP is a valid Alpha comparison operator. Here we know which
|
||||
@@ -886,12 +887,10 @@ alpha_emit_set_const_1 (target, mode, c, n)
|
||||
|
||||
/* If this is a sign-extended 32-bit constant, we can do this in at most
|
||||
three insns, so do it if we have enough insns left. We always have
|
||||
a sign-extended 32-bit constant when compiling on a narrow machine.
|
||||
Note that we cannot handle the constant 0x80000000. */
|
||||
a sign-extended 32-bit constant when compiling on a narrow machine. */
|
||||
|
||||
if ((HOST_BITS_PER_WIDE_INT != 64
|
||||
|| c >> 31 == -1 || c >> 31 == 0)
|
||||
&& c != 0x80000000U)
|
||||
if (HOST_BITS_PER_WIDE_INT != 64
|
||||
|| c >> 31 == -1 || c >> 31 == 0)
|
||||
{
|
||||
HOST_WIDE_INT low = (c & 0xffff) - 2 * (c & 0x8000);
|
||||
HOST_WIDE_INT tmp1 = c - low;
|
||||
@@ -910,7 +909,18 @@ alpha_emit_set_const_1 (target, mode, c, n)
|
||||
}
|
||||
|
||||
if (c == low || (low == 0 && extra == 0))
|
||||
return copy_to_suggested_reg (GEN_INT (c), target, mode);
|
||||
{
|
||||
/* We used to use copy_to_suggested_reg (GEN_INT (c), target, mode)
|
||||
but that meant that we can't handle INT_MIN on 32-bit machines
|
||||
(like NT/Alpha), because we recurse indefinitely through
|
||||
emit_move_insn to gen_movdi. So instead, since we know exactly
|
||||
what we want, create it explicitly. */
|
||||
|
||||
if (target == NULL)
|
||||
target = gen_reg_rtx (mode);
|
||||
emit_insn (gen_rtx (SET, VOIDmode, target, GEN_INT (c)));
|
||||
return target;
|
||||
}
|
||||
else if (n >= 2 + (extra != 0))
|
||||
{
|
||||
temp = copy_to_suggested_reg (GEN_INT (low), subtarget, mode);
|
||||
@@ -988,9 +998,11 @@ alpha_emit_set_const_1 (target, mode, c, n)
|
||||
/* Now try high-order zero bits. Here we try the shifted-in bits as
|
||||
all zero and all ones. Be careful to avoid shifting outside the
|
||||
mode and to avoid shifting outside the host wide int size. */
|
||||
/* On narrow hosts, don't shift a 1 into the high bit, since we'll
|
||||
confuse the recursive call and set all of the high 32 bits. */
|
||||
|
||||
if ((bits = (MIN (HOST_BITS_PER_WIDE_INT, GET_MODE_SIZE (mode) * 8)
|
||||
- floor_log2 (c) - 1)) > 0)
|
||||
- floor_log2 (c) - 1 - (HOST_BITS_PER_WIDE_INT < 64))) > 0)
|
||||
for (; bits > 0; bits--)
|
||||
if ((temp = alpha_emit_set_const (subtarget, mode,
|
||||
c << bits, i)) != 0
|
||||
@@ -1405,6 +1417,26 @@ print_operand (file, x, code)
|
||||
fputs ("su", file);
|
||||
break;
|
||||
|
||||
case '(':
|
||||
/* Generates trap-mode suffix for instructions that accept the
|
||||
v, sv, and svi suffix. The only instruction that needs this
|
||||
is cvttq. */
|
||||
switch (alpha_fptm)
|
||||
{
|
||||
case ALPHA_FPTM_N:
|
||||
break;
|
||||
case ALPHA_FPTM_U:
|
||||
fputs ("v", file);
|
||||
break;
|
||||
case ALPHA_FPTM_SU:
|
||||
fputs ("sv", file);
|
||||
break;
|
||||
case ALPHA_FPTM_SUI:
|
||||
fputs ("svi", file);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ')':
|
||||
/* Generates trap-mode suffix for instructions that accept the u, su,
|
||||
and sui suffix. This is the bulk of the IEEE floating point
|
||||
@@ -2020,7 +2052,7 @@ output_prolog (file, size)
|
||||
/* Offset during register save. */
|
||||
int reg_offset;
|
||||
/* Label for the procedure entry. */
|
||||
char *entry_label = (char *) alloca (strlen (alpha_function_name) + 5);
|
||||
char *entry_label = (char *) alloca (strlen (alpha_function_name) + 6);
|
||||
int i;
|
||||
|
||||
sa_size = alpha_sa_size ();
|
||||
@@ -2033,7 +2065,7 @@ output_prolog (file, size)
|
||||
fprintf (file, "\t.ent ");
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "\n");
|
||||
sprintf (entry_label, "%s..en", alpha_function_name);
|
||||
sprintf (entry_label, "$%s..en", alpha_function_name);
|
||||
ASM_OUTPUT_LABEL (file, entry_label);
|
||||
inside_function = TRUE;
|
||||
|
||||
@@ -2087,6 +2119,7 @@ output_prolog (file, size)
|
||||
|
||||
fprintf (file, "\tlda $22,4096($30)\n");
|
||||
|
||||
fputc ('$', file);
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..sc:\n");
|
||||
|
||||
@@ -2094,7 +2127,7 @@ output_prolog (file, size)
|
||||
fprintf (file, "\tsubq $23,1,$23\n");
|
||||
fprintf (file, "\tlda $22,-8192($22)\n");
|
||||
|
||||
fprintf (file, "\tbne $23,");
|
||||
fprintf (file, "\tbne $23,$");
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..sc\n");
|
||||
|
||||
@@ -2169,7 +2202,7 @@ output_prolog (file, size)
|
||||
link_section ();
|
||||
fprintf (file, "\t.align 3\n");
|
||||
ASM_OUTPUT_LABEL (file, alpha_function_name);
|
||||
fprintf (file, "\t.pdesc ");
|
||||
fprintf (file, "\t.pdesc $");
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..en,%s\n", is_stack_procedure ? "stack" : "reg");
|
||||
alpha_need_linkage (alpha_function_name, 1);
|
||||
@@ -2383,6 +2416,7 @@ output_prolog (file, size)
|
||||
fprintf (file, "\tldgp $29,0($27)\n");
|
||||
|
||||
/* Put a label after the GP load so we can enter the function at it. */
|
||||
fputc ('$', file);
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..ng:\n");
|
||||
}
|
||||
@@ -2430,6 +2464,7 @@ output_prolog (file, size)
|
||||
|
||||
fprintf (file, "\tlda $4,4096($30)\n");
|
||||
|
||||
fputc ('$', file);
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..sc:\n");
|
||||
|
||||
@@ -2437,7 +2472,7 @@ output_prolog (file, size)
|
||||
fprintf (file, "\tsubq $5,1,$5\n");
|
||||
fprintf (file, "\tlda $4,-8192($4)\n");
|
||||
|
||||
fprintf (file, "\tbne $5,");
|
||||
fprintf (file, "\tbne $5,$");
|
||||
assemble_name (file, alpha_function_name);
|
||||
fprintf (file, "..sc\n");
|
||||
|
||||
@@ -2784,11 +2819,20 @@ summarize_insn (x, sum, set)
|
||||
summarize_insn (XEXP (x, 0), sum, 0);
|
||||
break;
|
||||
|
||||
case ASM_OPERANDS:
|
||||
for (i = ASM_OPERANDS_INPUT_LENGTH (x) - 1; i >= 0; i--)
|
||||
summarize_insn (ASM_OPERANDS_INPUT (x, i), sum, 0);
|
||||
break;
|
||||
|
||||
case PARALLEL:
|
||||
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
|
||||
summarize_insn (XVECEXP (x, 0, i), sum, 0);
|
||||
break;
|
||||
|
||||
case SUBREG:
|
||||
x = SUBREG_REG (x);
|
||||
/* FALLTHRU */
|
||||
|
||||
case REG:
|
||||
{
|
||||
int regno = REGNO (x);
|
||||
@@ -2824,10 +2868,6 @@ summarize_insn (x, sum, set)
|
||||
summarize_insn (XEXP (x, 0), sum, 0);
|
||||
break;
|
||||
|
||||
case SUBREG:
|
||||
summarize_insn (SUBREG_REG (x), sum, set);
|
||||
break;
|
||||
|
||||
case CONST_INT: case CONST_DOUBLE:
|
||||
case SYMBOL_REF: case LABEL_REF: case CONST:
|
||||
break;
|
||||
@@ -2958,7 +2998,7 @@ alpha_handle_trap_shadows (insns)
|
||||
sum.used.i = 0;
|
||||
sum.used.fp = 0;
|
||||
sum.used.mem = 0;
|
||||
sum.defd = shadow.used;
|
||||
sum.defd = sum.used;
|
||||
|
||||
switch (GET_CODE (i))
|
||||
{
|
||||
@@ -3247,11 +3287,11 @@ alpha_write_linkage (stream)
|
||||
|| ! TREE_SYMBOL_REFERENCED (get_identifier (lptr->name)))
|
||||
continue;
|
||||
|
||||
fprintf (stream, "%s..lk:\n", lptr->name);
|
||||
fprintf (stream, "$%s..lk:\n", lptr->name);
|
||||
if (lptr->kind == KIND_LOCAL)
|
||||
{
|
||||
/* Local and used, build linkage pair. */
|
||||
fprintf (stream, "\t.quad %s..en\n", lptr->name);
|
||||
fprintf (stream, "\t.quad $%s..en\n", lptr->name);
|
||||
fprintf (stream, "\t.quad %s\n", lptr->name);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -646,9 +646,7 @@ enum reg_class { NO_REGS, GENERAL_REGS, FLOAT_REGS, ALL_REGS,
|
||||
: (C) == 'J' ? (VALUE) == 0 \
|
||||
: (C) == 'K' ? (unsigned HOST_WIDE_INT) ((VALUE) + 0x8000) < 0x10000 \
|
||||
: (C) == 'L' ? (((VALUE) & 0xffff) == 0 \
|
||||
&& (((VALUE)) >> 31 == -1 || (VALUE) >> 31 == 0) \
|
||||
&& ((HOST_BITS_PER_WIDE_INT == 64 \
|
||||
|| (unsigned) (VALUE) != 0x80000000U))) \
|
||||
&& (((VALUE)) >> 31 == -1 || (VALUE) >> 31 == 0)) \
|
||||
: (C) == 'M' ? zap_mask (VALUE) \
|
||||
: (C) == 'N' ? (unsigned HOST_WIDE_INT) (~ (VALUE)) < 0x100 \
|
||||
: (C) == 'O' ? (unsigned HOST_WIDE_INT) (- (VALUE)) < 0x100 \
|
||||
@@ -1829,10 +1827,7 @@ literal_section () \
|
||||
PREFIX is the class of label and NUM is the number within the class. */
|
||||
|
||||
#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
|
||||
if ((PREFIX)[0] == 'L') \
|
||||
fprintf (FILE, "$%s%d:\n", & (PREFIX)[1], NUM + 32); \
|
||||
else \
|
||||
fprintf (FILE, "%s%d:\n", PREFIX, NUM);
|
||||
fprintf (FILE, "$%s%d:\n", PREFIX, NUM)
|
||||
|
||||
/* This is how to output a label for a jump table. Arguments are the same as
|
||||
for ASM_OUTPUT_INTERNAL_LABEL, except the insn for the jump table is
|
||||
@@ -1847,10 +1842,7 @@ literal_section () \
|
||||
This is suitable for output with `assemble_name'. */
|
||||
|
||||
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
|
||||
if ((PREFIX)[0] == 'L') \
|
||||
sprintf (LABEL, "*$%s%d", & (PREFIX)[1], NUM + 32); \
|
||||
else \
|
||||
sprintf (LABEL, "*%s%d", PREFIX, NUM)
|
||||
sprintf (LABEL, "*$%s%d", PREFIX, NUM)
|
||||
|
||||
/* Check a floating-point value for validity for a particular machine mode. */
|
||||
|
||||
@@ -1987,8 +1979,8 @@ literal_section () \
|
||||
/* This is how to output an element of a case-vector that is relative. */
|
||||
|
||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL) \
|
||||
fprintf (FILE, "\t.%s $%d\n", TARGET_WINDOWS_NT ? "long" : "gprel32", \
|
||||
(VALUE) + 32)
|
||||
fprintf (FILE, "\t.%s $L%d\n", TARGET_WINDOWS_NT ? "long" : "gprel32", \
|
||||
(VALUE))
|
||||
|
||||
/* This is how to output an assembler line
|
||||
that says to advance the location counter
|
||||
@@ -2060,6 +2052,10 @@ literal_section () \
|
||||
' Generates trap-mode suffix for instructions that accept the
|
||||
su suffix only (cmpt et al).
|
||||
|
||||
( Generates trap-mode suffix for instructions that accept the
|
||||
v, sv, and svi suffix. The only instruction that needs this
|
||||
is cvttq.
|
||||
|
||||
) Generates trap-mode suffix for instructions that accept the
|
||||
u, su, and sui suffix. This is the bulk of the IEEE floating
|
||||
point instructions (addt et al).
|
||||
@@ -2075,8 +2071,8 @@ literal_section () \
|
||||
*/
|
||||
|
||||
#define PRINT_OPERAND_PUNCT_VALID_P(CODE) \
|
||||
((CODE) == '&' || (CODE) == '\'' || (CODE) == ')' || (CODE) == '+' \
|
||||
|| (CODE) == ',' || (CODE) == '-')
|
||||
((CODE) == '&' || (CODE) == '\'' || (CODE) == '(' || (CODE) == ')' \
|
||||
|| (CODE) == '+' || (CODE) == ',' || (CODE) == '-')
|
||||
|
||||
/* Print a memory address as an operand to reference that memory location. */
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
;; The TRAP_TYPE attribute marks instructions that may generate traps
|
||||
;; (which are imprecise and may need a trapb if software complention
|
||||
;; is desired).
|
||||
(define_attr "trap" "yes,no" (const_string "no"))
|
||||
(define_attr "trap" "no,yes" (const_string "no"))
|
||||
|
||||
;; For the EV4 we include four function units: ABOX, which computes
|
||||
;; the address, BBOX, used for branches, EBOX, used for integer
|
||||
@@ -215,20 +215,14 @@
|
||||
;; First define the arithmetic insns. Note that the 32-bit forms also
|
||||
;; sign-extend.
|
||||
|
||||
;; Note that we can do sign extensions in both FP and integer registers.
|
||||
;; However, the result must be in the same type of register as the input.
|
||||
;; The register preferencing code can't handle this case very well, so, for
|
||||
;; now, don't let the FP case show up here for preferencing. Also,
|
||||
;; sign-extends in FP registers take two instructions.
|
||||
(define_insn "extendsidi2"
|
||||
[(set (match_operand:DI 0 "register_operand" "=r,r,*f")
|
||||
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m,*f")))]
|
||||
[(set (match_operand:DI 0 "register_operand" "=r,r")
|
||||
(sign_extend:DI (match_operand:SI 1 "nonimmediate_operand" "r,m")))]
|
||||
""
|
||||
"@
|
||||
addl %1,$31,%0
|
||||
ldl %0,%1
|
||||
cvtql %1,%0\;cvtlq %0,%0"
|
||||
[(set_attr "type" "iadd,ld,fadd")])
|
||||
ldl %0,%1"
|
||||
[(set_attr "type" "iadd,ld")])
|
||||
|
||||
;; Do addsi3 the way expand_binop would do if we didn't have one. This
|
||||
;; generates better code. We have the anonymous addsi3 pattern below in
|
||||
@@ -1507,20 +1501,39 @@
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&f")
|
||||
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"cvt%-q%(c %R1,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn "fix_truncdfdi2"
|
||||
[(set (match_operand:DI 0 "register_operand" "=f")
|
||||
(fix:DI (match_operand:DF 1 "reg_or_fp0_operand" "fG")))]
|
||||
"TARGET_FP"
|
||||
"cvt%-qc %R1,%0"
|
||||
[(set_attr "type" "fadd")])
|
||||
"cvt%-q%(c %R1,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "register_operand" "=&f")
|
||||
(fix:DI (float_extend:DF
|
||||
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
|
||||
"TARGET_FP && alpha_tp == ALPHA_TP_INSN"
|
||||
"cvt%-q%(c %R1,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn "fix_truncsfdi2"
|
||||
[(set (match_operand:DI 0 "register_operand" "=f")
|
||||
(fix:DI (float_extend:DF
|
||||
(match_operand:SF 1 "reg_or_fp0_operand" "fG"))))]
|
||||
"TARGET_FP"
|
||||
"cvt%-qc %R1,%0"
|
||||
[(set_attr "type" "fadd")])
|
||||
"cvt%-q%(c %R1,%0"
|
||||
[(set_attr "type" "fadd")
|
||||
(set_attr "trap" "yes")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SF 0 "register_operand" "=&f")
|
||||
@@ -3102,22 +3115,17 @@
|
||||
}")
|
||||
|
||||
(define_expand "call_nt"
|
||||
[(parallel [(call (mem:DI (match_operand:DI 0 "" ""))
|
||||
[(parallel [(call (mem:DI (match_operand 0 "" ""))
|
||||
(match_operand 1 "" ""))
|
||||
(clobber (reg:DI 26))])]
|
||||
""
|
||||
"
|
||||
{ if (GET_CODE (operands[0]) != MEM)
|
||||
abort ();
|
||||
operands[0] = XEXP (operands[0], 0);
|
||||
|
||||
if (GET_CODE (operands[1]) != SYMBOL_REF
|
||||
&& ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27))
|
||||
{
|
||||
rtx tem = gen_rtx (REG, DImode, 27);
|
||||
emit_move_insn (tem, operands[1]);
|
||||
operands[1] = tem;
|
||||
}
|
||||
operands[0] = XEXP (operands[0], 0);
|
||||
if (GET_CODE (operands[0]) != SYMBOL_REF && GET_CODE (operands[0]) != REG)
|
||||
operands[0] = force_reg (DImode, operands[0]);
|
||||
}")
|
||||
|
||||
;;
|
||||
@@ -3148,12 +3156,13 @@
|
||||
{
|
||||
extern char *savealloc ();
|
||||
char *symbol = XSTR (operands[0], 0);
|
||||
char *linksym = savealloc (strlen (symbol) + 5);
|
||||
char *linksym = savealloc (strlen (symbol) + 6);
|
||||
rtx linkage;
|
||||
|
||||
alpha_need_linkage (symbol, 0);
|
||||
|
||||
strcpy (linksym, symbol);
|
||||
linksym[0] = '$';
|
||||
strcpy (linksym+1, symbol);
|
||||
strcat (linksym, \"..lk\");
|
||||
linkage = gen_rtx (SYMBOL_REF, Pmode, linksym);
|
||||
|
||||
@@ -3215,7 +3224,7 @@
|
||||
|
||||
(define_expand "call_value_nt"
|
||||
[(parallel [(set (match_operand 0 "" "")
|
||||
(call (mem:DI (match_operand:DI 1 "" ""))
|
||||
(call (mem:DI (match_operand 1 "" ""))
|
||||
(match_operand 2 "" "")))
|
||||
(clobber (reg:DI 26))])]
|
||||
""
|
||||
@@ -3224,13 +3233,8 @@
|
||||
abort ();
|
||||
|
||||
operands[1] = XEXP (operands[1], 0);
|
||||
if (GET_CODE (operands[1]) != SYMBOL_REF
|
||||
&& ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27))
|
||||
{
|
||||
rtx tem = gen_rtx (REG, DImode, 27);
|
||||
emit_move_insn (tem, operands[1]);
|
||||
operands[1] = tem;
|
||||
}
|
||||
if (GET_CODE (operands[0]) != SYMBOL_REF && GET_CODE (operands[0]) != REG)
|
||||
operands[1] = force_reg (DImode, operands[1]);
|
||||
}")
|
||||
|
||||
(define_expand "call_value_vms"
|
||||
@@ -3257,11 +3261,12 @@
|
||||
{
|
||||
extern char *savealloc ();
|
||||
char *symbol = XSTR (operands[1], 0);
|
||||
char *linksym = savealloc (strlen (symbol) + 5);
|
||||
char *linksym = savealloc (strlen (symbol) + 6);
|
||||
rtx linkage;
|
||||
|
||||
alpha_need_linkage (symbol, 0);
|
||||
strcpy (linksym, symbol);
|
||||
linksym[0] = '$';
|
||||
strcpy (linksym+1, symbol);
|
||||
strcat (linksym, \"..lk\");
|
||||
linkage = gen_rtx (SYMBOL_REF, Pmode, linksym);
|
||||
|
||||
@@ -3287,18 +3292,19 @@
|
||||
"! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS"
|
||||
"@
|
||||
jsr $26,($27),0\;ldgp $29,0($26)
|
||||
bsr $26,%0..ng
|
||||
bsr $26,$%0..ng
|
||||
jsr $26,%0\;ldgp $29,0($26)"
|
||||
[(set_attr "type" "jsr")])
|
||||
|
||||
(define_insn ""
|
||||
[(call (mem:DI (match_operand:DI 0 "call_operand" "r,i"))
|
||||
[(call (mem:DI (match_operand:DI 0 "call_operand" "r,R,i"))
|
||||
(match_operand 1 "" ""))
|
||||
(clobber (reg:DI 26))]
|
||||
"TARGET_WINDOWS_NT"
|
||||
"@
|
||||
jsr $26,(%0)
|
||||
bsr $26,%0"
|
||||
bsr $26,%0
|
||||
jsr $26,%0"
|
||||
[(set_attr "type" "jsr")])
|
||||
|
||||
(define_insn ""
|
||||
@@ -3323,19 +3329,20 @@
|
||||
"! TARGET_WINDOWS_NT && ! TARGET_OPEN_VMS"
|
||||
"@
|
||||
jsr $26,($27),0\;ldgp $29,0($26)
|
||||
bsr $26,%1..ng
|
||||
bsr $26,$%1..ng
|
||||
jsr $26,%1\;ldgp $29,0($26)"
|
||||
[(set_attr "type" "jsr")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand 0 "register_operand" "=rf,rf")
|
||||
(call (mem:DI (match_operand:DI 1 "call_operand" "r,i"))
|
||||
[(set (match_operand 0 "register_operand" "=rf,rf,rf")
|
||||
(call (mem:DI (match_operand:DI 1 "call_operand" "r,R,i"))
|
||||
(match_operand 2 "" "")))
|
||||
(clobber (reg:DI 26))]
|
||||
"TARGET_WINDOWS_NT"
|
||||
"@
|
||||
jsr $26,(%1)
|
||||
bsr $26,%1"
|
||||
bsr $26,%1
|
||||
jsr $26,%1"
|
||||
[(set_attr "type" "jsr")])
|
||||
|
||||
(define_insn ""
|
||||
@@ -4523,12 +4530,15 @@
|
||||
}
|
||||
}")
|
||||
|
||||
(define_insn "exception_receiver"
|
||||
;; Ideally we should be able to define nonlocal_goto and arrange
|
||||
;; for the pc to be in a known place. Or perhaps branch back via
|
||||
;; br instead of jmp.
|
||||
(define_insn "nonlocal_goto_receiver_osf"
|
||||
[(unspec_volatile [(const_int 0)] 2)]
|
||||
"! TARGET_OPEN_VMS && ! TARGET_WINDOWS_NT"
|
||||
".long 0xc3a00000\;ldgp $29,0($29)")
|
||||
"br $29,$LGOTO%=\\n$LGOTO%=:\;ldgp $29,0($29)")
|
||||
|
||||
(define_expand "nonlocal_goto_receiver"
|
||||
(define_expand "nonlocal_goto_receiver_vms"
|
||||
[(unspec_volatile [(const_int 0)] 1)
|
||||
(set (reg:DI 27) (mem:DI (reg:DI 29)))
|
||||
(unspec_volatile [(const_int 0)] 1)
|
||||
@@ -4536,6 +4546,18 @@
|
||||
"TARGET_OPEN_VMS"
|
||||
"")
|
||||
|
||||
(define_expand "nonlocal_goto_receiver"
|
||||
[(unspec_volatile [(const_int 0)] 2)]
|
||||
""
|
||||
"
|
||||
{
|
||||
if (TARGET_OPEN_VMS)
|
||||
emit_insn(gen_nonlocal_goto_receiver_vms ());
|
||||
else if (!TARGET_WINDOWS_NT)
|
||||
emit_insn(gen_nonlocal_goto_receiver_osf ());
|
||||
DONE;
|
||||
}")
|
||||
|
||||
(define_insn "arg_home"
|
||||
[(unspec [(const_int 0)] 0)
|
||||
(use (reg:DI 1))
|
||||
|
||||
@@ -62,6 +62,14 @@ Currently only Linux uses this. */
|
||||
#define DEFAULT_VTABLE_THUNKS 1
|
||||
#endif
|
||||
|
||||
#ifndef USE_GNULIBC_1
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC \
|
||||
"%{shared: -lc} \
|
||||
%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
|
||||
%{profile:-lc_p} %{!profile: -lc}}"
|
||||
#endif
|
||||
|
||||
/* Output at beginning of assembler file. */
|
||||
|
||||
#undef ASM_FILE_START
|
||||
|
||||
@@ -57,7 +57,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#undef FUNCTION_PROFILER
|
||||
#define FUNCTION_PROFILER(FILE, LABELNO) \
|
||||
fputs ("\tjsr $28,_mcount\n", (FILE))
|
||||
fputs ("\tlda $28,_mcount\n\tjsr $28,($28),_mcount\n", (FILE))
|
||||
|
||||
/* Generate calls to memcpy, etc., not bcopy, etc. */
|
||||
#define TARGET_MEM_FUNCTIONS
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
;# New Alpha OpenVMS trampoline
|
||||
;#
|
||||
.set noreorder
|
||||
.set volatile
|
||||
.set noat
|
||||
.file 1 "tramp.s"
|
||||
.text
|
||||
.align 3
|
||||
.globl __tramp
|
||||
.ent __tramp
|
||||
__tramp..en:
|
||||
|
||||
.link
|
||||
.align 3
|
||||
__tramp:
|
||||
.pdesc __tramp..en,null
|
||||
.text
|
||||
ldq $1,24($27)
|
||||
ldq $27,16($27)
|
||||
ldq $28,8($27)
|
||||
jmp $31,($28),0
|
||||
.end __tramp
|
||||
@@ -238,7 +238,7 @@ link_section () \
|
||||
|
||||
#undef ASM_OUTPUT_ADDR_VEC_ELT
|
||||
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
|
||||
fprintf (FILE, "\t.quad $%d\n", (VALUE) + 32)
|
||||
fprintf (FILE, "\t.quad $L%d\n", (VALUE))
|
||||
|
||||
#undef READONLY_DATA_SECTION
|
||||
#define READONLY_DATA_SECTION readonly_section
|
||||
|
||||
@@ -70,3 +70,59 @@ Boston, MA 02111-1307, USA. */
|
||||
%{!mwindows:-subsystem console -e _mainCRTStartup} \
|
||||
%{mcrtmt:LIBCMT.LIB%s KERNEL32.LIB%s} %{!mcrtmt:LIBC.LIB%s KERNEL32.LIB%s} \
|
||||
%{v}"
|
||||
|
||||
|
||||
/* Output assembler code for a block containing the constant parts
|
||||
of a trampoline, leaving space for the variable parts.
|
||||
|
||||
The trampoline should set the static chain pointer to value placed
|
||||
into the trampoline and should branch to the specified routine. */
|
||||
|
||||
#undef TRAMPOLINE_TEMPLATE
|
||||
#define TRAMPOLINE_TEMPLATE(FILE) \
|
||||
{ \
|
||||
fprintf (FILE, "\tbr $27,$LTRAMPP\n"); \
|
||||
fprintf (FILE, "$LTRAMPP:\n\tldl $1,16($27)\n"); \
|
||||
fprintf (FILE, "\tldl $27,12($27)\n"); \
|
||||
fprintf (FILE, "\tjmp $31,($27),0\n"); \
|
||||
fprintf (FILE, "\t.long 0,0\n"); \
|
||||
}
|
||||
|
||||
/* Length in units of the trampoline for entering a nested function. */
|
||||
|
||||
#undef TRAMPOLINE_SIZE
|
||||
#define TRAMPOLINE_SIZE 24
|
||||
|
||||
/* Emit RTL insns to initialize the variable parts of a trampoline.
|
||||
FNADDR is an RTX for the address of the function's pure code.
|
||||
CXT is an RTX for the static chain value for the function.
|
||||
|
||||
This differs from the standard version in that:
|
||||
|
||||
We are not passed the current address in any register, and so have to
|
||||
load it ourselves.
|
||||
|
||||
We do not initialize the "hint" field because it only has an 8k
|
||||
range and so the target is in range of something on the stack.
|
||||
Omitting the hint saves a bogus branch-prediction cache line load.
|
||||
|
||||
Always have an executable stack -- no need for a system call.
|
||||
*/
|
||||
|
||||
#undef INITIALIZE_TRAMPOLINE
|
||||
#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
|
||||
{ \
|
||||
rtx _addr, _val; \
|
||||
\
|
||||
_addr = memory_address (Pmode, plus_constant ((TRAMP), 16)); \
|
||||
_val = force_reg(Pmode, (FNADDR)); \
|
||||
emit_move_insn (gen_rtx (MEM, SImode, _addr), \
|
||||
gen_rtx (SUBREG, SImode, _val, 0)); \
|
||||
_addr = memory_address (Pmode, plus_constant ((TRAMP), 20)); \
|
||||
_val = force_reg(Pmode, (CXT)); \
|
||||
emit_move_insn (gen_rtx (MEM, SImode, _addr), \
|
||||
gen_rtx (SUBREG, SImode, _val, 0)); \
|
||||
\
|
||||
emit_insn (gen_rtx (UNSPEC_VOLATILE, VOIDmode, \
|
||||
gen_rtvec (1, const0_rtx), 0)); \
|
||||
}
|
||||
|
||||
@@ -2352,6 +2352,10 @@ load_multiple_sequence (operands, nops, regs, base, load_offset)
|
||||
rtx reg;
|
||||
rtx offset;
|
||||
|
||||
/* Convert a subreg of a mem into the mem itself. */
|
||||
if (GET_CODE (operands[nops + i]) == SUBREG)
|
||||
operands[nops + i] = alter_subreg(operands[nops + i]);
|
||||
|
||||
if (GET_CODE (operands[nops + i]) != MEM)
|
||||
abort ();
|
||||
|
||||
@@ -3913,7 +3917,7 @@ output_move_double (operands)
|
||||
{
|
||||
enum rtx_code code0 = GET_CODE (operands[0]);
|
||||
enum rtx_code code1 = GET_CODE (operands[1]);
|
||||
rtx otherops[2];
|
||||
rtx otherops[3];
|
||||
|
||||
if (code0 == REG)
|
||||
{
|
||||
|
||||
@@ -3859,8 +3859,14 @@
|
||||
"
|
||||
{
|
||||
enum rtx_code code = GET_CODE (operands[1]);
|
||||
rtx ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
|
||||
arm_compare_fp);
|
||||
rtx ccreg;
|
||||
|
||||
/* When compiling for SOFT_FLOAT, ensure both arms are in registers. */
|
||||
if (! TARGET_HARD_FLOAT)
|
||||
operands[3] = force_reg (SFmode, operands[3]);
|
||||
|
||||
ccreg = gen_compare_reg (code, arm_compare_op0, arm_compare_op1,
|
||||
arm_compare_fp);
|
||||
|
||||
operands[1] = gen_rtx (code, VOIDmode, ccreg, const0_rtx);
|
||||
}")
|
||||
|
||||
@@ -130,3 +130,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
requirements. */
|
||||
#undef STRUCTURE_SIZE_BOUNDARY
|
||||
#define STRUCTURE_SIZE_BOUNDARY 8
|
||||
|
||||
/* Until they use ELF or something that handles dwarf2 unwinds
|
||||
and initialization stuff better. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
/* float.h for target with IEEE 32, 64 and 128 bit floating point formats */
|
||||
#ifndef _FLOAT_H_
|
||||
#define _FLOAT_H_
|
||||
/* Produced by enquire version 4.3, CWI, Amsterdam */
|
||||
|
||||
/* Radix of exponent representation */
|
||||
#undef FLT_RADIX
|
||||
#define FLT_RADIX 2
|
||||
/* Number of base-FLT_RADIX digits in the significand of a float */
|
||||
#undef FLT_MANT_DIG
|
||||
#define FLT_MANT_DIG 24
|
||||
/* Number of decimal digits of precision in a float */
|
||||
#undef FLT_DIG
|
||||
#define FLT_DIG 6
|
||||
/* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown */
|
||||
#undef FLT_ROUNDS
|
||||
#define FLT_ROUNDS 1
|
||||
/* Difference between 1.0 and the minimum float greater than 1.0 */
|
||||
#undef FLT_EPSILON
|
||||
#define FLT_EPSILON 1.19209290e-07F
|
||||
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */
|
||||
#undef FLT_MIN_EXP
|
||||
#define FLT_MIN_EXP (-125)
|
||||
/* Minimum normalised float */
|
||||
#undef FLT_MIN
|
||||
#define FLT_MIN 1.17549435e-38F
|
||||
/* Minimum int x such that 10**x is a normalised float */
|
||||
#undef FLT_MIN_10_EXP
|
||||
#define FLT_MIN_10_EXP (-37)
|
||||
/* Maximum int x such that FLT_RADIX**(x-1) is a representable float */
|
||||
#undef FLT_MAX_EXP
|
||||
#define FLT_MAX_EXP 128
|
||||
/* Maximum float */
|
||||
#undef FLT_MAX
|
||||
#define FLT_MAX 3.40282347e+38F
|
||||
/* Maximum int x such that 10**x is a representable float */
|
||||
#undef FLT_MAX_10_EXP
|
||||
#define FLT_MAX_10_EXP 38
|
||||
|
||||
/* Number of base-FLT_RADIX digits in the significand of a double */
|
||||
#undef DBL_MANT_DIG
|
||||
#define DBL_MANT_DIG 53
|
||||
/* Number of decimal digits of precision in a double */
|
||||
#undef DBL_DIG
|
||||
#define DBL_DIG 15
|
||||
/* Difference between 1.0 and the minimum double greater than 1.0 */
|
||||
#undef DBL_EPSILON
|
||||
#define DBL_EPSILON 2.2204460492503131e-16
|
||||
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */
|
||||
#undef DBL_MIN_EXP
|
||||
#define DBL_MIN_EXP (-1021)
|
||||
/* Minimum normalised double */
|
||||
#undef DBL_MIN
|
||||
#define DBL_MIN 2.2250738585072014e-308
|
||||
/* Minimum int x such that 10**x is a normalised double */
|
||||
#undef DBL_MIN_10_EXP
|
||||
#define DBL_MIN_10_EXP (-307)
|
||||
/* Maximum int x such that FLT_RADIX**(x-1) is a representable double */
|
||||
#undef DBL_MAX_EXP
|
||||
#define DBL_MAX_EXP 1024
|
||||
/* Maximum double */
|
||||
#undef DBL_MAX
|
||||
#define DBL_MAX 1.7976931348623157e+308
|
||||
/* Maximum int x such that 10**x is a representable double */
|
||||
#undef DBL_MAX_10_EXP
|
||||
#define DBL_MAX_10_EXP 308
|
||||
|
||||
/* Number of base-FLT_RADIX digits in the significand of a long double */
|
||||
#undef LDBL_MANT_DIG
|
||||
#define LDBL_MANT_DIG 113
|
||||
/* Number of decimal digits of precision in a long double */
|
||||
#undef LDBL_DIG
|
||||
#define LDBL_DIG 33
|
||||
/* Difference between 1.0 and the minimum long double greater than 1.0 */
|
||||
#undef LDBL_EPSILON
|
||||
#define LDBL_EPSILON 1.925929944387235853055977942584927319E-34L
|
||||
/* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
|
||||
#undef LDBL_MIN_EXP
|
||||
#define LDBL_MIN_EXP (-16381)
|
||||
/* Minimum normalised long double */
|
||||
#undef LDBL_MIN
|
||||
#define LDBL_MIN 3.362103143112093506262677817321752603E-4932L
|
||||
/* Minimum int x such that 10**x is a normalised long double */
|
||||
#undef LDBL_MIN_10_EXP
|
||||
#define LDBL_MIN_10_EXP (-4931)
|
||||
/* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */
|
||||
#undef LDBL_MAX_EXP
|
||||
#define LDBL_MAX_EXP 16384
|
||||
/* Maximum long double */
|
||||
#undef LDBL_MAX
|
||||
#define LDBL_MAX 1.189731495357231765085759326628007016E+4932L
|
||||
/* Maximum int x such that 10**x is a representable long double */
|
||||
#undef LDBL_MAX_10_EXP
|
||||
#define LDBL_MAX_10_EXP 4932
|
||||
|
||||
#endif /* _FLOAT_H_ */
|
||||
@@ -44,7 +44,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#define CPP_PREDEFINES "-Dps2 -Dunix -Asystem(aix)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dps2 -Dunix -Asystem(aix)"
|
||||
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
"%{posix:-D_POSIX_SOURCE}%{!posix:-DAIX} -D_I386 -D_AIX -D_MBCS"
|
||||
|
||||
@@ -199,3 +199,6 @@ do { \
|
||||
TREE_CODE (DECL) == FUNCTION_DECL \
|
||||
? "discard" : "same_size"); \
|
||||
} while (0)
|
||||
|
||||
/* DWARF2 Unwinding doesn't work with exception handling yet. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
@@ -140,7 +140,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#define WCHAR_TYPE_SIZE BITS_PER_WORD
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__=2 -Asystem(FreeBSD)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
@@ -56,7 +56,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#define CPP_PREDEFINES "-Dunix"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix"
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
/* Allow #sccs in preprocessor. */
|
||||
|
||||
@@ -3385,16 +3385,7 @@ notice_update_cc (exp)
|
||||
/* Jumps do not alter the cc's. */
|
||||
if (SET_DEST (exp) == pc_rtx)
|
||||
return;
|
||||
#ifdef IS_STACK_MODE
|
||||
/* Moving into a memory of stack_mode may have been moved
|
||||
in between the use and set of cc0 by loop_spl(). So
|
||||
old value of cc.status must be retained */
|
||||
if(GET_CODE(SET_DEST(exp))==MEM
|
||||
&& IS_STACK_MODE(GET_MODE(SET_DEST(exp))))
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Moving register or memory into a register:
|
||||
it doesn't alter the cc's, but it might invalidate
|
||||
the RTX's which we remember the cc's came from.
|
||||
@@ -3417,11 +3408,11 @@ notice_update_cc (exp)
|
||||
&& (REG_P (SET_SRC (exp))
|
||||
|| GET_RTX_CLASS (GET_CODE (SET_SRC (exp))) == '<'))
|
||||
{
|
||||
if (cc_status.value1 && GET_CODE (cc_status.value1) == MEM
|
||||
|| reg_mentioned_p (SET_DEST (exp), cc_status.value1))
|
||||
if (cc_status.value1
|
||||
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value1))
|
||||
cc_status.value1 = 0;
|
||||
if (cc_status.value2 && GET_CODE (cc_status.value2) == MEM
|
||||
|| reg_mentioned_p (SET_DEST (exp), cc_status.value2))
|
||||
if (cc_status.value2
|
||||
&& reg_overlap_mentioned_p (SET_DEST (exp), cc_status.value2))
|
||||
cc_status.value2 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -165,7 +165,9 @@ extern int target_flags;
|
||||
#define TARGET_USE_Q_REG (ix86_cpu == PROCESSOR_PENTIUM \
|
||||
|| ix86_cpu == PROCESSOR_PENTIUMPRO)
|
||||
#define TARGET_USE_ANY_REG (ix86_cpu == PROCESSOR_I486)
|
||||
#define TARGET_CMOVE (ix86_arch == PROCESSOR_PENTIUMPRO)
|
||||
/* This is temporary for the release only. Folks are working on a fix,
|
||||
but the fix will likely not be suitable for the first egcs release. */
|
||||
#define TARGET_CMOVE (0)
|
||||
#define TARGET_DEEP_BRANCH_PREDICTION (ix86_cpu == PROCESSOR_PENTIUMPRO)
|
||||
#define TARGET_STACK_PROBE (target_flags & MASK_STACK_PROBE)
|
||||
|
||||
@@ -1522,8 +1524,9 @@ do { \
|
||||
\
|
||||
for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++) \
|
||||
if ((regs_ever_live[regno] && ! call_used_regs[regno]) \
|
||||
|| (current_function_uses_pic_offset_table \
|
||||
&& regno == PIC_OFFSET_TABLE_REGNUM)) \
|
||||
|| ((current_function_uses_pic_offset_table \
|
||||
|| current_function_uses_const_pool) \
|
||||
&& flag_pic && regno == PIC_OFFSET_TABLE_REGNUM)) \
|
||||
offset += 4; \
|
||||
\
|
||||
(OFFSET) = offset + get_frame_size (); \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
; GCC machine description for Intel X86.
|
||||
;; Copyright (C) 1988, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1988, 94-97, 1998 Free Software Foundation, Inc.
|
||||
;; Mostly by William Schelter.
|
||||
|
||||
;; This file is part of GNU CC.
|
||||
@@ -834,24 +834,23 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "push_operand" "=<")
|
||||
(match_operand:SI 1 "general_operand" "g"))]
|
||||
(match_operand:SI 1 "nonmemory_operand" "rn"))]
|
||||
"flag_pic"
|
||||
"* return AS1 (push%L0,%1);")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "push_operand" "=<")
|
||||
(match_operand:SI 1 "nonmemory_operand" "ri"))]
|
||||
"!flag_pic"
|
||||
"* return AS1 (push%L0,%1);")
|
||||
|
||||
;; On a 386, it is faster to push MEM directly.
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "push_operand" "=<")
|
||||
(match_operand:SI 1 "memory_operand" "m"))]
|
||||
"TARGET_PUSH_MEMORY"
|
||||
"push%L0 %1")
|
||||
|
||||
;; If not a 386, it is faster to move MEM to a REG and then push, rather than
|
||||
;; push MEM directly.
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "push_operand" "=<")
|
||||
(match_operand:SI 1 "nonmemory_operand" "ri"))]
|
||||
"!TARGET_PUSH_MEMORY && TARGET_MOVE"
|
||||
"push%L0 %1")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "push_operand" "=<")
|
||||
(match_operand:SI 1 "nonmemory_operand" "ri"))]
|
||||
"!TARGET_PUSH_MEMORY && !TARGET_MOVE"
|
||||
"push%L0 %1")
|
||||
"* return AS1 (push%L0,%1);")
|
||||
|
||||
;; General case of fullword move.
|
||||
|
||||
@@ -883,8 +882,10 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=g,r")
|
||||
(match_operand:SI 1 "general_operand" "ri,m"))]
|
||||
"(!TARGET_MOVE || GET_CODE (operands[0]) != MEM) || (GET_CODE (operands[1]) != MEM)"
|
||||
(match_operand:SI 1 "general_operand" "rn,im"))]
|
||||
"((!TARGET_MOVE || GET_CODE (operands[0]) != MEM)
|
||||
|| (GET_CODE (operands[1]) != MEM))
|
||||
&& flag_pic"
|
||||
"*
|
||||
{
|
||||
rtx link;
|
||||
@@ -903,29 +904,50 @@
|
||||
/* Fastest way to change a 0 to a 1. */
|
||||
return AS1 (inc%L0,%0);
|
||||
|
||||
if (flag_pic && SYMBOLIC_CONST (operands[1]))
|
||||
if (SYMBOLIC_CONST (operands[1]))
|
||||
return AS2 (lea%L0,%a1,%0);
|
||||
|
||||
return AS2 (mov%L0,%1,%0);
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "general_operand" "=g,r")
|
||||
(match_operand:SI 1 "general_operand" "ri,m"))]
|
||||
"((!TARGET_MOVE || GET_CODE (operands[0]) != MEM)
|
||||
|| (GET_CODE (operands[1]) != MEM))
|
||||
&& !flag_pic"
|
||||
"*
|
||||
{
|
||||
rtx link;
|
||||
if (operands[1] == const0_rtx && REG_P (operands[0]))
|
||||
return AS2 (xor%L0,%0,%0);
|
||||
|
||||
if (operands[1] == const1_rtx
|
||||
&& (link = find_reg_note (insn, REG_WAS_0, 0))
|
||||
/* Make sure the insn that stored the 0 is still present. */
|
||||
&& ! INSN_DELETED_P (XEXP (link, 0))
|
||||
&& GET_CODE (XEXP (link, 0)) != NOTE
|
||||
/* Make sure cross jumping didn't happen here. */
|
||||
&& no_labels_between_p (XEXP (link, 0), insn)
|
||||
/* Make sure the reg hasn't been clobbered. */
|
||||
&& ! reg_set_between_p (operands[0], XEXP (link, 0), insn))
|
||||
/* Fastest way to change a 0 to a 1. */
|
||||
return AS1 (inc%L0,%0);
|
||||
|
||||
return AS2 (mov%L0,%1,%0);
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "push_operand" "=<")
|
||||
(match_operand:HI 1 "general_operand" "g"))]
|
||||
(match_operand:HI 1 "nonmemory_operand" "ri"))]
|
||||
""
|
||||
"* return AS1 (push%W0,%1);")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "push_operand" "=<")
|
||||
(match_operand:HI 1 "memory_operand" "m"))]
|
||||
"TARGET_PUSH_MEMORY"
|
||||
"push%W0 %1")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "push_operand" "=<")
|
||||
(match_operand:HI 1 "nonmemory_operand" "ri"))]
|
||||
"!TARGET_PUSH_MEMORY && TARGET_MOVE"
|
||||
"push%W0 %1")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "push_operand" "=<")
|
||||
(match_operand:HI 1 "nonmemory_operand" "ri"))]
|
||||
"!TARGET_PUSH_MEMORY && !TARGET_MOVE"
|
||||
"push%W0 %1")
|
||||
"* return AS1 (push%W0,%1);")
|
||||
|
||||
;; On i486, an incl and movl are both faster than incw and movw.
|
||||
|
||||
@@ -1038,22 +1060,12 @@
|
||||
[(set (match_operand:QI 0 "push_operand" "=<")
|
||||
(match_operand:QI 1 "const_int_operand" "n"))]
|
||||
""
|
||||
"* return AS1 (push%W0,%1);")
|
||||
"* return AS1(push%W0,%1);")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:QI 0 "push_operand" "=<")
|
||||
(match_operand:QI 1 "register_operand" "q"))]
|
||||
"!TARGET_MOVE"
|
||||
"*
|
||||
{
|
||||
operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
|
||||
return AS1 (push%W0,%1);
|
||||
}")
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:QI 0 "push_operand" "=<")
|
||||
(match_operand:QI 1 "register_operand" "q"))]
|
||||
"TARGET_MOVE"
|
||||
""
|
||||
"*
|
||||
{
|
||||
operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
|
||||
@@ -2515,7 +2527,7 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
(fix:DI (fix:XF (match_operand:XF 1 "register_operand" "f"))))
|
||||
(fix:DI (fix:XF (match_operand:XF 1 "register_operand" "+f"))))
|
||||
(clobber (match_dup 1))
|
||||
(clobber (match_operand:SI 2 "memory_operand" "m"))
|
||||
(clobber (match_operand:DI 3 "memory_operand" "m"))
|
||||
@@ -2525,7 +2537,7 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
(fix:DI (fix:DF (match_operand:DF 1 "register_operand" "f"))))
|
||||
(fix:DI (fix:DF (match_operand:DF 1 "register_operand" "+f"))))
|
||||
(clobber (match_dup 1))
|
||||
(clobber (match_operand:SI 2 "memory_operand" "m"))
|
||||
(clobber (match_operand:DI 3 "memory_operand" "m"))
|
||||
@@ -2535,7 +2547,7 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
|
||||
(fix:DI (fix:SF (match_operand:SF 1 "register_operand" "f"))))
|
||||
(fix:DI (fix:SF (match_operand:SF 1 "register_operand" "+f"))))
|
||||
(clobber (match_dup 1))
|
||||
(clobber (match_operand:SI 2 "memory_operand" "m"))
|
||||
(clobber (match_operand:DI 3 "memory_operand" "m"))
|
||||
|
||||
@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -Dlinux -Asystem(posix)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -Dlinux -Asystem(posix)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
@@ -28,7 +28,7 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -Dlinux -Asystem(posix)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -Dlinux -Asystem(posix)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
@@ -148,7 +148,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#define WCHAR_TYPE_SIZE BITS_PER_WORD
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-D__ELF__ -Dunix -Dlinux -Asystem(posix)"
|
||||
#define CPP_PREDEFINES "-Di386 -D__ELF__ -Dunix -Dlinux -Asystem(posix)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#ifdef USE_GNULIBC_1
|
||||
|
||||
@@ -71,3 +71,8 @@
|
||||
fprintf (FILE, "\tcall mcount\n"); \
|
||||
} \
|
||||
}
|
||||
|
||||
/* Until they use ELF or something that handles dwarf2 unwinds
|
||||
and initialization stuff better. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#include "config/i386/osfrose.h"
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-DOSF -DOSF1 -Dunix -Asystem(xpg4)"
|
||||
#define CPP_PREDEFINES "-Di386 -DOSF -DOSF1 -Dunix -Asystem(xpg4)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
|
||||
@@ -90,7 +90,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Change default predefines. */
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-DOSF -DOSF1 -Dunix -Asystem(xpg4)"
|
||||
#define CPP_PREDEFINES "-Di386 -DOSF -DOSF1 -Dunix -Asystem(xpg4)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
|
||||
@@ -55,7 +55,7 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{scointl:-DM_INTERNAT}"
|
||||
|
||||
@@ -63,7 +63,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-Asystem(svr3)"
|
||||
"-Di386 -Asystem(svr3)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
|
||||
@@ -61,7 +61,7 @@ Boston, MA 02111-1307, USA. */
|
||||
Specify predefined symbols in preprocessor. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -Asystem(svr3)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -Asystem(svr3)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Definitions for Intel 386 running SCO Unix System V 3.2 Version 5.
|
||||
Copyright (C) 1992, 1995, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Contributed by Kean Johnston (hug@netcom.com)
|
||||
|
||||
This file is part of GNU CC.
|
||||
@@ -284,6 +284,14 @@ do { \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* A C statement (sans semicolon) to output to the stdio stream
|
||||
FILE the assembler definition of uninitialized global DECL named
|
||||
NAME whose size is SIZE bytes and alignment is ALIGN bytes.
|
||||
Try to use asm_output_aligned_bss to implement this macro. */
|
||||
|
||||
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
||||
asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
|
||||
|
||||
#undef ESCAPES
|
||||
#define ESCAPES \
|
||||
"\1\1\1\1\1\1\1\1btn\1fr\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
|
||||
@@ -367,6 +375,19 @@ do { \
|
||||
fprintf ((FILE), "\n"); \
|
||||
} while (0)
|
||||
|
||||
/* Must use data section for relocatable constants when pic. */
|
||||
#undef SELECT_RTX_SECTION
|
||||
#define SELECT_RTX_SECTION(MODE,RTX) \
|
||||
{ \
|
||||
if (TARGET_ELF) { \
|
||||
if (flag_pic && symbolic_operand (RTX)) \
|
||||
data_section (); \
|
||||
else \
|
||||
const_section (); \
|
||||
} else \
|
||||
readonly_data_section(); \
|
||||
}
|
||||
|
||||
#undef ASM_OUTPUT_CASE_LABEL
|
||||
#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,JUMPTABLE) \
|
||||
do { \
|
||||
@@ -570,6 +591,7 @@ do { \
|
||||
|
||||
#define DWARF_DEBUGGING_INFO 1
|
||||
#define SDB_DEBUGGING_INFO 1
|
||||
#define DBX_DEBUGGING_INFO 1
|
||||
#define PREFERRED_DEBUGGING_TYPE \
|
||||
((TARGET_ELF) ? DWARF_DEBUG: SDB_DEBUG)
|
||||
|
||||
@@ -807,18 +829,17 @@ dtors_section () \
|
||||
%{!Xc:%{Xk:values-Xk.o%s} \
|
||||
%{!Xk:%{Xt:values-Xt.o%s} \
|
||||
%{!Xt:values-Xa.o%s}}}}}} \
|
||||
%{mcoff:crtbeginS.o%s} \
|
||||
%{!mcoff:%{!static:crtbegin.o%s}%{static:crtbeginS.o%s}}"
|
||||
%{mcoff:crtbeginS.o%s} %{!mcoff:crtbegin.o%s}"
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC \
|
||||
"%{!mcoff:%{!static:crtend.o%s}%{static:crtendS.o%s}} \
|
||||
"%{!mcoff:crtend.o%s} \
|
||||
%{mcoff:crtendS.o%s} \
|
||||
%{pg:gcrtn.o%s}%{!pg:crtn.o%s}"
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-Asystem(svr3)"
|
||||
"-Di386 -Asystem(svr3)"
|
||||
|
||||
/* You are in a maze of GCC specs ... all alike */
|
||||
|
||||
@@ -882,7 +903,11 @@ dtors_section () \
|
||||
|
||||
#undef LIB_SPEC
|
||||
#define LIB_SPEC \
|
||||
"%{!shared:%{!symbolic:-lcrypt -lgen -lc}}"
|
||||
"%{shared:pic/libgcc.a%s}%{!shared:%{!symbolic:-lcrypt -lgen -lc}}"
|
||||
|
||||
#undef LIBGCC_SPEC
|
||||
#define LIBGCC_SPEC \
|
||||
"%{!shared:-lgcc}"
|
||||
|
||||
#define MASK_COFF 010000000000 /* Mask for elf generation */
|
||||
#define TARGET_COFF (target_flags & MASK_COFF)
|
||||
@@ -919,7 +944,7 @@ compiler at the end of the day. Onward we go ...
|
||||
|
||||
# if defined (_SCO_ELF)
|
||||
# define OBJECT_FORMAT_ELF
|
||||
# define HAVE_ATEXIT
|
||||
# define HAVE_ATEXIT 1
|
||||
# define INIT_SECTION_ASM_OP INIT_SECTION_ASM_OP_ELF
|
||||
# define FINI_SECTION_ASM_OP FINI_SECTION_ASM_OP_ELF
|
||||
# define DTORS_SECTION_ASM_OP DTORS_SECTION_ASM_OP_ELF
|
||||
|
||||
@@ -50,7 +50,7 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -DM_UNIX -DM_I386 -DM_COFF -DM_WORDSWAP -Asystem(svr3)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC " -Acpu(i386) -Amachine(i386) %{scointl:-DM_INTERNAT}"
|
||||
|
||||
@@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA. */
|
||||
/* Add "sun" to the list of symbols defined for SVR4. */
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem(svr4)"
|
||||
"-Di386 -Dunix -D__svr4__ -D__SVR4 -Dsun -Asystem(svr4)"
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] \
|
||||
|
||||
@@ -42,7 +42,7 @@ Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* Specify predefined symbols in preprocessor. */
|
||||
|
||||
#define CPP_PREDEFINES "-Dunix -Asystem(svr3)"
|
||||
#define CPP_PREDEFINES "-Di386 -Dunix -Asystem(svr3)"
|
||||
|
||||
#define CPP_SPEC "%(cpp_cpu) %[cpp_cpu] %{posix:-D_POSIX_SOURCE}"
|
||||
|
||||
|
||||
@@ -31,6 +31,10 @@ crtn.o: $(srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES)
|
||||
# to produce a shared library, but since we don't know ahead of time when
|
||||
# we will be doing that, we just always use -fPIC when compiling the
|
||||
# routines in crtstuff.c.
|
||||
#
|
||||
# We must also enable optimization to avoid having any code appear after
|
||||
# the call & alignment statement, but before we switch back to the
|
||||
# .text section.
|
||||
|
||||
CRTSTUFF_T_CFLAGS = -fPIC
|
||||
CRTSTUFF_T_CFLAGS = -fPIC -O2
|
||||
TARGET_LIBGCC2_CFLAGS = -fPIC
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# Don't run fixproto
|
||||
STMP_FIXPROTO =
|
||||
# Don't need collect2
|
||||
USE_COLLECT2 =
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RANLIB = :
|
||||
RANLIB_TEST = false
|
||||
CC = cc
|
||||
CC = cc
|
||||
OLDCC = cc
|
||||
CCLIBFLAGS =
|
||||
CLIB = -lPW
|
||||
|
||||
@@ -22,6 +22,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#define NO_STAB_H
|
||||
#define HAVE_RUSAGE
|
||||
#define HAVE_FILE_H
|
||||
#define NO_SYS_SIGLIST 1
|
||||
#define EXECUTABLE_SUFFIX ".exe"
|
||||
|
||||
/* Even though we support "/", allow "\" since everybody tests both. */
|
||||
|
||||
@@ -104,7 +104,8 @@ Boston, MA 02111-1307, USA. */
|
||||
%{!profile:%{!ggdb:-lc} %{ggdb:-lg}}}"
|
||||
#else
|
||||
#define LIB_SPEC \
|
||||
"%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
|
||||
"%{shared: -lc} \
|
||||
%{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
|
||||
%{profile:-lc_p} %{!profile: -lc}}"
|
||||
#endif
|
||||
#else
|
||||
|
||||
@@ -72,12 +72,12 @@ Boston, MA 02111-1307, USA. */
|
||||
#if TARGET_CPU_DEFAULT == M68K_CPU_m68302
|
||||
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68302 } -D__mc68302 -D__mc68302__"
|
||||
#define ASM_CPU_DEFAULT_SPEC "-mc68302"
|
||||
#define CC1_CPU_DEFAULT_SPEC "-m68000"
|
||||
#define CC1_CPU_DEFAULT_SPEC "-m68302"
|
||||
#else
|
||||
#if TARGET_CPU_DEFAULT == M68K_CPU_m68332
|
||||
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68332 } -D__mc68332 -D__mc68332__"
|
||||
#define CPP_CPU_DEFAULT_SPEC "%{!ansi:-Dmc68332 -Dmcpu32 } -D__mc68332 -D__mc68332__ -D__mcpu32 -D__mcpu32__"
|
||||
#define ASM_CPU_DEFAULT_SPEC "-mc68332"
|
||||
#define CC1_CPU_DEFAULT_SPEC "-m68020 -mnobitfield %{!m68881:-msoft-float}"
|
||||
#define CC1_CPU_DEFAULT_SPEC "-m68332"
|
||||
#else
|
||||
Unrecognized value in TARGET_CPU_DEFAULT.
|
||||
#endif
|
||||
@@ -92,20 +92,21 @@ Unrecognized value in TARGET_CPU_DEFAULT.
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-Dmc68000"
|
||||
|
||||
/* Define one of __HAVE_68881__, __HAVE_FPA__, or nothing (soft float), appropriately. */
|
||||
/* Define one of __HAVE_68881__, __HAVE_FPA__, __HAVE_SKY__, or nothing
|
||||
(soft float), appropriately. */
|
||||
#undef CPP_FPU_SPEC
|
||||
#if TARGET_DEFAULT & MASK_68881
|
||||
/* ??? Why isn't m68302 treated like m68000 here? */
|
||||
#define CPP_FPU_SPEC \
|
||||
"%{!mc68000:%{!m68000:%{!m68332:%{!m5200:%{!msoft-float:%{mfpa:-D__HAVE_FPA__ }%{!mfpa:-D__HAVE_68881__ }}}}}}"
|
||||
#define CPP_FPU_SPEC "\
|
||||
%{!mc68000:%{!m68000:%{!m68302:%{!mcpu32:%{!m68332:%{!m5200:%{!msoft-float:%{!mno-68881:%{!mfpa:%{!msky:-D__HAVE_68881__ }}}}}}}}}} \
|
||||
%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }%{msky:-D__HAVE_SKY__ }"
|
||||
#else
|
||||
/* This can't currently happen, but we code it anyway to show how it's done. */
|
||||
#if TARGET_DEFAULT & MASK_FPA
|
||||
#define CPP_FPU_SPEC \
|
||||
"%{!msoft-float:%{m68881:-D__HAVE_68881__ }%{!m68881:-D__HAVE_FPA__ }}"
|
||||
#else
|
||||
#define CPP_FPU_SPEC \
|
||||
"%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }"
|
||||
#define CPP_FPU_SPEC "\
|
||||
%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }%{msky:-D__HAVE_SKY__ }"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -120,8 +121,10 @@ Unrecognized value in TARGET_CPU_DEFAULT.
|
||||
-m68040: define mc68040
|
||||
-m68060: define mc68060
|
||||
-m68020-40: define mc68020 mc68030 mc68040
|
||||
-m68302: define mc68302
|
||||
-m68332: define mc68332
|
||||
-m68020-60: define mc68020 mc68030 mc68040 mc68060
|
||||
-m68302: define mc68302
|
||||
-m68332: define mc68332 mcpu32
|
||||
-mcpu32: define mcpu32
|
||||
-m5200: define mcf5200
|
||||
default: define as above appropriately
|
||||
|
||||
@@ -130,10 +133,9 @@ Unrecognized value in TARGET_CPU_DEFAULT.
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "\
|
||||
%(cpp_fpu) \
|
||||
%{!ansi:%{m68010:-Dmc68010 }%{m68020:-Dmc68020 }%{mc68020:-Dmc68020 }%{m68030:-Dmc68030 }%{m68040:-Dmc68040 }%{m68020-40:-Dmc68020 -Dmc68030 -Dmc68040 }%{m68060:-Dmc68060 }%{m68302:-Dmc68302 }%{m68332:-Dmc68332 }%{m5200:-Dmcf5200 }} \
|
||||
%{m68010:-D__mc68010__ -D__mc68010 }%{m68020:-D__mc68020__ -D__mc68020 }%{mc68020:-D__mc68020__ -D__mc68020 }%{m68030:-D__mc68030__ -D__mc68030 }%{m68040:-D__mc68040__ -D__mc68040 }%{m68020-40:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 }%{mc68060:-D__mc68060__ -D__mc68060 }%{m68302:-D__mc68302__ -D__mc68302 }%{m68332:-D__mc68332__ -D__mc68332 }%{m5200:-D__mcf5200__ -D__mcf5200 } \
|
||||
%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68060:%{!m68302:%{!m68332:%{!m5200:%(cpp_cpu_default)}}}}}}}}}}}} \
|
||||
%(cpp_fpu)%{!ansi:%{m68302:-Dmc68302 }%{m68010:-Dmc68010 }%{m68020:-Dmc68020 }%{mc68020:-Dmc68020 }%{m68030:-Dmc68030 }%{m68040:-Dmc68040 }%{m68020-40:-Dmc68020 -Dmc68030 -Dmc68040 }%{m68020-60:-Dmc68020 -Dmc68030 -Dmc68040 -Dmc68060 }%{m68060:-Dmc68060 }%{mcpu32:-Dmcpu32 } %{m68332:-Dmc68332 -Dmcpu32 }%{m5200:-Dmcf5200 }} \
|
||||
%{m68302:-D__mc68302__ -D__mc68302 }%{m68010:-D__mc68010__ -D__mc68010 }%{m68020:-D__mc68020__ -D__mc68020 }%{mc68020:-D__mc68020__ -D__mc68020 }%{m68030:-D__mc68030__ -D__mc68030 }%{m68040:-D__mc68040__ -D__mc68040 }%{m68020-40:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 }%{m68020-60:-D__mc68020__ -D__mc68030__ -D__mc68040__ -D__mc68020 -D__mc68030 -D__mc68040 -D__mc68060__ -D__mc68060 }%{m68060:-D__mc68060__ -D__mc68060 }%{mcpu32:-D__mcpu32__ -D__mcpu32 }%{m68332:-D__mc68332__ -D__mc68332 -D__mcpu32__ -D__mcpu32 }%{m5200:-D__mcf5200__ -D__mcf5200 } \
|
||||
%{!mc68000:%{!m68000:%{!m68302:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68020-60:%{!m68060:%{!mcpu32: %{!m68332:%{!m5200:%(cpp_cpu_default)}}}}}}}}}}}}}} \
|
||||
%(cpp_subtarget) \
|
||||
"
|
||||
|
||||
@@ -141,18 +143,15 @@ Unrecognized value in TARGET_CPU_DEFAULT.
|
||||
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "\
|
||||
%{m68851}%{mno-68851}%{m68881}%{mno-68881}%{msoft-float:-mno-68881 } \
|
||||
%{m68000}%{mc68000}%{m68010}%{m68020}%{mc68020}%{m68030}%{m68040}%{m68020-40:-mc68040}%{m68060}%{m68302}%{m68332}%{m5200} \
|
||||
%{!mc68000:%{!m68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68060:%{!m68302:%{!m68332:%{!m5200:%(asm_cpu_default)}}}}}}}}}}}} \
|
||||
%{m68851}%{mno-68851}%{m68881}%{mno-68881}%{msoft-float:-mno-68881 }%{m68000}%{m68302}%{mc68000}%{m68010}%{m68020}%{mc68020}%{m68030}%{m68040}%{m68020-40:-mc68040 }%{m68020-60:-mc68040 }%{m68060}%{mcpu32}%{m68332}%{m5200}%{!mc68000:%{!m68000:%{!m68302:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68020-60:%{!m68060:%{!mcpu32:%{!m68332:%{!m5200:%(asm_cpu_default) }}}}}}}}}}}}}} \
|
||||
"
|
||||
|
||||
/* cc1/cc1plus always receives all the -m flags. If the specs strings above
|
||||
are consistent with the TARGET_OPTIONS flags in m68k.h, there should be no
|
||||
need for any further cc1/cc1plus specs. */
|
||||
|
||||
#undef CC1_SPEC
|
||||
#define CC1_SPEC "\
|
||||
%{m68000:%{!m68881:-msoft-float }}%{m68302:-m68000 }%{m68332:-m68020 -mnobitfield %{!m68881:-msoft-float }} \
|
||||
"
|
||||
/* ??? Is this needed?
|
||||
%{!m68000:%{!mc68000:%{!m68010:%{!mc68020:%{!m68020:%{!m68030:%{!m68040:%{!m68020-40:%{!m68302:%{!m68332:%(cc1_cpu_default)}}}}}}}}}}
|
||||
*/
|
||||
#define CC1_SPEC ""
|
||||
|
||||
/* This macro defines names of additional specifications to put in the specs
|
||||
that can be used in various specifications like CC1_SPEC. Its definition
|
||||
|
||||
@@ -165,17 +165,18 @@ extern int target_flags;
|
||||
{ "68060", - (MASK_5200|MASK_68040)}, \
|
||||
{ "68060", (MASK_68020|MASK_68881|MASK_BITFIELD \
|
||||
|MASK_68040_ONLY|MASK_68060)}, \
|
||||
{ "5200", - (MASK_68060|MASK_68040|MASK_68020|MASK_BITFIELD|MASK_68881)}, \
|
||||
{ "5200", - (MASK_68060|MASK_68040|MASK_68020|MASK_BITFIELD \
|
||||
|MASK_68881)}, \
|
||||
{ "5200", (MASK_5200)}, \
|
||||
{ "68851", 0}, \
|
||||
{ "no-68851", 0}, \
|
||||
{ "68302", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|
||||
|MASK_68020|MASK_BITFIELD|MASK_68881)}, \
|
||||
{ "68332", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|
||||
|MASK_BITFIELD)}, \
|
||||
|MASK_BITFIELD|MASK_68881)}, \
|
||||
{ "68332", MASK_68020}, \
|
||||
{ "cpu32", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY \
|
||||
|MASK_BITFIELD)}, \
|
||||
|MASK_BITFIELD|MASK_68881)}, \
|
||||
{ "cpu32", MASK_68020}, \
|
||||
{ "align-int", MASK_ALIGN_INT }, \
|
||||
{ "no-align-int", -MASK_ALIGN_INT }, \
|
||||
@@ -1040,7 +1041,7 @@ while(0)
|
||||
|| defined(__mc68020__) || defined(mc68020) \
|
||||
|| defined(__mc68030__) || defined(mc68030) \
|
||||
|| defined(__mc68040__) || defined(mc68040) \
|
||||
|| defined(__mc68332__) || defined(mc68332)
|
||||
|| defined(__mcpu32__) || defined(mcpu32)
|
||||
#define MACHINE_STATE_m68010_up
|
||||
#endif
|
||||
|
||||
|
||||
@@ -184,6 +184,9 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef ASCII_DATA_ASM_OP
|
||||
#define ASCII_DATA_ASM_OP "byte"
|
||||
|
||||
#undef SET_ASM_OP
|
||||
#define SET_ASM_OP "set"
|
||||
|
||||
#endif /* USE_GAS */
|
||||
|
||||
#ifdef USE_GLD
|
||||
@@ -353,7 +356,7 @@ dtors_section () \
|
||||
#undef ASM_BYTE
|
||||
#define ASM_BYTE ".byte"
|
||||
#undef ASM_BYTE_OP
|
||||
#define ASM_BYTE_OP "\t.byte"
|
||||
#define ASM_BYTE_OP ".byte"
|
||||
#else
|
||||
#undef ASM_LONG
|
||||
#define ASM_LONG "long"
|
||||
@@ -364,7 +367,7 @@ dtors_section () \
|
||||
#undef ASM_BYTE
|
||||
#define ASM_BYTE "byte"
|
||||
#undef ASM_BYTE_OP
|
||||
#define ASM_BYTE_OP "\tbyte"
|
||||
#define ASM_BYTE_OP "byte"
|
||||
#endif /* USE_GAS */
|
||||
|
||||
/* The sysV68 as doesn't know about double's and float's. */
|
||||
@@ -473,7 +476,7 @@ do { long l; \
|
||||
#undef ASM_OUTPUT_ASCII
|
||||
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
|
||||
do { register int sp = 0, lp = 0; \
|
||||
fprintf ((FILE), "%s\t", ASM_BYTE_OP); \
|
||||
fprintf ((FILE), "\t%s\t", ASM_BYTE_OP); \
|
||||
loop: \
|
||||
if ((PTR)[sp] > ' ' && ! ((PTR)[sp] & 0x80) && (PTR)[sp] != '\\') \
|
||||
{ lp += 3; \
|
||||
|
||||
@@ -56,3 +56,8 @@
|
||||
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
||||
we want to retain compatibility with older gcc versions. */
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* Until they use ELF or something that handles dwarf2 unwinds
|
||||
and initialization stuff better. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ xfgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
|
||||
echo '#define EXTFLOAT' > xfgnulib.c
|
||||
cat $(srcdir)/config/m68k/fpgnulib.c >> xfgnulib.c
|
||||
|
||||
MULTILIB_OPTIONS = m68000/m68020/m5200 m68881/msoft-float
|
||||
MULTILIB_OPTIONS = m68000/m68020/m5200/mcpu32 m68881/msoft-float
|
||||
MULTILIB_DIRNAMES =
|
||||
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 m68000=m68332 m68020=mc68020 m68020=m68040
|
||||
MULTILIB_EXCEPTIONS = *m5200/*m68881 *m5200/*msoft-float
|
||||
MULTILIB_MATCHES = m68000=mc68000 m68000=m68302 mcpu32=m68332 m68020=mc68020 m68020=m68040 m68020=m68060
|
||||
MULTILIB_EXCEPTIONS = m68000/msoft-float m5200/m68881 m5200/msoft-float mcpu32/m68881 mcpu32/msoft-float
|
||||
|
||||
LIBGCC = stmp-multilib
|
||||
INSTALL_LIBGCC = install-multilib
|
||||
|
||||
@@ -3,7 +3,7 @@ CC=cc -traditional-cpp
|
||||
OLDCC=CC -traditional-cpp
|
||||
|
||||
# Specify other dirs of system header files to be fixed.
|
||||
OTHER_FIXINCLUDES_DIRS= /LocalDeveloper/Headers
|
||||
OTHER_FIXINCLUDES_DIRS= /LocalDeveloper/Headers /NextDeveloper/Headers
|
||||
|
||||
# <limits.h> is sometimes in /usr/include/ansi/limits.h.
|
||||
LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h -o -f $(SYSTEM_HEADER_DIR)/ansi/limits.h ]
|
||||
|
||||
@@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */
|
||||
(TARGET_SVR4 ? DWARF_DEBUG : SDB_DEBUG)
|
||||
|
||||
#ifndef VERSION_INFO2
|
||||
#define VERSION_INFO2 "$Revision: 1.24 $"
|
||||
#define VERSION_INFO2 "$Revision: 1.1.1.1 $"
|
||||
#endif
|
||||
#ifndef NO_BUGS
|
||||
#define AS_BUG_IMMEDIATE_LABEL
|
||||
@@ -137,13 +137,13 @@ Boston, MA 02111-1307, USA. */
|
||||
#define ASM_CPU_SPEC "\
|
||||
%{v:-V}\
|
||||
%{g:\
|
||||
%{mno-legend:-Wc,off}\
|
||||
%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
|
||||
%{traditional:,-lc}\
|
||||
%{!traditional:,-lansi-c}\
|
||||
%{mstandard:,-keep-std}\
|
||||
%{mexternal-legend:,-external}\
|
||||
%{mocs-frame-position:,-ocs}}}"
|
||||
%{mno-legend:-Wc,off}\
|
||||
%{!mno-legend:-Wc,-fix-bb,-s\"%i\"\
|
||||
%{traditional:,-lc}\
|
||||
%{!traditional:,-lansi-c}\
|
||||
%{mstandard:,-keep-std}\
|
||||
%{mexternal-legend:,-external}\
|
||||
%{mocs-frame-position:,-ocs}}}"
|
||||
|
||||
#define CPP_CPU_SPEC "\
|
||||
%{!m88000:%{!m88100:%{m88110:-D__m88110__}}} \
|
||||
|
||||
@@ -213,8 +213,24 @@ extern struct rtx_def *mips_function_value ();
|
||||
(mips_abi == ABI_EABI && (NAMED) \
|
||||
&& FUNCTION_ARG_PASS_BY_REFERENCE (CUM, MODE, TYPE, NAMED))
|
||||
|
||||
/* Define LONG_MAX correctly for all users. We need to handle 32 bit EABI,
|
||||
64 bit EABI, N32, and N64 as possible defaults. The checks performed here
|
||||
are the same as the checks in override_options in mips.c that determines
|
||||
whether MASK_LONG64 will be set.
|
||||
|
||||
This does not handle inappropriate options or ununusal option
|
||||
combinations. */
|
||||
|
||||
#undef LONG_MAX_SPEC
|
||||
#define LONG_MAX_SPEC "%{!mno-long64:-D__LONG_MAX__=9223372036854775807LL}"
|
||||
#if ((MIPS_ABI_DEFAULT == ABI_64) || ((MIPS_ABI_DEFAULT == ABI_EABI) && ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_64BIT)))
|
||||
#define LONG_MAX_SPEC \
|
||||
"%{!mabi=n32:%{!mno-long64:%{!mgp32:-D__LONG_MAX__=9223372036854775807L}}}"
|
||||
#else
|
||||
#define LONG_MAX_SPEC \
|
||||
"%{mabi=64:-D__LONG_MAX__=9223372036854775807L} \
|
||||
%{mlong64:-D__LONG_MAX__=9223372036854775807L} \
|
||||
%{mgp64:-D__LONG_MAX__=9223372036854775807L}"
|
||||
#endif
|
||||
|
||||
/* ??? Unimplemented stuff follows. */
|
||||
|
||||
|
||||
@@ -122,6 +122,9 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef SDB_DEBUGGING_INFO
|
||||
#undef MIPS_DEBUGGING_INFO
|
||||
|
||||
/* Likewise, the assembler doesn't handle DWARF2 directives. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
#undef MACHINE_TYPE
|
||||
#define MACHINE_TYPE "SGI running IRIX 5.x"
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
#define SDB_DEBUGGING_INFO
|
||||
#define MIPS_DEBUGGING_INFO
|
||||
|
||||
/* GNU as does handle DWARF2 directives. */
|
||||
#undef DWARF2_UNWIND_INFO
|
||||
#define DWARF2_UNWIND_INFO 1
|
||||
|
||||
/* Irix 5 does not have some strange restrictions that Irix 3 had. */
|
||||
#undef SET_FILE_NUMBER
|
||||
#define SET_FILE_NUMBER() ++num_source_filenames
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/* Definitions of target machine for GNU compiler. Iris version 6.
|
||||
Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
@@ -542,5 +542,5 @@ do { \
|
||||
%{!static: \
|
||||
%{!shared: %{!non_shared: %{!call_shared: -call_shared -no_unresolved}}}} \
|
||||
%{rpath} -init __do_global_ctors -fini __do_global_dtors \
|
||||
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__} \
|
||||
%{shared:-hidden_symbol __do_global_ctors,__do_global_dtors,__EH_FRAME_BEGIN__,__frame_dummy} \
|
||||
-_SYSTYPE_SVR4 %{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64} %{!mabi*: -n32}"
|
||||
|
||||
@@ -193,9 +193,9 @@ enum processor_type mips_cpu;
|
||||
int mips_isa;
|
||||
|
||||
#ifdef MIPS_ABI_DEFAULT
|
||||
/* which ABI to use. This is defined to a constant in mips.h if the target
|
||||
/* Which ABI to use. This is defined to a constant in mips.h if the target
|
||||
doesn't support multiple ABIs. */
|
||||
enum mips_abi_type mips_abi;
|
||||
int mips_abi;
|
||||
#endif
|
||||
|
||||
/* Strings to hold which cpu and instruction set architecture to use. */
|
||||
@@ -5008,9 +5008,32 @@ save_restore_insns (store_p, large_reg, large_offset, file)
|
||||
base_offset = gp_offset;
|
||||
if (file == (FILE *)0)
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx, GEN_INT (gp_offset));
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
rtx gp_offset_rtx = GEN_INT (gp_offset);
|
||||
|
||||
/* Instruction splitting doesn't preserve the RTX_FRAME_RELATED_P
|
||||
bit, so make sure that we don't emit anything that can be
|
||||
split. */
|
||||
/* ??? There is no DImode ori immediate pattern, so we can only
|
||||
do this for 32 bit code. */
|
||||
if (large_int (gp_offset_rtx)
|
||||
&& GET_MODE (base_reg_rtx) == SImode)
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx,
|
||||
GEN_INT (gp_offset & 0xffff0000));
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
insn = emit_insn (gen_iorsi3 (base_reg_rtx, base_reg_rtx,
|
||||
GEN_INT (gp_offset & 0x0000ffff)));
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx, gp_offset_rtx);
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
|
||||
if (TARGET_LONG64)
|
||||
insn = emit_insn (gen_adddi3 (base_reg_rtx, base_reg_rtx, stack_pointer_rtx));
|
||||
else
|
||||
@@ -5128,7 +5151,32 @@ save_restore_insns (store_p, large_reg, large_offset, file)
|
||||
base_offset = fp_offset;
|
||||
if (file == (FILE *)0)
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx, GEN_INT (fp_offset));
|
||||
rtx fp_offset_rtx = GEN_INT (fp_offset);
|
||||
|
||||
/* Instruction splitting doesn't preserve the RTX_FRAME_RELATED_P
|
||||
bit, so make sure that we don't emit anything that can be
|
||||
split. */
|
||||
/* ??? There is no DImode ori immediate pattern, so we can only
|
||||
do this for 32 bit code. */
|
||||
if (large_int (fp_offset_rtx)
|
||||
&& GET_MODE (base_reg_rtx) == SImode)
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx,
|
||||
GEN_INT (fp_offset & 0xffff0000));
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
insn = emit_insn (gen_iorsi3 (base_reg_rtx, base_reg_rtx,
|
||||
GEN_INT (fp_offset & 0x0000ffff)));
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
insn = emit_move_insn (base_reg_rtx, fp_offset_rtx);
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
|
||||
if (store_p)
|
||||
RTX_FRAME_RELATED_P (insn) = 1;
|
||||
if (TARGET_LONG64)
|
||||
@@ -5579,6 +5627,13 @@ mips_expand_epilogue ()
|
||||
else
|
||||
emit_insn (gen_movsi (stack_pointer_rtx, frame_pointer_rtx));
|
||||
}
|
||||
/* The GP/PIC register is implicitly used by all SYMBOL_REFs, so if we
|
||||
are going to restore it, then we must emit a blockage insn to
|
||||
prevent the scheduler from moving the restore out of the epilogue. */
|
||||
else if (TARGET_ABICALLS && mips_abi != ABI_32
|
||||
&& (current_frame_info.mask
|
||||
& (1L << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))))
|
||||
emit_insn (gen_blockage ());
|
||||
|
||||
save_restore_insns (FALSE, tmp_rtx, tsize, (FILE *)0);
|
||||
|
||||
|
||||
@@ -77,21 +77,20 @@ enum processor_type {
|
||||
/* Recast the cpu class to be the cpu attribute. */
|
||||
#define mips_cpu_attr ((enum attr_cpu)mips_cpu)
|
||||
|
||||
/* Which ABI to use. This is only used by the Irix 6 port currently. */
|
||||
/* Which ABI to use. These are constants because abi64.h must check their
|
||||
value at preprocessing time. */
|
||||
|
||||
enum mips_abi_type {
|
||||
ABI_32,
|
||||
ABI_N32,
|
||||
ABI_64,
|
||||
ABI_EABI
|
||||
};
|
||||
#define ABI_32 0
|
||||
#define ABI_N32 1
|
||||
#define ABI_64 2
|
||||
#define ABI_EABI 3
|
||||
|
||||
#ifndef MIPS_ABI_DEFAULT
|
||||
/* We define this away so that there is no extra runtime cost if the target
|
||||
doesn't support multiple ABIs. */
|
||||
#define mips_abi ABI_32
|
||||
#else
|
||||
extern enum mips_abi_type mips_abi;
|
||||
extern int mips_abi;
|
||||
#endif
|
||||
|
||||
/* Whether to emit abicalls code sequences or not. */
|
||||
@@ -2519,14 +2518,6 @@ typedef struct mips_args {
|
||||
register enum rtx_code code0 = GET_CODE (xplus0); \
|
||||
register enum rtx_code code1 = GET_CODE (xplus1); \
|
||||
\
|
||||
if (code0 != REG && code1 == REG) \
|
||||
{ \
|
||||
xplus0 = XEXP (xinsn, 1); \
|
||||
xplus1 = XEXP (xinsn, 0); \
|
||||
code0 = GET_CODE (xplus0); \
|
||||
code1 = GET_CODE (xplus1); \
|
||||
} \
|
||||
\
|
||||
if (code0 == REG && REG_OK_FOR_BASE_P (xplus0)) \
|
||||
{ \
|
||||
if (code1 == CONST_INT \
|
||||
|
||||
@@ -2731,11 +2731,17 @@ move\\t%0,%z4\\n\\
|
||||
;; operand zero, because then the address in the move instruction will be
|
||||
;; clobbered. We mark the scratch register as early clobbered to prevent this.
|
||||
|
||||
;; We need the ?X in alternative 1 so that it will be choosen only if the
|
||||
;; destination is a floating point register. Otherwise, alternative 1 can
|
||||
;; have lower cost than alternative 0 (because there is one less loser), and
|
||||
;; can be choosen when it won't work (because integral reloads into FP
|
||||
;; registers are not supported).
|
||||
|
||||
(define_insn "fix_truncdfsi2"
|
||||
[(set (match_operand:SI 0 "general_operand" "=d,*f,R,o")
|
||||
(fix:SI (match_operand:DF 1 "register_operand" "f,*f,f,f")))
|
||||
(clobber (match_scratch:SI 2 "=d,*d,&d,&d"))
|
||||
(clobber (match_scratch:DF 3 "=f,*X,f,f"))]
|
||||
(clobber (match_scratch:DF 3 "=f,?*X,f,f"))]
|
||||
"TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT"
|
||||
"*
|
||||
{
|
||||
@@ -2760,7 +2766,7 @@ move\\t%0,%z4\\n\\
|
||||
[(set (match_operand:SI 0 "general_operand" "=d,*f,R,o")
|
||||
(fix:SI (match_operand:SF 1 "register_operand" "f,*f,f,f")))
|
||||
(clobber (match_scratch:SI 2 "=d,*d,&d,&d"))
|
||||
(clobber (match_scratch:SF 3 "=f,*X,f,f"))]
|
||||
(clobber (match_scratch:SF 3 "=f,?*X,f,f"))]
|
||||
"TARGET_HARD_FLOAT"
|
||||
"*
|
||||
{
|
||||
@@ -2793,7 +2799,7 @@ move\\t%0,%z4\\n\\
|
||||
(define_insn "fix_truncdfdi2"
|
||||
[(set (match_operand:DI 0 "general_operand" "=d,*f,R,o")
|
||||
(fix:DI (match_operand:DF 1 "register_operand" "f,*f,f,f")))
|
||||
(clobber (match_scratch:DF 2 "=f,*X,f,f"))]
|
||||
(clobber (match_scratch:DF 2 "=f,?*X,f,f"))]
|
||||
"TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT"
|
||||
"*
|
||||
{
|
||||
@@ -2820,7 +2826,7 @@ move\\t%0,%z4\\n\\
|
||||
(define_insn "fix_truncsfdi2"
|
||||
[(set (match_operand:DI 0 "general_operand" "=d,*f,R,o")
|
||||
(fix:DI (match_operand:SF 1 "register_operand" "f,*f,f,f")))
|
||||
(clobber (match_scratch:DF 2 "=f,*X,f,f"))]
|
||||
(clobber (match_scratch:DF 2 "=f,?*X,f,f"))]
|
||||
"TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT"
|
||||
"*
|
||||
{
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
/* Definitions of MIPS sub target machine for GNU compiler.
|
||||
Toshiba r3900. You should include mips.h after this.
|
||||
|
||||
Copyright (C) 1989, 90-6, 1997 Free Software Foundation, Inc.
|
||||
Contributed by Gavin Koch (gavin@cygnus.com).
|
||||
|
||||
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. */
|
||||
|
||||
#define SUBTARGET_CPP_SPEC "\
|
||||
%{!mabi=32: %{!mabi=n32: %{!mabi=64: -D__mips_eabi}}} \
|
||||
%{!msingle-float:-D__mips_soft_float} \
|
||||
%{mhard-float:%e-mhard-float not supported.} \
|
||||
%{msingle-float:%{msoft-float: \
|
||||
%e-msingle-float and -msoft-float can not both be specified.}}"
|
||||
|
||||
/* The following is needed because -mips3 and -mips4 set gp64 which in
|
||||
combination with abi=eabi, causes long64 to be set. */
|
||||
#define SUBTARGET_CPP_SIZE_SPEC "\
|
||||
%{mips3:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \
|
||||
%{mips4:-D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int} \
|
||||
%{!mips3:%{!mips4:%{!m4650:\
|
||||
-D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int}}} "
|
||||
|
||||
/* by default (if not mips-something-else) produce code for the r3900 */
|
||||
#define SUBTARGET_CC1_SPEC "\
|
||||
%{mhard-float:%e-mhard-float not supported.} \
|
||||
%{msingle-float:%{msoft-float: \
|
||||
%e-msingle-float and -msoft-float can not both be specified.}}"
|
||||
|
||||
#define TARGET_DEFAULT (MASK_SOFT_FLOAT | MASK_MIPS3900)
|
||||
#define MIPS_CPU_STRING_DEFAULT "R3900"
|
||||
#define MIPS_ISA_DEFAULT 1
|
||||
|
||||
#define MULTILIB_DEFAULTS { "EB", "mips1", "msoft-float" }
|
||||
|
||||
/* We use the MIPS EABI by default. */
|
||||
#define MIPS_ABI_DEFAULT ABI_EABI
|
||||
|
||||
|
||||
/* Debugging */
|
||||
|
||||
#define DWARF2_DEBUGGING_INFO
|
||||
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
||||
|
||||
/* For the 'preferred' cases ("gN" and "ggdbN") we need to tell the
|
||||
gnu assembler "dwarf-2" */
|
||||
|
||||
#define SUBTARGET_ASM_DEBUGGING_SPEC "\
|
||||
%{!mmips-as: \
|
||||
%{g:-gdwarf-2} %{g0:-gdwarf-2} %{g1:-gdwarf-2} %{g2:-gdwarf-2} %{g3:-gdwarf-2} \
|
||||
%{ggdb:-gdwarf-2} %{ggdb0:-gdwarf-2} %{ggdb1:-gdwarf-2} %{ggdb2:-gdwarf-2} %{ggdb3:-gdwarf-2} \
|
||||
%{gdwarf-2*:-gdwarf-2}} \
|
||||
%{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \
|
||||
%{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \
|
||||
%{gcoff:-g} %{gcoff0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}"
|
||||
|
||||
@@ -25,4 +25,4 @@ CLIB = -lmld -lmalloc
|
||||
ALLOCA = alloca.o
|
||||
|
||||
# Find all of the declarations from the header files
|
||||
FIXPROTO_DEFINES= -D__EXTENSIONS__ -D_LANGUAGE_C_PLUS_PLUS
|
||||
FIXPROTO_DEFINES= -D__EXTENSIONS__ -D_SGI_SOURCE -D_LANGUAGE_C_PLUS_PLUS
|
||||
|
||||
@@ -105,3 +105,8 @@ Boston, MA 02111-1307, USA.
|
||||
|
||||
#undef PCC_STATIC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
/* Until they use ELF or something that handles dwarf2 unwinds
|
||||
and initialization stuff better. */
|
||||
#define DWARF2_UNWIND_INFO 0
|
||||
|
||||
|
||||
@@ -69,3 +69,6 @@ do { \
|
||||
#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
|
||||
#endif
|
||||
|
||||
/* hpux10 has the new HP assembler. It's still lousy, but it's a whole lot
|
||||
better than the assembler shipped with older versions of hpux. */
|
||||
#define NEW_HP_ASSEMBLER
|
||||
|
||||
@@ -1244,8 +1244,12 @@ emit_move_sequence (operands, mode, scratch_reg)
|
||||
}
|
||||
}
|
||||
|
||||
/* Simplify the source if we need to. */
|
||||
/* Simplify the source if we need to.
|
||||
Note we do have to handle function labels here, even though we do
|
||||
not consider them legitimate constants. Loop optimizations can
|
||||
call the emit_move_xxx with one as a source. */
|
||||
if ((GET_CODE (operand1) != HIGH && immediate_operand (operand1, mode))
|
||||
|| function_label_operand (operand1, mode)
|
||||
|| (GET_CODE (operand1) == HIGH
|
||||
&& symbolic_operand (XEXP (operand1, 0), mode)))
|
||||
{
|
||||
@@ -1263,9 +1267,10 @@ emit_move_sequence (operands, mode, scratch_reg)
|
||||
|
||||
So we force the plabel into memory, load operand0 from
|
||||
the memory location, then add in the constant part. */
|
||||
if (GET_CODE (operand1) == CONST
|
||||
&& GET_CODE (XEXP (operand1, 0)) == PLUS
|
||||
&& function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
|
||||
if ((GET_CODE (operand1) == CONST
|
||||
&& GET_CODE (XEXP (operand1, 0)) == PLUS
|
||||
&& function_label_operand (XEXP (XEXP (operand1, 0), 0), Pmode))
|
||||
|| function_label_operand (operand1, mode))
|
||||
{
|
||||
rtx temp, const_part;
|
||||
|
||||
@@ -1275,13 +1280,25 @@ emit_move_sequence (operands, mode, scratch_reg)
|
||||
else if (flag_pic)
|
||||
scratch_reg = gen_reg_rtx (Pmode);
|
||||
|
||||
/* Save away the constant part of the expression. */
|
||||
const_part = XEXP (XEXP (operand1, 0), 1);
|
||||
if (GET_CODE (const_part) != CONST_INT)
|
||||
abort ();
|
||||
if (GET_CODE (operand1) == CONST)
|
||||
{
|
||||
/* Save away the constant part of the expression. */
|
||||
const_part = XEXP (XEXP (operand1, 0), 1);
|
||||
if (GET_CODE (const_part) != CONST_INT)
|
||||
abort ();
|
||||
|
||||
/* Force the function label into memory. */
|
||||
temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
|
||||
/* Force the function label into memory. */
|
||||
temp = force_const_mem (mode, XEXP (XEXP (operand1, 0), 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* No constant part. */
|
||||
const_part = NULL_RTX;
|
||||
|
||||
/* Force the function label into memory. */
|
||||
temp = force_const_mem (mode, operand1);
|
||||
}
|
||||
|
||||
|
||||
/* Get the address of the memory location. PIC-ify it if
|
||||
necessary. */
|
||||
@@ -1300,7 +1317,8 @@ emit_move_sequence (operands, mode, scratch_reg)
|
||||
emit_move_sequence (operands, mode, scratch_reg);
|
||||
|
||||
/* And add back in the constant part. */
|
||||
expand_inc (operand0, const_part);
|
||||
if (const_part != NULL_RTX)
|
||||
expand_inc (operand0, const_part);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1396,12 +1396,21 @@ extern struct rtx_def *hppa_builtin_saveregs ();
|
||||
&& (reload_in_progress || reload_completed || ! symbolic_expression_p (X)))
|
||||
|
||||
/* Include all constant integers and constant doubles, but not
|
||||
floating-point, except for floating-point zero. */
|
||||
floating-point, except for floating-point zero.
|
||||
|
||||
Reject LABEL_REFs if we're not using gas or the new HP assembler. */
|
||||
#ifdef NEW_HP_ASSEMBLER
|
||||
#define LEGITIMATE_CONSTANT_P(X) \
|
||||
((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \
|
||||
|| (X) == CONST0_RTX (GET_MODE (X))) \
|
||||
&& !function_label_operand (X, VOIDmode))
|
||||
#else
|
||||
#define LEGITIMATE_CONSTANT_P(X) \
|
||||
((GET_MODE_CLASS (GET_MODE (X)) != MODE_FLOAT \
|
||||
|| (X) == CONST0_RTX (GET_MODE (X))) \
|
||||
&& (GET_CODE (X) != LABEL_REF || TARGET_GAS)\
|
||||
&& !function_label_operand (X, VOIDmode))
|
||||
#endif
|
||||
|
||||
/* Subroutine for EXTRA_CONSTRAINT.
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
;;- Machine description for HP PA-RISC architecture for GNU C compiler
|
||||
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997
|
||||
;; Free Software Foundation, Inc.
|
||||
;; Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
|
||||
;; Contributed by the Center for Software Science at the University
|
||||
;; of Utah.
|
||||
|
||||
@@ -1432,7 +1431,7 @@
|
||||
|
||||
(define_insn "pre_ldwm"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "=r")
|
||||
(mem:SI (plus:SI (match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "pre_cint_operand" ""))))
|
||||
(set (match_dup 1)
|
||||
(plus:SI (match_dup 1) (match_dup 2)))]
|
||||
@@ -1447,7 +1446,7 @@
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "pre_stwm"
|
||||
[(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "=r")
|
||||
[(set (mem:SI (plus:SI (match_operand:SI 0 "register_operand" "+r")
|
||||
(match_operand:SI 1 "pre_cint_operand" "")))
|
||||
(match_operand:SI 2 "reg_or_0_operand" "rM"))
|
||||
(set (match_dup 0)
|
||||
@@ -1464,7 +1463,7 @@
|
||||
|
||||
(define_insn "post_ldwm"
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(mem:SI (match_operand:SI 1 "register_operand" "=r")))
|
||||
(mem:SI (match_operand:SI 1 "register_operand" "+r")))
|
||||
(set (match_dup 1)
|
||||
(plus:SI (match_dup 1)
|
||||
(match_operand:SI 2 "post_cint_operand" "")))]
|
||||
@@ -1479,7 +1478,7 @@
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn "post_stwm"
|
||||
[(set (mem:SI (match_operand:SI 0 "register_operand" "=r"))
|
||||
[(set (mem:SI (match_operand:SI 0 "register_operand" "+r"))
|
||||
(match_operand:SI 1 "reg_or_0_operand" "rM"))
|
||||
(set (match_dup 0)
|
||||
(plus:SI (match_dup 0)
|
||||
@@ -1808,7 +1807,7 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "register_operand" "=r")
|
||||
(mem:HI (plus:SI (match_operand:SI 1 "register_operand" "=r")
|
||||
(mem:HI (plus:SI (match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "int5_operand" "L"))))
|
||||
(set (match_dup 1)
|
||||
(plus:SI (match_dup 1) (match_dup 2)))]
|
||||
@@ -1822,7 +1821,7 @@
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(zero_extend:SI (mem:HI
|
||||
(plus:SI
|
||||
(match_operand:SI 1 "register_operand" "=r")
|
||||
(match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "int5_operand" "L")))))
|
||||
(set (match_dup 1)
|
||||
(plus:SI (match_dup 1) (match_dup 2)))]
|
||||
@@ -1832,7 +1831,7 @@
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "=r")
|
||||
[(set (mem:HI (plus:SI (match_operand:SI 0 "register_operand" "+r")
|
||||
(match_operand:SI 1 "int5_operand" "L")))
|
||||
(match_operand:HI 2 "reg_or_0_operand" "rM"))
|
||||
(set (match_dup 0)
|
||||
@@ -2012,7 +2011,7 @@
|
||||
|
||||
(define_insn ""
|
||||
[(set (match_operand:QI 0 "register_operand" "=r")
|
||||
(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "=r")
|
||||
(mem:QI (plus:SI (match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "int5_operand" "L"))))
|
||||
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
|
||||
""
|
||||
@@ -2024,7 +2023,7 @@
|
||||
(define_insn ""
|
||||
[(set (match_operand:SI 0 "register_operand" "=r")
|
||||
(zero_extend:SI (mem:QI (plus:SI
|
||||
(match_operand:SI 1 "register_operand" "=r")
|
||||
(match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "int5_operand" "L")))))
|
||||
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
|
||||
""
|
||||
@@ -2035,7 +2034,7 @@
|
||||
(define_insn ""
|
||||
[(set (match_operand:HI 0 "register_operand" "=r")
|
||||
(zero_extend:HI (mem:QI (plus:SI
|
||||
(match_operand:SI 1 "register_operand" "=r")
|
||||
(match_operand:SI 1 "register_operand" "+r")
|
||||
(match_operand:SI 2 "int5_operand" "L")))))
|
||||
(set (match_dup 1) (plus:SI (match_dup 1) (match_dup 2)))]
|
||||
""
|
||||
@@ -2044,7 +2043,7 @@
|
||||
(set_attr "length" "4")])
|
||||
|
||||
(define_insn ""
|
||||
[(set (mem:QI (plus:SI (match_operand:SI 0 "register_operand" "=r")
|
||||
[(set (mem:QI (plus:SI (match_operand:SI 0 "register_operand" "+r")
|
||||
(match_operand:SI 1 "int5_operand" "L")))
|
||||
(match_operand:QI 2 "reg_or_0_operand" "rM"))
|
||||
(set (match_dup 0)
|
||||
|
||||
@@ -36,6 +36,37 @@ Boston, MA 02111-1307, USA. */
|
||||
#undef ASM_SPEC
|
||||
#define ASM_SPEC "-u %(asm_cpu)"
|
||||
|
||||
/* Common ASM definitions used by ASM_SPEC amonst the various targets
|
||||
for handling -mcpu=xxx switches. */
|
||||
|
||||
#undef ASM_CPU_SPEC
|
||||
#define ASM_CPU_SPEC \
|
||||
"%{!mcpu*: \
|
||||
%{mpower: %{!mpower2: -mpwr}} \
|
||||
%{mpower2: -mpwr2} \
|
||||
%{mpowerpc*: -mppc} \
|
||||
%{mno-power: %{!mpowerpc*: -mcom}} \
|
||||
%{!mno-power: %{!mpower2: %(asm_default)}}} \
|
||||
%{mcpu=common: -mcom} \
|
||||
%{mcpu=power: -mpwr} \
|
||||
%{mcpu=power2: -mpwr2} \
|
||||
%{mcpu=powerpc: -mppc} \
|
||||
%{mcpu=rios: -mpwr} \
|
||||
%{mcpu=rios1: -mpwr} \
|
||||
%{mcpu=rios2: -mpwr2} \
|
||||
%{mcpu=rsc: -mpwr} \
|
||||
%{mcpu=rsc1: -mpwr} \
|
||||
%{mcpu=403: -mppc} \
|
||||
%{mcpu=505: -mppc} \
|
||||
%{mcpu=601: -m601} \
|
||||
%{mcpu=602: -mppc} \
|
||||
%{mcpu=603: -m603} \
|
||||
%{mcpu=603e: -m603} \
|
||||
%{mcpu=604: -m604} \
|
||||
%{mcpu=620: -mppc} \
|
||||
%{mcpu=821: -mppc} \
|
||||
%{mcpu=860: -mppc}"
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_AIX41 \
|
||||
-Asystem(unix) -Asystem(aix)"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Definitions of target machine for GNU compiler,
|
||||
for IBM RS/6000 running AIX version 3.1.
|
||||
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||
Contributed by Michael Meissner (meissner@cygnus.com).
|
||||
|
||||
This file is part of GNU CC.
|
||||
@@ -23,12 +23,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
|
||||
#undef CPP_PREDEFINES
|
||||
#define CPP_PREDEFINES \
|
||||
"-DPPC -Dunix -Dlinux -Dpowerpc -Asystem(unix) -Asystem(linux) -Acpu(powerpc) -Amachine(powerpc)"
|
||||
"-DPPC -D__ELF__ -Dunix -Dlinux -Dpowerpc -Asystem(unix) -Asystem(linux) -Acpu(powerpc) -Amachine(powerpc)"
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "-m elf32ppc %{shared:-shared} \
|
||||
%{!shared: \
|
||||
%{!static: %{rdynamic:-export-dynamic}} \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
|
||||
%{static:-static}}"
|
||||
|
||||
#undef LIB_DEFAULT_SPEC
|
||||
@@ -62,4 +64,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||
#define MULTILIB_DEFAULTS { "mbig", "mcall-linux" }
|
||||
|
||||
#undef DEFAULT_VTABLE_THUNKS
|
||||
#ifndef USE_GNULIBC_1
|
||||
#define DEFAULT_VTABLE_THUNKS 1
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user