[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Elfutils segfault on IA64

Kurt Roeckx <kurt <at> roeckx.be> writes:
> The new elfutils (0.157-1) segfaults on IA64.  I've been trying
> to debug this on merulo but ran into #691576.  When using a core
> file I also don't get any backtrace.
> The problem I'm seeing is:
> (sid_ia64-dchroot)kroeckx <at> merulo:~/elfutils-0.157/tests$
> LD_LIBRARY_PATH=../libelf:../libdw:../backends/
> -e testfileppc32.bz2 0x100004c0
> dwarf_cfi_addrframe (.eh_frame): no matching address range
> .debug_frame has 0x100004c0 => [0x100004c0, 0x100004d0):
>         return address in reg65
>         CFA location expression: bregx(1)
>         integer reg0 (r0): undefined
> Segmentation fault (core dumped)
> [...]
> Can someone help me get any useful information about this?

You might already have seen this upstream, but just in case, this was
fixed by:

commit 3dec3e110bb2a2453156868e1221dc8192399e3e
Author: Mark Wielaard <mjw@redhat.com>
Date:   Sun Oct 6 17:04:07 2013 +0200

    backends: ppc_abi_cfi reg1 use DW_CFA_val_offset not DW_CFA_val_expression.
    Register rules using expressions are stored using an offset from the
    start of the .eh_frame or .debug_frame ELF section data. Since abi_cfi
    rules aren't stored in those ELF sections they should use neither
    DW_CFA_expression nor DW_CFA_val_expression. The only backend that used
    DW_CFA_val_expression was ppc_cfi.c. It was easier to express the same
    rule using DW_CFA_val_offset than to change the code to handle register
    rules using expressions. On most architectures this did work by accident.
    See the definition of struct dwarf_frame_register value in libdw/cfi.h to
    see why. But on ia64 the abi_cfi data and actual frame data were placed
    too far apart and caused a crash in tests/run-addrcfi.sh for ppc32.
    Signed-off-by: Mark Wielaard <mjw@redhat.com>

See also the discussion at:




Reply to: