|
|
1.1 root 1: This is Info file gcc.info, produced by Makeinfo-1.54 from the input
2: file gcc.texi.
3:
4: This file documents the use and the internals of the GNU compiler.
5:
6: Published by the Free Software Foundation 675 Massachusetts Avenue
7: Cambridge, MA 02139 USA
8:
9: Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc.
10:
11: Permission is granted to make and distribute verbatim copies of this
12: manual provided the copyright notice and this permission notice are
13: preserved on all copies.
14:
15: Permission is granted to copy and distribute modified versions of
16: this manual under the conditions for verbatim copying, provided also
17: that the sections entitled "GNU General Public License" and "Protect
18: Your Freedom--Fight `Look And Feel'" are included exactly as in the
19: original, and provided that the entire resulting derived work is
20: distributed under the terms of a permission notice identical to this
21: one.
22:
23: Permission is granted to copy and distribute translations of this
24: manual into another language, under the above conditions for modified
25: versions, except that the sections entitled "GNU General Public
26: License" and "Protect Your Freedom--Fight `Look And Feel'", and this
27: permission notice, may be included in translations approved by the Free
28: Software Foundation instead of in the original English.
29:
30:
31: File: gcc.info, Node: Top, Next: Copying, Up: (DIR)
32:
33: Introduction
34: ************
35:
36: This manual documents how to run, install and port the GNU compiler,
37: as well as its new features and incompatibilities, and how to report
38: bugs. It corresponds to GNU CC version 2.5.
39:
40: * Menu:
41:
42: * Copying:: GNU General Public License says
43: how you can copy and share GNU CC.
44: * Contributors:: People who have contributed to GNU CC.
45: * Boycott:: Protect your freedom--fight "look and feel".
46:
47: * G++ and GCC:: You can compile C or C++ programs.
48: * Invoking GCC:: Command options supported by `gcc'.
49: * Installation:: How to configure, compile and install GNU CC.
50: * C Extensions:: GNU extensions to the C language family.
51: * C++ Extensions:: GNU extensions to the C++ language.
52: * Trouble:: If you have trouble installing GNU CC.
53: * Bugs:: How, why and where to report bugs.
54: * Service:: How to find suppliers of support for GNU CC.
55: * VMS:: Using GNU CC on VMS.
56:
57: * Portability:: Goals of GNU CC's portability features.
58: * Interface:: Function-call interface of GNU CC output.
59: * Passes:: Order of passes, what they do, and what each file is for.
60: * RTL:: The intermediate representation that most passes work on.
61: * Machine Desc:: How to write machine description instruction patterns.
62: * Target Macros:: How to write the machine description C macros.
63: * Config:: Writing the `xm-MACHINE.h' file.
64:
65: * Index:: Index of concepts and symbol names.
66:
67:
68: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top
69:
70: GNU GENERAL PUBLIC LICENSE
71: **************************
72:
73: Version 2, June 1991
74:
75: Copyright (C) 1989, 1991 Free Software Foundation, Inc.
76: 675 Mass Ave, Cambridge, MA 02139, USA
77:
78: Everyone is permitted to copy and distribute verbatim copies
79: of this license document, but changing it is not allowed.
80:
81: Preamble
82: ========
83:
84: The licenses for most software are designed to take away your
85: freedom to share and change it. By contrast, the GNU General Public
86: License is intended to guarantee your freedom to share and change free
87: software--to make sure the software is free for all its users. This
88: General Public License applies to most of the Free Software
89: Foundation's software and to any other program whose authors commit to
90: using it. (Some other Free Software Foundation software is covered by
91: the GNU Library General Public License instead.) You can apply it to
92: your programs, too.
93:
94: When we speak of free software, we are referring to freedom, not
95: price. Our General Public Licenses are designed to make sure that you
96: have the freedom to distribute copies of free software (and charge for
97: this service if you wish), that you receive source code or can get it
98: if you want it, that you can change the software or use pieces of it in
99: new free programs; and that you know you can do these things.
100:
101: To protect your rights, we need to make restrictions that forbid
102: anyone to deny you these rights or to ask you to surrender the rights.
103: These restrictions translate to certain responsibilities for you if you
104: distribute copies of the software, or if you modify it.
105:
106: For example, if you distribute copies of such a program, whether
107: gratis or for a fee, you must give the recipients all the rights that
108: you have. You must make sure that they, too, receive or can get the
109: source code. And you must show them these terms so they know their
110: rights.
111:
112: We protect your rights with two steps: (1) copyright the software,
113: and (2) offer you this license which gives you legal permission to copy,
114: distribute and/or modify the software.
115:
116: Also, for each author's protection and ours, we want to make certain
117: that everyone understands that there is no warranty for this free
118: software. If the software is modified by someone else and passed on, we
119: want its recipients to know that what they have is not the original, so
120: that any problems introduced by others will not reflect on the original
121: authors' reputations.
122:
123: Finally, any free program is threatened constantly by software
124: patents. We wish to avoid the danger that redistributors of a free
125: program will individually obtain patent licenses, in effect making the
126: program proprietary. To prevent this, we have made it clear that any
127: patent must be licensed for everyone's free use or not licensed at all.
128:
129: The precise terms and conditions for copying, distribution and
130: modification follow.
131:
132: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
133:
134: 0. This License applies to any program or other work which contains a
135: notice placed by the copyright holder saying it may be distributed
136: under the terms of this General Public License. The "Program",
137: below, refers to any such program or work, and a "work based on
138: the Program" means either the Program or any derivative work under
139: copyright law: that is to say, a work containing the Program or a
140: portion of it, either verbatim or with modifications and/or
141: translated into another language. (Hereinafter, translation is
142: included without limitation in the term "modification".) Each
143: licensee is addressed as "you".
144:
145: Activities other than copying, distribution and modification are
146: not covered by this License; they are outside its scope. The act
147: of running the Program is not restricted, and the output from the
148: Program is covered only if its contents constitute a work based on
149: the Program (independent of having been made by running the
150: Program). Whether that is true depends on what the Program does.
151:
152: 1. You may copy and distribute verbatim copies of the Program's
153: source code as you receive it, in any medium, provided that you
154: conspicuously and appropriately publish on each copy an appropriate
155: copyright notice and disclaimer of warranty; keep intact all the
156: notices that refer to this License and to the absence of any
157: warranty; and give any other recipients of the Program a copy of
158: this License along with the Program.
159:
160: You may charge a fee for the physical act of transferring a copy,
161: and you may at your option offer warranty protection in exchange
162: for a fee.
163:
164: 2. You may modify your copy or copies of the Program or any portion
165: of it, thus forming a work based on the Program, and copy and
166: distribute such modifications or work under the terms of Section 1
167: above, provided that you also meet all of these conditions:
168:
169: a. You must cause the modified files to carry prominent notices
170: stating that you changed the files and the date of any change.
171:
172: b. You must cause any work that you distribute or publish, that
173: in whole or in part contains or is derived from the Program
174: or any part thereof, to be licensed as a whole at no charge
175: to all third parties under the terms of this License.
176:
177: c. If the modified program normally reads commands interactively
178: when run, you must cause it, when started running for such
179: interactive use in the most ordinary way, to print or display
180: an announcement including an appropriate copyright notice and
181: a notice that there is no warranty (or else, saying that you
182: provide a warranty) and that users may redistribute the
183: program under these conditions, and telling the user how to
184: view a copy of this License. (Exception: if the Program
185: itself is interactive but does not normally print such an
186: announcement, your work based on the Program is not required
187: to print an announcement.)
188:
189: These requirements apply to the modified work as a whole. If
190: identifiable sections of that work are not derived from the
191: Program, and can be reasonably considered independent and separate
192: works in themselves, then this License, and its terms, do not
193: apply to those sections when you distribute them as separate
194: works. But when you distribute the same sections as part of a
195: whole which is a work based on the Program, the distribution of
196: the whole must be on the terms of this License, whose permissions
197: for other licensees extend to the entire whole, and thus to each
198: and every part regardless of who wrote it.
199:
200: Thus, it is not the intent of this section to claim rights or
201: contest your rights to work written entirely by you; rather, the
202: intent is to exercise the right to control the distribution of
203: derivative or collective works based on the Program.
204:
205: In addition, mere aggregation of another work not based on the
206: Program with the Program (or with a work based on the Program) on
207: a volume of a storage or distribution medium does not bring the
208: other work under the scope of this License.
209:
210: 3. You may copy and distribute the Program (or a work based on it,
211: under Section 2) in object code or executable form under the terms
212: of Sections 1 and 2 above provided that you also do one of the
213: following:
214:
215: a. Accompany it with the complete corresponding machine-readable
216: source code, which must be distributed under the terms of
217: Sections 1 and 2 above on a medium customarily used for
218: software interchange; or,
219:
220: b. Accompany it with a written offer, valid for at least three
221: years, to give any third party, for a charge no more than your
222: cost of physically performing source distribution, a complete
223: machine-readable copy of the corresponding source code, to be
224: distributed under the terms of Sections 1 and 2 above on a
225: medium customarily used for software interchange; or,
226:
227: c. Accompany it with the information you received as to the offer
228: to distribute corresponding source code. (This alternative is
229: allowed only for noncommercial distribution and only if you
230: received the program in object code or executable form with
231: such an offer, in accord with Subsection b above.)
232:
233: The source code for a work means the preferred form of the work for
234: making modifications to it. For an executable work, complete
235: source code means all the source code for all modules it contains,
236: plus any associated interface definition files, plus the scripts
237: used to control compilation and installation of the executable.
238: However, as a special exception, the source code distributed need
239: not include anything that is normally distributed (in either
240: source or binary form) with the major components (compiler,
241: kernel, and so on) of the operating system on which the executable
242: runs, unless that component itself accompanies the executable.
243:
244: If distribution of executable or object code is made by offering
245: access to copy from a designated place, then offering equivalent
246: access to copy the source code from the same place counts as
247: distribution of the source code, even though third parties are not
248: compelled to copy the source along with the object code.
249:
250: 4. You may not copy, modify, sublicense, or distribute the Program
251: except as expressly provided under this License. Any attempt
252: otherwise to copy, modify, sublicense or distribute the Program is
253: void, and will automatically terminate your rights under this
254: License. However, parties who have received copies, or rights,
255: from you under this License will not have their licenses
256: terminated so long as such parties remain in full compliance.
257:
258: 5. You are not required to accept this License, since you have not
259: signed it. However, nothing else grants you permission to modify
260: or distribute the Program or its derivative works. These actions
261: are prohibited by law if you do not accept this License.
262: Therefore, by modifying or distributing the Program (or any work
263: based on the Program), you indicate your acceptance of this
264: License to do so, and all its terms and conditions for copying,
265: distributing or modifying the Program or works based on it.
266:
267: 6. Each time you redistribute the Program (or any work based on the
268: Program), the recipient automatically receives a license from the
269: original licensor to copy, distribute or modify the Program
270: subject to these terms and conditions. You may not impose any
271: further restrictions on the recipients' exercise of the rights
272: granted herein. You are not responsible for enforcing compliance
273: by third parties to this License.
274:
275: 7. If, as a consequence of a court judgment or allegation of patent
276: infringement or for any other reason (not limited to patent
277: issues), conditions are imposed on you (whether by court order,
278: agreement or otherwise) that contradict the conditions of this
279: License, they do not excuse you from the conditions of this
280: License. If you cannot distribute so as to satisfy simultaneously
281: your obligations under this License and any other pertinent
282: obligations, then as a consequence you may not distribute the
283: Program at all. For example, if a patent license would not permit
284: royalty-free redistribution of the Program by all those who
285: receive copies directly or indirectly through you, then the only
286: way you could satisfy both it and this License would be to refrain
287: entirely from distribution of the Program.
288:
289: If any portion of this section is held invalid or unenforceable
290: under any particular circumstance, the balance of the section is
291: intended to apply and the section as a whole is intended to apply
292: in other circumstances.
293:
294: It is not the purpose of this section to induce you to infringe any
295: patents or other property right claims or to contest validity of
296: any such claims; this section has the sole purpose of protecting
297: the integrity of the free software distribution system, which is
298: implemented by public license practices. Many people have made
299: generous contributions to the wide range of software distributed
300: through that system in reliance on consistent application of that
301: system; it is up to the author/donor to decide if he or she is
302: willing to distribute software through any other system and a
303: licensee cannot impose that choice.
304:
305: This section is intended to make thoroughly clear what is believed
306: to be a consequence of the rest of this License.
307:
308: 8. If the distribution and/or use of the Program is restricted in
309: certain countries either by patents or by copyrighted interfaces,
310: the original copyright holder who places the Program under this
311: License may add an explicit geographical distribution limitation
312: excluding those countries, so that distribution is permitted only
313: in or among countries not thus excluded. In such case, this
314: License incorporates the limitation as if written in the body of
315: this License.
316:
317: 9. The Free Software Foundation may publish revised and/or new
318: versions of the General Public License from time to time. Such
319: new versions will be similar in spirit to the present version, but
320: may differ in detail to address new problems or concerns.
321:
322: Each version is given a distinguishing version number. If the
323: Program specifies a version number of this License which applies
324: to it and "any later version", you have the option of following
325: the terms and conditions either of that version or of any later
326: version published by the Free Software Foundation. If the Program
327: does not specify a version number of this License, you may choose
328: any version ever published by the Free Software Foundation.
329:
330: 10. If you wish to incorporate parts of the Program into other free
331: programs whose distribution conditions are different, write to the
332: author to ask for permission. For software which is copyrighted
333: by the Free Software Foundation, write to the Free Software
334: Foundation; we sometimes make exceptions for this. Our decision
335: will be guided by the two goals of preserving the free status of
336: all derivatives of our free software and of promoting the sharing
337: and reuse of software generally.
338:
339: NO WARRANTY
340:
341: 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
342: WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
343: LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
344: HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
345: WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
346: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
347: FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
348: QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
349: PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
350: SERVICING, REPAIR OR CORRECTION.
351:
352: 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
353: WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
354: MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
355: LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
356: INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
357: INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
358: DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
359: OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
360: OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
361: ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
362:
363: END OF TERMS AND CONDITIONS
364:
365: How to Apply These Terms to Your New Programs
366: =============================================
367:
368: If you develop a new program, and you want it to be of the greatest
369: possible use to the public, the best way to achieve this is to make it
370: free software which everyone can redistribute and change under these
371: terms.
372:
373: To do so, attach the following notices to the program. It is safest
374: to attach them to the start of each source file to most effectively
375: convey the exclusion of warranty; and each file should have at least
376: the "copyright" line and a pointer to where the full notice is found.
377:
378: ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
379: Copyright (C) 19YY NAME OF AUTHOR
380:
381: This program is free software; you can redistribute it and/or modify
382: it under the terms of the GNU General Public License as published by
383: the Free Software Foundation; either version 2 of the License, or
384: (at your option) any later version.
385:
386: This program is distributed in the hope that it will be useful,
387: but WITHOUT ANY WARRANTY; without even the implied warranty of
388: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
389: GNU General Public License for more details.
390:
391: You should have received a copy of the GNU General Public License
392: along with this program; if not, write to the Free Software
393: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
394:
395: Also add information on how to contact you by electronic and paper
396: mail.
397:
398: If the program is interactive, make it output a short notice like
399: this when it starts in an interactive mode:
400:
401: Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR
402: Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
403: type `show w'.
404: This is free software, and you are welcome to redistribute it
405: under certain conditions; type `show c' for details.
406:
407: The hypothetical commands `show w' and `show c' should show the
408: appropriate parts of the General Public License. Of course, the
409: commands you use may be called something other than `show w' and `show
410: c'; they could even be mouse-clicks or menu items--whatever suits your
411: program.
412:
413: You should also get your employer (if you work as a programmer) or
414: your school, if any, to sign a "copyright disclaimer" for the program,
415: if necessary. Here is a sample; alter the names:
416:
417: Yoyodyne, Inc., hereby disclaims all copyright interest in the program
418: `Gnomovision' (which makes passes at compilers) written by James Hacker.
419:
420: SIGNATURE OF TY COON, 1 April 1989
421: Ty Coon, President of Vice
422:
423: This General Public License does not permit incorporating your
424: program into proprietary programs. If your program is a subroutine
425: library, you may consider it more useful to permit linking proprietary
426: applications with the library. If this is what you want to do, use the
427: GNU Library General Public License instead of this License.
428:
429:
430: File: gcc.info, Node: Contributors, Next: Boycott, Prev: Copying, Up: Top
431:
432: Contributors to GNU CC
433: **********************
434:
435: In addition to Richard Stallman, several people have written parts
436: of GNU CC.
437:
438: * The idea of using RTL and some of the optimization ideas came from
439: the program PO written at the University of Arizona by Jack
440: Davidson and Christopher Fraser. See "Register Allocation and
441: Exhaustive Peephole Optimization", Software Practice and
442: Experience 14 (9), Sept. 1984, 857-866.
443:
444: * Paul Rubin wrote most of the preprocessor.
445:
446: * Leonard Tower wrote parts of the parser, RTL generator, and RTL
447: definitions, and of the Vax machine description.
448:
449: * Ted Lemon wrote parts of the RTL reader and printer.
450:
451: * Jim Wilson implemented loop strength reduction and some other loop
452: optimizations.
453:
454: * Nobuyuki Hikichi of Software Research Associates, Tokyo,
455: contributed the support for the Sony NEWS machine.
456:
457: * Charles LaBrec contributed the support for the Integrated Solutions
458: 68020 system.
459:
460: * Michael Tiemann of Cygnus Support wrote the front end for C++, as
461: well as the support for inline functions and instruction
462: scheduling. Also the descriptions of the National Semiconductor
463: 32000 series cpu, the SPARC cpu and part of the Motorola 88000 cpu.
464:
465: * Jan Stein of the Chalmers Computer Society provided support for
466: Genix, as well as part of the 32000 machine description.
467:
468: * Randy Smith finished the Sun FPA support.
469:
470: * Robert Brown implemented the support for Encore 32000 systems.
471:
472: * David Kashtan of SRI adapted GNU CC to the Vomit-Making System
473: (VMS).
474:
475: * Alex Crain provided changes for the 3b1.
476:
477: * Greg Satz and Chris Hanson assisted in making GNU CC work on HP-UX
478: for the 9000 series 300.
479:
480: * William Schelter did most of the work on the Intel 80386 support.
481:
482: * Christopher Smith did the port for Convex machines.
483:
484: * Paul Petersen wrote the machine description for the Alliant FX/8.
485:
486: * Alain Lichnewsky ported GNU CC to the Mips cpu.
487:
488: * Devon Bowen, Dale Wiles and Kevin Zachmann ported GNU CC to the
489: Tahoe.
490:
491: * Jonathan Stone wrote the machine description for the Pyramid
492: computer.
493:
494: * Gary Miller ported GNU CC to Charles River Data Systems machines.
495:
496: * Richard Kenner of the New York University Ultracomputer Research
497: Laboratory wrote the machine descriptions for the AMD 29000, the
498: DEC Alpha, the IBM RT PC, and the IBM RS/6000 as well as the
499: support for instruction attributes. He also made changes to
500: better support RISC processors including changes to common
501: subexpression elimination, strength reduction, function calling
502: sequence handling, and condition code support, in addition to
503: generalizing the code for frame pointer elimination.
504:
505: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the
506: delay slot scheduler.
507:
508: * Mike Meissner and Tom Wood of Data General finished the port to the
509: Motorola 88000.
510:
511: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
512: description for the Tron architecture (specifically, the Gmicro).
513:
514: * NeXT, Inc. donated the front end that supports the Objective C
515: language.
516:
517: * James van Artsdalen wrote the code that makes efficient use of the
518: Intel 80387 register stack.
519:
520: * Mike Meissner at the Open Software Foundation finished the port to
521: the MIPS cpu, including adding ECOFF debug support.
522:
523: * Ron Guilmette implemented the `protoize' and `unprotoize' tools,
524: the support for Dwarf symbolic debugging information, and much of
525: the support for System V Release 4. He has also worked heavily on
526: the Intel 386 and 860 support.
527:
528: * Torbjorn Granlund of the Swedish Institute of Computer Science
529: implemented multiply-by-constant optimization and better long long
530: support, and improved leaf function register allocation.
531:
532: * Mike Stump implemented the support for Elxsi 64 bit CPU.
533:
534: * John Wehle added the machine description for the Western Electric
535: 32000 processor used in several 3b series machines (no relation to
536: the National Semiconductor 32000 processor).
537:
538: * Holger Teutsch provided the support for the Clipper cpu.
539:
540: * Kresten Krab Thorup wrote the run time support for the Objective C
541: language.
542:
543: * Stephen Moshier contributed the floating point emulator that
544: assists in cross-compilation and permits support for floating
545: point numbers wider than 64 bits.
546:
547: * David Edelsohn contributed the changes to RS/6000 port to make it
548: support the PowerPC and POWER2 architectures.
549:
550: * Steve Chamberlain wrote the support for the Hitachi SH processor.
551:
552: * Peter Schauer wrote the code to allow debugging to work on the
553: Alpha.
554:
555:
556: File: gcc.info, Node: Boycott, Next: G++ and GCC, Prev: Contributors, Up: Top
557:
558: Protect Your Freedom--Fight "Look And Feel"
559: *******************************************
560:
561: This section is a political message from the League for Programming
562: Freedom to the users of GNU CC. It is included here as an
563: expression of support for the League on the part of the Free
564: Software Foundation.
565:
566: Apple and Lotus are trying to create a new form of legal monopoly: a
567: copyright on a class of user interfaces. These monopolies would cause
568: serious problems for users and developers of computer software and
569: systems. Xerox, too, has tried to make a monopoly for itself on window
570: systems; their suit against Apple was thrown out on a technicality, but
571: Xerox has not said anything to indicate it wouldn't try again.
572:
573: Until a few years ago, the law seemed clear: no one could restrict
574: others from using a user interface; programmers were free to implement
575: any interface they chose. Imitating interfaces, sometimes with changes,
576: was standard practice in the computer field. The interfaces we know
577: evolved gradually in this way; for example, the Macintosh user interface
578: drew ideas from the Xerox interface, which in turn drew on work done at
579: Stanford and SRI. 1-2-3 imitated VisiCalc, and dBase imitated a
580: database program from JPL.
581:
582: Most computer companies, and nearly all computer users, were happy
583: with this state of affairs. The companies that are suing say it does
584: not offer "enough incentive" to develop their products, but they must
585: have considered it "enough" when they made their decision to do so. It
586: seems they are not satisfied with the opportunity to continue to compete
587: in the marketplace--not even with a head start.
588:
589: If companies like Xerox, Lotus, and Apple are permitted to make law
590: through the courts, the precedent will hobble the software industry:
591:
592: * Gratuitous incompatibilities will burden users. Imagine if each
593: car manufacturer had to arrange the pedals in a different order.
594:
595: * Software will become and remain more expensive. Users will be
596: "locked in" to proprietary interfaces, for which there is no real
597: competition.
598:
599: * Large companies have an unfair advantage wherever lawsuits become
600: commonplace. Since they can easily afford to sue, they can
601: intimidate small companies with threats even when they don't
602: really have a case.
603:
604: * User interface improvements will come slower, since incremental
605: evolution through creative imitation will no longer be permitted.
606:
607: * Even Apple, etc., will find it harder to make improvements if they
608: can no longer adapt the good ideas that others introduce, for fear
609: of weakening their own legal positions. Some users suggest that
610: this stagnation may already have started.
611:
612: * If you use GNU software, you might find it of some concern that
613: user interface copyright will make it hard for the Free Software
614: Foundation to develop programs compatible with the interfaces that
615: you already know.
616:
617: To protect our freedom from lawsuits like these, a group of
618: programmers and users have formed a new grass-roots political
619: organization, the League for Programming Freedom.
620:
621: The purpose of the League is to oppose new monopolistic practices
622: such as user-interface copyright and software patents; it calls for a
623: return to the legal policies of the recent past, in which these
624: practices were not allowed. The League is not concerned with free
625: software as an issue, and not affiliated with the Free Software
626: Foundation.
627:
628: The League's membership rolls include John McCarthy, inventor of
629: Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L.
630: Steele, Jr., author of well-known books on Lisp and C, as well as
631: Richard Stallman, the developer of GNU CC. Please join and add your
632: name to the list. Membership dues in the League are $42 per year for
633: programmers, managers and professionals; $10.50 for students; $21 for
634: others.
635:
636: The League needs both activist members and members who only pay their
637: dues.
638:
639: To join, or for more information, phone (617) 243-4091 or write to:
640:
641: League for Programming Freedom
642: 1 Kendall Square #143
643: P.O. Box 9171
644: Cambridge, MA 02139
645:
646: You can also send electronic mail to `[email protected]'.
647:
648: Here are some suggestions from the League for things you can do to
649: protect your freedom to write programs:
650:
651: * Don't buy from Xerox, Lotus or Apple. Buy from their competitors
652: or from the defendants they are suing.
653:
654: * Don't develop software to work with the systems made by these
655: companies.
656:
657: * Port your existing software to competing systems, so that you
658: encourage users to switch.
659:
660: * Write letters to company presidents to let them know their conduct
661: is unacceptable.
662:
663: * Tell your friends and colleagues about this issue and how it
664: threatens to ruin the computer industry.
665:
666: * Above all, don't work for the look-and-feel plaintiffs, and don't
667: accept contracts from them.
668:
669: * Write to Congress to explain the importance of this issue.
670:
671: House Subcommittee on Intellectual Property
672: 2137 Rayburn Bldg
673: Washington, DC 20515
674:
675: Senate Subcommittee on Patents, Trademarks and Copyrights
676: United States Senate
677: Washington, DC 20510
678:
679: (These committees have received lots of mail already; let's give
680: them even more.)
681:
682: Express your opinion! You can make a difference.
683:
684:
685: File: gcc.info, Node: G++ and GCC, Next: Invoking GCC, Prev: Boycott, Up: Top
686:
687: Compile C, C++, or Objective C
688: ******************************
689:
690: The C, C++, and Objective C versions of the compiler are integrated;
691: the GNU C compiler can compile programs written in C, C++, or Objective
692: C.
693:
694: "GCC" is a common shorthand term for the GNU C compiler. This is
695: both the most general name for the compiler, and the name used when the
696: emphasis is on compiling C programs.
697:
698: When referring to C++ compilation, it is usual to call the compiler
699: "G++". Since there is only one compiler, it is also accurate to call
700: it "GCC" no matter what the language context; however, the term "G++"
701: is more useful when the emphasis is on compiling C++ programs.
702:
703: G++ is a *compiler*, not merely a preprocessor. G++ builds object
704: code directly from your C++ program source. There is no intermediate C
705: version of the program. (By contrast, for example, some other
706: implementations use a program that generates a C program from your C++
707: source.) Avoiding an intermediate C representation of the program means
708: that you get better object code, and better debugging information. The
709: GNU debugger, GDB, works with this information in the object code to
710: give you comprehensive C++ source-level editing capabilities (*note C
711: and C++: (gdb.info)C.).
712:
713:
714: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: G++ and GCC, Up: Top
715:
716: GNU CC Command Options
717: **********************
718:
719: When you invoke GNU CC, it normally does preprocessing, compilation,
720: assembly and linking. The "overall options" allow you to stop this
721: process at an intermediate stage. For example, the `-c' option says
722: not to run the linker. Then the output consists of object files output
723: by the assembler.
724:
725: Other options are passed on to one stage of processing. Some options
726: control the preprocessor and others the compiler itself. Yet other
727: options control the assembler and linker; most of these are not
728: documented here, since you rarely need to use any of them.
729:
730: Most of the command line options that you can use with GNU CC are
731: useful for C programs; when an option is only useful with another
732: language (usually C++), the explanation says so explicitly. If the
733: description for a particular option does not mention a source language,
734: you can use that option with all supported languages.
735:
736: *Note Compiling C++ Programs: Invoking G++, for a summary of special
737: options for compiling C++ programs.
738:
739: The `gcc' program accepts options and file names as operands. Many
740: options have multiletter names; therefore multiple single-letter options
741: may *not* be grouped: `-dr' is very different from `-d -r'.
742:
743: You can mix options and other arguments. For the most part, the
744: order you use doesn't matter. Order does matter when you use several
745: options of the same kind; for example, if you specify `-L' more than
746: once, the directories are searched in the order specified.
747:
748: Many options have long names starting with `-f' or with `-W'--for
749: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on.
750: Most of these have both positive and negative forms; the negative form
751: of `-ffoo' would be `-fno-foo'. This manual documents only one of
752: these two forms, whichever one is not the default.
753:
754: * Menu:
755:
756: * Option Summary:: Brief list of all options, without explanations.
757: * Overall Options:: Controlling the kind of output:
758: an executable, object files, assembler files,
759: or preprocessed source.
760: * Invoking G++:: Compiling C++ programs.
761: * C Dialect Options:: Controlling the variant of C language compiled.
762: * C++ Dialect Options:: Variations on C++.
763: * Warning Options:: How picky should the compiler be?
764: * Debugging Options:: Symbol tables, measurements, and debugging dumps.
765: * Optimize Options:: How much optimization?
766: * Preprocessor Options:: Controlling header files and macro definitions.
767: Also, getting dependency information for Make.
768: * Assembler Options:: Passing options to the assembler.
769: * Link Options:: Specifying libraries and so on.
770: * Directory Options:: Where to find header files and libraries.
771: Where to find the compiler executable files.
772: * Target Options:: Running a cross-compiler, or an old version of GNU CC.
773: * Submodel Options:: Specifying minor hardware or convention variations,
774: such as 68010 vs 68020.
775: * Code Gen Options:: Specifying conventions for function calls, data layout
776: and register usage.
777: * Environment Variables:: Env vars that affect GNU CC.
778: * Running Protoize:: Automatically adding or removing function prototypes.
779:
780:
781: File: gcc.info, Node: Option Summary, Next: Overall Options, Up: Invoking GCC
782:
783: Option Summary
784: ==============
785:
786: Here is a summary of all the options, grouped by type. Explanations
787: are in the following sections.
788:
789: *Overall Options*
790: *Note Options Controlling the Kind of Output: Overall Options.
791: -c -S -E -o FILE -pipe -v -x LANGUAGE
792:
793: *C Language Options*
794: *Note Options Controlling C Dialect: C Dialect Options.
795: -ansi -fcond-mismatch -fno-asm -fno-builtin
796: -fsigned-bitfields -fsigned-char
797: -funsigned-bitfields -funsigned-char -fwritable-strings
798: -traditional -traditional-cpp -trigraphs
799:
800: *C++ Language Options*
801: *Note Options Controlling C++ Dialect: C++ Dialect Options.
802: -fall-virtual -fdollars-in-identifiers
803: -felide-constructors -fenum-int-equiv
804: -fexternal-templates -fmemoize-lookups
805: -fno-strict-prototype -fnonnull-objects
806: -fthis-is-variable -nostdinc++
807:
808: *Warning Options*
809: *Note Options to Request or Suppress Warnings: Warning Options.
810: -fsyntax-only -pedantic -pedantic-errors
811: -w -W -Wall -Waggregate-return -Wcast-align
812: -Wcast-qual -Wchar-subscript -Wcomment -Wconversion
813: -Wenum-clash -Werror -Wformat -Wid-clash-LEN
814: -Wimplicit -Wimport -Winline -Wmissing-prototypes
815: -Wnested-externs -Woverloaded-virtual -Wparentheses
816: -Wpointer-arith -Wredundant-decls -Wreturn-type
817: -Wshadow -Wstrict-prototypes -Wswitch
818: -Wtemplate-debugging -Wtraditional -Wtrigraphs
819: -Wuninitialized -Wunused -Wwrite-strings
820:
821: *Debugging Options*
822: *Note Options for Debugging Your Program or GCC: Debugging Options.
823: -a -dLETTERS -fpretend-float
824: -g -gLEVEL -ggdb -gdwarf -gdwarf+
825: -gstabs -gstabs+ -gcoff -gxcoff -gxcoff+
826: -p -pg -save-temps -print-libgcc-file-name
827:
828: *Optimization Options*
829: *Note Options that Control Optimization: Optimize Options.
830: -fcaller-saves -fcse-follow-jumps -fcse-skip-blocks
831: -fdelayed-branch -fexpensive-optimizations
832: -ffast-math -ffloat-store -fforce-addr -fforce-mem
833: -finline-functions -fkeep-inline-functions
834: -fno-default-inline -fno-defer-pop -fno-function-cse
835: -fno-inline -fno-peephole -fomit-frame-pointer
836: -frerun-cse-after-loop -fschedule-insns
837: -fschedule-insns2 -fstrength-reduce -fthread-jumps
838: -funroll-all-loops -funroll-loops
839: -O -O2
840:
841: *Preprocessor Options*
842: *Note Options Controlling the Preprocessor: Preprocessor Options.
843: -AASSERTION -C -dD -dM -dN
844: -DMACRO[=DEFN] -E -H
845: -idirafter DIR
846: -include FILE -imacros FILE
847: -iprefix FILE -iwithprefix DIR
848: -iwithprefixbefore DIR
849: -M -MD -MM -MMD -nostdinc -P -trigraphs -UMACRO
850:
851: *Assembler Option*
852: *Note Passing Options to the Assembler: Assembler Options.
853: -Wa,OPTION
854:
855: *Linker Options*
856: *Note Options for Linking: Link Options.
857: OBJECT-FILE-NAME
858: -lLIBRARY -nostartfiles -nostdlib
859: -static -shared -symbolic
860: -Wl,OPTION -Xlinker OPTION
861: -u SYMBOL
862:
863: *Directory Options*
864: *Note Options for Directory Search: Directory Options.
865: -BPREFIX -IDIR -I- -LDIR
866:
867: *Target Options*
868: *Note Target Options::.
869: -b MACHINE -V VERSION
870:
871: *Machine Dependent Options*
872: *Note Hardware Models and Configurations: Submodel Options.
873: *M680x0 Options*
874: -m68000 -m68020 -m68020-40 -m68030 -m68040 -m68881
875: -mbitfield -mc68000 -mc68020 -mfpa -mnobitfield
876: -mrtd -mshort -msoft-float
877:
878: *VAX Options*
879: -mg -mgnu -munix
880:
881: *SPARC Options*
882: -mepilogue -mfpu -mhard-float
883: -mno-fpu -mno-epilogue -msoft-float
884: -msparclite -mv8
885:
886: *Convex Options*
887: -mc1 -mc2 -mc32 -mc34 -mc38
888: -margcount -mnoargcount
889: -mlong32 -mlong64
890: -mbolatile-cache -mvolatile-nocache
891:
892: *AMD29K Options*
893: -m29000 -m29050 -mbw -mdw -mkernel-registers
894: -mlarge -mnbw -mnodw -mnormal -msmall -mstack-check
895: -muser-registers
896:
897: *M88K Options*
898: -m88000 -m88100 -m88110 -mbig-pic
899: -mcheck-zero-division -mhandle-large-shift
900: -midentify-revision -mno-check-zero-division
901: -mno-ocs-debug-info -mno-ocs-frame-position
902: -mno-optimize-arg-area -mno-serialize-volatile
903: -mno-underscores -mocs-debug-info
904: -mocs-frame-position -moptimize-arg-area
905: -mserialize-volatile -mshort-data-NUM -msvr3
906: -msvr4 -mtrap-large-shift -muse-div-instruction
907: -mversion-03.00 -mwarn-passed-structs
908:
909: *RS/6000 Options and PowerPC*
910: -mcpu=CPU TYPE
911: -mpower -mno-power -mpower2 -pno-power2
912: -mpowerpc -mno-powerpc -mpowerpcsqr -mno-powerpcsqr
913: -mpowerpc64 -mno-powerpc64
914: -mnew-mnemonics -mno-new-mnemonics
915: -mnormal-toc -mminimal-toc -mno-fop-in-toc
916:
917: *RT Options*
918: -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
919: -mfull-fp-blocks -mhc-struct-return -min-line-mul
920: -mminimum-fp-blocks -mnohc-struct-return
921:
922: *MIPS Options*
923: -mcpu=CPU TYPE -mips2 -mips3 -mint64
924: -mlong64 -mlonglong128 -mmips-as -mgas -mrnames
925: -mno-rnames -mgpopt -mno-gpopt -mstats -mno-stats
926: -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile
927: -msoft-float -mhard-float -mabicalls -mno-abicalls
928: -mhalf-pic -mno-half-pic -mlong-calls -mno-long-calls
929: -G NUM -nocpp
930:
931: *i386 Options*
932: -m486 -mno-486 -msoft-float -msvr3-shlib -mieee-fp
933: -mno-fp-ret-in-387
934:
935: *HPPA Options*
936: -mpa-risc-1-0
937: -mpa-risc-1-1
938: -mlong-calls
939: -mdisable-fpregs
940: -mdisable-indexing
941: -mtrailing-colon
942:
943: *Intel 960 Options*
944: -mCPU TYPE
945: -mnumerics -msoft-float
946: -mcode-align -mno-code-align
947: -mleaf-procedures -mno-leaf-procedures
948: -mtail-call -mno-tail-call
949: -mcomplex-addr -mno-complex-addr
950: -mclean-linkage -mno-clean-linkage
951: -mic-compat -mic2.0-compat -mic3.0-compat
952: -masm-compat -mintel-asm
953: -mstrict-align -mno-strict-align
954: -mold-align -mno-old-align
955:
956: *DEC Alpha Options*
957: -mfp-regs -mno-fp-regs -mno-soft-float
958: -msoft-float
959:
960: *Clipper Options*
961: -mc300 -mc400
962:
963: *System V Options*
964: -G -Qy -Qn -YP,PATHS -Ym,DIR
965:
966: *Code Generation Options*
967: *Note Options for Code Generation Conventions: Code Gen Options.
968: -fcall-saved-REG -fcall-used-REG
969: -ffixed-REG -finhibit-size-directive
970: -fno-common -fno-ident
971: -fno-gnu-linker -fpcc-struct-return -fpic -fPIC
972: -freg-struct-return -fshared-data -fshort-enums
973: -fshort-double -fvolatile -fvolatile-global
974: -fverbose-asm
975:
976: * Menu:
977:
978: * Overall Options:: Controlling the kind of output:
979: an executable, object files, assembler files,
980: or preprocessed source.
981: * C Dialect Options:: Controlling the variant of C language compiled.
982: * C++ Dialect Options:: Variations on C++.
983: * Warning Options:: How picky should the compiler be?
984: * Debugging Options:: Symbol tables, measurements, and debugging dumps.
985: * Optimize Options:: How much optimization?
986: * Preprocessor Options:: Controlling header files and macro definitions.
987: Also, getting dependency information for Make.
988: * Assembler Options:: Passing options to the assembler.
989: * Link Options:: Specifying libraries and so on.
990: * Directory Options:: Where to find header files and libraries.
991: Where to find the compiler executable files.
992: * Target Options:: Running a cross-compiler, or an old version of GNU CC.
993:
994:
995: File: gcc.info, Node: Overall Options, Next: Invoking G++, Prev: Option Summary, Up: Invoking GCC
996:
997: Options Controlling the Kind of Output
998: ======================================
999:
1000: Compilation can involve up to four stages: preprocessing, compilation
1001: proper, assembly and linking, always in that order. The first three
1002: stages apply to an individual source file, and end by producing an
1003: object file; linking combines all the object files (those newly
1004: compiled, and those specified as input) into an executable file.
1005:
1006: For any given input file, the file name suffix determines what kind
1007: of compilation is done:
1008:
1009: `FILE.c'
1010: C source code which must be preprocessed.
1011:
1012: `FILE.i'
1013: C source code which should not be preprocessed.
1014:
1015: `FILE.ii'
1016: C++ source code which should not be preprocessed.
1017:
1018: `FILE.m'
1019: Objective-C source code. Note that you must link with the library
1020: `libobjc.a' to make an Objective-C program work.
1021:
1022: `FILE.h'
1023: C header file (not to be compiled or linked).
1024:
1025: `FILE.cc'
1026: `FILE.cxx'
1027: `FILE.C'
1028: C++ source code which must be preprocessed. Note that in `.cxx',
1029: the last two letters must both be literally `x'. Likewise, `.C'
1030: refers to a literal capital C.
1031:
1032: `FILE.s'
1033: Assembler code.
1034:
1035: `FILE.S'
1036: Assembler code which must be preprocessed.
1037:
1038: `OTHER'
1039: An object file to be fed straight into linking. Any file name
1040: with no recognized suffix is treated this way.
1041:
1042: You can specify the input language explicitly with the `-x' option:
1043:
1044: `-x LANGUAGE'
1045: Specify explicitly the LANGUAGE for the following input files
1046: (rather than letting the compiler choose a default based on the
1047: file name suffix). This option applies to all following input
1048: files until the next `-x' option. Possible values for LANGUAGE
1049: are:
1050: c objective-c c++
1051: c-header cpp-output c++-cpp-output
1052: assembler assembler-with-cpp
1053:
1054: `-x none'
1055: Turn off any specification of a language, so that subsequent files
1056: are handled according to their file name suffixes (as they are if
1057: `-x' has not been used at all).
1058:
1059: If you only want some of the stages of compilation, you can use `-x'
1060: (or filename suffixes) to tell `gcc' where to start, and one of the
1061: options `-c', `-S', or `-E' to say where `gcc' is to stop. Note that
1062: some combinations (for example, `-x cpp-output -E' instruct `gcc' to do
1063: nothing at all.
1064:
1065: `-c'
1066: Compile or assemble the source files, but do not link. The linking
1067: stage simply is not done. The ultimate output is in the form of an
1068: object file for each source file.
1069:
1070: By default, the object file name for a source file is made by
1071: replacing the suffix `.c', `.i', `.s', etc., with `.o'.
1072:
1073: Unrecognized input files, not requiring compilation or assembly,
1074: are ignored.
1075:
1076: `-S'
1077: Stop after the stage of compilation proper; do not assemble. The
1078: output is in the form of an assembler code file for each
1079: non-assembler input file specified.
1080:
1081: By default, the assembler file name for a source file is made by
1082: replacing the suffix `.c', `.i', etc., with `.s'.
1083:
1084: Input files that don't require compilation are ignored.
1085:
1086: `-E'
1087: Stop after the preprocessing stage; do not run the compiler
1088: proper. The output is in the form of preprocessed source code,
1089: which is sent to the standard output.
1090:
1091: Input files which don't require preprocessing are ignored.
1092:
1093: `-o FILE'
1094: Place output in file FILE. This applies regardless to whatever
1095: sort of output is being produced, whether it be an executable file,
1096: an object file, an assembler file or preprocessed C code.
1097:
1098: Since only one output file can be specified, it does not make
1099: sense to use `-o' when compiling more than one input file, unless
1100: you are producing an executable file as output.
1101:
1102: If `-o' is not specified, the default is to put an executable file
1103: in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o', its
1104: assembler file in `SOURCE.s', and all preprocessed C source on
1105: standard output.
1106:
1107: `-v'
1108: Print (on standard error output) the commands executed to run the
1109: stages of compilation. Also print the version number of the
1110: compiler driver program and of the preprocessor and the compiler
1111: proper.
1112:
1113: `-pipe'
1114: Use pipes rather than temporary files for communication between the
1115: various stages of compilation. This fails to work on some systems
1116: where the assembler is unable to read from a pipe; but the GNU
1117: assembler has no trouble.
1118:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.