Complex DWARF expressions

Eli Zaretskii eliz@gnu.org
Mon Sep 22 18:21:00 GMT 2014


> Date: Mon, 22 Sep 2014 08:16:54 +0200
> From: Jan Kratochvil <jan.kratochvil@redhat.com>
> Cc: Eli Zaretskii <eliz@gnu.org>, gdb@sourceware.org
> 
> But $edx at the caller would be usually callee-clobbered so one would not be
> able to read the value.  This is why the caller's call instruction is described
> by:
> 
>  <8><1663ca>: Abbrev Number: 24 (DW_TAG_GNU_call_site)
>     <1663cb>   DW_AT_low_pc      : 0x814d44f
>     <1663cf>   DW_AT_abstract_origin: <0x15e7bc>
>  <9><1663d8>: Abbrev Number: 3 (DW_TAG_GNU_call_site_parameter)
>     <1663d9>   DW_AT_location    : 1 byte block: 52     (DW_OP_reg2 (edx))
>     <1663db>   DW_AT_GNU_call_site_value: 1 byte block: 30      (DW_OP_lit0)
> 
> So one finds matching DW_TAG_GNU_call_site and then one finds
> DW_TAG_GNU_call_site_parameter with matching DW_AT_location there.
> 
> These rules have to be applied recursively, as in many cases there is for
> example:
> 
>  <6><1669c2>: Abbrev Number: 3 (DW_TAG_GNU_call_site_parameter)
>     <1669c3>   DW_AT_location    : 1 byte block: 51     (DW_OP_reg1 (ecx))
>     <1669c5>   DW_AT_GNU_call_site_value: 7 byte block: f3 1 51 a ff ff 1a      (DW_OP_GNU_entry_value: (DW_OP_reg1 (ecx)); DW_OP_const2u: 65535; DW_OP_and)

Why can't GDB apply all this, and show a value for a given PC?  We
don't really expect anyone but a few DWARF specialists to understand
all that you said above (I, for example, didn't understand any of it),
right?



More information about the Gdb mailing list