RFC / RFA: dwarf2 unwinding for targets with call-part-clobbered registers

Jim Wilson wilson@tuliptree.org
Tue Jul 8 03:30:00 GMT 2003


Joern Rennecke wrote:
> This is not correct for machines with call-part-clobbered registers.
> reg_raw_mode is a mode suitable to do caller-saves so that the register
> can hold any mode over a call.

It isn't clear exactly what problem you are trying to fix here.  I had 
to look at the call-part-clobbered stuff to even understand what you are 
talking about.

> So the only clean way to do this is to add another parameter to
> choose_hard_reg_mode that makes it return the largest mode that is not
> partially clobbered.
> Or should we add a new target hook instead?

I don't have complete info, but adding an option to choose_hard_reg_mode 
makes a little sense.

> And I have some questions on the use of RETURN_ADDR_OFFSET:
> This macro is not documented.  Is it save to use?  Should we add
> documentation for it?

It should be safe to use.  It should be documented.

> libstdc++-v3/libsupc++/eh_personality.cc:__gxx_personality_v0
> gets confused by SHmedia addresses, which have the least significant bit
> set.  

This is what MASK_RETURN_ADDR is for.

> So instead of hard-coding _Unwind_Word, I use __UNWIND_CFA_TYPE__ and
> __UNWIND_RA_TYPE__ and define them to _Unwind_Word if they are not
> already defined.

Does changing Unwind_Word to Unwind_Ptr work?

In the two places where you added UNWIND_CFA_TYPE * casts, it looks like 
you added an extra dereference which looks wrong.

Also, in both of these places, it isn't clear why the existing 
Unwind_Ptr cast doesn't work.

> I'm not sure where this stuff should be documented.  Or does it require no
> special documentation?

Any macro that communicates info between a target port and the rest of 
the compiler needs to be documented.

Jim



More information about the Gcc mailing list