1103 lines
49 KiB
Plaintext
1103 lines
49 KiB
Plaintext
This is Info file gcc.info, produced by Makeinfo-1.47 from the input
|
||
file gcc.texi.
|
||
|
||
This file documents the use and the internals of the GNU compiler.
|
||
|
||
Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
|
||
|
||
Permission is granted to make and distribute verbatim copies of this
|
||
manual provided the copyright notice and this permission notice are
|
||
preserved on all copies.
|
||
|
||
Permission is granted to copy and distribute modified versions of
|
||
this manual under the conditions for verbatim copying, provided also
|
||
that the sections entitled "GNU General Public License" and "Boycott"
|
||
are included exactly as in the original, and provided that the entire
|
||
resulting derived work is distributed under the terms of a permission
|
||
notice identical to this one.
|
||
|
||
Permission is granted to copy and distribute translations of this
|
||
manual into another language, under the above conditions for modified
|
||
versions, except that the sections entitled "GNU General Public
|
||
License" and "Boycott", and this permission notice, may be included in
|
||
translations approved by the Free Software Foundation instead of in the
|
||
original English.
|
||
|
||
|
||
File: gcc.info, Node: Top, Next: Copying, Up: (DIR)
|
||
|
||
Introduction
|
||
************
|
||
|
||
This manual documents how to run, install and port the GNU C
|
||
compiler, as well as its new features and incompatibilities, and how to
|
||
report bugs. It corresponds to GNU CC version 2.2.
|
||
|
||
* Menu:
|
||
|
||
* Copying:: GNU General Public License says
|
||
how you can copy and share GNU CC.
|
||
* Contributors:: People who have contributed to GNU CC.
|
||
* Boycott:: Protect your freedom--fight "look and feel".
|
||
* Invoking GCC:: Command options supported by `gcc'.
|
||
* Installation:: How to configure, compile and install GNU CC.
|
||
* Extensions:: GNU extensions to the C language.
|
||
* Trouble:: If you have trouble installing GNU CC.
|
||
* Bugs:: How, why and where to report bugs.
|
||
* Service:: How to find suppliers of support for GNU CC.
|
||
* VMS:: Using GNU CC on VMS.
|
||
* Portability:: Goals of GNU CC's portability features.
|
||
* Interface:: Function-call interface of GNU CC output.
|
||
* Passes:: Order of passes, what they do, and what each file is for.
|
||
* RTL:: The intermediate representation that most passes work on.
|
||
* Machine Desc:: How to write machine description instruction patterns.
|
||
* Target Macros:: How to write the machine description C macros.
|
||
* Config:: Writing the `xm-MACHINE.h' file.
|
||
* Index:: Index of concepts and symbol names.
|
||
|
||
|
||
File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top
|
||
|
||
GNU GENERAL PUBLIC LICENSE
|
||
**************************
|
||
|
||
Version 2, June 1991
|
||
|
||
Copyright (C) 1989, 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.
|
||
|
||
Preamble
|
||
========
|
||
|
||
The licenses for most software are designed to take away your
|
||
freedom to share and change it. By contrast, the GNU General Public
|
||
License is intended to guarantee your freedom to share and change free
|
||
software--to make sure the software is free for all its users. This
|
||
General Public License applies to most of the Free Software
|
||
Foundation's software and to any other program whose authors commit to
|
||
using it. (Some other Free Software Foundation software is covered by
|
||
the GNU Library General Public License instead.) You can apply it to
|
||
your programs, 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 software, or if you modify it.
|
||
|
||
For example, if you distribute copies of such a program, whether
|
||
gratis or for a fee, you must give the recipients all the rights that
|
||
you have. You must make sure that they, too, receive or can get the
|
||
source code. And you must show them these terms so they know their
|
||
rights.
|
||
|
||
We protect your rights with two steps: (1) copyright the software,
|
||
and (2) offer you this license which gives you legal permission to copy,
|
||
distribute and/or modify the software.
|
||
|
||
Also, for each author's protection and ours, we want to make certain
|
||
that everyone understands that there is no warranty for this free
|
||
software. If the software is modified by someone else and passed on, we
|
||
want its recipients to know that what they have is not the original, 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 redistributors of a free
|
||
program will individually obtain patent licenses, in effect making the
|
||
program proprietary. To prevent this, we have made it clear that any
|
||
patent must be licensed for everyone's free use or not licensed at all.
|
||
|
||
The precise terms and conditions for copying, distribution and
|
||
modification follow.
|
||
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
1. This License applies to any program or other work which contains a
|
||
notice placed by the copyright holder saying it may be distributed
|
||
under the terms of this General Public License. The "Program",
|
||
below, refers to any such program or work, and a "work based on
|
||
the Program" means either the Program or any derivative work under
|
||
copyright law: that is to say, a work containing the Program or a
|
||
portion of it, either verbatim or with modifications and/or
|
||
translated into another language. (Hereinafter, translation is
|
||
included without limitation in the term "modification".) Each
|
||
licensee is addressed as "you".
|
||
|
||
Activities other than copying, distribution and modification are
|
||
not covered by this License; they are outside its scope. The act
|
||
of running the Program is not restricted, and the output from the
|
||
Program is covered only if its contents constitute a work based on
|
||
the Program (independent of having been made by running the
|
||
Program). Whether that is true depends on what the Program does.
|
||
|
||
2. You may copy and distribute verbatim copies of the Program's
|
||
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 give any other recipients of the Program a copy of
|
||
this License along with the Program.
|
||
|
||
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.
|
||
|
||
3. You may modify your copy or copies of the Program or any portion
|
||
of it, thus forming a work based on the Program, 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. You must cause the modified files to carry prominent notices
|
||
stating that you changed the files and the date of any change.
|
||
|
||
b. You must cause any work that you distribute or publish, that
|
||
in whole or in part contains or is derived from the Program
|
||
or any part thereof, to be licensed as a whole at no charge
|
||
to all third parties under the terms of this License.
|
||
|
||
c. If the modified program normally reads commands interactively
|
||
when run, you must cause it, when started running for such
|
||
interactive use in the most ordinary way, to print or display
|
||
an announcement including an appropriate copyright notice and
|
||
a notice that there is no warranty (or else, saying that you
|
||
provide a warranty) and that users may redistribute the
|
||
program under these conditions, and telling the user how to
|
||
view a copy of this License. (Exception: if the Program
|
||
itself is interactive but does not normally print such an
|
||
announcement, your work based on the Program is not required
|
||
to print an announcement.)
|
||
|
||
These requirements apply to the modified work as a whole. If
|
||
identifiable sections of that work are not derived from the
|
||
Program, 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 Program, 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 Program.
|
||
|
||
In addition, mere aggregation of another work not based on the
|
||
Program with the Program (or with a work based on the Program) on
|
||
a volume of a storage or distribution medium does not bring the
|
||
other work under the scope of this License.
|
||
|
||
4. You may copy and distribute the Program (or a work based on it,
|
||
under Section 2) in object code or executable form under the terms
|
||
of Sections 1 and 2 above provided that you also do one of the
|
||
following:
|
||
|
||
a. 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; or,
|
||
|
||
b. Accompany it with a written offer, valid for at least three
|
||
years, to give any third party, for a charge no more than your
|
||
cost of physically performing source distribution, a complete
|
||
machine-readable copy of the corresponding source code, to be
|
||
distributed under the terms of Sections 1 and 2 above on a
|
||
medium customarily used for software interchange; or,
|
||
|
||
c. Accompany it with the information you received as to the offer
|
||
to distribute corresponding source code. (This alternative is
|
||
allowed only for noncommercial distribution and only if you
|
||
received the program in object code or executable form with
|
||
such an offer, in accord with Subsection b above.)
|
||
|
||
The source code for a work means the preferred form of the work for
|
||
making modifications to it. For an executable work, 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 executable.
|
||
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.
|
||
|
||
If distribution of executable or 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 counts as
|
||
distribution of the source code, even though third parties are not
|
||
compelled to copy the source along with the object code.
|
||
|
||
5. You may not copy, modify, sublicense, or distribute the Program
|
||
except as expressly provided under this License. Any attempt
|
||
otherwise to copy, modify, sublicense or distribute the Program 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.
|
||
|
||
6. 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 Program or its derivative works. These actions
|
||
are prohibited by law if you do not accept this License.
|
||
Therefore, by modifying or distributing the Program (or any work
|
||
based on the Program), you indicate your acceptance of this
|
||
License to do so, and all its terms and conditions for copying,
|
||
distributing or modifying the Program or works based on it.
|
||
|
||
7. Each time you redistribute the Program (or any work based on the
|
||
Program), the recipient automatically receives a license from the
|
||
original licensor to copy, distribute or modify the Program
|
||
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.
|
||
|
||
8. 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
|
||
Program at all. For example, if a patent license would not permit
|
||
royalty-free redistribution of the Program 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 Program.
|
||
|
||
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.
|
||
|
||
9. If the distribution and/or use of the Program is restricted in
|
||
certain countries either by patents or by copyrighted interfaces,
|
||
the original copyright holder who places the Program 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.
|
||
|
||
10. The Free Software Foundation may publish revised and/or new
|
||
versions of the 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
|
||
Program 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 Program
|
||
does not specify a version number of this License, you may choose
|
||
any version ever published by the Free Software Foundation.
|
||
|
||
11. If you wish to incorporate parts of the Program into other free
|
||
programs whose distribution conditions are different, 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
|
||
|
||
12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
||
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
||
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU. SHOULD THE
|
||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
|
||
SERVICING, REPAIR OR CORRECTION.
|
||
|
||
13. 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 PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY
|
||
OTHER PROGRAMS), 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 Programs
|
||
=======================================================
|
||
|
||
If you develop a new program, and you want it to be of the greatest
|
||
possible use to the public, the best way to achieve this is to make it
|
||
free software which everyone can redistribute and change under these
|
||
terms.
|
||
|
||
To do so, attach the following notices to the program. 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 PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
|
||
Copyright (C) 19YY NAME OF AUTHOR
|
||
|
||
This program is free software; you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation; either version 2 of the License, or
|
||
(at your option) any later version.
|
||
|
||
This program is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with this program; if not, write to the Free Software
|
||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
|
||
Also add information on how to contact you by electronic and paper
|
||
mail.
|
||
|
||
If the program is interactive, make it output a short notice like
|
||
this when it starts in an interactive mode:
|
||
|
||
Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
|
||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||
This is free software, and you are welcome to redistribute it
|
||
under certain conditions; type `show c' for details.
|
||
|
||
The hypothetical commands `show w' and `show c' should show the
|
||
appropriate parts of the General Public License. Of course, the
|
||
commands you use may be called something other than `show w' and `show
|
||
c'; they could even be mouse-clicks or menu items--whatever suits your
|
||
program.
|
||
|
||
You should also get your employer (if you work as a programmer) or
|
||
your school, if any, to sign a "copyright disclaimer" for the program,
|
||
if necessary. Here is a sample; alter the names:
|
||
|
||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||
|
||
SIGNATURE OF TY COON, 1 April 1989
|
||
Ty Coon, President of Vice
|
||
|
||
This General Public License does not permit incorporating your
|
||
program into proprietary programs. If your program is a subroutine
|
||
library, you may consider it more useful to permit linking proprietary
|
||
applications with the library. If this is what you want to do, use the
|
||
GNU Library General Public License instead of this License.
|
||
|
||
|
||
File: gcc.info, Node: Contributors, Next: Boycott, Prev: Copying, Up: Top
|
||
|
||
Contributors to GNU CC
|
||
**********************
|
||
|
||
In addition to Richard Stallman, several people have written parts
|
||
of GNU CC.
|
||
|
||
* The idea of using RTL and some of the optimization ideas came from
|
||
the program PO written at the University of Arizona by Jack
|
||
Davidson and Christopher Fraser. See "Register Allocation and
|
||
Exhaustive Peephole Optimization", Software Practice and
|
||
Experience 14 (9), Sept. 1984, 857-866.
|
||
|
||
* Paul Rubin wrote most of the preprocessor.
|
||
|
||
* Leonard Tower wrote parts of the parser, RTL generator, and RTL
|
||
definitions, and of the Vax machine description.
|
||
|
||
* Ted Lemon wrote parts of the RTL reader and printer.
|
||
|
||
* Jim Wilson implemented loop strength reduction and some other loop
|
||
optimizations.
|
||
|
||
* Nobuyuki Hikichi of Software Research Associates, Tokyo,
|
||
contributed the support for the Sony NEWS machine.
|
||
|
||
* Charles LaBrec contributed the support for the Integrated Solutions
|
||
68020 system.
|
||
|
||
* Michael Tiemann of Cygnus Support wrote the front end for C++, as
|
||
well as the support for inline functions and instruction
|
||
scheduling. Also the descriptions of the National Semiconductor
|
||
32000 series cpu, the SPARC cpu and part of the Motorola 88000 cpu.
|
||
|
||
* Jan Stein of the Chalmers Computer Society provided support for
|
||
Genix, as well as part of the 32000 machine description.
|
||
|
||
* Randy Smith finished the Sun FPA support.
|
||
|
||
* Robert Brown implemented the support for Encore 32000 systems.
|
||
|
||
* David Kashtan of SRI adapted GNU CC to the Vomit-Making System
|
||
(VMS).
|
||
|
||
* Alex Crain provided changes for the 3b1.
|
||
|
||
* Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX
|
||
for the 9000 series 300.
|
||
|
||
* William Schelter did most of the work on the Intel 80386 support.
|
||
|
||
* Christopher Smith did the port for Convex machines.
|
||
|
||
* Paul Petersen wrote the machine description for the Alliant FX/8.
|
||
|
||
* Alain Lichnewsky ported GNU CC to the Mips cpu.
|
||
|
||
* Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the
|
||
Tahoe.
|
||
|
||
* Jonathan Stone wrote the machine description for the Pyramid
|
||
computer.
|
||
|
||
* Gary Miller ported GNU CC to Charles River Data Systems machines.
|
||
|
||
* Richard Kenner of New York University wrote the machine
|
||
descriptions for the AMD 29000, the IBM RT PC, and the IBM RS/6000
|
||
as well as the support for instruction attributes. He also made
|
||
changes to better support RISC processors including changes to
|
||
common subexpression elimination, strength reduction, function
|
||
calling sequence handling, and condition code support, in addition
|
||
to generalizing the code for frame pointer elimination.
|
||
|
||
* Richard Kenner and Michael Tiemann jointly developed reorg.c, the
|
||
delay slot scheduler.
|
||
|
||
* Mike Meissner and Tom Wood of Data General finished the port to the
|
||
Motorola 88000.
|
||
|
||
* Masanobu Yuhara of Fujitsu Laboratories implemented the machine
|
||
description for the Tron architecture (specifically, the Gmicro).
|
||
|
||
* NeXT, Inc. donated the front end that supports the Objective C
|
||
language.
|
||
|
||
* James van Artsdalen wrote the code that makes efficient use of the
|
||
Intel 80387 register stack.
|
||
|
||
* Mike Meissner at the Open Software Foundation finished the port to
|
||
the MIPS cpu, including adding ECOFF debug support.
|
||
|
||
* Ron Guilmette implemented the protoize and unprotoize tools, the
|
||
support for Dwarf symbolic debugging information, and much of the
|
||
support for System V Release 4. He has also worked heavily on the
|
||
Intel 386 and 860 support.
|
||
|
||
* Torbjorn Granlund of the Swedish Institute of Computer Science
|
||
implemented multiply-by-constant optimization and better long long
|
||
support, and improved leaf function register allocation.
|
||
|
||
|
||
File: gcc.info, Node: Boycott, Next: Invoking GCC, Prev: Contributors, Up: Top
|
||
|
||
Protect Your Freedom--Fight "Look And Feel"
|
||
*******************************************
|
||
|
||
This section is a political message from the League for Programming
|
||
Freedom to the users of GNU CC. It is included here as an
|
||
expression of support for the League on the part of the Free
|
||
Software Foundation.
|
||
|
||
Apple and Lotus are trying to create a new form of legal monopoly: a
|
||
copyright on a class of user interfaces. These monopolies would cause
|
||
serious problems for users and developers of computer software and
|
||
systems. Xerox, too, has tried to make a monopoly for itself on window
|
||
systems; their suit against Apple was thrown out on a technicality, but
|
||
Xerox has not said anything to indicate it wouldn't try again.
|
||
|
||
Until a few years ago, the law seemed clear: no one could restrict
|
||
others from using a user interface; programmers were free to implement
|
||
any interface they chose. Imitating interfaces, sometimes with changes,
|
||
was standard practice in the computer field. The interfaces we know
|
||
evolved gradually in this way; for example, the Macintosh user interface
|
||
drew ideas from the Xerox interface, which in turn drew on work done at
|
||
Stanford and SRI. 1-2-3 imitated VisiCalc, and dBase imitated a
|
||
database program from JPL.
|
||
|
||
Most computer companies, and nearly all computer users, were happy
|
||
with this state of affairs. The companies that are suing say it does
|
||
not offer "enough incentive" to develop their products, but they must
|
||
have considered it "enough" when they made their decision to do so. It
|
||
seems they are not satisfied with the opportunity to continue to compete
|
||
in the marketplace--not even with a head start.
|
||
|
||
If companies like Xerox, Lotus, and Apple are permitted to make law
|
||
through the courts, the precedent will hobble the software industry:
|
||
|
||
* Gratuitous incompatibilities will burden users. Imagine if each
|
||
car manufacturer had to arrange the pedals in a different order.
|
||
|
||
* Software will become and remain more expensive. Users will be
|
||
"locked in" to proprietary interfaces, for which there is no real
|
||
competition.
|
||
|
||
* Large companies have an unfair advantage wherever lawsuits become
|
||
commonplace. Since they can easily afford to sue, they can
|
||
intimidate small companies with threats even when they don't
|
||
really have a case.
|
||
|
||
* User interface improvements will come slower, since incremental
|
||
evolution through creative imitation will no longer be permitted.
|
||
|
||
* Even Apple, etc., will find it harder to make improvements if they
|
||
can no longer adapt the good ideas that others introduce, for fear
|
||
of weakening their own legal positions. Some users suggest that
|
||
this stagnation may already have started.
|
||
|
||
* If you use GNU software, you might find it of some concern that
|
||
user interface copyright will make it hard for the Free Software
|
||
Foundation to develop programs compatible with the interfaces that
|
||
you already know.
|
||
|
||
To protect our freedom from lawsuits like these, a group of
|
||
programmers and users have formed a new grass-roots political
|
||
organization, the League for Programming Freedom.
|
||
|
||
The purpose of the League is to oppose new monopolistic practices
|
||
such as user-interface copyright and software patents; it calls for a
|
||
return to the legal policies of the recent past, in which these
|
||
practices were not allowed. The League is not concerned with free
|
||
software as an issue, and not affiliated with the Free Software
|
||
Foundation.
|
||
|
||
The League's membership rolls include John McCarthy, inventor of
|
||
Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L.
|
||
Steele, Jr., author of well-known books on Lisp and C, as well as
|
||
Richard Stallman, the developer of GNU CC. Please join and add your
|
||
name to the list. Membership dues in the League are $42 per year for
|
||
programmers, managers and professionals; $10.50 for students; $21 for
|
||
others.
|
||
|
||
The League needs both activist members and members who only pay their
|
||
dues.
|
||
|
||
To join, or for more information, phone (617) 492-0023 or write to:
|
||
|
||
League for Programming Freedom
|
||
1 Kendall Square #143
|
||
P.O. Box 9171
|
||
Cambridge, MA 02139
|
||
|
||
You can also send electronic mail to `league@prep.ai.mit.edu'.
|
||
|
||
Here are some suggestions from the League for things you can do to
|
||
protect your freedom to write programs:
|
||
|
||
* Don't buy from Xerox, Lotus or Apple. Buy from their competitors
|
||
or from the defendants they are suing.
|
||
|
||
* Don't develop software to work with the systems made by these
|
||
companies.
|
||
|
||
* Port your existing software to competing systems, so that you
|
||
encourage users to switch.
|
||
|
||
* Write letters to company presidents to let them know their conduct
|
||
is unacceptable.
|
||
|
||
* Tell your friends and colleagues about this issue and how it
|
||
threatens to ruin the computer industry.
|
||
|
||
* Above all, don't work for the look-and-feel plaintiffs, and don't
|
||
accept contracts from them.
|
||
|
||
* Write to Congress to explain the importance of this issue.
|
||
|
||
House Subcommittee on Intellectual Property
|
||
2137 Rayburn Bldg
|
||
Washington, DC 20515
|
||
|
||
Senate Subcommittee on Patents, Trademarks and Copyrights
|
||
United States Senate
|
||
Washington, DC 20510
|
||
|
||
(These committees have received lots of mail already; let's give
|
||
them even more.)
|
||
|
||
Express your opinion! You can make a difference.
|
||
|
||
|
||
File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: Boycott, Up: Top
|
||
|
||
GNU CC Command Options
|
||
**********************
|
||
|
||
When you invoke GNU CC, it normally does preprocessing, compilation,
|
||
assembly and linking. The "overall options" allow you to stop this
|
||
process at an intermediate stage. For example, the `-c' option says
|
||
not to run the linker. Then the output consists of object files output
|
||
by the assembler.
|
||
|
||
Other options are passed on to one stage of processing. Some options
|
||
control the preprocessor and others the compiler itself. Yet other
|
||
options control the assembler and linker; most of these are not
|
||
documented here, since you rarely need to use any of them.
|
||
|
||
The GNU C compiler uses a command syntax much like the Unix C
|
||
compiler. The `gcc' program accepts options and file names as operands.
|
||
Multiple single-letter options may *not* be grouped: `-dr' is very
|
||
different from `-d -r'.
|
||
|
||
You can mix options and other arguments. For the most part, the
|
||
order you use doesn't matter; `gcc' reorders the command-line options so
|
||
that the choices specified by option flags are applied to all input
|
||
files. Order does matter when you use several options of the same kind;
|
||
for example, if you specify `-L' more than once, the directories are
|
||
searched in the order specified.
|
||
|
||
Many options have long names starting with `-f' or with `-W'--for
|
||
example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on.
|
||
Most of these have both positive and negative forms; the negative form
|
||
of `-ffoo' would be `-fno-foo'. This manual documents only one of
|
||
these two forms, whichever one is not the default.
|
||
|
||
Here is a summary of all the options, grouped by type. Explanations
|
||
are in the following sections.
|
||
|
||
*Overall Options*
|
||
*Note Options Controlling the Kind of Output: Overall Options.
|
||
-c -S -E -o FILE -pipe -v -x LANGUAGE
|
||
|
||
*Language Options*
|
||
*Note Options Controlling Dialect: Dialect Options.
|
||
-ansi -fbuiltin -fcond-mismatch -fno-asm
|
||
-fsigned-bitfields -fsigned-char
|
||
-funsigned-bitfields -funsigned-char -fwritable-strings
|
||
-traditional -traditional-cpp -trigraphs
|
||
|
||
*Warning Options*
|
||
*Note Options to Request or Suppress Warnings: Warning Options.
|
||
-fsyntax-only -pedantic -pedantic-errors
|
||
-w -W -Wall -Waggregate-return
|
||
-Wcast-align -Wcast-qual -Wcomment -Wconversion -Werror
|
||
-Wformat -Wid-clash-LEN -Wimplicit -Wimport
|
||
-Winline -Wmissing-prototypes
|
||
-Wparentheses -Wpointer-arith -Wreturn-type -Wshadow
|
||
-Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs
|
||
-Wuninitialized -Wunused -Wwrite-strings -Wchar-subscripts
|
||
|
||
*Debugging Options*
|
||
*Note Options for Debugging Your Program or GCC: Debugging Options.
|
||
-a -dLETTERS -fpretend-float
|
||
-g -gLEVEL -ggdb -gdwarf
|
||
-gstabs -gstabs+ -gcoff -gxcoff
|
||
-p -pg -save-temps
|
||
|
||
*Optimization Options*
|
||
*Note Options that Control Optimization: Optimize Options.
|
||
-fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
|
||
-fdelayed-branch -fexpensive-optimizations -ffast-math
|
||
-ffloat-store -fforce-addr -fforce-mem -finline
|
||
-finline-functions -fkeep-inline-functions
|
||
-fno-defer-pop -fno-function-cse -fomit-frame-pointer
|
||
-frerun-cse-after-loop -fschedule-insns -fschedule-insns2
|
||
-fstrength-reduce -fthread-jumps
|
||
-funroll-all-loops -funroll-loops
|
||
-O -O2
|
||
|
||
*Preprocessor Options*
|
||
*Note Options Controlling the Preprocessor: Preprocessor Options.
|
||
-C -dD -dM -dN
|
||
-DMACRO[=DEFN] -E -H
|
||
-include FILE -imacros FILE
|
||
-M -MD -MM -MMD -nostdinc -P -trigraphs -UMACRO
|
||
|
||
*Linker Options*
|
||
*Note Options for Linking: Link Options.
|
||
OBJECT-FILE-NAME
|
||
-lLIBRARY -nostdlib -static
|
||
|
||
*Directory Options*
|
||
*Note Options for Directory Search: Directory Options.
|
||
-BPREFIX -IDIR -I- -LDIR
|
||
|
||
*Target Options*
|
||
*Note Target Machine and Compiler Version: Target Options.
|
||
-b MACHINE -V VERSION
|
||
|
||
*Machine Dependent Options*
|
||
*Note Hardware Models and Configurations: Submodel Options.
|
||
*M680x0 Options*
|
||
-m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
|
||
-mnobitfield -mrtd -mshort -msoft-float
|
||
|
||
*VAX Options*
|
||
-mg -mgnu -munix
|
||
|
||
*SPARC Options*
|
||
-mforce-align -mfpu -mno-epilogue
|
||
|
||
*Convex Options*
|
||
-margcount -mc1 -mc2 -mnoargcount
|
||
|
||
*AMD29K Options*
|
||
-m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
|
||
-mnbw -mnodw -msmall -mstack-check -muser-registers
|
||
|
||
*M88K Options*
|
||
-m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
|
||
-mhandle-large-shift -midentify-revision
|
||
-mno-check-zero-division -mno-ocs-debug-info
|
||
-mno-ocs-frame-position -mno-optimize-arg-area -mno-underscores
|
||
-mocs-debug-info -mocs-frame-position -moptimize-arg-area
|
||
-mshort-data-NUM -msvr3 -msvr4 -mtrap-large-shift
|
||
-muse-div-instruction -mversion-03.00 -mwarn-passed-structs
|
||
|
||
*RS/6000 Options*
|
||
-mfp-in-toc -mno-fop-in-toc
|
||
|
||
*RT Options*
|
||
-mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
|
||
-mfull-fp-blocks -mhc-struct-return -min-line-mul
|
||
-mminimum-fp-blocks -mnohc-struct-return
|
||
|
||
*MIPS Options*
|
||
-mcpu=CPU TYPE -mips2 -mips3 -mint64 -mlong64 -mlonglong128
|
||
-mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats
|
||
-mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile
|
||
-msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic
|
||
-mno-half-pic -G NUM -nocpp
|
||
|
||
*i386 Options*
|
||
-m486 -msoft-float
|
||
|
||
*Code Generation Options*
|
||
*Note Options for Code Generation Conventions: Code Gen Options.
|
||
-fcall-saved-REG -fcall-used-REG -ffixed-REG
|
||
-fno-common -fpcc-struct-return -fpic -fPIC -fshared-data
|
||
-fshort-enums -fshort-double -fvolatile
|
||
|
||
* Menu:
|
||
|
||
* Overall Options:: Controlling the kind of output:
|
||
an executable, object files, assembler files,
|
||
or preprocessed source.
|
||
* Dialect Options:: Controlling the variant of C language compiled.
|
||
* Warning Options:: How picky should the compiler be?
|
||
* Debugging Options:: Symbol tables, measurements, and debugging dumps.
|
||
* Optimize Options:: How much optimization?
|
||
* Preprocessor Options:: Controlling header files and macro definitions.
|
||
Also, getting dependency information for Make.
|
||
* Link Options:: Specifying libraries and so on.
|
||
* Directory Options:: Where to find header files and libraries.
|
||
Where to find the compiler executable files.
|
||
* Target Options:: Running a cross-compiler, or an old version of GNU CC.
|
||
* Submodel Options:: Specifying minor hardware or convention variations,
|
||
such as 68010 vs 68020.
|
||
* Code Gen Options:: Specifying conventions for function calls, data layout
|
||
and register usage.
|
||
* Environment Variables:: Env vars that affect GNU CC.
|
||
|
||
|
||
File: gcc.info, Node: Overall Options, Next: Dialect Options, Prev: Invoking GCC, Up: Invoking GCC
|
||
|
||
Options Controlling the Kind of Output
|
||
======================================
|
||
|
||
Compilation can involve up to four stages: preprocessing, compilation
|
||
proper, assembly and linking, always in that order. The first three
|
||
stages apply to an individual source file, and end by producing an
|
||
object file; linking combines all the object files (those newly
|
||
compiled, and those specified as input) into an executable file.
|
||
|
||
For any given input file, the file name suffix determines what kind
|
||
of compilation is done:
|
||
|
||
`FILE.c'
|
||
C source code which must be preprocessed.
|
||
|
||
`FILE.i'
|
||
C source code which should not be preprocessed.
|
||
|
||
`FILE.m'
|
||
Objective-C source code
|
||
|
||
`FILE.h'
|
||
C header file (not to be compiled or linked).
|
||
|
||
`FILE.cc'
|
||
`FILE.cxx'
|
||
`FILE.C'
|
||
C++ source code which must be preprocessed.
|
||
|
||
`FILE.s'
|
||
Assembler code.
|
||
|
||
`FILE.S'
|
||
Assembler code which must be preprocessed.
|
||
|
||
`OTHER'
|
||
An object file to be fed straight into linking. Any file name with
|
||
no recognized suffix is treated this way.
|
||
|
||
You can specify the input language explicitly with the `-x' option:
|
||
|
||
`-x LANGUAGE'
|
||
Specify explicitly the LANGUAGE for the following input files
|
||
(rather than choosing a default based on the file name suffix).
|
||
This option applies to all following input files until the next
|
||
`-x' option. Possible values of LANGUAGE are `c', `objective-c',
|
||
`c-header', `c++', `cpp-output', `assembler', and
|
||
`assembler-with-cpp'.
|
||
|
||
`-x none'
|
||
Turn off any specification of a language, so that subsequent files
|
||
are handled according to their file name suffixes (as they are if
|
||
`-x' has not been used at all).
|
||
|
||
If you only want some of the stages of compilation, you can use `-x'
|
||
(or filename suffixes) to tell `gcc' where to start, and one of the
|
||
options `-c', `-S', or `-E' to say where `gcc' is to stop. Note that
|
||
some combinations (for example, `-x cpp-output -E' instruct `gcc' to do
|
||
nothing at all.
|
||
|
||
`-c'
|
||
Compile or assemble the source files, but do not link. The linking
|
||
stage simply is not done. The ultimate output is in the form of an
|
||
object file for each source file.
|
||
|
||
By default, the object file name for a source file is made by
|
||
replacing the suffix `.c', `.i', `.s', etc., with `.o'.
|
||
|
||
Unrecognized input files, not requiring compilation or assembly,
|
||
are ignored.
|
||
|
||
`-S'
|
||
Stop after the stage of compilation proper; do not assemble. The
|
||
output is in the form of an assembler code file for each
|
||
non-assembler input file specified.
|
||
|
||
By default, the assembler file name for a source file is made by
|
||
replacing the suffix `.c', `.i', etc., with `.s'.
|
||
|
||
Input files that don't require compilation are ignored.
|
||
|
||
`-E'
|
||
Stop after the preprocessing stage; do not run the compiler
|
||
proper. The output is in the form of preprocessed source code,
|
||
which is sent to the standard output.
|
||
|
||
Input files which don't require preprocessing are ignored.
|
||
|
||
`-o FILE'
|
||
Place output in file FILE. This applies regardless to whatever
|
||
sort of output is being produced, whether it be an executable file,
|
||
an object file, an assembler file or preprocessed C code.
|
||
|
||
Since only one output file can be specified, it does not make
|
||
sense to use `-o' when compiling more than one input file, unless
|
||
you are producing an executable file as output.
|
||
|
||
If `-o' is not specified, the default is to put an executable file
|
||
in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o', its
|
||
assembler file in `SOURCE.s', and all preprocessed C source on
|
||
standard output.
|
||
|
||
`-v'
|
||
Print (on standard error output) the commands executed to run the
|
||
stages of compilation. Also print the version number of the
|
||
compiler driver program and of the preprocessor and the compiler
|
||
proper.
|
||
|
||
`-pipe'
|
||
Use pipes rather than temporary files for communication between the
|
||
various stages of compilation. This fails to work on some systems
|
||
where the assembler is unable to read from a pipe; but the GNU
|
||
assembler has no trouble.
|
||
|
||
|
||
File: gcc.info, Node: Dialect Options, Next: Warning Options, Prev: Overall Options, Up: Invoking GCC
|
||
|
||
Options Controlling Dialect
|
||
===========================
|
||
|
||
The following options control the dialect of C that the compiler
|
||
accepts:
|
||
|
||
`-ansi'
|
||
Support all ANSI standard C programs.
|
||
|
||
This turns off certain features of GNU C that are incompatible
|
||
with ANSI C, such as the `asm', `inline' and `typeof' keywords, and
|
||
predefined macros such as `unix' and `vax' that identify the type
|
||
of system you are using. It also enables the undesirable and
|
||
rarely used ANSI trigraph feature, and disallows `$' as part of
|
||
identifiers.
|
||
|
||
The alternate keywords `__asm__', `__extension__', `__inline__'
|
||
and `__typeof__' continue to work despite `-ansi'. You would not
|
||
want to use them in an ANSI C program, of course, but it useful to
|
||
put them in header files that might be included in compilations
|
||
done with `-ansi'. Alternate predefined macros such as `__unix__'
|
||
and `__vax__' are also available, with or without `-ansi'.
|
||
|
||
The `-ansi' option does not cause non-ANSI programs to be rejected
|
||
gratuitously. For that, `-pedantic' is required in addition to
|
||
`-ansi'. *Note Warning Options::.
|
||
|
||
The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
|
||
is used. Some header files may notice this macro and refrain from
|
||
declaring certain functions or defining certain macros that the
|
||
ANSI standard doesn't call for; this is to avoid interfering with
|
||
any programs that might use these names for other things.
|
||
|
||
The functions `alloca', `abort', `exit', and `_exit' are not
|
||
builtin functions when `-ansi' is used.
|
||
|
||
`-fno-asm'
|
||
Do not recognize `asm', `inline' or `typeof' as a keyword. These
|
||
words may then be used as identifiers. You can use `__asm__',
|
||
`__inline__' and `__typeof__' instead. `-ansi' implies `-fno-asm'.
|
||
|
||
`-fno-builtin'
|
||
Don't recognize built-in functions that do not begin with two
|
||
leading underscores. Currently, the functions affected include
|
||
`alloca', `abort', `exit', `_exit', `abs', `fabs', `labs',
|
||
`memcpy', `memcmp', `strcmp', `strcpy', `strlen', and `sqrt'.
|
||
|
||
The `-ansi' option prevents `alloca' and `_exit' from being
|
||
builtin functions.
|
||
|
||
`-trigraphs'
|
||
Support ANSI C trigraphs. You don't want to know about this
|
||
brain-damage. The `-ansi' option implies `-trigraphs'.
|
||
|
||
`-traditional'
|
||
Attempt to support some aspects of traditional C compilers.
|
||
Specifically:
|
||
|
||
* All `extern' declarations take effect globally even if they
|
||
are written inside of a function definition. This includes
|
||
implicit declarations of functions.
|
||
|
||
* The keywords `typeof', `inline', `signed', `const' and
|
||
`volatile' are not recognized. (You can still use the
|
||
alternative keywords such as `__typeof__', `__inline__', and
|
||
so on.)
|
||
|
||
* Comparisons between pointers and integers are always allowed.
|
||
|
||
* Integer types `unsigned short' and `unsigned char' promote to
|
||
`unsigned int'.
|
||
|
||
* Out-of-range floating point literals are not an error.
|
||
|
||
* String "constants" are not necessarily constant; they are
|
||
stored in writable space, and identical looking constants are
|
||
allocated separately. (This is the same as the effect of
|
||
`-fwritable-strings'.)
|
||
|
||
* All automatic variables not declared `register' are preserved
|
||
by `longjmp'. Ordinarily, GNU C follows ANSI C: automatic
|
||
variables not declared `volatile' may be clobbered.
|
||
|
||
* In the preprocessor, comments convert to nothing at all,
|
||
rather than to a space. This allows traditional token
|
||
concatenation.
|
||
|
||
* In the preprocessor, macro arguments are recognized within
|
||
string constants in a macro definition (and their values are
|
||
stringified, though without additional quote marks, when they
|
||
appear in such a context). The preprocessor always considers
|
||
a string constant to end at a newline.
|
||
|
||
* The predefined macro `__STDC__' is not defined when you use
|
||
`-traditional', but `__GNUC__' is (since the GNU extensions
|
||
which `__GNUC__' indicates are not affected by
|
||
`-traditional'). If you need to write header files that work
|
||
differently depending on whether `-traditional' is in use, by
|
||
testing both of these predefined macros you can distinguish
|
||
four situations: GNU C, traditional GNU C, other ANSI C
|
||
compilers, and other old C compilers.
|
||
|
||
You may wish to use `-fno-builtin' as well as `-traditional' if
|
||
your program uses names that are normally GNU C builtin functions
|
||
for other purposes of its own.
|
||
|
||
`-traditional-cpp'
|
||
Attempt to support some aspects of traditional C preprocessors.
|
||
This includes the last three items in the table immediately above,
|
||
but none of the other effects of `-traditional'.
|
||
|
||
`-fcond-mismatch'
|
||
Allow conditional expressions with mismatched types in the second
|
||
and third arguments. The value of such an expression is void.
|
||
|
||
`-funsigned-char'
|
||
Let the type `char' be unsigned, like `unsigned char'.
|
||
|
||
Each kind of machine has a default for what `char' should be. It
|
||
is either like `unsigned char' by default or like `signed char' by
|
||
default.
|
||
|
||
Ideally, a portable program should always use `signed char' or
|
||
`unsigned char' when it depends on the signedness of an object.
|
||
But many programs have been written to use plain `char' and expect
|
||
it to be signed, or expect it to be unsigned, depending on the
|
||
machines they were written for. This option, and its inverse, let
|
||
you make such a program work with the opposite default.
|
||
|
||
The type `char' is always a distinct type from each of `signed
|
||
char' or `unsigned char', even though its behavior is always just
|
||
like one of those two.
|
||
|
||
`-fsigned-char'
|
||
Let the type `char' be signed, like `signed char'.
|
||
|
||
Note that this is equivalent to `-fno-unsigned-char', which is the
|
||
negative form of `-funsigned-char'. Likewise, `-fno-signed-char'
|
||
is equivalent to `-funsigned-char'.
|
||
|
||
`-fsigned-bitfields'
|
||
`-funsigned-bitfields'
|
||
`-fno-signed-bitfields'
|
||
`-fno-unsigned-bitfields'
|
||
These options control whether a bitfield is signed or unsigned,
|
||
when the declaration does not use either `signed' or `unsigned'.
|
||
By default, such a bitfield is signed, because this is consistent:
|
||
the basic integer types such as `int' are signed types.
|
||
|
||
However, when `-traditional' is used, bitfields are all unsigned
|
||
no matter what.
|
||
|
||
`-fwritable-strings'
|
||
Store string constants in the writable data segment and don't
|
||
uniquize them. This is for compatibility with old programs which
|
||
assume they can write into string constants. `-traditional' also
|
||
has this effect.
|
||
|
||
Writing into string constants is a very bad idea; "constants"
|
||
should be constant.
|
||
|
||
|