libunwind-devel
[Top][All Lists]
Advanced

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

Re: [Libunwind-devel] crashes trying to get a backtrace from a signal ha


From: Lassi Tuura
Subject: Re: [Libunwind-devel] crashes trying to get a backtrace from a signal handler (ARM)
Date: Fri, 10 Sep 2010 23:47:15 +0200

Hi,

> I am totally open for both solutions, but I am afraid, I have not enough
> understanding of all this to implement this myself. I can try patches,
> either for uClibc or libunwind, and I am also willing to push a working
> change upstream, but I definitely need more guidance if I am supposed to
> write these patches myself.

You might want to consult the uclibc developers, especially if the descriptions 
are systematically not there for asm functions. Maybe they have something to 
suggest.

I won't be able to help you produce a patch. I don't develop on ARM and 
actually have no first-hand experience writing CIEs/FDEs. I can suggest a few 
examples: libunwind x86 assembler routines (a), and use of 'eh_frame', 'sleb' 
or 'uleb' in linux and glibc (b, c). I didn't find uclibc git repository which 
offered grep, only (d). In the ARM asm I found there, no debug_frames.

In theory .cfi_startproc / .cfi_adjust_cfa_offset / .cfi_offset / .cfi_endproc 
might help, at least if your assembler supports them and you familiarise 
yourself a bit with the DWARF standard at http://dwarfstd.org. It should be 
possible to make stand-alone asm file then run readelf on the object file, just 
to make tests.

(a)

http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=blob;f=src/x86/siglongjmp.S;hb=HEAD
http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=blob;f=src/x86/getcontext-freebsd.S;hb=HEAD

(b)

http://repo.or.cz/w/glibc.git?a=search&h=HEAD&st=grep&s=eh_frame
http://repo.or.cz/w/glibc.git?a=search&h=HEAD&st=grep&s=uleb

(c)

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git&a=search&h=HEAD&st=grep&s=debug_frame
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git&a=search&h=HEAD&st=grep&s=eh_frame
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git&a=search&h=HEAD&st=grep&s=uleb

(d)

http://git.uclibc.org/uClibc/tree/

Regards,
Lassi


reply via email to

[Prev in Thread] Current Thread [Next in Thread]