Subject: Re: Shared library support for ARM ELF
To: Todd Vierling <>
From: Richard Earnshaw <>
List: port-arm
Date: 07/20/2001 17:26:22
> On Fri, 20 Jul 2001, Ben Harris wrote:
> : > What else is required?
> :
> : MASK_RETURN_ADDR needs to be changed to generate code to check what mode
> : the CPU is in at run-time and pick the correct mask appropriately.
> : sys/arch/arm/include/profile.h demonstrates how to do this, but it needs
> : to be converted to a form GCC can understand.
> The mask is needed when gcc is *compiling* code, so how would this be done
> at run-time?  (Generation of code that does it on every return insn?  Eek,
> that sounds like a significant overhead added to function calls....)  Note
> I'm reading from your definition of "run-time" here that you are implying
> a program's run-time, not gcc's.

No, the only time it's needed is when we need to examine the return 
address in "C" code.  At run time the architecture just gets extracting 
the return bits right.  C code unpicking the stack however, has to throw 
away the bits that don't count.  In practise this will only occur when 
unwinding an exception.