-->

Previous | Table of Contents | Next

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.

Previous | Table of Contents | Next