Re: Gdb complaints Incomplete CFI data; unspecified registers

Andrew Cagney
2005-01-04T20:39:49Z

H. J. Lu wrote:
> Gdb 6.3 generates many

What does your .gdbinit contain? "set complaints 1"?

> (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.
>