home *** CD-ROM | disk | FTP | other *** search
GNU Info File | 1995-11-26 | 41.8 KB | 896 lines |
- This is Info file gcc.info, produced by Makeinfo-1.55 from the input
- file gcc.texi.
-
- This file documents the use and the internals of the GNU compiler.
-
- Published by the Free Software Foundation 59 Temple Place - Suite 330
- Boston, MA 02111-1307 USA
-
- Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 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," "Funding for
- Free Software," and "Protect Your Freedom--Fight `Look And Feel'" 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," "Funding for Free Software," and "Protect Your Freedom--Fight
- `Look And Feel'", 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 compiler,
- as well as its new features and incompatibilities, and how to report
- bugs. It corresponds to GNU CC version 2.7.2.
-
- * Menu:
-
- * Copying:: GNU General Public License says
- how you can copy and share GNU CC.
- * Contributors:: People who have contributed to GNU CC.
- * Funding:: How to help assure funding for free software.
- * Look and Feel:: Protect your freedom--fight "look and feel".
-
- * G++ and GCC:: You can compile C or C++ programs.
- * Invoking GCC:: Command options supported by `gcc'.
- * Installation:: How to configure, compile and install GNU CC.
- * C Extensions:: GNU extensions to the C language family.
- * C++ 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.
- * Fragments:: Writing the `t-TARGET' and `x-HOST' files.
-
- * 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.
- 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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
-
- 0. 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.
-
- 1. 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.
-
- 2. 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.
-
- 3. 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.
-
- 4. 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.
-
- 5. 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.
-
- 6. 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.
-
- 7. 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.
-
- 8. 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.
-
- 9. 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.
-
- 10. 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
-
- 11. 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.
-
- 12. 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
-
- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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: Funding, 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.
-
- * Gerald Baumgartner added the signature extension to the C++
- front-end.
-
- * 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 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.
-
- * Dario Dariol contributed the four varieties of sample programs
- that print a copy of their source.
-
- * 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 the New York University Ultracomputer Research
- Laboratory wrote the machine descriptions for the AMD 29000, the
- DEC Alpha, 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, and worked on
- the Intel port for the Intel 80386 cpu.
-
- * 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 implemented multiply- and divide-by-constant
- optimization, improved long long support, and improved leaf
- function register allocation.
-
- * Mike Stump implemented the support for Elxsi 64 bit CPU.
-
- * John Wehle added the machine description for the Western Electric
- 32000 processor used in several 3b series machines (no relation to
- the National Semiconductor 32000 processor).
-
- * Holger Teutsch provided the support for the Clipper cpu.
-
- * Kresten Krab Thorup wrote the run time support for the Objective C
- language.
-
- * Stephen Moshier contributed the floating point emulator that
- assists in cross-compilation and permits support for floating
- point numbers wider than 64 bits.
-
- * David Edelsohn contributed the changes to RS/6000 port to make it
- support the PowerPC and POWER2 architectures.
-
- * Steve Chamberlain wrote the support for the Hitachi SH processor.
-
- * Peter Schauer wrote the code to allow debugging to work on the
- Alpha.
-
- * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
- MIL-STD-1750A.
-
- * Michael K. Gschwind contributed the port to the PDP-11.
-
- File: gcc.info, Node: Funding, Next: Look and Feel, Prev: Contributors, Up: Top
-
- Funding Free Software
- *********************
-
- If you want to have more free software a few years from now, it makes
- sense for you to help encourage people to contribute funds for its
- development. The most effective approach known is to encourage
- commercial redistributors to donate.
-
- Users of free software systems can boost the pace of development by
- encouraging for-a-fee distributors to donate part of their selling price
- to free software developers--the Free Software Foundation, and others.
-
- The way to convince distributors to do this is to demand it and
- expect it from them. So when you compare distributors, judge them
- partly by how much they give to free software development. Show
- distributors they must compete to be the one who gives the most.
-
- To make this approach work, you must insist on numbers that you can
- compare, such as, "We will donate ten dollars to the Frobnitz project
- for each disk sold." Don't be satisfied with a vague promise, such as
- "A portion of the profits are donated," since it doesn't give a basis
- for comparison.
-
- Even a precise fraction "of the profits from this disk" is not very
- meaningful, since creative accounting and unrelated business decisions
- can greatly alter what fraction of the sales price counts as profit.
- If the price you pay is $50, ten percent of the profit is probably less
- than a dollar; it might be a few cents, or nothing at all.
-
- Some redistributors do development work themselves. This is useful
- too; but to keep everyone honest, you need to inquire how much they do,
- and what kind. Some kinds of development make much more long-term
- difference than others. For example, maintaining a separate version of
- a program contributes very little; maintaining the standard version of a
- program for the whole community contributes much. Easy new ports
- contribute little, since someone else would surely do them; difficult
- ports such as adding a new CPU to the GNU C compiler contribute more;
- major new features or packages contribute the most.
-
- By establishing the idea that supporting further development is "the
- proper thing to do" when distributing free software for a fee, we can
- assure a steady flow of resources into making more free software.
-
- Copyright (C) 1994 Free Software Foundation, Inc.
- Verbatim copying and redistribution of this section is permitted
- without royalty; alteration is not permitted.
-
- File: gcc.info, Node: Look and Feel, Next: G++ and GCC, Prev: Funding, 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. We have included it here because
- the issue of interface copyright is important to the GNU project.
-
- Apple, Lotus, and now CDC have tried to create a new form of legal
- monopoly: a copyright on a user interface.
-
- An interface is a kind of language--a set of conventions for
- communication between two entities, human or machine. Until a few years
- ago, the law seemed clear: interfaces were outside the domain of
- copyright, so programmers could program freely and implement whatever
- interface the users demanded. Imitating de-facto standard interfaces,
- sometimes with improvements, was standard practice in the computer
- field. These improvements, if accepted by the users, caught on and
- became the norm; in this way, much progress took place.
-
- Computer users, and most software developers, were happy with this
- state of affairs. However, large companies such as Apple and Lotus
- would prefer a different system--one in which they can own interfaces
- and thereby rid themselves of all serious competitors. They hope that
- interface copyright will give them, in effect, monopolies on major
- classes of software.
-
- Other large companies such as IBM and Digital also favor interface
- monopolies, for the same reason: if languages become property, they
- expect to own many de-facto standard languages. But Apple and Lotus are
- the ones who have actually sued. Apple's lawsuit was defeated, for
- reasons only partly related to the general issue of interface copyright.
-
- Lotus won lawsuits against two small companies, which were thus put
- out of business. Then they sued Borland; they won in the trial court
- (no surprise, since it was the same court that had ruled for Lotus twice
- before), but the decision was reversed by the court of appeals, with
- help from the League for Programming Freedom in the form of a
- friend-of-the-court brief. We are now waiting to see if the Supreme
- Court will hear the case. If it does, the League for Programming
- Freedom will again submit a brief.
-
- The battle is not over. Just this summer a company that produced a
- simulator for a CDC computer was shut down by a copyright lawsuit by
- CDC, which charged that the simulator infringed the copyright on the
- manuals for the computer.
-
- If the monopolists get their way, they will hobble the software
- field:
-
- * Gratuitous incompatibilities will burden users. Imagine if each
- car manufacturer had to design a different way to start, stop, and
- steer a car.
-
- * Users will be "locked in" to whichever interface they learn; then
- they will be prisoners of one supplier, who will charge a
- monopolistic price.
-
- * Large companies have an unfair advantage wherever lawsuits become
- commonplace. Since they can afford to sue, they can intimidate
- smaller developers with threats even when they don't really have a
- case.
-
- * Interface improvements will come slower, since incremental
- evolution through creative partial imitation will no longer occur.
-
- If interface monopolies are accepted, other large companies are
- waiting to grab theirs:
-
- * Adobe is expected to claim a monopoly on the interfaces of various
- popular application programs, if Lotus ultimately wins the case
- against Borland.
-
- * Open Computing magazine reported a Microsoft vice president as
- threatening to sue people who imitate the interface of Windows.
-
- Users invest a great deal of time and money in learning to use
- computer interfaces. Far more, in fact, than software developers
- invest in developing *and even implementing* the interfaces. Whoever
- can own an interface, has made its users into captives, and
- misappropriated their investment.
-
- To protect our freedom from monopolies like these, a group of
- programmers and users have formed a grass-roots political organization,
- the League for Programming Freedom.
-
- The purpose of the League is to oppose monopolistic practices such as
- interface copyright and software patents. The League calls for a return
- to the legal policies of the recent past, in which programmers could
- program freely. The League is not concerned with free software as an
- issue, and is not affiliated with the Free Software Foundation.
-
- The League's activities include publicizing the issues, as is being
- done here, and filing friend-of-the-court briefs on behalf of
- defendants sued by monopolists.
-
- The League's membership rolls include Donald Knuth, the foremost
- authority on algorithms, John McCarthy, inventor of Lisp, Marvin Minsky,
- founder of the MIT 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.
-
- Activist members are especially important, but members who have no
- time to give are also important. Surveys at major ACM conferences have
- indicated a vast majority of attendees agree with the League on both
- issues (interface copyrights and software patents). If just ten percent
- of the programmers who agree with the League join the League, we will
- probably triumph.
-
- To join, or for more information, phone (617) 243-4091 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 `lpf@uunet.uu.net'.
-
- In addition to joining the League, here are some suggestions from the
- League for other things you can do to protect your freedom to write
- programs:
-
- * Tell your friends and colleagues about this issue and how it
- threatens to ruin the computer industry.
-
- * Mention that you are a League member in your `.signature', and
- mention the League's email address for inquiries.
-
- * Ask the companies you consider working for or working with to make
- statements against software monopolies, and give preference to
- those that do.
-
- * When employers ask you to sign contracts giving them copyright on
- your work, insist on a clause saying they will not claim the
- copyright covers imitating the interface.
-
- * When employers ask you to sign contracts giving them patent rights,
- insist on clauses saying they can use these rights only
- defensively. Don't rely on "company policy," since that can
- change at any time; don't rely on an individual executive's
- private word, since that person may be replaced. Get a commitment
- just as binding as the commitment they get from you.
-
- * Write to Congress to explain the importance of these issues.
-
- 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.)
-
- Democracy means nothing if you don't use it. Stand up and be
- counted!
-
- File: gcc.info, Node: G++ and GCC, Next: Invoking GCC, Prev: Look and Feel, Up: Top
-
- Compile C, C++, or Objective C
- ******************************
-
- The C, C++, and Objective C versions of the compiler are integrated;
- the GNU C compiler can compile programs written in C, C++, or Objective
- C.
-
- "GCC" is a common shorthand term for the GNU C compiler. This is
- both the most general name for the compiler, and the name used when the
- emphasis is on compiling C programs.
-
- When referring to C++ compilation, it is usual to call the compiler
- "G++". Since there is only one compiler, it is also accurate to call
- it "GCC" no matter what the language context; however, the term "G++"
- is more useful when the emphasis is on compiling C++ programs.
-
- We use the name "GNU CC" to refer to the compilation system as a
- whole, and more specifically to the language-independent part of the
- compiler. For example, we refer to the optimization options as
- affecting the behavior of "GNU CC" or sometimes just "the compiler".
-
- Front ends for other languages, such as Ada 9X, Fortran, Modula-3,
- and Pascal, are under development. These front-ends, like that for
- C++, are built in subdirectories of GNU CC and link to it. The result
- is an integrated compiler that can compile programs written in C, C++,
- Objective C, or any of the languages for which you have installed front
- ends.
-
- In this manual, we only discuss the options for the C, Objective-C,
- and C++ compilers and those of the GNU CC core. Consult the
- documentation of the other front ends for the options to use when
- compiling programs written in other languages.
-
- G++ is a *compiler*, not merely a preprocessor. G++ builds object
- code directly from your C++ program source. There is no intermediate C
- version of the program. (By contrast, for example, some other
- implementations use a program that generates a C program from your C++
- source.) Avoiding an intermediate C representation of the program means
- that you get better object code, and better debugging information. The
- GNU debugger, GDB, works with this information in the object code to
- give you comprehensive C++ source-level editing capabilities (*note C
- and C++: (gdb.info)C.).
-
- File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: G++ and GCC, 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.
-
- Most of the command line options that you can use with GNU CC are
- useful for C programs; when an option is only useful with another
- language (usually C++), the explanation says so explicitly. If the
- description for a particular option does not mention a source language,
- you can use that option with all supported languages.
-
- *Note Compiling C++ Programs: Invoking G++, for a summary of special
- options for compiling C++ programs.
-
- The `gcc' program accepts options and file names as operands. Many
- options have multiletter names; therefore 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. 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.
-
- * Menu:
-
- * Option Summary:: Brief list of all options, without explanations.
- * Overall Options:: Controlling the kind of output:
- an executable, object files, assembler files,
- or preprocessed source.
- * Invoking G++:: Compiling C++ programs.
- * C Dialect Options:: Controlling the variant of C language compiled.
- * C++ Dialect Options:: Variations on C++.
- * 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.
- * Assembler Options:: Passing options to the assembler.
- * 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.
- * Running Protoize:: Automatically adding or removing function prototypes.
-
-