-->
Page 186
that is, warn when there is a function with the same name as a virtual function in the base class, but with a type signature that doesn't match any virtual functions from the base class. | |
_Winline | Warn if a function cannot be inlined, and either it was declared as inline, or else the _finline_functions option was given. |
_Werror | Treat warnings as errors; abort compilation after any warning. |
DEBUGGING OPTIONS
GNU CC has various special options that are used for debugging either your program or gcc:
_g |
Produce debugging information in the operating system's native format (stabs, COFF,
XCOFF, or DWARF). GDB (the GNU debugger) can work with this debugging information. On most systems that use stabs format, _g enables use of extra debugging information that only GDB can use; this extra information makes debugging work better in GDB but will probably make other debuggers crash or refuse to read the program. If you want to control for certain whether to generate the extra information, use _gstabs, _gstabs, _gxcoff+, _gxcoff, _gdwarf+, or _gdwarf. Unlike most other C compilers, GNU CC allows you to use _g with _O. The shortcuts taken by optimized code may occasionally produce surprising results: Some variables you declared may not exist at all; flow of control may briefly move where you did not expect it; some statements may not be executed because they compute constant results or their values were already at hand; some statements may execute in different places because they were moved out of loops. Nevertheless, it proves possible to debug optimized output. This makes it reasonable to use the optimizer for programs that might have bugs. |
The following options are useful when GNU CC is generated with the capability for more than one debugging format.
_ggdb | Produce debugging information in the native format (if that is supported), including GDB extensions if at all possible. |
_gstabs | Produce debugging information in stabs format (if that is supported), without GDB extensions. This is the format used by DBX on most BSD systems. |
_gstabs+ | Produce debugging information in stabs format (if that is supported), using GNU extensions understood only by the GNU debugger (GDB). The use of these extensions is likely to make other debuggers crash or refuse to read the program. |
_gcoff | Produce debugging information in COFF format (if that is supported). This is the format used by SDB on most System V systems prior to System V Release 4. |
_gxcoff | Produce debugging information in XCOFF format (if that is supported). This is the format used by the DBX debugger on IBM RS/6000 systems. |
_gxcoff+ | Produce debugging information in XCOFF format (if that is supported), using GNU extensions understood only by the GNU debugger (GDB). The use of these extensions is likely to make other debuggers crash or refuse to read the program. |
_gdwarf | Produce debugging information in DWARF format (if that is supported). This is the format used by SDB on most System V Release 4 systems. |
_gdwarf+ |
Produce debugging information in DWARF format (if that is supported), using
GNU extensions understood only by the GNU debugger (GDB). The use of these extensions is
likely to make other debuggers crash or refuse to read the program.
_glevel _ggdblevel _gstabslevel _gcofflevel _gxcofflevel |
_gdwarflevel |
Request debugging information and also use
level to specify how much information. The default level is 2. Level 1 produces minimal information, enough for making backtraces in parts of the program that you don't plan to debug. This includes descriptions of functions and external variables, but no information about local variables and no line numbers. |
Page 187
Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use _g3. | |
_p | Generate extra code to write profile information suitable for the analysis program prof. |
_pg | Generate extra code to write profile information suitable for the analysis program gprof. |
_a | Generate extra code to write profile information for basic blocks, which will record the number of times each basic block is executed. This data could be analyzed by a program like tcov. Note, however, that the format of the data is not what tcov expects. Eventually, GNU gprof should be extended to process this data. |
_dletters | Says to make debugging dumps during compilation at times specified by letters. This is used for debugging the compiler. The filenames for most of the dumps are made by appending a word to the source filename (for example, foo.c.rtl or foo.c.jump). |
_dM | Dump all macro definitions at the end of preprocessing, and write no output. |
_dN | Dump all macro names, at the end of preprocessing. |
_dD | Dump all macro definitions at the end of preprocessing, in addition to normal output. |
_dy | Dump debugging information during parsing, to standard error. |
_dr | Dump after RTL generation, to file.rtl. |
_dx | Just generate RTL for a function instead of compiling it. Usually used with r. |
_dj | Dump after first jump optimization, to file .jump. |
_ds | Dump after CSE (including the jump optimization that sometimes follows CSE), to file .cse. |
_dL | Dump after loop optimization, to file .loop. |
_dt | Dump after the second CSE pass (including the jump optimization that sometimes follows CSE), to file .cse2. |
_df | Dump after flow analysis, to file .flow. |
_dc | Dump after instruction combination, to file .combine. |
_dS | Dump after the first instruction scheduling pass, to file .sched. |
_dl | Dump after local register allocation, to file .lreg. |
_dg | Dump after global register allocation, to file .greg. |
_dR | Dump after the second instruction scheduling pass, to file .sched2. |
_dJ | Dump after last jump optimization, to file .jump2. |
_dd | Dump after delayed branch scheduling, to file .dbr. |
_dk | Dump after conversion from registers to stack, to file .stack. |
_da | Produce all the dumps listed previously. |
_dm | Print statistics on memory usage, at the end of the run, to standard error. |
_dp | Annotate the assembler output with a comment indicating which pattern and alternative was used. |
_fpretend_float | When running a cross-compiler, pretend that the target machine uses the same floating-point format as the host machine. This causes incorrect output of the actual floating constants, but the actual instruction sequence will probably be the same as GNU CC would make when running on the target machine. |
_save_temps | Store the usual temporary intermediate files permanently; place them in the current directory and name them based on the source file. Thus, compiling foo.c with _c _save_temps would produce files foo.cpp and foo.s, as well as foo.o. |
_print_file_name=library | Print the full absolute name of the library file library would be used when linking, and do not do anything else. With this option, GNU CC does not compile or link anything; it just prints the filename. |
_print_libgcc_file_name | Same as _print_file_name=libgcc.a. |
_print_prog_name=program | Like _print_file_name, but searches for a program such as cpp. |