Re: [CRIS] dwarf2 frame sniffer problem?

Orjan Friberg
2004-03-12T12:00:34Z

Andrew Cagney wrote:
>
> Does this:
>
> /* 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));
> else
> cache->reg[regnum] = fs->regs.reg[column];
>
> sound like your problem? It's possible to specify initial values of
> such registers with:

I do get that complaint, and it seems a lot of registers are set to
DWARF2_FRAME_REG_UNSPECIFIED.

> /* Set the architecture-specific register state initialization
> function for GDBARCH to INIT_REG. */
>
> extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
> void (*init_reg) (struct gdbarch
> *, int,
> struct
> dwarf2_frame_state_reg *));

Thanks for the tip, I hadn't seen that. Reading the s390 implementation
of dwarf2_frame_init_reg I get the impression that that information
should have been there from the beginning (emitted by gcc that is) since
it seems to be ABI/calling convention related. But I'll try and
implement something similar.