home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1244 / gccinfo.zoo / gccinfo / gcc.info-1 < prev    next >
Encoding:
GNU Info File  |  1992-02-16  |  47.7 KB  |  1,093 lines

  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 `league@prep.ai.mit.edu'.
  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.