|
|
1.1 root 1: This is Info file gcc.info, produced by Makeinfo-1.43 from the input
2: file gcc.texi.
3:
4: This file documents the use and the internals of the GNU compiler.
5:
6: Copyright (C) 1988, 1989, 1992 Free Software Foundation, Inc.
7:
8: Permission is granted to make and distribute verbatim copies of
9: this manual provided the copyright notice and this permission notice
10: are preserved on all copies.
11:
12: Permission is granted to copy and distribute modified versions of
13: this manual under the conditions for verbatim copying, provided also
14: that the section entitled "GNU General Public License" is included
15: exactly as in the original, and provided that the entire resulting
16: derived work is distributed under the terms of a permission notice
17: identical to this one.
18:
19: Permission is granted to copy and distribute translations of this
20: manual into another language, under the above conditions for modified
21: versions, except that the section entitled "GNU General Public
22: License" and this permission notice may be included in translations
23: approved by the Free Software Foundation instead of in the original
24: English.
25:
26:
27: File: gcc.info, Node: Top, Next: Copying, Up: (DIR)
28:
29: Introduction
30: ************
31:
32: This manual documents how to run, install and port the GNU C
33: compiler, as well as its new features and incompatibilities, and how
34: to report bugs. It corresponds to GNU CC version 2.0.
35:
36: * Menu:
37:
38: * Copying:: GNU General Public License says
39: how you can copy and share GNU CC.
40: * Contributors:: People who have contributed to GNU CC.
41: * Boycott:: Protect your freedom--fight "look and feel".
42: * Invoking GCC:: Command options supported by `gcc'.
43: * Installation:: How to configure, compile and install GNU CC.
44: * Trouble:: If you have trouble installing GNU CC.
45: * Service:: How to find suppliers of support for GNU CC.
46: * Incompatibilities:: Incompatibilities of GNU CC.
47: * Extensions:: GNU extensions to the C language.
48: * Bugs:: How to report bugs (if you want to get them fixed).
49: * VMS:: Using GNU CC on VMS.
50: * Portability:: Goals of GNU CC's portability features.
51: * Interface:: Function-call interface of GNU CC output.
52: * Passes:: Order of passes, what they do, and what each file is for.
53: * RTL:: The intermediate representation that most passes work on.
54: * Machine Desc:: How to write machine description instruction patterns.
55: * Machine Macros:: How to write the machine description C macros.
56: * Config:: Writing the `xm-MACHINE.h' file.
57: * Index:: Index of concepts and symbol names.
58:
59:
60: File: gcc.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top
61:
62: GNU GENERAL PUBLIC LICENSE
63: **************************
64:
65: Version 2, June 1991
66:
67: Copyright (C) 1989, 1991 Free Software Foundation, Inc.
68: 675 Mass Ave, Cambridge, MA 02139, USA
69:
70: Everyone is permitted to copy and distribute verbatim copies
71: of this license document, but changing it is not allowed.
72:
73: Preamble
74: ========
75:
76: The licenses for most software are designed to take away your
77: freedom to share and change it. By contrast, the GNU General Public
78: License is intended to guarantee your freedom to share and change free
79: software--to make sure the software is free for all its users. This
80: General Public License applies to most of the Free Software
81: Foundation's software and to any other program whose authors commit to
82: using it. (Some other Free Software Foundation software is covered by
83: the GNU Library General Public License instead.) You can apply it to
84: your programs, too.
85:
86: When we speak of free software, we are referring to freedom, not
87: price. Our General Public Licenses are designed to make sure that you
88: have the freedom to distribute copies of free software (and charge for
89: this service if you wish), that you receive source code or can get it
90: if you want it, that you can change the software or use pieces of it
91: in new free programs; and that you know you can do these things.
92:
93: To protect your rights, we need to make restrictions that forbid
94: anyone to deny you these rights or to ask you to surrender the rights.
95: These restrictions translate to certain responsibilities for you if you
96: distribute copies of the software, or if you modify it.
97:
98: For example, if you distribute copies of such a program, whether
99: gratis or for a fee, you must give the recipients all the rights that
100: you have. You must make sure that they, too, receive or can get the
101: source code. And you must show them these terms so they know their
102: rights.
103:
104: We protect your rights with two steps: (1) copyright the software,
105: and (2) offer you this license which gives you legal permission to
106: copy, distribute and/or modify the software.
107:
108: Also, for each author's protection and ours, we want to make certain
109: that everyone understands that there is no warranty for this free
110: software. If the software is modified by someone else and passed on,
111: we want its recipients to know that what they have is not the
112: original, so that any problems introduced by others will not reflect
113: on the original authors' reputations.
114:
115: Finally, any free program is threatened constantly by software
116: patents. We wish to avoid the danger that redistributors of a free
117: program will individually obtain patent licenses, in effect making the
118: program proprietary. To prevent this, we have made it clear that any
119: patent must be licensed for everyone's free use or not licensed at all.
120:
121: The precise terms and conditions for copying, distribution and
122: modification follow.
123:
124: TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
125:
126: 1. This License applies to any program or other work which contains
127: a notice placed by the copyright holder saying it may be
128: distributed under the terms of this General Public License. The
129: "Program", below, refers to any such program or work, and a "work
130: based on the Program" means either the Program or any derivative
131: work under copyright law: that is to say, a work containing the
132: Program or a portion of it, either verbatim or with modifications
133: and/or translated into another language. (Hereinafter,
134: translation is included without limitation in the term
135: "modification".) Each licensee is addressed as "you".
136:
137: Activities other than copying, distribution and modification
138: are not covered by this License; they are outside its scope. The
139: act of running the Program is not restricted, and the output from
140: the Program is covered only if its contents constitute a work
141: based on the Program (independent of having been made by running
142: the Program). Whether that is true depends on what the Program
143: does.
144:
145: 2. You may copy and distribute verbatim copies of the Program's
146: source code as you receive it, in any medium, provided that you
147: conspicuously and appropriately publish on each copy an
148: appropriate copyright notice and disclaimer of warranty; keep
149: intact all the notices that refer to this License and to the
150: absence of any warranty; and give any other recipients of the
151: Program a copy of this License along with the Program.
152:
153: You may charge a fee for the physical act of transferring a
154: copy, and you may at your option offer warranty protection in
155: exchange for a fee.
156:
157: 3. You may modify your copy or copies of the Program or any portion
158: of it, thus forming a work based on the Program, and copy and
159: distribute such modifications or work under the terms of Section 1
160: above, provided that you also meet all of these conditions:
161:
162: a. You must cause the modified files to carry prominent notices
163: stating that you changed the files and the date of any
164: change.
165:
166: b. You must cause any work that you distribute or publish, that
167: in whole or in part contains or is derived from the Program
168: or any part thereof, to be licensed as a whole at no charge
169: to all third parties under the terms of this License.
170:
171: c. If the modified program normally reads commands interactively
172: when run, you must cause it, when started running for such
173: interactive use in the most ordinary way, to print or
174: display an announcement including an appropriate copyright
175: notice and a notice that there is no warranty (or else,
176: saying that you provide a warranty) and that users may
177: redistribute the program under these conditions, and telling
178: the user how to view a copy of this License. (Exception: if
179: the Program itself is interactive but does not normally
180: print such an announcement, your work based on the Program
181: is not required to print an announcement.)
182:
183: These requirements apply to the modified work as a whole. If
184: identifiable sections of that work are not derived from the
185: Program, and can be reasonably considered independent and
186: separate works in themselves, then this License, and its terms,
187: do not apply to those sections when you distribute them as
188: separate works. But when you distribute the same sections as
189: part of a whole which is a work based on the Program, the
190: distribution of the whole must be on the terms of this License,
191: whose permissions for other licensees extend to the entire whole,
192: and thus to each and every part regardless of who wrote it.
193:
194: Thus, it is not the intent of this section to claim rights or
195: contest your rights to work written entirely by you; rather, the
196: intent is to exercise the right to control the distribution of
197: derivative or collective works based on the Program.
198:
199: In addition, mere aggregation of another work not based on the
200: Program with the Program (or with a work based on the Program) on
201: a volume of a storage or distribution medium does not bring the
202: other work under the scope of this License.
203:
204: 4. You may copy and distribute the Program (or a work based on it,
205: under Section 2) in object code or executable form under the
206: terms of Sections 1 and 2 above provided that you also do one of
207: the following:
208:
209: a. Accompany it with the complete corresponding machine-readable
210: source code, which must be distributed under the terms of
211: Sections 1 and 2 above on a medium customarily used for
212: software interchange; or,
213:
214: b. Accompany it with a written offer, valid for at least three
215: years, to give any third party, for a charge no more than
216: your cost of physically performing source distribution, a
217: complete machine-readable copy of the corresponding source
218: code, to be distributed under the terms of Sections 1 and 2
219: above on a medium customarily used for software interchange;
220: or,
221:
222: c. Accompany it with the information you received as to the
223: offer to distribute corresponding source code. (This
224: alternative is allowed only for noncommercial distribution
225: and only if you received the program in object code or
226: executable form with such an offer, in accord with
227: Subsection b above.)
228:
229: The source code for a work means the preferred form of the
230: work for making modifications to it. For an executable work,
231: complete source code means all the source code for all modules it
232: contains, plus any associated interface definition files, plus
233: the scripts used to control compilation and installation of the
234: executable. However, as a special exception, the source code
235: distributed need not include anything that is normally
236: distributed (in either source or binary form) with the major
237: components (compiler, kernel, and so on) of the operating system
238: on which the executable runs, unless that component itself
239: accompanies the executable.
240:
241: If distribution of executable or object code is made by
242: offering access to copy from a designated place, then offering
243: equivalent access to copy the source code from the same place
244: counts as distribution of the source code, even though third
245: parties are not compelled to copy the source along with the
246: object code.
247:
248: 5. You may not copy, modify, sublicense, or distribute the Program
249: except as expressly provided under this License. Any attempt
250: otherwise to copy, modify, sublicense or distribute the Program is
251: void, and will automatically terminate your rights under this
252: License. However, parties who have received copies, or rights,
253: from you under this License will not have their licenses
254: terminated so long as such parties remain in full compliance.
255:
256: 6. You are not required to accept this License, since you have not
257: signed it. However, nothing else grants you permission to modify
258: or distribute the Program or its derivative works. These actions
259: are prohibited by law if you do not accept this License.
260: Therefore, by modifying or distributing the Program (or any work
261: based on the Program), you indicate your acceptance of this
262: License to do so, and all its terms and conditions for copying,
263: distributing or modifying the Program or works based on it.
264:
265: 7. Each time you redistribute the Program (or any work based on the
266: Program), the recipient automatically receives a license from the
267: original licensor to copy, distribute or modify the Program
268: subject to these terms and conditions. You may not impose any
269: further restrictions on the recipients' exercise of the rights
270: granted herein. You are not responsible for enforcing compliance
271: by third parties to this License.
272:
273: 8. If, as a consequence of a court judgment or allegation of patent
274: infringement or for any other reason (not limited to patent
275: issues), conditions are imposed on you (whether by court order,
276: agreement or otherwise) that contradict the conditions of this
277: License, they do not excuse you from the conditions of this
278: License. If you cannot distribute so as to satisfy
279: simultaneously your obligations under this License and any other
280: pertinent obligations, then as a consequence you may not
281: distribute the Program at all. For example, if a patent license
282: would not permit royalty-free redistribution of the Program by
283: all those who receive copies directly or indirectly through you,
284: then the only way you could satisfy both it and this License
285: would be to refrain entirely from distribution of the Program.
286:
287: If any portion of this section is held invalid or
288: unenforceable under any particular circumstance, the balance of
289: the section is intended to apply and the section as a whole is
290: intended to apply in other circumstances.
291:
292: It is not the purpose of this section to induce you to
293: infringe any patents or other property right claims or to contest
294: validity of any such claims; this section has the sole purpose of
295: protecting the integrity of the free software distribution
296: system, which is implemented by public license practices. Many
297: people have made generous contributions to the wide range of
298: software distributed through that system in reliance on
299: consistent application of that system; it is up to the
300: author/donor to decide if he or she is willing to distribute
301: software through any other system and a licensee cannot impose
302: that choice.
303:
304: This section is intended to make thoroughly clear what is
305: believed to be a consequence of the rest of this License.
306:
307: 9. If the distribution and/or use of the Program is restricted in
308: certain countries either by patents or by copyrighted interfaces,
309: the original copyright holder who places the Program under this
310: License may add an explicit geographical distribution limitation
311: excluding those countries, so that distribution is permitted only
312: in or among countries not thus excluded. In such case, this
313: License incorporates the limitation as if written in the body of
314: this License.
315:
316: 10. The Free Software Foundation may publish revised and/or new
317: versions of the General Public License from time to time. Such
318: new versions will be similar in spirit to the present version,
319: but may differ in detail to address new problems or concerns.
320:
321: Each version is given a distinguishing version number. If the
322: Program specifies a version number of this License which applies
323: to it and "any later version", you have the option of following
324: the terms and conditions either of that version or of any later
325: version published by the Free Software Foundation. If the
326: Program does not specify a version number of this License, you
327: may choose any version ever published by the Free Software
328: Foundation.
329:
330: 11. If you wish to incorporate parts of the Program into other free
331: programs whose distribution conditions are different, write to
332: the author to ask for permission. For software which is
333: copyrighted by the Free Software Foundation, write to the Free
334: Software Foundation; we sometimes make exceptions for this. Our
335: decision will be guided by the two goals of preserving the free
336: status of all derivatives of our free software and of promoting
337: the sharing and reuse of software generally.
338:
339: NO WARRANTY
340:
341: 12. 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: 13. 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
358: OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
359: YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
360: ANY 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: Appendix: 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 type `show w'.
403: This is free software, and you are welcome to redistribute it
404: under certain conditions; type `show c' for details.
405:
406: The hypothetical commands `show w' and `show c' should show the
407: appropriate parts of the General Public License. Of course, the
408: commands you use may be called something other than `show w' and `show
409: c'; they could even be mouse-clicks or menu items--whatever suits your
410: program.
411:
412: You should also get your employer (if you work as a programmer) or
413: your school, if any, to sign a "copyright disclaimer" for the program,
414: if necessary. Here is a sample; alter the names:
415:
416: Yoyodyne, Inc., hereby disclaims all copyright interest in the program
417: `Gnomovision' (which makes passes at compilers) written by James Hacker.
418:
419: SIGNATURE OF TY COON, 1 April 1989
420: Ty Coon, President of Vice
421:
422: This General Public License does not permit incorporating your
423: program into proprietary programs. If your program is a subroutine
424: library, you may consider it more useful to permit linking proprietary
425: applications with the library. If this is what you want to do, use
426: the GNU Library General Public License instead of this License.
427:
428:
429: File: gcc.info, Node: Contributors, Next: Boycott, Prev: Copying, Up: Top
430:
431: Contributors to GNU CC
432: **********************
433:
434: In addition to Richard Stallman, several people have written parts
435: of GNU CC.
436:
437: * The idea of using RTL and some of the optimization ideas came
438: from the U. of Arizona Portable Optimizer, written by Jack
439: Davidson and Christopher Fraser. See "Register Allocation and
440: Exhaustive Peephole Optimization", Software Practice and
441: Experience 14 (9), Sept. 1984, 857-866.
442:
443: * Paul Rubin wrote most of the preprocessor.
444:
445: * Leonard Tower wrote parts of the parser, RTL generator, and RTL
446: definitions, and of the Vax machine description.
447:
448: * Ted Lemon wrote parts of the RTL reader and printer.
449:
450: * Jim Wilson implemented loop strength reduction and some other
451: loop optimizations.
452:
453: * Nobuyuki Hikichi of Software Research Associates, Tokyo,
454: contributed the support for the Sony NEWS machine.
455:
456: * Charles LaBrec contributed the support for the Integrated
457: Solutions 68020 system.
458:
459: * Michael Tiemann of Cygnus Support wrote the front end for C++, as
460: well as the support for inline functions and instruction
461: scheduling. Also the descriptions of the National Semiconductor
462: 32000 series cpu, the SPARC cpu and part of the Motorola 88000
463: 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
478: HP-UX 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: * Richard Kenner of New York University wrote the machine
495: descriptions for the AMD 29000, the IBM RT PC, and the IBM
496: RS/6000 as well as the support for instruction attributes. He
497: also made changes to better support RISC processors including
498: changes to common subexpression elimination, strength reduction,
499: function calling sequence handling, and condition code support,
500: in addition to generalizing the code for frame pointer
501: elimination.
502:
503: * Richard Kenner and Michael Tiemann jointly developed reorg.c, the
504: delay slot scheduler.
505:
506: * Mike Meissner and Tom Wood of Data General finished the port to
507: the Motorola 88000.
508:
509: * Masanobu Yuhara of Fujitsu Laboratories implemented the machine
510: description for the Tron architecture (specifically, the Gmicro).
511:
512: * NeXT, Inc. donated the front end that supports the Objective C
513: language.
514:
515: * James van Artsdalen wrote the code that makes efficient use of
516: the Intel 80387 register stack.
517:
518: * Mike Meissner at the Open Software Foundation finished the port
519: to the MIPS cpu, including adding ECOFF debug support.
520:
521: * Ron Guilmette implemented the protoize and unprotoize tools, the
522: support for Dwarf symbolic debugging information, and much of the
523: support for System V Release 4. He has also worked heavily on
524: the Intel 386 and 860 support.
525:
526:
527: File: gcc.info, Node: Boycott, Next: Invoking GCC, Prev: Contributors, Up: Top
528:
529: Protect Your Freedom--Fight "Look And Feel"
530: *******************************************
531:
532: This section is a political message from the League for
533: Programming Freedom to the users of GNU CC. It is included here
534: as an expression of support for the League on the part of the
535: Free Software Foundation.
536:
537: Apple, Lotus and Xerox are trying to create a new form of legal
538: monopoly: a copyright on a class of user interfaces. These monopolies
539: would cause serious problems for users and developers of computer
540: software and systems.
541:
542: Until a few years ago, the law seemed clear: no one could restrict
543: others from using a user interface; programmers were free to implement
544: any interface they chose. Imitating interfaces, sometimes with
545: changes, was standard practice in the computer field. The interfaces
546: we know evolved gradually in this way; for example, the Macintosh user
547: interface drew ideas from the Xerox interface, which in turn drew on
548: work done at Stanford and SRI. 1-2-3 imitated VisiCalc, and dBase
549: imitated a database program from JPL.
550:
551: Most computer companies, and nearly all computer users, were happy
552: with this state of affairs. The companies that are suing say it does
553: not offer "enough incentive" to develop their products, but they must
554: have considered it "enough" when they made their decision to do so. It
555: seems they are not satisfied with the opportunity to continue to
556: compete in the marketplace--not even with a head start.
557:
558: If Xerox, Lotus, and Apple are permitted to make law through the
559: courts, the precedent will hobble the software industry:
560:
561: * Gratuitous incompatibilities will burden users. Imagine if each
562: car manufacturer had to arrange the pedals in a different order.
563:
564: * Software will become and remain more expensive. Users will be
565: "locked in" to proprietary interfaces, for which there is no real
566: competition.
567:
568: * Large companies have an unfair advantage wherever lawsuits become
569: commonplace. Since they can easily afford to sue, they can
570: intimidate small companies with threats even when they don't
571: really have a case.
572:
573: * User interface improvements will come slower, since incremental
574: evolution through creative imitation will no longer be permitted.
575:
576: * Even Apple, etc., will find it harder to make improvements if
577: they can no longer adapt the good ideas that others introduce, for
578: fear of weakening their own legal positions. Some users suggest
579: that this stagnation may already have started.
580:
581: * If you use GNU software, you might find it of some concern that
582: user interface copyright will make it hard for the Free Software
583: Foundation to develop programs compatible with the interfaces
584: that you already know.
585:
586: To protect our freedom from lawsuits like these, a group of
587: programmers and users have formed a new grass-roots political
588: organization, the League for Programming Freedom.
589:
590: The purpose of the League is to oppose new monopolistic practices
591: such as user-interface copyright and software patents; it calls for a
592: return to the legal policies of the recent past, in which these
593: practices were not allowed. The League is not concerned with free
594: software as an issue, and not affiliated with the Free Software
595: Foundation.
596:
597: The League's membership rolls include John McCarthy, inventor of
598: Lisp, Marvin Minsky, founder of the Artificial Intelligence lab, Guy L.
599: Steele, Jr., author of well-known books on Lisp and C, as well as
600: Richard Stallman, the developer of GNU CC. Please join and add your
601: name to the list. Membership dues in the League are $42 per year for
602: programmers, managers and professionals; $10.50 for students; $21 for
603: others.
604:
605: The League needs both activist members and members who only pay
606: their dues.
607:
608: To join, or for more information, phone (617) 492-0023 or write to:
609:
610: League for Programming Freedom
611: 1 Kendall Square #143
612: P.O. Box 9171
613: Cambridge, MA 02139
614:
615: You can also send electronic mail to `[email protected]'.
616:
617: Here are some suggestions from the League for things you can do to
618: protect your freedom to write programs:
619:
620: * Don't buy from Xerox, Lotus or Apple. Buy from their competitors
621: or from the defendants they are suing.
622:
623: * Don't develop software to work with the systems made by these
624: companies.
625:
626: * Port your existing software to competing systems, so that you
627: encourage users to switch.
628:
629: * Write letters to company presidents to let them know their conduct
630: is unacceptable.
631:
632: * Tell your friends and colleagues about this issue and how it
633: threatens to ruin the computer industry.
634:
635: * Above all, don't work for the look-and-feel plaintiffs, and don't
636: accept contracts from them.
637:
638: * Write to Congress to explain the importance of this issue.
639:
640: House Subcommittee on Intellectual Property
641: 2137 Rayburn Bldg
642: Washington, DC 20515
643:
644: Senate Subcommittee on Patents, Trademarks and Copyrights
645: United States Senate
646: Washington, DC 20510
647:
648: (These committees have received lots of mail already; let's give
649: them even more.)
650:
651: Express your opinion! You can make a difference.
652:
653:
654: File: gcc.info, Node: Invoking GCC, Next: Installation, Prev: Boycott, Up: Top
655:
656: GNU CC Command Options
657: **********************
658:
659: When you invoke GNU CC, it normally does preprocessing, compilation,
660: assembly and linking. The "overall options" allow you to stop this
661: process at an intermediate stage. For example, the `-c' option says
662: not to run the linker. Then the output consists of object files
663: output by the assembler.
664:
665: Other options are passed on to one stage of processing. Some
666: options control the preprocessor and others the compiler itself. Yet
667: other options control the assembler and linker; most of these are not
668: documented here, since you rarely need to use any of them.
669:
670: The GNU C compiler uses a command syntax much like the Unix C
671: compiler. The `gcc' program accepts options and file names as
672: operands. Multiple single-letter options may *not* be grouped: `-dr'
673: is very different from `-d -r'.
674:
675: You can mix options and other arguments. For the most part, the
676: order you use doesn't matter; `gcc' reorders the command-line options
677: so that the choices specified by option flags are applied to all input
678: files. Order does matter when you use several options of the same
679: kind; for example, if you specify `-L' more than once, the directories
680: are searched in the order specified.
681:
682: Many options have long names starting with `-f' or with `-W'--for
683: example, `-fforce-mem', `-fstrength-reduce', `-Wformat' and so on.
684: Most of these have both positive and negative forms; the negative form
685: of `-ffoo' would be `-fno-foo'. This manual documents only one of
686: these two forms, whichever one is not the default.
687:
688: Here is a summary of all the options, grouped by type.
689: Explanations are in the following sections.
690:
691: *Overall Options*
692: *Note Options Controlling the Kind of Output: Overall Options.
693: -c -S -E -o FILE -pipe -v -x LANGUAGE
694:
695: *Language Options*
696: *Note Options Controlling Dialect: Dialect Options.
697: -ansi -fbuiltin -fcond-mismatch -fno-asm
698: -fsigned-bitfields -fsigned-char
699: -funsigned-bitfields -funsigned-char -fwritable-strings
700: -traditional -traditional-cpp -trigraphs
701:
702: *Warning Options*
703: *Note Options to Request or Suppress Warnings: Warning Options.
704: -fsyntax-only -pedantic -pedantic-errors
705: -w -W -Wall -Waggregate-return
706: -Wcast-align -Wcast-qual -Wcomment -Wconversion -Werror
707: -Wformat -Wid-clash-LEN -Wimplicit -Wmissing-prototypes
708: -Wno-parentheses -Wpointer-arith -Wreturn-type -Wshadow
709: -Wstrict-prototypes -Wswitch -Wtraditional -Wtrigraphs
710: -Wuninitialized -Wunused -Wwrite-strings -Wchar-subscripts
711:
712: *Debugging Options*
713: *Note Options for Debugging Your Program or GCC: Debugging
714: Options.
715: -a -dLETTERS -fpretend-float
716: -g -ggdb -gdwarf -gstabs -gstabs+ -gcoff
717: -p -pg -save-temps
718:
719: *Optimization Options*
720: *Note Options that Control Optimization: Optimize Options.
721: -fcaller-saves -fcse-follow-jumps -fdelayed-branch
722: -fexpensive-optimizations -ffloat-store -fforce-addr -fforce-mem
723: -finline -finline-functions -fkeep-inline-functions
724: -fno-defer-pop -fno-function-cse -fomit-frame-pointer
725: -frerun-cse-after-loop -fschedule-insns -fschedule-insns2
726: -fstrength-reduce -fthread-jumps
727: -funroll-all-loops -funroll-loops
728: -O -O2
729:
730: *Preprocessor Options*
731: *Note Options Controlling the Preprocessor: Preprocessor Options.
732: -C -dD -dM -dN
733: -DMACRO[=DEFN] -E -H
734: -include FILE -imacros FILE
735: -M -MD -MM -MMD -nostdinc -P -trigraphs -UMACRO
736:
737: *Linker Options*
738: *Note Options for Linking: Link Options.
739: OBJECT-FILE-NAME
740: -lLIBRARY -nostdlib -static
741:
742: *Directory Options*
743: *Note Options for Directory Search: Directory Options.
744: -BPREFIX -IDIR -I- -LDIR
745:
746: *Target Options*
747: *Note Target Machine and Compiler Version: Target Options.
748: -b MACHINE -V VERSION
749:
750: *Machine Dependent Options*
751: *Note Hardware Models and Configurations: Submodel Options.
752: *M680x0 Options*
753: -m68000 -m68020 -m68881 -mbitfield -mc68000 -mc68020 -mfpa
754: -mnobitfield -mrtd -mshort -msoft-float
755:
756: *VAX Options*
757: -mg -mgnu -munix
758:
759: *SPARC Options*
760: -mfpu -mno-epilogue
761:
762: *Convex Options*
763: -margcount -mc1 -mc2 -mnoargcount
764:
765: *AMD29K Options*
766: -m29000 -m29050 -mbw -mdw -mkernel-registers -mlarge
767: -mnbw -mnodw -msmall -mstack-check -muser-registers
768:
769: *M88K Options*
770: -m88000 -m88100 -m88110 -mbig-pic -mcheck-zero-division
771: -mhandle-large-shift -midentify-revision
772: -mno-check-zero-division -mno-ocs-debug-info
773: -mno-ocs-frame-position -mno-optimize-arg-area -mno-underscores
774: -mocs-debug-info -mocs-frame-position -moptimize-arg-area
775: -mshort-data-NUM -msvr3 -msvr4 -mtrap-large-shift
776: -muse-div-instruction -mversion-03.00 -mwarn-passed-structs
777:
778: *RS/6000 Options*
779: -mfp-in-toc -mno-fop-in-toc
780:
781: *RT Options*
782: -mcall-lib-mul -mfp-arg-in-fpregs -mfp-arg-in-gregs
783: -mfull-fp-blocks -mhc-struct-return -min-line-mul
784: -mminimum-fp-blocks -mnohc-struct-return
785:
786: *MIPS Options*
787: -mcpu=CPU TYPE -mips2 -mips3 -mint64 -mlong64 -mlonglong128
788: -mmips-as -mgas -mrnames -mno-rnames -mgpopt -mno-gpopt -mstats
789: -mno-stats -mmemcpy -mno-memcpy -mno-mips-tfile -mmips-tfile
790: -msoft-float -mhard-float -mabicalls -mno-abicalls -mhalf-pic
791: -mno-half-pic -G NUM
792:
793: *Code Generation Options*
794: *Note Options for Code Generation Conventions: Code Gen Options.
795: -fcall-saved-REG -fcall-used-REG -ffixed-REG
796: -fno-common -fpcc-struct-return -fpic -fPIC -fshared-data
797: -fshort-enums -fshort-double -fvolatile
798:
799: * Menu:
800:
801: * Overall Options:: Controlling the kind of output:
802: an executable, object files, assembler files,
803: or preprocessed source.
804: * Dialect Options:: Controlling the variant of C language compiled.
805: * Warning Options:: How picky should the compiler be?
806: * Debugging Options:: Symbol tables, measurements, and debugging dumps.
807: * Optimize Options:: How much optimization?
808: * Preprocessor Options:: Controlling header files and macro definitions.
809: Also, getting dependency information for Make.
810: * Link Options:: Specifying libraries and so on.
811: * Directory Options:: Where to find header files and libraries.
812: Where to find the compiler executable files.
813: * Target Options:: Running a cross-compiler, or an old version of GNU CC.
814: * Submodel Options:: Specifying minor hardware or convention variations,
815: such as 68010 vs 68020.
816: * Code Gen Options:: Specifying conventions for function calls, data layout
817: and register usage.
818: * Environment Variables:: Env vars that affect GNU CC.
819:
820:
821: File: gcc.info, Node: Overall Options, Next: Dialect Options, Prev: Invoking GCC, Up: Invoking GCC
822:
823: Options Controlling the Kind of Output
824: ======================================
825:
826: Compilation can involve up to four stages: preprocessing,
827: compilation proper, assembly and linking, always in that order. The
828: first three stages apply to an individual source file, and end by
829: producing an object file; linking combines all the object files (those
830: newly compiled, and those specified as input) into an executable file.
831:
832: For any given input file, the file name suffix determines what kind
833: of compilation is done:
834:
835: `FILE.c'
836: C source code which must be preprocessed.
837:
838: `FILE.i'
839: C source code which should not be preprocessed.
840:
841: `FILE.m'
842: Objective-C source code
843:
844: `FILE.h'
845: C header file (not to be compiled or linked).
846:
847: `FILE.cc'
848: `FILE.cxx'
849: `FILE.C'
850: C++ source code which must be preprocessed.
851:
852: `FILE.s'
853: Assembler code.
854:
855: `FILE.S'
856: Assembler code which must be preprocessed.
857:
858: `OTHER'
859: An object file to be fed straight into linking. Any file name
860: with no recognized suffix is treated this way.
861:
862: You can specify the input language explicitly with the `-x' option:
863:
864: `-x LANGUAGE'
865: Specify explicitly the LANGUAGE for the following input files
866: (rather than choosing a default based on the file name suffix).
867: This option applies to all following input files until the next
868: `-x' option. Possible values of LANGUAGE are `c', `objective-c',
869: `c-header', `c++', `cpp-output', `assembler', and
870: `assembler-with-cpp'.
871:
872: `-x none'
873: Turn off any specification of a language, so that subsequent
874: files are handled according to their file name suffixes (as they
875: are if `-x' has not been used at all).
876:
877: If you only want some of the stages of compilation, you can use
878: `-x' (or filename suffixes) to tell `gcc' where to start, and one of
879: the options `-c', `-S', or `-E' to say where `gcc' is to stop. Note
880: that some combinations (for example, `-x cpp-output -E' instruct `gcc'
881: to do nothing at all.
882:
883: `-c'
884: Compile or assemble the source files, but do not link. The
885: linking stage simply is not done. The ultimate output is in the
886: form of an object file for each source file.
887:
888: By default, the object file name for a source file is made by
889: replacing the suffix `.c', `.i', `.s', etc., with `.o'.
890:
891: Unrecognized input files, not requiring compilation or assembly,
892: are ignored.
893:
894: `-S'
895: Stop after the stage of compilation proper; do not assemble. The
896: output is in the form of an assembler code file for each
897: non-assembler input file specified.
898:
899: By default, the assembler file name for a source file is made by
900: replacing the suffix `.c', `.i', etc., with `.s'.
901:
902: Input files that don't require compilation are ignored.
903:
904: `-E'
905: Stop after the preprocessing stage; do not run the compiler
906: proper. The output is in the form of preprocessed source code,
907: which is sent to the standard output.
908:
909: Input files which don't require preprocessing are ignored.
910:
911: `-o FILE'
912: Place output in file FILE. This applies regardless to whatever
913: sort of output is being produced, whether it be an executable
914: file, an object file, an assembler file or preprocessed C code.
915:
916: Since only one output file can be specified, it does not make
917: sense to use `-o' when compiling more than one input file, unless
918: you are producing an executable file as output.
919:
920: If `-o' is not specified, the default is to put an executable file
921: in `a.out', the object file for `SOURCE.SUFFIX' in `SOURCE.o',
922: its assembler file in `SOURCE.s', and all preprocessed C source
923: on standard output.
924:
925: `-v'
926: Print (on standard error output) the commands executed to run the
927: stages of compilation. Also print the version number of the
928: compiler driver program and of the preprocessor and the compiler
929: proper.
930:
931: `-pipe'
932: Use pipes rather than temporary files for communication between
933: the various stages of compilation. This fails to work on some
934: systems where the assembler is unable to read from a pipe; but
935: the GNU assembler has no trouble.
936:
937:
938: File: gcc.info, Node: Dialect Options, Next: Warning Options, Prev: Overall Options, Up: Invoking GCC
939:
940: Options Controlling Dialect
941: ===========================
942:
943: The following options control the dialect of C that the compiler
944: accepts:
945:
946: `-ansi'
947: Support all ANSI standard C programs.
948:
949: This turns off certain features of GNU C that are incompatible
950: with ANSI C, such as the `asm', `inline' and `typeof' keywords,
951: and predefined macros such as `unix' and `vax' that identify the
952: type of system you are using. It also enables the undesirable and
953: rarely used ANSI trigraph feature, and disallows `$' as part of
954: identifiers.
955:
956: The alternate keywords `__asm__', `__extension__', `__inline__'
957: and `__typeof__' continue to work despite `-ansi'. You would not
958: want to use them in an ANSI C program, of course, but it useful
959: to put them in header files that might be included in
960: compilations done with `-ansi'. Alternate predefined macros such
961: as `__unix__' and `__vax__' are also available, with or without
962: `-ansi'.
963:
964: The `-ansi' option does not cause non-ANSI programs to be
965: rejected gratuitously. For that, `-pedantic' is required in
966: addition to `-ansi'. *Note Warning Options::.
967:
968: The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
969: is used. Some header files may notice this macro and refrain
970: from declaring certain functions or defining certain macros that
971: the ANSI standard doesn't call for; this is to avoid interfering
972: with any programs that might use these names for other things.
973:
974: `-fno-asm'
975: Do not recognize `asm', `inline' or `typeof' as a keyword. These
976: words may then be used as identifiers. You can use `__asm__',
977: `__inline__' and `__typeof__' instead. `-ansi' implies
978: `-fno-asm'.
979:
980: `-fno-builtin'
981: Don't recognize non-ANSI built-in functions. `-ansi' also has
982: this effect. Currently, the only function affected is `alloca'.
983:
984: `-trigraphs'
985: Support ANSI C trigraphs. You don't want to know about this
986: brain-damage. The `-ansi' option implies `-trigraphs'.
987:
988: `-traditional'
989: Attempt to support some aspects of traditional C compilers.
990: Specifically:
991:
992: * All `extern' declarations take effect globally even if they
993: are written inside of a function definition. This includes
994: implicit declarations of functions.
995:
996: * The keywords `typeof', `inline', `signed', `const' and
997: `volatile' are not recognized. (You can still use the
998: alternative keywords such as `__typeof__', `__inline__', and
999: so on.)
1000:
1001: * Comparisons between pointers and integers are always allowed.
1002:
1003: * Integer types `unsigned short' and `unsigned char' promote
1004: to `unsigned int'.
1005:
1006: * Out-of-range floating point literals are not an error.
1007:
1008: * String "constants" are not necessarily constant; they are
1009: stored in writable space, and identical looking constants
1010: are allocated separately. (This is the same as the effect of
1011: `-fwritable-strings'.)
1012:
1013: * All automatic variables not declared `register' are
1014: preserved by `longjmp'. Ordinarily, GNU C follows ANSI C:
1015: automatic variables not declared `volatile' may be clobbered.
1016:
1017: * In the preprocessor, comments convert to nothing at all,
1018: rather than to a space. This allows traditional token
1019: concatenation.
1020:
1021: * In the preprocessor, macro arguments are recognized within
1022: string constants in a macro definition (and their values are
1023: stringified, though without additional quote marks, when
1024: they appear in such a context). The preprocessor always
1025: considers a string constant to end at a newline.
1026:
1027: * The predefined macro `__STDC__' is not defined when you use
1028: `-traditional', but `__GNUC__' is (since the GNU extensions
1029: which `__GNUC__' indicates are not affected by
1030: `-traditional'). If you need to write header files that work
1031: differently depending on whether `-traditional' is in use, by
1032: testing both of these predefined macros you can distinguish
1033: four situations: GNU C, traditional GNU C, other ANSI C
1034: compilers, and other old C compilers.
1035:
1036: `-traditional-cpp'
1037: Attempt to support some aspects of traditional C preprocessors.
1038: This includes the last three items in the table immediately above,
1039: but none of the other effects of `-traditional'.
1040:
1041: `-fcond-mismatch'
1042: Allow conditional expressions with mismatched types in the second
1043: and third arguments. The value of such an expression is void.
1044:
1045: `-funsigned-char'
1046: Let the type `char' be unsigned, like `unsigned char'.
1047:
1048: Each kind of machine has a default for what `char' should be. It
1049: is either like `unsigned char' by default or like `signed char'
1050: by default.
1051:
1052: Ideally, a portable program should always use `signed char' or
1053: `unsigned char' when it depends on the signedness of an object.
1054: But many programs have been written to use plain `char' and
1055: expect it to be signed, or expect it to be unsigned, depending on
1056: the machines they were written for. This option, and its
1057: inverse, let you make such a program work with the opposite
1058: default.
1059:
1060: The type `char' is always a distinct type from each of `signed
1061: char' or `unsigned char', even though its behavior is always just
1062: like one of those two.
1063:
1064: `-fsigned-char'
1065: Let the type `char' be signed, like `signed char'.
1066:
1067: Note that this is equivalent to `-fno-unsigned-char', which is
1068: the negative form of `-funsigned-char'. Likewise,
1069: `-fno-signed-char' is equivalent to `-funsigned-char'.
1070:
1071: `-fsigned-bitfields'
1072: `-funsigned-bitfields'
1073: `-fno-signed-bitfields'
1074: `-fno-unsigned-bitfields'
1075: These options control whether a bitfield is signed or unsigned,
1076: when the declaration does not use either `signed' or `unsigned'.
1077: By default, such a bitfield is signed, because this is
1078: consistent: the basic integer types such as `int' are signed
1079: types.
1080:
1081: However, when `-traditional' is used, bitfields are all unsigned
1082: no matter what.
1083:
1084: `-fwritable-strings'
1085: Store string constants in the writable data segment and don't
1086: uniquize them. This is for compatibility with old programs which
1087: assume they can write into string constants. `-traditional' also
1088: has this effect.
1089:
1090: Writing into string constants is a very bad idea; "constants"
1091: should be constant.
1092:
1093:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.