Next: File Names and DBX, Previous: DBX Options, Up: Debugging Info
These are hooks for DBX format.
Define this macro to say how to output to stream the debugging information for the start of a scope level for variable names. The argument name is the name of an assembler symbol (for use with
assemble_name
) whose value is the address where the scope begins.
Define this macro if the target machine requires special handling to output an
N_FUN
entry for the function decl.
Define this macro if the target machine requires special output at the end of the debugging information for a function. The definition should be a C statement (sans semicolon) to output the appropriate information to stream. function is the
FUNCTION_DECL
node for the function.
Define this macro if you need to control the order of output of the standard data types at the beginning of compilation. The argument syms is a
tree
which is a chain of all the predefined global symbols, including names of data types.Normally, DBX output starts with definitions of the types for integers and characters, followed by all the other predefined types of the particular language in no particular order.
On some machines, it is necessary to output different particular types first. To do this, define
DBX_OUTPUT_STANDARD_TYPES
to output those symbols in the necessary order. Any predefined types that you don't explicitly output will be output afterward in no particular order.Be careful not to define this macro so that it works only for C. There are no global variables to access most of the built-in types, because another language may have another set of types. The way to output a particular type is to look through syms to see if you can find it. Here is an example:
{ tree decl; for (decl = syms; decl; decl = TREE_CHAIN (decl)) if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), "long int")) dbxout_symbol (decl); ... }This does nothing if the expected type does not exist.
See the function
init_decl_processing
in c-decl.c to find the names to use for all the built-in C types.Here is another way of finding a particular type:
{ tree decl; for (decl = syms; decl; decl = TREE_CHAIN (decl)) if (TREE_CODE (decl) == TYPE_DECL && (TREE_CODE (TREE_TYPE (decl)) == INTEGER_CST) && TYPE_PRECISION (TREE_TYPE (decl)) == 16 && TYPE_UNSIGNED (TREE_TYPE (decl))) /* This must beunsigned short
. */ dbxout_symbol (decl); ... }