Mark Wielaard <mjw(a)redhat.com> writes:
On Thu, 2015-11-26 at 00:05 +0100, Ben Gamari wrote:
> Previously this was incorrectly assumed to be an ULEB128. Hilarity
> ensued.
>
> This appears to be the case in both DWARF 3, DWARF 4, and LSB 5.
>
> Also show set_loc argument as hexadecimal
>
> Finally, add a test for this behavior. This was derived from the
> following testsuite extract from output from the Glasgow Haskell
> Compiler,
> [...]
> Update styule
> [...]
> diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c
> index 39509b7..365da48 100644
> --- a/libdwfl/frame_unwind.c
> +++ b/libdwfl/frame_unwind.c
> @@ -559,8 +559,24 @@ handle_cfi (Dwfl_Frame *state, Dwarf_Addr pc, Dwarf_CFI *cfi,
Dwarf_Addr bias)
> bool ra_set = false;
> ebl_dwarf_to_regno (ebl, &ra);
>
> + fprintf(stderr, "\n");
> + fprintf(stderr, "Unwinding from %lx:\n", pc);
> + char *modname = "null";
> + if (cfi->dbg) modname = elf_getident(cfi->dbg->elf, NULL);
> + fprintf(stderr, " mod = %s\n", modname ? modname :
"null");
> + fprintf(stderr, " CIE offset = %lx\n",
frame->fde->cie->offset);
> + if (frame->fde->cie->signal_frame)
> + fprintf(stderr, " signal frame\n");
> +
Looks like this patch wasn't fully finished/cleaned up yet.
Oh dear; yes, this must have snuck in while I was reworking things.
Cheers,
- Ben