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: Generating DWARF CIE info


> The CIE says what the RA column is, but there is no initial value
> location expression generated for the return address.  That means
> that on entry to a function, the CIE cannot be used to tell what
> the return address is.

I'm not sure I understand.  The RA column is the column in the table which 
represents the return address, so the return address is the value contained 
in that column on function entry.  On SPARC, it's by convention the value 
contained in %o7 as far as the CFI are concerned.

> The macro is INCOMING_RETURN_ADDR_RTX.

But you explained in your previous message that it is not fully honored, 
didn't you?  Instead, RETURN_ADDR_OFFSET is used by the unwinder through 
__builtin_extract_return_addr, see the code in unwind-dw2.c.

> Other than the code which translates RTL to LocExpr not handling
> REG+offset, I don't see a reason why REG+OFFSET is not valid, or why the
> comment says that it is unnecessary.

If the offset is small (1 jump instruction on SPARC), it doesn't really matter 
for unwinding.

> On Sparc, it's only unnecessary because Sparc ignores the CIE.

No, the GCC unwinder does make use of the CIE on SPARC, see extract_cie_info 
in unwind-dw2.c.

-- 
Eric Botcazou


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