Controlling Debugging Information Format#
This describes how to specify debugging information.
Macros Affecting All Debugging Formats#
These macros affect all debugging formats.
-
DEBUGGER_REGNO(regno)#
A C expression that returns the debugger register number for the compiler register number
regno
. In the default macro provided, the value of this expression will beregno
itself. But sometimes there are some registers that the compiler knows about and debugger does not, or vice versa. In such cases, some register may need to have one number in the compiler and another for debugger.If two registers have consecutive numbers inside GCC, and they can be used as a pair to hold a multiword value, then they must have consecutive numbers after renumbering with
DEBUGGER_REGNO
. Otherwise, debuggers will be unable to access such a pair, because they expect register pairs to be consecutive in their own numbering scheme.If you find yourself defining
DEBUGGER_REGNO
in way that does not preserve register pairs, then what you must do instead is redefine the actual register numbering scheme.
-
DEBUGGER_AUTO_OFFSET(x)#
A C expression that returns the integer offset value for an automatic variable having address
x
(an RTL expression). The default computation assumes thatx
is based on the frame-pointer and gives the offset from the frame-pointer. This is required for targets that produce debugging output for debugger and allow the frame-pointer to be eliminated when the-g
option is used.
-
DEBUGGER_ARG_OFFSET(offset, x)#
A C expression that returns the integer offset value for an argument having address
x
(an RTL expression). The nominal offset isoffset
.
-
PREFERRED_DEBUGGING_TYPE#
A C expression that returns the type of debugging output GCC should produce when the user specifies just
-g
. Define this if you have arranged for GCC to support more than one format of debugging output. Currently, the allowable values areDWARF2_DEBUG
,VMS_DEBUG
, andVMS_AND_DWARF2_DEBUG
.When the user specifies
-ggdb
, GCC normally also uses the value of this macro to select the debugging output format, but with two exceptions. IfDWARF2_DEBUGGING_INFO
is defined, GCC uses the valueDWARF2_DEBUG
.The value of this macro only affects the default debugging output; the user can always get a specific type of output by using
-gdwarf-2
, or-gvms
.
-
DEFAULT_GDB_EXTENSIONS#
Define this macro to control whether GCC should by default generate GDB’s extended version of debugging information. If you don’t define the macro, the default is 1: always generate the extended information if there is any occasion to.
Macros for DWARF Output#
Here are macros for DWARF output.
-
DWARF2_DEBUGGING_INFO#
Define this macro if GCC should produce dwarf version 2 format debugging output in response to the
-g
option.To support optional call frame debugging information, you must also define
INCOMING_RETURN_ADDR_RTX
and either setRTX_FRAME_RELATED_P
on the prologue insns if you use RTL for the prologue, or calldwarf2out_def_cfa
anddwarf2out_reg_save
as appropriate fromTARGET_ASM_FUNCTION_PROLOGUE
if you don’t.
-
int TARGET_DWARF_CALLING_CONVENTION(const_tree function)#
Define this to enable the dwarf attribute
DW_AT_calling_convention
to be emitted for each function. Instead of an integer return the enum value for theDW_CC_
tag.
-
int TARGET_DWARF_CALLING_CONVENTION(const_tree function)
Define this to enable the dwarf attribute
DW_AT_calling_convention
to be emitted for each function. Instead of an integer return the enum value for theDW_CC_
tag.
-
DWARF2_FRAME_INFO#
Define this macro to a nonzero value if GCC should always output Dwarf 2 frame information. If
TARGET_EXCEPT_UNWIND_INFO
(see Assembler Commands for Exception Regions) returnsUI_DWARF2
, and exceptions are enabled, GCC will output this information not matter how you defineDWARF2_FRAME_INFO
.
-
enum unwind_info_type TARGET_DEBUG_UNWIND_INFO(void)#
This hook defines the mechanism that will be used for describing frame unwind information to the debugger. Normally the hook will return
UI_DWARF2
if DWARF 2 debug information is enabled, and returnUI_NONE
otherwise.A target may return
UI_DWARF2
even when DWARF 2 debug information is disabled in order to always output DWARF 2 frame information.A target may return
UI_TARGET
if it has ABI specified unwind tables. This will suppress generation of the normal debug frame unwind information.
-
DWARF2_ASM_LINE_DEBUG_INFO#
Define this macro to be a nonzero value if the assembler can generate Dwarf 2 line debug info sections. This will result in much more compact line number tables, and hence is desirable if it works.
-
DWARF2_ASM_VIEW_DEBUG_INFO#
Define this macro to be a nonzero value if the assembler supports view assignment and verification in
.loc
. If it does not, but the user enables location views, the compiler may have to fallback to internal line number tables.
-
int TARGET_RESET_LOCATION_VIEW(rtx_insn*)#
This hook, if defined, enables -ginternal-reset-location-views, and uses its result to override cases in which the estimated min insn length might be nonzero even when a PC advance (i.e., a view reset) cannot be taken for granted.
If the hook is defined, it must return a positive value to indicate the insn definitely advances the PC, and so the view number can be safely assumed to be reset; a negative value to mean the insn definitely does not advance the PC, and os the view number must not be reset; or zero to decide based on the estimated insn length.
If insn length is to be regarded as reliable, set the hook to
hook_int_rtx_insn_0
.
-
bool TARGET_WANT_DEBUG_PUB_SECTIONS#
True if the
.debug_pubtypes
and.debug_pubnames
sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them.
-
bool TARGET_DELAY_SCHED2#
True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg.
-
bool TARGET_DELAY_VARTRACK#
True if vartrack is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg.
-
bool TARGET_NO_REGISTER_ALLOCATION#
True if register allocation and the passes following it should not be run. Usually true only for virtual assembler targets.
-
ASM_OUTPUT_DWARF_DELTA(stream, size, label1, label2)#
A C statement to issue assembly directives that create a difference
lab1
minuslab2
, using an integer of the givensize
.
-
ASM_OUTPUT_DWARF_VMS_DELTA(stream, size, label1, label2)#
A C statement to issue assembly directives that create a difference between the two given labels in system defined units, e.g. instruction slots on IA64 VMS, using an integer of the given size.
-
ASM_OUTPUT_DWARF_OFFSET(stream, size, label, offset, section)#
A C statement to issue assembly directives that create a section-relative reference to the given
label
plusoffset
, using an integer of the givensize
. The label is known to be defined in the givensection
.
-
ASM_OUTPUT_DWARF_PCREL(stream, size, label)#
A C statement to issue assembly directives that create a self-relative reference to the given
label
, using an integer of the givensize
.
-
ASM_OUTPUT_DWARF_DATAREL(stream, size, label)#
A C statement to issue assembly directives that create a reference to the given
label
relative to the dbase, using an integer of the givensize
.
-
ASM_OUTPUT_DWARF_TABLE_REF(label)#
A C statement to issue assembly directives that create a reference to the DWARF table identifier
label
from the current section. This is used on some systems to avoid garbage collecting a DWARF table which is referenced by a function.
-
void TARGET_ASM_OUTPUT_DWARF_DTPREL(FILE *file, int size, rtx x)#
If defined, this target hook is a function which outputs a DTP-relative reference to the given TLS symbol of the specified size.
Macros for VMS Debug Format#
Here are macros for VMS debug format.
-
VMS_DEBUGGING_INFO#
Define this macro if GCC should produce debugging output for VMS in response to the
-g
option. The default behavior for VMS is to generate minimal debug info for a traceback in the absence of-g
unless explicitly overridden with-g0
. This behavior is controlled byTARGET_OPTION_OPTIMIZATION
andTARGET_OPTION_OVERRIDE
.
Macros for CTF Debug Format#
Here are macros for CTF debug format.
Macros for BTF Debug Format#
Here are macros for BTF debug format.