[Top][All Lists]
[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