|
|
1.1.1.7 root 1: This is Info file gcc.info, produced by Makeinfo-1.55 from the input
1.1 root 2: file gcc.texi.
3:
4: This file documents the use and the internals of the GNU compiler.
5:
1.1.1.8 ! root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330
! 7: Boston, MA 02111-1307 USA
1.1.1.5 root 8:
1.1.1.8 ! root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software
! 10: Foundation, Inc.
1.1 root 11:
1.1.1.3 root 12: Permission is granted to make and distribute verbatim copies of this
13: manual provided the copyright notice and this permission notice are
14: preserved on all copies.
1.1 root 15:
16: Permission is granted to copy and distribute modified versions of
17: this manual under the conditions for verbatim copying, provided also
1.1.1.7 root 18: that the sections entitled "GNU General Public License," "Funding for
19: Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are
20: included exactly as in the original, and provided that the entire
21: resulting derived work is distributed under the terms of a permission
22: notice identical to this one.
1.1 root 23:
24: Permission is granted to copy and distribute translations of this
25: manual into another language, under the above conditions for modified
1.1.1.3 root 26: versions, except that the sections entitled "GNU General Public
1.1.1.7 root 27: License," "Funding for Free Software," and "Protect Your Freedom--Fight
28: `Look And Feel'", and this permission notice, may be included in
29: translations approved by the Free Software Foundation instead of in the
30: original English.
1.1 root 31:
32:
33: File: gcc.info, Node: Top, Next: Copying, Up: (DIR)
34:
35: Introduction
36: ************
37:
1.1.1.5 root 38: This manual documents how to run, install and port the GNU compiler,
39: as well as its new features and incompatibilities, and how to report
1.1.1.8 ! root 40: bugs. It corresponds to GNU CC version 2.7.2.
1.1 root 41:
42: * Menu:
43:
44: * Copying:: GNU General Public License says
45: how you can copy and share GNU CC.
46: * Contributors:: People who have contributed to GNU CC.
1.1.1.7 root 47: * Funding:: How to help assure funding for free software.
48: * Look and Feel:: Protect your freedom--fight "look and feel".
1.1.1.5 root 49:
50: * G++ and GCC:: You can compile C or C++ programs.
1.1.1.3 root 51: * Invoking GCC:: Command options supported by `gcc'.
1.1 root 52: * Installation:: How to configure, compile and install GNU CC.
1.1.1.5 root 53: * C Extensions:: GNU extensions to the C language family.
54: * C++ Extensions:: GNU extensions to the C++ language.
1.1 root 55: * Trouble:: If you have trouble installing GNU CC.
1.1.1.3 root 56: * Bugs:: How, why and where to report bugs.
1.1 root 57: * Service:: How to find suppliers of support for GNU CC.
58: * VMS:: Using GNU CC on VMS.
1.1.1.5 root 59:
1.1 root 60: * Portability:: Goals of GNU CC's portability features.
61: * Interface:: Function-call interface of GNU CC output.
62: * Passes:: Order of passes, what they do, and what each file is for.
63: * RTL:: The intermediate representation that most passes work on.
64: * Machine Desc:: How to write machine description instruction patterns.
1.1.1.2 root 65: * Target Macros:: How to write the machine description C macros.
1.1 root 66: * Config:: Writing the `xm-MACHINE.h' file.
1.1.1.8 ! root 67: * Fragments:: Writing the `t-TARGET' and `x-HOST' files.
1.1.1.5 root 68:
1.1 root 69: * Index:: Index of concepts and symbol names.
70:
71:
72: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top
73:
74: GNU GENERAL PUBLIC LICENSE
75: **************************
76:
1.1.1.3 root 77: Version 2, June 1991
1.1 root 78:
79: Copyright (C) 1989, 1991 Free Software Foundation, Inc.
1.1.1.8 ! root 80: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
1.1 root 81:
82: Everyone is permitted to copy and distribute verbatim copies
83: of this license document, but changing it is not allowed.
84:
85: Preamble
86: ========
87:
88: The licenses for most software are designed to take away your
89: freedom to share and change it. By contrast, the GNU General Public
90: License is intended to guarantee your freedom to share and change free
91: software--to make sure the software is free for all its users. This
92: General Public License applies to most of the Free Software
93: Foundation's software and to any other program whose authors commit to
94: using it. (Some other Free Software Foundation software is covered by
95: the GNU Library General Public License instead.) You can apply it to
96: your programs, too.
97:
98: When we speak of free software, we are referring to freedom, not
99: price. Our General Public Licenses are designed to make sure that you
100: have the freedom to distribute copies of free software (and charge for
101: this service if you wish), that you receive source code or can get it
1.1.1.3 root 102: if you want it, that you can change the software or use pieces of it in
103: new free programs; and that you know you can do these things.
1.1 root 104:
105: To protect your rights, we need to make restrictions that forbid
1.1.1.3 root 106: anyone to deny you these rights or to ask you to surrender the rights.
1.1 root 107: These restrictions translate to certain responsibilities for you if you
108: distribute copies of the software, or if you modify it.
109:
110: For example, if you distribute copies of such a program, whether
111: gratis or for a fee, you must give the recipients all the rights that
112: you have. You must make sure that they, too, receive or can get the
113: source code. And you must show them these terms so they know their
114: rights.
115:
116: We protect your rights with two steps: (1) copyright the software,
1.1.1.3 root 117: and (2) offer you this license which gives you legal permission to copy,
118: distribute and/or modify the software.
1.1 root 119:
120: Also, for each author's protection and ours, we want to make certain
121: that everyone understands that there is no warranty for this free
1.1.1.3 root 122: software. If the software is modified by someone else and passed on, we
123: want its recipients to know that what they have is not the original, so
124: that any problems introduced by others will not reflect on the original
125: authors' reputations.
1.1 root 126:
127: Finally, any free program is threatened constantly by software
128: patents. We wish to avoid the danger that redistributors of a free
129: program will individually obtain patent licenses, in effect making the
130: program proprietary. To prevent this, we have made it clear that any
131: patent must be licensed for everyone's free use or not licensed at all.
132:
133: The precise terms and conditions for copying, distribution and
134: modification follow.
135:
1.1.1.3 root 136: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1.1 root 137:
1.1.1.5 root 138: 0. This License applies to any program or other work which contains a
1.1.1.3 root 139: notice placed by the copyright holder saying it may be distributed
140: under the terms of this General Public License. The "Program",
141: below, refers to any such program or work, and a "work based on
142: the Program" means either the Program or any derivative work under
143: copyright law: that is to say, a work containing the Program or a
144: portion of it, either verbatim or with modifications and/or
145: translated into another language. (Hereinafter, translation is
146: included without limitation in the term "modification".) Each
147: licensee is addressed as "you".
148:
149: Activities other than copying, distribution and modification are
150: not covered by this License; they are outside its scope. The act
151: of running the Program is not restricted, and the output from the
152: Program is covered only if its contents constitute a work based on
153: the Program (independent of having been made by running the
1.1.1.5 root 154: Program). Whether that is true depends on what the Program does.
1.1 root 155:
1.1.1.5 root 156: 1. You may copy and distribute verbatim copies of the Program's
1.1 root 157: source code as you receive it, in any medium, provided that you
1.1.1.3 root 158: conspicuously and appropriately publish on each copy an appropriate
159: copyright notice and disclaimer of warranty; keep intact all the
160: notices that refer to this License and to the absence of any
161: warranty; and give any other recipients of the Program a copy of
162: this License along with the Program.
163:
164: You may charge a fee for the physical act of transferring a copy,
165: and you may at your option offer warranty protection in exchange
166: for a fee.
1.1 root 167:
1.1.1.5 root 168: 2. You may modify your copy or copies of the Program or any portion
1.1 root 169: of it, thus forming a work based on the Program, and copy and
170: distribute such modifications or work under the terms of Section 1
171: above, provided that you also meet all of these conditions:
172:
173: a. You must cause the modified files to carry prominent notices
1.1.1.3 root 174: stating that you changed the files and the date of any change.
1.1 root 175:
176: b. You must cause any work that you distribute or publish, that
177: in whole or in part contains or is derived from the Program
178: or any part thereof, to be licensed as a whole at no charge
179: to all third parties under the terms of this License.
180:
181: c. If the modified program normally reads commands interactively
182: when run, you must cause it, when started running for such
1.1.1.3 root 183: interactive use in the most ordinary way, to print or display
184: an announcement including an appropriate copyright notice and
185: a notice that there is no warranty (or else, saying that you
186: provide a warranty) and that users may redistribute the
187: program under these conditions, and telling the user how to
188: view a copy of this License. (Exception: if the Program
189: itself is interactive but does not normally print such an
190: announcement, your work based on the Program is not required
191: to print an announcement.)
1.1 root 192:
1.1.1.3 root 193: These requirements apply to the modified work as a whole. If
1.1 root 194: identifiable sections of that work are not derived from the
1.1.1.3 root 195: Program, and can be reasonably considered independent and separate
196: works in themselves, then this License, and its terms, do not
197: apply to those sections when you distribute them as separate
198: works. But when you distribute the same sections as part of a
199: whole which is a work based on the Program, the distribution of
200: the whole must be on the terms of this License, whose permissions
201: for other licensees extend to the entire whole, and thus to each
202: and every part regardless of who wrote it.
1.1 root 203:
1.1.1.3 root 204: Thus, it is not the intent of this section to claim rights or
1.1 root 205: contest your rights to work written entirely by you; rather, the
206: intent is to exercise the right to control the distribution of
207: derivative or collective works based on the Program.
208:
1.1.1.3 root 209: In addition, mere aggregation of another work not based on the
1.1 root 210: Program with the Program (or with a work based on the Program) on
211: a volume of a storage or distribution medium does not bring the
212: other work under the scope of this License.
213:
1.1.1.5 root 214: 3. You may copy and distribute the Program (or a work based on it,
1.1.1.3 root 215: under Section 2) in object code or executable form under the terms
216: of Sections 1 and 2 above provided that you also do one of the
217: following:
1.1 root 218:
219: a. Accompany it with the complete corresponding machine-readable
220: source code, which must be distributed under the terms of
221: Sections 1 and 2 above on a medium customarily used for
222: software interchange; or,
223:
224: b. Accompany it with a written offer, valid for at least three
1.1.1.3 root 225: years, to give any third party, for a charge no more than your
226: cost of physically performing source distribution, a complete
227: machine-readable copy of the corresponding source code, to be
228: distributed under the terms of Sections 1 and 2 above on a
229: medium customarily used for software interchange; or,
230:
231: c. Accompany it with the information you received as to the offer
232: to distribute corresponding source code. (This alternative is
233: allowed only for noncommercial distribution and only if you
234: received the program in object code or executable form with
235: such an offer, in accord with Subsection b above.)
236:
237: The source code for a work means the preferred form of the work for
238: making modifications to it. For an executable work, complete
239: source code means all the source code for all modules it contains,
240: plus any associated interface definition files, plus the scripts
1.1.1.5 root 241: used to control compilation and installation of the executable.
1.1.1.3 root 242: However, as a special exception, the source code distributed need
243: not include anything that is normally distributed (in either
244: source or binary form) with the major components (compiler,
245: kernel, and so on) of the operating system on which the executable
246: runs, unless that component itself accompanies the executable.
247:
248: If distribution of executable or object code is made by offering
249: access to copy from a designated place, then offering equivalent
250: access to copy the source code from the same place counts as
251: distribution of the source code, even though third parties are not
252: compelled to copy the source along with the object code.
1.1 root 253:
1.1.1.5 root 254: 4. You may not copy, modify, sublicense, or distribute the Program
1.1 root 255: except as expressly provided under this License. Any attempt
256: otherwise to copy, modify, sublicense or distribute the Program is
257: void, and will automatically terminate your rights under this
1.1.1.5 root 258: License. However, parties who have received copies, or rights,
1.1 root 259: from you under this License will not have their licenses
260: terminated so long as such parties remain in full compliance.
261:
1.1.1.5 root 262: 5. You are not required to accept this License, since you have not
1.1 root 263: signed it. However, nothing else grants you permission to modify
264: or distribute the Program or its derivative works. These actions
1.1.1.5 root 265: are prohibited by law if you do not accept this License.
1.1 root 266: Therefore, by modifying or distributing the Program (or any work
267: based on the Program), you indicate your acceptance of this
268: License to do so, and all its terms and conditions for copying,
269: distributing or modifying the Program or works based on it.
270:
1.1.1.5 root 271: 6. Each time you redistribute the Program (or any work based on the
1.1 root 272: Program), the recipient automatically receives a license from the
273: original licensor to copy, distribute or modify the Program
274: subject to these terms and conditions. You may not impose any
275: further restrictions on the recipients' exercise of the rights
1.1.1.5 root 276: granted herein. You are not responsible for enforcing compliance
1.1 root 277: by third parties to this License.
278:
1.1.1.5 root 279: 7. If, as a consequence of a court judgment or allegation of patent
1.1 root 280: infringement or for any other reason (not limited to patent
281: issues), conditions are imposed on you (whether by court order,
282: agreement or otherwise) that contradict the conditions of this
283: License, they do not excuse you from the conditions of this
1.1.1.3 root 284: License. If you cannot distribute so as to satisfy simultaneously
285: your obligations under this License and any other pertinent
286: obligations, then as a consequence you may not distribute the
287: Program at all. For example, if a patent license would not permit
288: royalty-free redistribution of the Program by all those who
289: receive copies directly or indirectly through you, then the only
290: way you could satisfy both it and this License would be to refrain
291: entirely from distribution of the Program.
292:
293: If any portion of this section is held invalid or unenforceable
294: under any particular circumstance, the balance of the section is
295: intended to apply and the section as a whole is intended to apply
296: in other circumstances.
297:
298: It is not the purpose of this section to induce you to infringe any
299: patents or other property right claims or to contest validity of
300: any such claims; this section has the sole purpose of protecting
301: the integrity of the free software distribution system, which is
302: implemented by public license practices. Many people have made
303: generous contributions to the wide range of software distributed
304: through that system in reliance on consistent application of that
305: system; it is up to the author/donor to decide if he or she is
306: willing to distribute software through any other system and a
307: licensee cannot impose that choice.
1.1 root 308:
1.1.1.3 root 309: This section is intended to make thoroughly clear what is believed
310: to be a consequence of the rest of this License.
1.1 root 311:
1.1.1.5 root 312: 8. If the distribution and/or use of the Program is restricted in
1.1 root 313: certain countries either by patents or by copyrighted interfaces,
314: the original copyright holder who places the Program under this
315: License may add an explicit geographical distribution limitation
316: excluding those countries, so that distribution is permitted only
317: in or among countries not thus excluded. In such case, this
318: License incorporates the limitation as if written in the body of
319: this License.
320:
1.1.1.5 root 321: 9. The Free Software Foundation may publish revised and/or new
1.1 root 322: versions of the General Public License from time to time. Such
1.1.1.3 root 323: new versions will be similar in spirit to the present version, but
324: may differ in detail to address new problems or concerns.
1.1 root 325:
1.1.1.3 root 326: Each version is given a distinguishing version number. If the
1.1 root 327: Program specifies a version number of this License which applies
328: to it and "any later version", you have the option of following
329: the terms and conditions either of that version or of any later
1.1.1.3 root 330: version published by the Free Software Foundation. If the Program
331: does not specify a version number of this License, you may choose
332: any version ever published by the Free Software Foundation.
1.1 root 333:
1.1.1.5 root 334: 10. If you wish to incorporate parts of the Program into other free
1.1.1.3 root 335: programs whose distribution conditions are different, write to the
336: author to ask for permission. For software which is copyrighted
337: by the Free Software Foundation, write to the Free Software
338: Foundation; we sometimes make exceptions for this. Our decision
339: will be guided by the two goals of preserving the free status of
340: all derivatives of our free software and of promoting the sharing
341: and reuse of software generally.
1.1 root 342:
1.1.1.3 root 343: NO WARRANTY
1.1 root 344:
1.1.1.5 root 345: 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
1.1 root 346: WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
347: LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
348: HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
349: WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
350: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
351: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
352: QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
353: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
354: SERVICING, REPAIR OR CORRECTION.
355:
1.1.1.5 root 356: 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
1.1 root 357: WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
358: MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
359: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
360: INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
1.1.1.3 root 361: INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
362: DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
363: OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
364: OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
1.1 root 365: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
366:
1.1.1.3 root 367: END OF TERMS AND CONDITIONS
1.1 root 368:
1.1.1.4 root 369: How to Apply These Terms to Your New Programs
370: =============================================
1.1 root 371:
372: If you develop a new program, and you want it to be of the greatest
373: possible use to the public, the best way to achieve this is to make it
374: free software which everyone can redistribute and change under these
375: terms.
376:
377: To do so, attach the following notices to the program. It is safest
378: to attach them to the start of each source file to most effectively
379: convey the exclusion of warranty; and each file should have at least
380: the "copyright" line and a pointer to where the full notice is found.
381:
1.1.1.5 root 382: ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
1.1 root 383: Copyright (C) 19YY NAME OF AUTHOR
384:
1.1.1.5 root 385: This program is free software; you can redistribute it and/or modify
386: it under the terms of the GNU General Public License as published by
387: the Free Software Foundation; either version 2 of the License, or
388: (at your option) any later version.
1.1 root 389:
390: This program is distributed in the hope that it will be useful,
391: but WITHOUT ANY WARRANTY; without even the implied warranty of
392: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
393: GNU General Public License for more details.
394:
395: You should have received a copy of the GNU General Public License
396: along with this program; if not, write to the Free Software
1.1.1.8 ! root 397: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1.1 root 398:
399: Also add information on how to contact you by electronic and paper
400: mail.
401:
402: If the program is interactive, make it output a short notice like
403: this when it starts in an interactive mode:
404:
405: Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
1.1.1.4 root 406: Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
1.1.1.5 root 407: type `show w'.
408: This is free software, and you are welcome to redistribute it
409: under certain conditions; type `show c' for details.
1.1 root 410:
411: The hypothetical commands `show w' and `show c' should show the
412: appropriate parts of the General Public License. Of course, the
413: commands you use may be called something other than `show w' and `show
414: c'; they could even be mouse-clicks or menu items--whatever suits your
415: program.
416:
417: You should also get your employer (if you work as a programmer) or
418: your school, if any, to sign a "copyright disclaimer" for the program,
419: if necessary. Here is a sample; alter the names:
420:
1.1.1.5 root 421: Yoyodyne, Inc., hereby disclaims all copyright interest in the program
422: `Gnomovision' (which makes passes at compilers) written by James Hacker.
1.1 root 423:
424: SIGNATURE OF TY COON, 1 April 1989
425: Ty Coon, President of Vice
426:
427: This General Public License does not permit incorporating your
428: program into proprietary programs. If your program is a subroutine
429: library, you may consider it more useful to permit linking proprietary
1.1.1.3 root 430: applications with the library. If this is what you want to do, use the
431: GNU Library General Public License instead of this License.
1.1 root 432:
433:
1.1.1.7 root 434: File: gcc.info, Node: Contributors, Next: Funding, Prev: Copying, Up: Top
1.1 root 435:
436: Contributors to GNU CC
437: **********************
438:
439: In addition to Richard Stallman, several people have written parts
440: of GNU CC.
441:
1.1.1.3 root 442: * The idea of using RTL and some of the optimization ideas came from
443: the program PO written at the University of Arizona by Jack
1.1 root 444: Davidson and Christopher Fraser. See "Register Allocation and
445: Exhaustive Peephole Optimization", Software Practice and
446: Experience 14 (9), Sept. 1984, 857-866.
447:
448: * Paul Rubin wrote most of the preprocessor.
449:
450: * Leonard Tower wrote parts of the parser, RTL generator, and RTL
451: definitions, and of the Vax machine description.
452:
453: * Ted Lemon wrote parts of the RTL reader and printer.
454:
1.1.1.3 root 455: * Jim Wilson implemented loop strength reduction and some other loop
456: optimizations.
1.1 root 457:
458: * Nobuyuki Hikichi of Software Research Associates, Tokyo,
459: contributed the support for the Sony NEWS machine.
460:
1.1.1.3 root 461: * Charles LaBrec contributed the support for the Integrated Solutions
462: 68020 system.
1.1 root 463:
464: * Michael Tiemann of Cygnus Support wrote the front end for C++, as
465: well as the support for inline functions and instruction
466: scheduling. Also the descriptions of the National Semiconductor
1.1.1.3 root 467: 32000 series cpu, the SPARC cpu and part of the Motorola 88000 cpu.
1.1 root 468:
1.1.1.7 root 469: * Gerald Baumgartner added the signature extension to the C++
470: front-end.
471:
1.1 root 472: * Jan Stein of the Chalmers Computer Society provided support for
473: Genix, as well as part of the 32000 machine description.
474:
475: * Randy Smith finished the Sun FPA support.
476:
477: * Robert Brown implemented the support for Encore 32000 systems.
478:
1.1.1.8 ! root 479: * David Kashtan of SRI adapted GNU CC to VMS.
1.1 root 480:
481: * Alex Crain provided changes for the 3b1.
482:
1.1.1.3 root 483: * Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX
484: for the 9000 series 300.
1.1 root 485:
486: * William Schelter did most of the work on the Intel 80386 support.
487:
488: * Christopher Smith did the port for Convex machines.
489:
490: * Paul Petersen wrote the machine description for the Alliant FX/8.
491:
1.1.1.7 root 492: * Dario Dariol contributed the four varieties of sample programs
493: that print a copy of their source.
494:
1.1 root 495: * Alain Lichnewsky ported GNU CC to the Mips cpu.
496:
497: * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the
498: Tahoe.
499:
500: * Jonathan Stone wrote the machine description for the Pyramid
501: computer.
502:
1.1.1.3 root 503: * Gary Miller ported GNU CC to Charles River Data Systems machines.
504:
1.1.1.4 root 505: * Richard Kenner of the New York University Ultracomputer Research
506: Laboratory wrote the machine descriptions for the AMD 29000, the
507: DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
508: support for instruction attributes. He also made changes to
509: better support RISC processors including changes to common
510: subexpression elimination, strength reduction, function calling
511: sequence handling, and condition code support, in addition to
512: generalizing the code for frame pointer elimination.
1.1 root 513:
514: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the
515: delay slot scheduler.
516:
1.1.1.3 root 517: * Mike Meissner and Tom Wood of Data General finished the port to the
518: Motorola 88000.
1.1 root 519:
520: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
521: description for the Tron architecture (specifically, the Gmicro).
522:
523: * NeXT, Inc. donated the front end that supports the Objective C
524: language.
525:
1.1.1.3 root 526: * James van Artsdalen wrote the code that makes efficient use of the
527: Intel 80387 register stack.
1.1 root 528:
1.1.1.3 root 529: * Mike Meissner at the Open Software Foundation finished the port to
1.1.1.7 root 530: the MIPS cpu, including adding ECOFF debug support, and worked on
531: the Intel port for the Intel 80386 cpu.
1.1 root 532:
1.1.1.4 root 533: * Ron Guilmette implemented the `protoize' and `unprotoize' tools,
534: the support for Dwarf symbolic debugging information, and much of
535: the support for System V Release 4. He has also worked heavily on
536: the Intel 386 and 860 support.
1.1 root 537:
1.1.1.8 ! root 538: * Torbjorn Granlund implemented multiply- and divide-by-constant
! 539: optimization, improved long long support, and improved leaf
! 540: function register allocation.
1.1.1.2 root 541:
1.1.1.4 root 542: * Mike Stump implemented the support for Elxsi 64 bit CPU.
543:
1.1.1.5 root 544: * John Wehle added the machine description for the Western Electric
545: 32000 processor used in several 3b series machines (no relation to
546: the National Semiconductor 32000 processor).
547:
548: * Holger Teutsch provided the support for the Clipper cpu.
549:
550: * Kresten Krab Thorup wrote the run time support for the Objective C
551: language.
552:
553: * Stephen Moshier contributed the floating point emulator that
554: assists in cross-compilation and permits support for floating
555: point numbers wider than 64 bits.
556:
1.1.1.6 root 557: * David Edelsohn contributed the changes to RS/6000 port to make it
558: support the PowerPC and POWER2 architectures.
559:
1.1.1.5 root 560: * Steve Chamberlain wrote the support for the Hitachi SH processor.
561:
1.1.1.6 root 562: * Peter Schauer wrote the code to allow debugging to work on the
563: Alpha.
564:
1.1.1.7 root 565: * Oliver M. Kellogg of Deutsche Aerospace contributed the port to the
566: MIL-STD-1750A.
567:
1.1.1.8 ! root 568: * Michael K. Gschwind contributed the port to the PDP-11.
! 569:
1.1.1.7 root 570:
571: File: gcc.info, Node: Funding, Next: Look and Feel, Prev: Contributors, Up: Top
572:
573: Funding Free Software
574: *********************
575:
576: If you want to have more free software a few years from now, it makes
577: sense for you to help encourage people to contribute funds for its
578: development. The most effective approach known is to encourage
579: commercial redistributors to donate.
580:
581: Users of free software systems can boost the pace of development by
582: encouraging for-a-fee distributors to donate part of their selling price
583: to free software developers--the Free Software Foundation, and others.
584:
585: The way to convince distributors to do this is to demand it and
586: expect it from them. So when you compare distributors, judge them
587: partly by how much they give to free software development. Show
588: distributors they must compete to be the one who gives the most.
589:
590: To make this approach work, you must insist on numbers that you can
591: compare, such as, "We will donate ten dollars to the Frobnitz project
592: for each disk sold." Don't be satisfied with a vague promise, such as
593: "A portion of the profits are donated," since it doesn't give a basis
594: for comparison.
595:
596: Even a precise fraction "of the profits from this disk" is not very
597: meaningful, since creative accounting and unrelated business decisions
598: can greatly alter what fraction of the sales price counts as profit.
599: If the price you pay is $50, ten percent of the profit is probably less
600: than a dollar; it might be a few cents, or nothing at all.
601:
602: Some redistributors do development work themselves. This is useful
603: too; but to keep everyone honest, you need to inquire how much they do,
604: and what kind. Some kinds of development make much more long-term
605: difference than others. For example, maintaining a separate version of
606: a program contributes very little; maintaining the standard version of a
607: program for the whole community contributes much. Easy new ports
608: contribute little, since someone else would surely do them; difficult
609: ports such as adding a new CPU to the GNU C compiler contribute more;
610: major new features or packages contribute the most.
611:
612: By establishing the idea that supporting further development is "the
613: proper thing to do" when distributing free software for a fee, we can
614: assure a steady flow of resources into making more free software.
615:
616: Copyright (C) 1994 Free Software Foundation, Inc.
617: Verbatim copying and redistribution of this section is permitted
618: without royalty; alteration is not permitted.
619:
1.1 root 620:
1.1.1.7 root 621: File: gcc.info, Node: Look and Feel, Next: G++ and GCC, Prev: Funding, Up: Top
1.1 root 622:
623: Protect Your Freedom--Fight "Look And Feel"
624: *******************************************
625:
1.1.1.3 root 626: This section is a political message from the League for Programming
1.1.1.7 root 627: Freedom to the users of GNU CC. We have included it here because
628: the issue of interface copyright is important to the GNU project.
629:
1.1.1.8 ! root 630: Apple, Lotus, and now CDC have tried to create a new form of legal
! 631: monopoly: a copyright on a user interface.
1.1 root 632:
1.1.1.7 root 633: An interface is a kind of language--a set of conventions for
634: communication between two entities, human or machine. Until a few years
635: ago, the law seemed clear: interfaces were outside the domain of
636: copyright, so programmers could program freely and implement whatever
637: interface the users demanded. Imitating de-facto standard interfaces,
638: sometimes with improvements, was standard practice in the computer
639: field. These improvements, if accepted by the users, caught on and
640: became the norm; in this way, much progress took place.
641:
642: Computer users, and most software developers, were happy with this
643: state of affairs. However, large companies such as Apple and Lotus
644: would prefer a different system--one in which they can own interfaces
645: and thereby rid themselves of all serious competitors. They hope that
646: interface copyright will give them, in effect, monopolies on major
647: classes of software.
648:
649: Other large companies such as IBM and Digital also favor interface
650: monopolies, for the same reason: if languages become property, they
651: expect to own many de-facto standard languages. But Apple and Lotus are
1.1.1.8 ! root 652: the ones who have actually sued. Apple's lawsuit was defeated, for
! 653: reasons only partly related to the general issue of interface copyright.
! 654:
! 655: Lotus won lawsuits against two small companies, which were thus put
! 656: out of business. Then they sued Borland; they won in the trial court
! 657: (no surprise, since it was the same court that had ruled for Lotus twice
! 658: before), but the decision was reversed by the court of appeals, with
! 659: help from the League for Programming Freedom in the form of a
! 660: friend-of-the-court brief. We are now waiting to see if the Supreme
! 661: Court will hear the case. If it does, the League for Programming
! 662: Freedom will again submit a brief.
! 663:
! 664: The battle is not over. Just this summer a company that produced a
! 665: simulator for a CDC computer was shut down by a copyright lawsuit by
! 666: CDC, which charged that the simulator infringed the copyright on the
! 667: manuals for the computer.
1.1.1.7 root 668:
669: If the monopolists get their way, they will hobble the software
670: field:
1.1 root 671:
672: * Gratuitous incompatibilities will burden users. Imagine if each
1.1.1.7 root 673: car manufacturer had to design a different way to start, stop, and
674: steer a car.
1.1 root 675:
1.1.1.7 root 676: * Users will be "locked in" to whichever interface they learn; then
677: they will be prisoners of one supplier, who will charge a
678: monopolistic price.
1.1 root 679:
680: * Large companies have an unfair advantage wherever lawsuits become
1.1.1.7 root 681: commonplace. Since they can afford to sue, they can intimidate
682: smaller developers with threats even when they don't really have a
683: case.
684:
685: * Interface improvements will come slower, since incremental
686: evolution through creative partial imitation will no longer occur.
687:
688: If interface monopolies are accepted, other large companies are
689: waiting to grab theirs:
690:
691: * Adobe is expected to claim a monopoly on the interfaces of various
1.1.1.8 ! root 692: popular application programs, if Lotus ultimately wins the case
! 693: against Borland.
1.1.1.7 root 694:
695: * Open Computing magazine reported a Microsoft vice president as
1.1.1.8 ! root 696: threatening to sue people who imitate the interface of Windows.
1.1.1.7 root 697:
698: Users invest a great deal of time and money in learning to use
699: computer interfaces. Far more, in fact, than software developers
700: invest in developing *and even implementing* the interfaces. Whoever
701: can own an interface, has made its users into captives, and
702: misappropriated their investment.
703:
704: To protect our freedom from monopolies like these, a group of
705: programmers and users have formed a grass-roots political organization,
706: the League for Programming Freedom.
707:
708: The purpose of the League is to oppose monopolistic practices such as
709: interface copyright and software patents. The League calls for a return
710: to the legal policies of the recent past, in which programmers could
711: program freely. The League is not concerned with free software as an
712: issue, and is not affiliated with the Free Software Foundation.
713:
1.1.1.8 ! root 714: The League's activities include publicizing the issues, as is being
1.1.1.7 root 715: done here, and filing friend-of-the-court briefs on behalf of
1.1.1.8 ! root 716: defendants sued by monopolists.
1.1 root 717:
1.1.1.8 ! root 718: The League's membership rolls include Donald Knuth, the foremost
! 719: authority on algorithms, John McCarthy, inventor of Lisp, Marvin Minsky,
! 720: founder of the MIT Artificial Intelligence lab, Guy L. Steele, Jr.,
! 721: author of well-known books on Lisp and C, as well as Richard Stallman,
! 722: the developer of GNU CC. Please join and add your name to the list.
! 723: Membership dues in the League are $42 per year for programmers, managers
! 724: and professionals; $10.50 for students; $21 for others.
1.1 root 725:
1.1.1.7 root 726: Activist members are especially important, but members who have no
727: time to give are also important. Surveys at major ACM conferences have
1.1.1.8 ! root 728: indicated a vast majority of attendees agree with the League on both
! 729: issues (interface copyrights and software patents). If just ten percent
! 730: of the programmers who agree with the League join the League, we will
! 731: probably triumph.
1.1 root 732:
1.1.1.4 root 733: To join, or for more information, phone (617) 243-4091 or write to:
1.1 root 734:
735: League for Programming Freedom
736: 1 Kendall Square #143
737: P.O. Box 9171
738: Cambridge, MA 02139
739:
1.1.1.7 root 740: You can also send electronic mail to `[email protected]'.
1.1 root 741:
1.1.1.7 root 742: In addition to joining the League, here are some suggestions from the
743: League for other things you can do to protect your freedom to write
744: programs:
1.1 root 745:
746: * Tell your friends and colleagues about this issue and how it
747: threatens to ruin the computer industry.
748:
1.1.1.7 root 749: * Mention that you are a League member in your `.signature', and
750: mention the League's email address for inquiries.
751:
752: * Ask the companies you consider working for or working with to make
753: statements against software monopolies, and give preference to
754: those that do.
755:
1.1.1.8 ! root 756: * When employers ask you to sign contracts giving them copyright on
! 757: your work, insist on a clause saying they will not claim the
! 758: copyright covers imitating the interface.
! 759:
! 760: * When employers ask you to sign contracts giving them patent rights,
! 761: insist on clauses saying they can use these rights only
! 762: defensively. Don't rely on "company policy," since that can
1.1.1.7 root 763: change at any time; don't rely on an individual executive's
764: private word, since that person may be replaced. Get a commitment
765: just as binding as the commitment they get from you.
1.1 root 766:
1.1.1.8 ! root 767: * Write to Congress to explain the importance of these issues.
1.1 root 768:
769: House Subcommittee on Intellectual Property
770: 2137 Rayburn Bldg
771: Washington, DC 20515
772:
773: Senate Subcommittee on Patents, Trademarks and Copyrights
774: United States Senate
775: Washington, DC 20510
776:
777: (These committees have received lots of mail already; let's give
778: them even more.)
779:
1.1.1.7 root 780: Democracy means nothing if you don't use it. Stand up and be
781: counted!
1.1 root 782:
783:
1.1.1.7 root 784: File: gcc.info, Node: G++ and GCC, Next: Invoking GCC, Prev: Look and Feel, Up: Top
1.1.1.5 root 785:
786: Compile C, C++, or Objective C
787: ******************************
788:
789: The C, C++, and Objective C versions of the compiler are integrated;
790: the GNU C compiler can compile programs written in C, C++, or Objective
791: C.
792:
793: "GCC" is a common shorthand term for the GNU C compiler. This is
794: both the most general name for the compiler, and the name used when the
795: emphasis is on compiling C programs.
796:
797: When referring to C++ compilation, it is usual to call the compiler
798: "G++". Since there is only one compiler, it is also accurate to call
799: it "GCC" no matter what the language context; however, the term "G++"
800: is more useful when the emphasis is on compiling C++ programs.
801:
1.1.1.7 root 802: We use the name "GNU CC" to refer to the compilation system as a
803: whole, and more specifically to the language-independent part of the
804: compiler. For example, we refer to the optimization options as
805: affecting the behavior of "GNU CC" or sometimes just "the compiler".
806:
807: Front ends for other languages, such as Ada 9X, Fortran, Modula-3,
808: and Pascal, are under development. These front-ends, like that for
809: C++, are built in subdirectories of GNU CC and link to it. The result
810: is an integrated compiler that can compile programs written in C, C++,
811: Objective C, or any of the languages for which you have installed front
812: ends.
813:
814: In this manual, we only discuss the options for the C, Objective-C,
815: and C++ compilers and those of the GNU CC core. Consult the
816: documentation of the other front ends for the options to use when
817: compiling programs written in other languages.
818:
1.1.1.5 root 819: G++ is a *compiler*, not merely a preprocessor. G++ builds object
820: code directly from your C++ program source. There is no intermediate C
821: version of the program. (By contrast, for example, some other
822: implementations use a program that generates a C program from your C++
823: source.) Avoiding an intermediate C representation of the program means
824: that you get better object code, and better debugging information. The
825: GNU debugger, GDB, works with this information in the object code to
826: give you comprehensive C++ source-level editing capabilities (*note C
827: and C++: (gdb.info)C.).
828:
829:
830: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: G++ and GCC, Up: Top
1.1 root 831:
832: GNU CC Command Options
833: **********************
834:
835: When you invoke GNU CC, it normally does preprocessing, compilation,
836: assembly and linking. The "overall options" allow you to stop this
837: process at an intermediate stage. For example, the `-c' option says
1.1.1.3 root 838: not to run the linker. Then the output consists of object files output
839: by the assembler.
1.1 root 840:
1.1.1.3 root 841: Other options are passed on to one stage of processing. Some options
842: control the preprocessor and others the compiler itself. Yet other
843: options control the assembler and linker; most of these are not
1.1 root 844: documented here, since you rarely need to use any of them.
845:
1.1.1.5 root 846: Most of the command line options that you can use with GNU CC are
847: useful for C programs; when an option is only useful with another
848: language (usually C++), the explanation says so explicitly. If the
849: description for a particular option does not mention a source language,
850: you can use that option with all supported languages.
851:
852: *Note Compiling C++ Programs: Invoking G++, for a summary of special
853: options for compiling C++ programs.
854:
1.1.1.4 root 855: The `gcc' program accepts options and file names as operands. Many
856: options have multiletter names; therefore multiple single-letter options
857: may *not* be grouped: `-dr' is very different from `-d -r'.
1.1 root 858:
859: You can mix options and other arguments. For the most part, the
1.1.1.4 root 860: order you use doesn't matter. Order does matter when you use several
861: options of the same kind; for example, if you specify `-L' more than
862: once, the directories are searched in the order specified.
1.1 root 863:
864: Many options have long names starting with `-f' or with `-W'--for
1.1.1.5 root 865: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on.
1.1 root 866: Most of these have both positive and negative forms; the negative form
867: of `-ffoo' would be `-fno-foo'. This manual documents only one of
868: these two forms, whichever one is not the default.
869:
1.1.1.4 root 870: * Menu:
871:
872: * Option Summary:: Brief list of all options, without explanations.
873: * Overall Options:: Controlling the kind of output:
874: an executable, object files, assembler files,
875: or preprocessed source.
1.1.1.5 root 876: * Invoking G++:: Compiling C++ programs.
877: * C Dialect Options:: Controlling the variant of C language compiled.
878: * C++ Dialect Options:: Variations on C++.
1.1.1.4 root 879: * Warning Options:: How picky should the compiler be?
880: * Debugging Options:: Symbol tables, measurements, and debugging dumps.
881: * Optimize Options:: How much optimization?
882: * Preprocessor Options:: Controlling header files and macro definitions.
883: Also, getting dependency information for Make.
884: * Assembler Options:: Passing options to the assembler.
885: * Link Options:: Specifying libraries and so on.
886: * Directory Options:: Where to find header files and libraries.
887: Where to find the compiler executable files.
888: * Target Options:: Running a cross-compiler, or an old version of GNU CC.
889: * Submodel Options:: Specifying minor hardware or convention variations,
890: such as 68010 vs 68020.
891: * Code Gen Options:: Specifying conventions for function calls, data layout
892: and register usage.
893: * Environment Variables:: Env vars that affect GNU CC.
894: * Running Protoize:: Automatically adding or removing function prototypes.
895:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.