Annotation of gcc/gcc.info-1, revision 1.1.1.3

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.