This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: __builtin_return_address for ARM


Julian Brown wrote:
> On Thu, 26 Feb 2009 15:54:14 +0000
> Andrew Haley <aph@redhat.com> wrote:
> 
>> Paul Brook wrote:
>>>>   Well, but wouldn't it still be nice if
>>>> __builtin_return_address(N) was implemented for N>0 by libcalling
>>>> into the unwinder for you?  Obviously this would still have to
>>>> return NULL at runtime when you're running on a DW2 target without
>>>> any EH frame data present in memory (and I guess it wouldn't work
>>>> on SjLj targets either), but wouldn't it still be a nice
>>>> convenience feature for users?
>>> There are sufficiently many caveats and system specific bits of
>>> weirdness that you probably just have to know what you're doing (or
>>> rely on backtrace(3) to do it for you).
>>>
>>> IMHO builtins are for things that you can't do in normal C. So 
>>> __builtin_return_address(0) makes a lot of sense. Having it start
>>> guessing how to do N>0 much less so.
>> I suggest we could contribute a version of backtrace.c for ARM to
>> glibc. An example to follow is libc/sysdeps/ia64/backtrace.c.
> 
> GLIBC already knows how to do backtracing if the ARM-specific unwind
> tables are present (.ARM.exidx, etc.), using _Unwind_Backtrace.

I was about to say "On no it doesn't!" but I read your subsequent email.
:-)

> Unfortunately backtraces don't currently terminate cleanly if code
> without unwind data is reached: CodeSourcery are currently working on
> fixing the linker so that non-unwindable regions are marked properly,
> which we consider essential to making this feature usable.

Yeah, I noticed that when I implemented _Unwind_Backtrace.  It didn't matter
to me at the time because full unwind info is required for everything linked
with gcj.

Andrew.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]