|
|
1.1.1.9 ! root 1: This is Info file gcc.info, produced by Makeinfo version 1.67 from the ! 2: input file gcc.texi. 1.1 root 3: 4: This file documents the use and the internals of the GNU compiler. 5: 1.1.1.8 root 6: Published by the Free Software Foundation 59 Temple Place - Suite 330 7: Boston, MA 02111-1307 USA 1.1.1.5 root 8: 1.1.1.8 root 9: Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software 10: Foundation, Inc. 1.1 root 11: 1.1.1.3 root 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. 1.1 root 15: 16: Permission is granted to copy and distribute modified versions of 17: this manual under the conditions for verbatim copying, provided also 1.1.1.7 root 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. 1.1 root 23: 24: Permission is granted to copy and distribute translations of this 25: manual into another language, under the above conditions for modified 1.1.1.3 root 26: versions, except that the sections entitled "GNU General Public 1.1.1.7 root 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. 1.1.1.3 root 31: 32: 1.1.1.8 root 33: File: gcc.info, Node: Temporaries, Prev: Static Definitions, Up: C++ Misunderstandings 1.1.1.6 root 34: 1.1.1.8 root 35: Temporaries May Vanish Before You Expect 36: ---------------------------------------- 1.1.1.6 root 37: 1.1.1.8 root 38: It is dangerous to use pointers or references to *portions* of a 39: temporary object. The compiler may very well delete the object before 40: you expect it to, leaving a pointer to garbage. The most common place 41: where this problem crops up is in classes like the libg++ `String' 42: class, that define a conversion function to type `char *' or `const 43: char *'. However, any class that returns a pointer to some internal 44: structure is potentially subject to this problem. 45: 46: For example, a program may use a function `strfunc' that returns 47: `String' objects, and another function `charfunc' that operates on 48: pointers to `char': 49: 50: String strfunc (); 51: void charfunc (const char *); 52: 53: In this situation, it may seem natural to write 54: `charfunc (strfunc ());' based on the knowledge that class `String' has 55: an explicit conversion to `char' pointers. However, what really 56: happens is akin to `charfunc (strfunc ().convert ());', where the 57: `convert' method is a function to do the same data conversion normally 58: performed by a cast. Since the last use of the temporary `String' 59: object is the call to the conversion function, the compiler may delete 60: that object before actually calling `charfunc'. The compiler has no 61: way of knowing that deleting the `String' object will invalidate the 62: pointer. The pointer then points to garbage, so that by the time 63: `charfunc' is called, it gets an invalid argument. 64: 65: Code like this may run successfully under some other compilers, 66: especially those that delete temporaries relatively late. However, the 67: GNU C++ behavior is also standard-conforming, so if your program depends 68: on late destruction of temporaries it is not portable. 69: 70: If you think this is surprising, you should be aware that the ANSI 71: C++ committee continues to debate the lifetime-of-temporaries problem. 72: 73: For now, at least, the safe way to write such code is to give the 74: temporary a name, which forces it to remain until the end of the scope 75: of the name. For example: 76: 77: String& tmp = strfunc (); 78: charfunc (tmp); 79: 80: 81: File: gcc.info, Node: Protoize Caveats, Next: Non-bugs, Prev: C++ Misunderstandings, Up: Trouble 82: 83: Caveats of using `protoize' 84: =========================== 85: 86: The conversion programs `protoize' and `unprotoize' can sometimes 87: change a source file in a way that won't work unless you rearrange it. 88: 89: * `protoize' can insert references to a type name or type tag before 90: the definition, or in a file where they are not defined. 91: 92: If this happens, compiler error messages should show you where the 93: new references are, so fixing the file by hand is straightforward. 94: 95: * There are some C constructs which `protoize' cannot figure out. 96: For example, it can't determine argument types for declaring a 97: pointer-to-function variable; this you must do by hand. `protoize' 98: inserts a comment containing `???' each time it finds such a 99: variable; so you can find all such variables by searching for this 100: string. ANSI C does not require declaring the argument types of 101: pointer-to-function types. 102: 103: * Using `unprotoize' can easily introduce bugs. If the program 104: relied on prototypes to bring about conversion of arguments, these 105: conversions will not take place in the program without prototypes. 106: One case in which you can be sure `unprotoize' is safe is when you 107: are removing prototypes that were made with `protoize'; if the 108: program worked before without any prototypes, it will work again 109: without them. 110: 111: You can find all the places where this problem might occur by 112: compiling the program with the `-Wconversion' option. It prints a 113: warning whenever an argument is converted. 114: 115: * Both conversion programs can be confused if there are macro calls 116: in and around the text to be converted. In other words, the 117: standard syntax for a declaration or definition must not result 118: from expanding a macro. This problem is inherent in the design of 119: C and cannot be fixed. If only a few functions have confusing 120: macro calls, you can easily convert them manually. 121: 122: * `protoize' cannot get the argument types for a function whose 123: definition was not actually compiled due to preprocessing 124: conditionals. When this happens, `protoize' changes nothing in 125: regard to such a function. `protoize' tries to detect such 126: instances and warn about them. 127: 128: You can generally work around this problem by using `protoize' step 129: by step, each time specifying a different set of `-D' options for 130: compilation, until all of the functions have been converted. 131: There is no automatic way to verify that you have got them all, 132: however. 133: 134: * Confusion may result if there is an occasion to convert a function 135: declaration or definition in a region of source code where there 136: is more than one formal parameter list present. Thus, attempts to 137: convert code containing multiple (conditionally compiled) versions 138: of a single function header (in the same vicinity) may not produce 139: the desired (or expected) results. 140: 141: If you plan on converting source files which contain such code, it 142: is recommended that you first make sure that each conditionally 143: compiled region of source code which contains an alternative 144: function header also contains at least one additional follower 145: token (past the final right parenthesis of the function header). 146: This should circumvent the problem. 147: 148: * `unprotoize' can become confused when trying to convert a function 149: definition or declaration which contains a declaration for a 150: pointer-to-function formal argument which has the same name as the 151: function being defined or declared. We recommand you avoid such 152: choices of formal parameter names. 153: 154: * You might also want to correct some of the indentation by hand and 155: break long lines. (The conversion programs don't write lines 156: longer than eighty characters in any case.) 157: 158: 159: File: gcc.info, Node: Non-bugs, Next: Warnings and Errors, Prev: Protoize Caveats, Up: Trouble 160: 161: Certain Changes We Don't Want to Make 162: ===================================== 163: 164: This section lists changes that people frequently request, but which 165: we do not make because we think GNU CC is better without them. 166: 167: * Checking the number and type of arguments to a function which has 168: an old-fashioned definition and no prototype. 169: 170: Such a feature would work only occasionally--only for calls that 171: appear in the same file as the called function, following the 172: definition. The only way to check all calls reliably is to add a 173: prototype for the function. But adding a prototype eliminates the 174: motivation for this feature. So the feature is not worthwhile. 175: 176: * Warning about using an expression whose type is signed as a shift 177: count. 178: 179: Shift count operands are probably signed more often than unsigned. 180: Warning about this would cause far more annoyance than good. 181: 182: * Warning about assigning a signed value to an unsigned variable. 183: 184: Such assignments must be very common; warning about them would 185: cause more annoyance than good. 186: 187: * Warning about unreachable code. 188: 189: It's very common to have unreachable code in machine-generated 190: programs. For example, this happens normally in some files of GNU 191: C itself. 192: 193: * Warning when a non-void function value is ignored. 194: 195: Coming as I do from a Lisp background, I balk at the idea that 196: there is something dangerous about discarding a value. There are 197: functions that return values which some callers may find useful; 198: it makes no sense to clutter the program with a cast to `void' 199: whenever the value isn't useful. 200: 201: * Assuming (for optimization) that the address of an external symbol 202: is never zero. 203: 204: This assumption is false on certain systems when `#pragma weak' is 205: used. 206: 207: * Making `-fshort-enums' the default. 208: 209: This would cause storage layout to be incompatible with most other 210: C compilers. And it doesn't seem very important, given that you 211: can get the same result in other ways. The case where it matters 212: most is when the enumeration-valued object is inside a structure, 213: and in that case you can specify a field width explicitly. 214: 215: * Making bitfields unsigned by default on particular machines where 216: "the ABI standard" says to do so. 217: 218: The ANSI C standard leaves it up to the implementation whether a 219: bitfield declared plain `int' is signed or not. This in effect 220: creates two alternative dialects of C. 221: 222: The GNU C compiler supports both dialects; you can specify the 223: signed dialect with `-fsigned-bitfields' and the unsigned dialect 224: with `-funsigned-bitfields'. However, this leaves open the 225: question of which dialect to use by default. 226: 227: Currently, the preferred dialect makes plain bitfields signed, 228: because this is simplest. Since `int' is the same as `signed int' 229: in every other context, it is cleanest for them to be the same in 230: bitfields as well. 231: 232: Some computer manufacturers have published Application Binary 233: Interface standards which specify that plain bitfields should be 234: unsigned. It is a mistake, however, to say anything about this 235: issue in an ABI. This is because the handling of plain bitfields 236: distinguishes two dialects of C. Both dialects are meaningful on 237: every type of machine. Whether a particular object file was 238: compiled using signed bitfields or unsigned is of no concern to 239: other object files, even if they access the same bitfields in the 240: same data structures. 241: 242: A given program is written in one or the other of these two 243: dialects. The program stands a chance to work on most any machine 244: if it is compiled with the proper dialect. It is unlikely to work 245: at all if compiled with the wrong dialect. 246: 247: Many users appreciate the GNU C compiler because it provides an 248: environment that is uniform across machines. These users would be 249: inconvenienced if the compiler treated plain bitfields differently 250: on certain machines. 251: 252: Occasionally users write programs intended only for a particular 253: machine type. On these occasions, the users would benefit if the 254: GNU C compiler were to support by default the same dialect as the 255: other compilers on that machine. But such applications are rare. 256: And users writing a program to run on more than one type of 257: machine cannot possibly benefit from this kind of compatibility. 258: 259: This is why GNU CC does and will treat plain bitfields in the same 260: fashion on all types of machines (by default). 261: 262: There are some arguments for making bitfields unsigned by default 263: on all machines. If, for example, this becomes a universal de 264: facto standard, it would make sense for GNU CC to go along with 265: it. This is something to be considered in the future. 266: 267: (Of course, users strongly concerned about portability should 268: indicate explicitly in each bitfield whether it is signed or not. 269: In this way, they write programs which have the same meaning in 270: both C dialects.) 271: 272: * Undefining `__STDC__' when `-ansi' is not used. 273: 274: Currently, GNU CC defines `__STDC__' as long as you don't use 275: `-traditional'. This provides good results in practice. 276: 277: Programmers normally use conditionals on `__STDC__' to ask whether 278: it is safe to use certain features of ANSI C, such as function 279: prototypes or ANSI token concatenation. Since plain `gcc' supports 280: all the features of ANSI C, the correct answer to these questions 281: is "yes". 282: 283: Some users try to use `__STDC__' to check for the availability of 284: certain library facilities. This is actually incorrect usage in 285: an ANSI C program, because the ANSI C standard says that a 286: conforming freestanding implementation should define `__STDC__' 287: even though it does not have the library facilities. `gcc -ansi 288: -pedantic' is a conforming freestanding implementation, and it is 289: therefore required to define `__STDC__', even though it does not 290: come with an ANSI C library. 291: 292: Sometimes people say that defining `__STDC__' in a compiler that 293: does not completely conform to the ANSI C standard somehow 294: violates the standard. This is illogical. The standard is a 295: standard for compilers that claim to support ANSI C, such as `gcc 296: -ansi'--not for other compilers such as plain `gcc'. Whatever the 297: ANSI C standard says is relevant to the design of plain `gcc' 298: without `-ansi' only for pragmatic reasons, not as a requirement. 299: 300: * Undefining `__STDC__' in C++. 301: 302: Programs written to compile with C++-to-C translators get the 303: value of `__STDC__' that goes with the C compiler that is 304: subsequently used. These programs must test `__STDC__' to 305: determine what kind of C preprocessor that compiler uses: whether 306: they should concatenate tokens in the ANSI C fashion or in the 307: traditional fashion. 308: 309: These programs work properly with GNU C++ if `__STDC__' is defined. 310: They would not work otherwise. 311: 312: In addition, many header files are written to provide prototypes 313: in ANSI C but not in traditional C. Many of these header files 314: can work without change in C++ provided `__STDC__' is defined. If 315: `__STDC__' is not defined, they will all fail, and will all need 316: to be changed to test explicitly for C++ as well. 317: 318: * Deleting "empty" loops. 319: 320: GNU CC does not delete "empty" loops because the most likely reason 321: you would put one in a program is to have a delay. Deleting them 322: will not make real programs run any faster, so it would be 323: pointless. 324: 325: It would be different if optimization of a nonempty loop could 326: produce an empty one. But this generally can't happen. 327: 328: * Making side effects happen in the same order as in some other 329: compiler. 330: 331: It is never safe to depend on the order of evaluation of side 332: effects. For example, a function call like this may very well 333: behave differently from one compiler to another: 334: 335: void func (int, int); 336: 337: int i = 2; 338: func (i++, i++); 339: 340: There is no guarantee (in either the C or the C++ standard language 341: definitions) that the increments will be evaluated in any 342: particular order. Either increment might happen first. `func' 343: might get the arguments `2, 3', or it might get `3, 2', or even 344: `2, 2'. 345: 346: * Not allowing structures with volatile fields in registers. 347: 348: Strictly speaking, there is no prohibition in the ANSI C standard 349: against allowing structures with volatile fields in registers, but 350: it does not seem to make any sense and is probably not what you 351: wanted to do. So the compiler will give an error message in this 352: case. 1.1.1.6 root 353: 354: 1.1.1.8 root 355: File: gcc.info, Node: Warnings and Errors, Prev: Non-bugs, Up: Trouble 356: 357: Warning Messages and Error Messages 358: =================================== 359: 360: The GNU compiler can produce two kinds of diagnostics: errors and 361: warnings. Each kind has a different purpose: 362: 363: *Errors* report problems that make it impossible to compile your 364: program. GNU CC reports errors with the source file name and line 365: number where the problem is apparent. 366: 367: *Warnings* report other unusual conditions in your code that *may* 368: indicate a problem, although compilation can (and does) proceed. 369: Warning messages also report the source file name and line number, 370: but include the text `warning:' to distinguish them from error 371: messages. 372: 373: Warnings may indicate danger points where you should check to make 374: sure that your program really does what you intend; or the use of 375: obsolete features; or the use of nonstandard features of GNU C or C++. 376: Many warnings are issued only if you ask for them, with one of the `-W' 377: options (for instance, `-Wall' requests a variety of useful warnings). 378: 379: GNU CC always tries to compile your program if possible; it never 380: gratuitously rejects a program whose meaning is clear merely because 381: (for instance) it fails to conform to a standard. In some cases, 382: however, the C and C++ standards specify that certain extensions are 383: forbidden, and a diagnostic *must* be issued by a conforming compiler. 384: The `-pedantic' option tells GNU CC to issue warnings in such cases; 385: `-pedantic-errors' says to make them errors instead. This does not 386: mean that *all* non-ANSI constructs get warnings or errors. 387: 388: *Note Options to Request or Suppress Warnings: Warning Options, for 389: more detail on these and related command-line options. 390: 391: 392: File: gcc.info, Node: Bugs, Next: Service, Prev: Trouble, Up: Top 393: 394: Reporting Bugs 395: ************** 1.1.1.6 root 396: 1.1.1.8 root 397: Your bug reports play an essential role in making GNU CC reliable. 1.1.1.6 root 398: 1.1.1.8 root 399: When you encounter a problem, the first thing to do is to see if it 400: is already known. *Note Trouble::. If it isn't known, then you should 401: report the problem. 402: 403: Reporting a bug may help you by bringing a solution to your problem, 404: or it may not. (If it does not, look in the service directory; see 405: *Note Service::.) In any case, the principal function of a bug report 406: is to help the entire community by making the next version of GNU CC 407: work better. Bug reports are your contribution to the maintenance of 408: GNU CC. 409: 410: Since the maintainers are very overloaded, we cannot respond to every 411: bug report. However, if the bug has not been fixed, we are likely to 412: send you a patch and ask you to tell us whether it works. 413: 414: In order for a bug report to serve its purpose, you must include the 415: information that makes for fixing the bug. 1.1.1.7 root 416: 417: * Menu: 418: 1.1.1.8 root 419: * Criteria: Bug Criteria. Have you really found a bug? 420: * Where: Bug Lists. Where to send your bug report. 421: * Reporting: Bug Reporting. How to report a bug effectively. 422: * Patches: Sending Patches. How to send a patch for GNU CC. 423: * Known: Trouble. Known problems. 424: * Help: Service. Where to ask for help. 1.1.1.6 root 425: 426: 1.1.1.8 root 427: File: gcc.info, Node: Bug Criteria, Next: Bug Lists, Up: Bugs 1.1.1.6 root 428: 1.1.1.8 root 429: Have You Found a Bug? 430: ===================== 1.1.1.6 root 431: 1.1.1.8 root 432: If you are not sure whether you have found a bug, here are some 433: guidelines: 1.1.1.6 root 434: 1.1.1.8 root 435: * If the compiler gets a fatal signal, for any input whatever, that 436: is a compiler bug. Reliable compilers never crash. 437: 438: * If the compiler produces invalid assembly code, for any input 439: whatever (except an `asm' statement), that is a compiler bug, 440: unless the compiler reports errors (not just warnings) which would 441: ordinarily prevent the assembler from being run. 442: 443: * If the compiler produces valid assembly code that does not 444: correctly execute the input source code, that is a compiler bug. 445: 446: However, you must double-check to make sure, because you may have 447: run into an incompatibility between GNU C and traditional C (*note 448: Incompatibilities::.). These incompatibilities might be considered 449: bugs, but they are inescapable consequences of valuable features. 450: 451: Or you may have a program whose behavior is undefined, which 452: happened by chance to give the desired results with another C or 453: C++ compiler. 454: 455: For example, in many nonoptimizing compilers, you can write `x;' 456: at the end of a function instead of `return x;', with the same 457: results. But the value of the function is undefined if `return' 458: is omitted; it is not a bug when GNU CC produces different results. 459: 460: Problems often result from expressions with two increment 461: operators, as in `f (*p++, *p++)'. Your previous compiler might 462: have interpreted that expression the way you intended; GNU CC might 463: interpret it another way. Neither compiler is wrong. The bug is 464: in your code. 465: 466: After you have localized the error to a single source line, it 467: should be easy to check for these things. If your program is 468: correct and well defined, you have found a compiler bug. 469: 470: * If the compiler produces an error message for valid input, that is 471: a compiler bug. 472: 473: * If the compiler does not produce an error message for invalid 474: input, that is a compiler bug. However, you should note that your 475: idea of "invalid input" might be my idea of "an extension" or 476: "support for traditional practice". 477: 478: * If you are an experienced user of C or C++ compilers, your 479: suggestions for improvement of GNU CC or GNU C++ are welcome in 480: any case. 1.1.1.6 root 481: 482: 1.1.1.8 root 483: File: gcc.info, Node: Bug Lists, Next: Bug Reporting, Prev: Bug Criteria, Up: Bugs 484: 485: Where to Report Bugs 486: ==================== 487: 488: Send bug reports for GNU C to `[email protected]'. 1.1.1.6 root 489: 1.1.1.8 root 490: Send bug reports for GNU C++ to `[email protected]'. If your 491: bug involves the C++ class library libg++, send mail to 492: `[email protected]'. If you're not sure, you can send the 493: bug report to both lists. 494: 495: *Do not send bug reports to `[email protected]' or to the 496: newsgroup `gnu.gcc.help'.* Most users of GNU CC do not want to receive 497: bug reports. Those that do, have asked to be on `bug-gcc' and/or 498: `bug-g++'. 499: 500: The mailing lists `bug-gcc' and `bug-g++' both have newsgroups which 501: serve as repeaters: `gnu.gcc.bug' and `gnu.g++.bug'. Each mailing list 502: and its newsgroup carry exactly the same messages. 503: 504: Often people think of posting bug reports to the newsgroup instead of 505: mailing them. This appears to work, but it has one problem which can be 506: crucial: a newsgroup posting does not contain a mail path back to the 507: sender. Thus, if maintainers need more information, they may be unable 508: to reach you. For this reason, you should always send bug reports by 509: mail to the proper mailing list. 510: 511: As a last resort, send bug reports on paper to: 512: 513: GNU Compiler Bugs 514: Free Software Foundation 515: 59 Temple Place - Suite 330 516: Boston, MA 02111-1307, USA 517: 518: 519: File: gcc.info, Node: Bug Reporting, Next: Sending Patches, Prev: Bug Lists, Up: Bugs 520: 521: How to Report Bugs 1.1.1.7 root 522: ================== 1.1.1.6 root 523: 1.1.1.8 root 524: The fundamental principle of reporting bugs usefully is this: 525: *report all the facts*. If you are not sure whether to state a fact or 526: leave it out, state it! 527: 528: Often people omit facts because they think they know what causes the 529: problem and they conclude that some details don't matter. Thus, you 530: might assume that the name of the variable you use in an example does 531: not matter. Well, probably it doesn't, but one cannot be sure. 532: Perhaps the bug is a stray memory reference which happens to fetch from 533: the location where that name is stored in memory; perhaps, if the name 534: were different, the contents of that location would fool the compiler 535: into doing the right thing despite the bug. Play it safe and give a 536: specific, complete example. That is the easiest thing for you to do, 537: and the most helpful. 538: 539: Keep in mind that the purpose of a bug report is to enable someone to 540: fix the bug if it is not known. It isn't very important what happens if 541: the bug is already known. Therefore, always write your bug reports on 542: the assumption that the bug is not known. 543: 544: Sometimes people give a few sketchy facts and ask, "Does this ring a 545: bell?" This cannot help us fix a bug, so it is basically useless. We 546: respond by asking for enough details to enable us to investigate. You 547: might as well expedite matters by sending them to begin with. 548: 549: Try to make your bug report self-contained. If we have to ask you 550: for more information, it is best if you include all the previous 551: information in your response, as well as the information that was 552: missing. 553: 554: Please report each bug in a separate message. This makes it easier 555: for us to track which bugs have been fixed and to forward your bugs 556: reports to the appropriate maintainer. 557: 558: Do not compress and encode any part of your bug report using programs 559: such as `uuencode'. If you do so it will slow down the processing of 560: your bug. If you must submit multiple large files, use `shar', which 561: allows us to read your message without having to run any decompression 562: programs. 563: 564: To enable someone to investigate the bug, you should include all 565: these things: 566: 567: * The version of GNU CC. You can get this by running it with the 568: `-v' option. 569: 570: Without this, we won't know whether there is any point in looking 571: for the bug in the current version of GNU CC. 572: 573: * A complete input file that will reproduce the bug. If the bug is 574: in the C preprocessor, send a source file and any header files 575: that it requires. If the bug is in the compiler proper (`cc1'), 576: run your source file through the C preprocessor by doing `gcc -E 577: SOURCEFILE > OUTFILE', then include the contents of OUTFILE in the 578: bug report. (When you do this, use the same `-I', `-D' or `-U' 579: options that you used in actual compilation.) 580: 581: A single statement is not enough of an example. In order to 582: compile it, it must be embedded in a complete file of compiler 583: input; and the bug might depend on the details of how this is done. 584: 585: Without a real example one can compile, all anyone can do about 586: your bug report is wish you luck. It would be futile to try to 587: guess how to provoke the bug. For example, bugs in register 588: allocation and reloading frequently depend on every little detail 589: of the function they happen in. 590: 591: Even if the input file that fails comes from a GNU program, you 592: should still send the complete test case. Don't ask the GNU CC 593: maintainers to do the extra work of obtaining the program in 594: question--they are all overworked as it is. Also, the problem may 595: depend on what is in the header files on your system; it is 596: unreliable for the GNU CC maintainers to try the problem with the 597: header files available to them. By sending CPP output, you can 598: eliminate this source of uncertainty and save us a certain 599: percentage of wild goose chases. 600: 601: * The command arguments you gave GNU CC or GNU C++ to compile that 602: example and observe the bug. For example, did you use `-O'? To 603: guarantee you won't omit something important, list all the options. 604: 605: If we were to try to guess the arguments, we would probably guess 606: wrong and then we would not encounter the bug. 607: 608: * The type of machine you are using, and the operating system name 609: and version number. 610: 611: * The operands you gave to the `configure' command when you installed 612: the compiler. 613: 614: * A complete list of any modifications you have made to the compiler 615: source. (We don't promise to investigate the bug unless it 616: happens in an unmodified compiler. But if you've made 617: modifications and don't tell us, then you are sending us on a wild 618: goose chase.) 619: 620: Be precise about these changes. A description in English is not 621: enough--send a context diff for them. 622: 623: Adding files of your own (such as a machine description for a 624: machine we don't support) is a modification of the compiler source. 625: 626: * Details of any other deviations from the standard procedure for 627: installing GNU CC. 628: 629: * A description of what behavior you observe that you believe is 630: incorrect. For example, "The compiler gets a fatal signal," or, 631: "The assembler instruction at line 208 in the output is incorrect." 632: 633: Of course, if the bug is that the compiler gets a fatal signal, 634: then one can't miss it. But if the bug is incorrect output, the 635: maintainer might not notice unless it is glaringly wrong. None of 636: us has time to study all the assembler code from a 50-line C 637: program just on the chance that one instruction might be wrong. 638: We need *you* to do this part! 639: 640: Even if the problem you experience is a fatal signal, you should 641: still say so explicitly. Suppose something strange is going on, 642: such as, your copy of the compiler is out of synch, or you have 643: encountered a bug in the C library on your system. (This has 644: happened!) Your copy might crash and the copy here would not. If 645: you said to expect a crash, then when the compiler here fails to 646: crash, we would know that the bug was not happening. If you don't 647: say to expect a crash, then we would not know whether the bug was 648: happening. We would not be able to draw any conclusion from our 649: observations. 650: 651: If the problem is a diagnostic when compiling GNU CC with some 652: other compiler, say whether it is a warning or an error. 653: 654: Often the observed symptom is incorrect output when your program 655: is run. Sad to say, this is not enough information unless the 656: program is short and simple. None of us has time to study a large 657: program to figure out how it would work if compiled correctly, 658: much less which line of it was compiled wrong. So you will have 659: to do that. Tell us which source line it is, and what incorrect 660: result happens when that line is executed. A person who 661: understands the program can find this as easily as finding a bug 662: in the program itself. 663: 664: * If you send examples of assembler code output from GNU CC or GNU 665: C++, please use `-g' when you make them. The debugging information 666: includes source line numbers which are essential for correlating 667: the output with the input. 668: 669: * If you wish to mention something in the GNU CC source, refer to it 670: by context, not by line number. 671: 672: The line numbers in the development sources don't match those in 673: your sources. Your line numbers would convey no useful 674: information to the maintainers. 675: 676: * Additional information from a debugger might enable someone to 677: find a problem on a machine which he does not have available. 678: However, you need to think when you collect this information if 679: you want it to have any chance of being useful. 680: 681: For example, many people send just a backtrace, but that is never 682: useful by itself. A simple backtrace with arguments conveys little 683: about GNU CC because the compiler is largely data-driven; the same 684: functions are called over and over for different RTL insns, doing 685: different things depending on the details of the insn. 686: 687: Most of the arguments listed in the backtrace are useless because 688: they are pointers to RTL list structure. The numeric values of the 689: pointers, which the debugger prints in the backtrace, have no 690: significance whatever; all that matters is the contents of the 691: objects they point to (and most of the contents are other such 692: pointers). 693: 694: In addition, most compiler passes consist of one or more loops that 695: scan the RTL insn sequence. The most vital piece of information 696: about such a loop--which insn it has reached--is usually in a 697: local variable, not in an argument. 698: 699: What you need to provide in addition to a backtrace are the values 700: of the local variables for several stack frames up. When a local 701: variable or an argument is an RTX, first print its value and then 702: use the GDB command `pr' to print the RTL expression that it points 703: to. (If GDB doesn't run on your machine, use your debugger to call 704: the function `debug_rtx' with the RTX as an argument.) In 705: general, whenever a variable is a pointer, its value is no use 706: without the data it points to. 707: 708: Here are some things that are not necessary: 709: 710: * A description of the envelope of the bug. 711: 712: Often people who encounter a bug spend a lot of time investigating 713: which changes to the input file will make the bug go away and which 714: changes will not affect it. 715: 716: This is often time consuming and not very useful, because the way 717: we will find the bug is by running a single example under the 718: debugger with breakpoints, not by pure deduction from a series of 719: examples. You might as well save your time for something else. 720: 721: Of course, if you can find a simpler example to report *instead* of 722: the original one, that is a convenience. Errors in the output 723: will be easier to spot, running under the debugger will take less 724: time, etc. Most GNU CC bugs involve just one function, so the 725: most straightforward way to simplify an example is to delete all 726: the function definitions except the one where the bug occurs. 727: Those earlier in the file may be replaced by external declarations 728: if the crucial function depends on them. (Exception: inline 729: functions may affect compilation of functions defined later in the 730: file.) 731: 732: However, simplification is not vital; if you don't want to do this, 733: report the bug anyway and send the entire test case you used. 734: 735: * In particular, some people insert conditionals `#ifdef BUG' around 736: a statement which, if removed, makes the bug not happen. These 737: are just clutter; we won't pay any attention to them anyway. 738: Besides, you should send us cpp output, and that can't have 739: conditionals. 740: 741: * A patch for the bug. 742: 743: A patch for the bug is useful if it is a good one. But don't omit 744: the necessary information, such as the test case, on the 745: assumption that a patch is all we need. We might see problems 746: with your patch and decide to fix the problem another way, or we 747: might not understand it at all. 748: 749: Sometimes with a program as complicated as GNU CC it is very hard 750: to construct an example that will make the program follow a 751: certain path through the code. If you don't send the example, we 752: won't be able to construct one, so we won't be able to verify that 753: the bug is fixed. 754: 755: And if we can't understand what bug you are trying to fix, or why 756: your patch should be an improvement, we won't install it. A test 757: case will help us to understand. 758: 759: *Note Sending Patches::, for guidelines on how to make it easy for 760: us to understand and install your patches. 761: 762: * A guess about what the bug is or what it depends on. 763: 764: Such guesses are usually wrong. Even I can't guess right about 765: such things without first using the debugger to find the facts. 766: 767: * A core dump file. 768: 769: We have no way of examining a core dump for your type of machine 770: unless we have an identical system--and if we do have one, we 771: should be able to reproduce the crash ourselves. 1.1.1.6 root 772: 773: 1.1.1.8 root 774: File: gcc.info, Node: Sending Patches, Prev: Bug Reporting, Up: Bugs 1.1.1.6 root 775: 1.1.1.8 root 776: Sending Patches for GNU CC 1.1.1.7 root 777: ========================== 1.1.1.6 root 778: 1.1.1.8 root 779: If you would like to write bug fixes or improvements for the GNU C 780: compiler, that is very helpful. Send suggested fixes to the bug report 781: mailing list, `[email protected]'. 782: 783: Please follow these guidelines so we can study your patches 784: efficiently. If you don't follow these guidelines, your information 785: might still be useful, but using it will take extra work. Maintaining 786: GNU C is a lot of work in the best of circumstances, and we can't keep 787: up unless you do your best to help. 788: 789: * Send an explanation with your changes of what problem they fix or 790: what improvement they bring about. For a bug fix, just include a 791: copy of the bug report, and explain why the change fixes the bug. 792: 793: (Referring to a bug report is not as good as including it, because 794: then we will have to look it up, and we have probably already 795: deleted it if we've already fixed the bug.) 796: 797: * Always include a proper bug report for the problem you think you 798: have fixed. We need to convince ourselves that the change is 799: right before installing it. Even if it is right, we might have 800: trouble judging it if we don't have a way to reproduce the problem. 801: 802: * Include all the comments that are appropriate to help people 803: reading the source in the future understand why this change was 804: needed. 805: 806: * Don't mix together changes made for different reasons. Send them 807: *individually*. 808: 809: If you make two changes for separate reasons, then we might not 810: want to install them both. We might want to install just one. If 811: you send them all jumbled together in a single set of diffs, we 812: have to do extra work to disentangle them--to figure out which 813: parts of the change serve which purpose. If we don't have time 814: for this, we might have to ignore your changes entirely. 815: 816: If you send each change as soon as you have written it, with its 817: own explanation, then the two changes never get tangled up, and we 818: can consider each one properly without any extra work to 819: disentangle them. 820: 821: Ideally, each change you send should be impossible to subdivide 822: into parts that we might want to consider separately, because each 823: of its parts gets its motivation from the other parts. 824: 825: * Send each change as soon as that change is finished. Sometimes 826: people think they are helping us by accumulating many changes to 827: send them all together. As explained above, this is absolutely 828: the worst thing you could do. 829: 830: Since you should send each change separately, you might as well 831: send it right away. That gives us the option of installing it 832: immediately if it is important. 833: 834: * Use `diff -c' to make your diffs. Diffs without context are hard 835: for us to install reliably. More than that, they make it hard for 836: us to study the diffs to decide whether we want to install them. 837: Unidiff format is better than contextless diffs, but not as easy 838: to read as `-c' format. 839: 840: If you have GNU diff, use `diff -cp', which shows the name of the 841: function that each change occurs in. 842: 843: * Write the change log entries for your changes. We get lots of 844: changes, and we don't have time to do all the change log writing 845: ourselves. 846: 847: Read the `ChangeLog' file to see what sorts of information to put 848: in, and to learn the style that we use. The purpose of the change 849: log is to show people where to find what was changed. So you need 850: to be specific about what functions you changed; in large 851: functions, it's often helpful to indicate where within the 852: function the change was. 853: 854: On the other hand, once you have shown people where to find the 855: change, you need not explain its purpose. Thus, if you add a new 856: function, all you need to say about it is that it is new. If you 857: feel that the purpose needs explaining, it probably does--but the 858: explanation will be much more useful if you put it in comments in 859: the code. 860: 861: If you would like your name to appear in the header line for who 862: made the change, send us the header line. 863: 864: * When you write the fix, keep in mind that we can't install a 865: change that would break other systems. 866: 867: People often suggest fixing a problem by changing 868: machine-independent files such as `toplev.c' to do something 869: special that a particular system needs. Sometimes it is totally 870: obvious that such changes would break GNU CC for almost all users. 871: We can't possibly make a change like that. At best it might tell 872: us how to write another patch that would solve the problem 873: acceptably. 874: 875: Sometimes people send fixes that *might* be an improvement in 876: general--but it is hard to be sure of this. It's hard to install 877: such changes because we have to study them very carefully. Of 878: course, a good explanation of the reasoning by which you concluded 879: the change was correct can help convince us. 880: 881: The safest changes are changes to the configuration files for a 882: particular machine. These are safe because they can't create new 883: bugs on other machines. 884: 885: Please help us keep up with the workload by designing the patch in 886: a form that is good to install. 887: 888: 889: File: gcc.info, Node: Service, Next: VMS, Prev: Bugs, Up: Top 890: 891: How To Get Help with GNU CC 892: *************************** 893: 894: If you need help installing, using or changing GNU CC, there are two 895: ways to find it: 896: 897: * Send a message to a suitable network mailing list. First try 898: `[email protected]', and if that brings no response, try 899: `[email protected]'. 900: 901: * Look in the service directory for someone who might help you for a 902: fee. The service directory is found in the file named `SERVICE' 903: in the GNU CC distribution. 1.1.1.6 root 904: 905: 1.1.1.8 root 906: File: gcc.info, Node: VMS, Next: Portability, Prev: Service, Up: Top 1.1.1.6 root 907: 1.1.1.8 root 908: Using GNU CC on VMS 909: ******************* 1.1.1.6 root 910: 1.1.1.8 root 911: Here is how to use GNU CC on VMS. 912: 913: * Menu: 914: 915: * Include Files and VMS:: Where the preprocessor looks for the include files. 916: * Global Declarations:: How to do globaldef, globalref and globalvalue with 917: GNU CC. 918: * VMS Misc:: Misc information. 1.1.1.3 root 919: 920: 1.1.1.8 root 921: File: gcc.info, Node: Include Files and VMS, Next: Global Declarations, Up: VMS 1.1.1.3 root 922: 1.1.1.8 root 923: Include Files and VMS 924: ===================== 1.1.1.3 root 925: 1.1.1.8 root 926: Due to the differences between the filesystems of Unix and VMS, GNU 927: CC attempts to translate file names in `#include' into names that VMS 928: will understand. The basic strategy is to prepend a prefix to the 929: specification of the include file, convert the whole filename to a VMS 930: filename, and then try to open the file. GNU CC tries various prefixes 931: one by one until one of them succeeds: 932: 933: 1. The first prefix is the `GNU_CC_INCLUDE:' logical name: this is 934: where GNU C header files are traditionally stored. If you wish to 935: store header files in non-standard locations, then you can assign 936: the logical `GNU_CC_INCLUDE' to be a search list, where each 937: element of the list is suitable for use with a rooted logical. 938: 939: 2. The next prefix tried is `SYS$SYSROOT:[SYSLIB.]'. This is where 940: VAX-C header files are traditionally stored. 941: 942: 3. If the include file specification by itself is a valid VMS 943: filename, the preprocessor then uses this name with no prefix in 944: an attempt to open the include file. 945: 946: 4. If the file specification is not a valid VMS filename (i.e. does 947: not contain a device or a directory specifier, and contains a `/' 948: character), the preprocessor tries to convert it from Unix syntax 949: to VMS syntax. 950: 951: Conversion works like this: the first directory name becomes a 952: device, and the rest of the directories are converted into 953: VMS-format directory names. For example, the name `X11/foobar.h' 954: is translated to `X11:[000000]foobar.h' or `X11:foobar.h', 955: whichever one can be opened. This strategy allows you to assign a 956: logical name to point to the actual location of the header files. 957: 958: 5. If none of these strategies succeeds, the `#include' fails. 959: 960: Include directives of the form: 961: 962: #include foobar 963: 964: are a common source of incompatibility between VAX-C and GNU CC. VAX-C 965: treats this much like a standard `#include <foobar.h>' directive. That 966: is incompatible with the ANSI C behavior implemented by GNU CC: to 967: expand the name `foobar' as a macro. Macro expansion should eventually 968: yield one of the two standard formats for `#include': 969: 970: #include "FILE" 971: #include <FILE> 972: 973: If you have this problem, the best solution is to modify the source 974: to convert the `#include' directives to one of the two standard forms. 975: That will work with either compiler. If you want a quick and dirty fix, 976: define the file names as macros with the proper expansion, like this: 977: 978: #define stdio <stdio.h> 979: 980: This will work, as long as the name doesn't conflict with anything else 981: in the program. 982: 983: Another source of incompatibility is that VAX-C assumes that: 984: 985: #include "foobar" 986: 987: is actually asking for the file `foobar.h'. GNU CC does not make this 988: assumption, and instead takes what you ask for literally; it tries to 989: read the file `foobar'. The best way to avoid this problem is to 990: always specify the desired file extension in your include directives. 991: 992: GNU CC for VMS is distributed with a set of include files that is 993: sufficient to compile most general purpose programs. Even though the 994: GNU CC distribution does not contain header files to define constants 995: and structures for some VMS system-specific functions, there is no 996: reason why you cannot use GNU CC with any of these functions. You first 997: may have to generate or create header files, either by using the public 998: domain utility `UNSDL' (which can be found on a DECUS tape), or by 999: extracting the relevant modules from one of the system macro libraries, 1000: and using an editor to construct a C header file. 1001: 1002: A `#include' file name cannot contain a DECNET node name. The 1003: preprocessor reports an I/O error if you attempt to use a node name, 1004: whether explicitly, or implicitly via a logical name. 1005: 1006: 1007: File: gcc.info, Node: Global Declarations, Next: VMS Misc, Prev: Include Files and VMS, Up: VMS 1.1.1.5 root 1008: 1.1.1.8 root 1009: Global Declarations and VMS 1010: =========================== 1.1.1.3 root 1011: 1.1.1.8 root 1012: GNU CC does not provide the `globalref', `globaldef' and 1013: `globalvalue' keywords of VAX-C. You can get the same effect with an 1014: obscure feature of GAS, the GNU assembler. (This requires GAS version 1015: 1.39 or later.) The following macros allow you to use this feature in 1016: a fairly natural way: 1017: 1018: #ifdef __GNUC__ 1019: #define GLOBALREF(TYPE,NAME) \ 1020: TYPE NAME \ 1021: asm ("_$$PsectAttributes_GLOBALSYMBOL$$" #NAME) 1022: #define GLOBALDEF(TYPE,NAME,VALUE) \ 1023: TYPE NAME \ 1024: asm ("_$$PsectAttributes_GLOBALSYMBOL$$" #NAME) \ 1025: = VALUE 1026: #define GLOBALVALUEREF(TYPE,NAME) \ 1027: const TYPE NAME[1] \ 1028: asm ("_$$PsectAttributes_GLOBALVALUE$$" #NAME) 1029: #define GLOBALVALUEDEF(TYPE,NAME,VALUE) \ 1030: const TYPE NAME[1] \ 1031: asm ("_$$PsectAttributes_GLOBALVALUE$$" #NAME) \ 1032: = {VALUE} 1033: #else 1034: #define GLOBALREF(TYPE,NAME) \ 1035: globalref TYPE NAME 1036: #define GLOBALDEF(TYPE,NAME,VALUE) \ 1037: globaldef TYPE NAME = VALUE 1038: #define GLOBALVALUEDEF(TYPE,NAME,VALUE) \ 1039: globalvalue TYPE NAME = VALUE 1040: #define GLOBALVALUEREF(TYPE,NAME) \ 1041: globalvalue TYPE NAME 1042: #endif 1043: 1044: (The `_$$PsectAttributes_GLOBALSYMBOL' prefix at the start of the name 1045: is removed by the assembler, after it has modified the attributes of 1046: the symbol). These macros are provided in the VMS binaries 1047: distribution in a header file `GNU_HACKS.H'. An example of the usage 1048: is: 1049: 1050: GLOBALREF (int, ijk); 1051: GLOBALDEF (int, jkl, 0); 1052: 1053: The macros `GLOBALREF' and `GLOBALDEF' cannot be used 1054: straightforwardly for arrays, since there is no way to insert the array 1055: dimension into the declaration at the right place. However, you can 1056: declare an array with these macros if you first define a typedef for the 1057: array type, like this: 1058: 1059: typedef int intvector[10]; 1060: GLOBALREF (intvector, foo); 1061: 1062: Array and structure initializers will also break the macros; you can 1063: define the initializer to be a macro of its own, or you can expand the 1064: `GLOBALDEF' macro by hand. You may find a case where you wish to use 1065: the `GLOBALDEF' macro with a large array, but you are not interested in 1066: explicitly initializing each element of the array. In such cases you 1067: can use an initializer like: `{0,}', which will initialize the entire 1068: array to `0'. 1069: 1070: A shortcoming of this implementation is that a variable declared with 1071: `GLOBALVALUEREF' or `GLOBALVALUEDEF' is always an array. For example, 1072: the declaration: 1073: 1074: GLOBALVALUEREF(int, ijk); 1075: 1076: declares the variable `ijk' as an array of type `int [1]'. This is 1077: done because a globalvalue is actually a constant; its "value" is what 1078: the linker would normally consider an address. That is not how an 1079: integer value works in C, but it is how an array works. So treating 1080: the symbol as an array name gives consistent results--with the 1081: exception that the value seems to have the wrong type. *Don't try to 1082: access an element of the array.* It doesn't have any elements. The 1083: array "address" may not be the address of actual storage. 1084: 1085: The fact that the symbol is an array may lead to warnings where the 1086: variable is used. Insert type casts to avoid the warnings. Here is an 1087: example; it takes advantage of the ANSI C feature allowing macros that 1088: expand to use the same name as the macro itself. 1089: 1090: GLOBALVALUEREF (int, ss$_normal); 1091: GLOBALVALUEDEF (int, xyzzy,123); 1092: #ifdef __GNUC__ 1093: #define ss$_normal ((int) ss$_normal) 1094: #define xyzzy ((int) xyzzy) 1095: #endif 1096: 1097: Don't use `globaldef' or `globalref' with a variable whose type is 1098: an enumeration type; this is not implemented. Instead, make the 1099: variable an integer, and use a `globalvaluedef' for each of the 1100: enumeration values. An example of this would be: 1101: 1102: #ifdef __GNUC__ 1103: GLOBALDEF (int, color, 0); 1104: GLOBALVALUEDEF (int, RED, 0); 1105: GLOBALVALUEDEF (int, BLUE, 1); 1106: GLOBALVALUEDEF (int, GREEN, 3); 1107: #else 1108: enum globaldef color {RED, BLUE, GREEN = 3}; 1109: #endif 1.1.1.3 root 1110:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.