Gdb complaints Incomplete CFI data; unspecified registers

H. J. Lu hjl@lucon.org
Fri Dec 31 19:09:00 GMT 2004


Gdb 6.3 generates many

(gdb) bt
#0  loc_descriptor (rtl=0xb7d671d4, can_use_fbreg=1 '\001')
    at /net/gnu/export/gnu/src/gcc/gcc/gcc/dwarf2out.c:8737
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813b181.
#1  0x0813c15e in add_location_or_const_value_attribute
(die=0xb7d66784,
    decl=0xb7d6021c, attr=DW_AT_location)
    at /net/gnu/export/gnu/src/gcc/gcc/gcc/dwarf2out.c:10041
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813c0c9.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813c0c9.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813c0c9.
During symbol reading, Incomplete CFI data; unspecified registers at
0x0813c0c9.

on binaries generated by gcc 4.0. According to the comments in gdb 6.3:

        /* NOTE: cagney/2003-09-05: CFI should specify the disposition
           of all debug info registers.  If it doesn't, complain (but
           not too loudly).  It turns out that GCC assumes that an
           unspecified register implies "same value" when CFI (draft
           7) specifies nothing at all.  Such a register could equally
           be interpreted as "undefined".  Also note that this check
           isn't sufficient; it only checks that all registers in the
           range [0 .. max column] are specified, and won't detect
           problems when a debug info register falls outside of the
           table.  We need a way of iterating through all the valid
           DWARF2 register numbers.  */
        if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
          complaint (&symfile_complaints,
                     "Incomplete CFI data; unspecified registers at
0x%s",
                     paddr (fs->pc));

it is intentional. My question is why gdb generates those annoying
messages at all if it can detect the code is generated by gcc.


H.J.



More information about the Gcc mailing list