This is the mail archive of the gcc-patches@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: [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


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