This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Unwinder improvements.
Richard Henderson <rth@redhat.com> writes:
> On Wed, May 07, 2003 at 11:46:57PM +0200, Michal Ludvig wrote:
>> The API in <unwind.h> offers a function _Unwind_GetGR(). If I'm printing
>> a backtrace (eg. in a case of a program crash) using
>> _Unwind_ForceUnwind() I may choose to print argument registers (on archs
>> where function parameters are passed in registers) or even all
>> registers. However trying to fetch any register value via
>> _Unwind_GetGR() without knowing if it was saved or not will sooner or
>> later lead to a segfault (see a comment in _Unwind_GetGR() :-).
>
> At the moment I'm inclined to think this is a mis-use of
> the API.
>
>> So I need a way to determine if a given register was saved in the
>> context or not and that's why I added _Unwind_GetGRAddr(). Of course it
>> could have been _Unwind_IsGRValid() returning true or false, but
>> returning the address itself (or zero if not saved) is IMHO harmless.
>>
>> Or am I wrong?
>
> Well for one you should notice that mainline already has
> _Unwind_GetGRPtr, though that isn't exported.
>
> I'd be more inclined to simply return 0 (or deadbeef or
> some other value) instead of crashing, rather than adding
> another interface.
This is also a solution but would mark one value special that could be
there legally.
Shall I prepare a patch?
Andreas
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.inka.de
http://www.suse.de/~aj