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