This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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 0/9] PowerPC64 ELFv2 ABI support.


Alan,

Could you point me to the ELFv2 ABI documentation and has it been 
registered anywhere official? My googling doesn't seem to be finding
it.

Thanks,

Jack

On 10/29/2013 07:19 PM, Alan Modra wrote:> This patch series makes the changes necessary in binutils to support
> the updated PowerPC64 ABI, which we're calling ELFv2.  Two major
> changes from the previous ABI are
> 
> - No function descriptors.
>    Functions set up their got/toc pointer as necessary on entry.  The
>    plt consists of single dword addresses.  Function pointers point at
>    the function code.  To make this work efficiently with static
>    linking, functions have *two* entry points, one we call the "global
>    entry" and another we call the "local entry".  The global entry
>    point is the address stored in function pointers, and it is a
>    requirement that calls to the global entry point have that address
>    in r12.  This is no hardship since calls via function pointers or
>    the plt will always use a sequence that loads the address into a
>    general purpose register, moves it to the count register, then
>    branches to the count register.  We just needed to make sure r12 was
>    the gpr used.  The "local entry" is used when the toc pointer is
>    known to already be valid for the function, typically true for
>    static linking, allowing the toc pointer setup to be skipped.
> 
> - Reduced stack frame size.
>    We removed the compiler and linker save words, and removed the
>    parameter save area for most functions.  This means the minimum
>    stack frame overhead is reduced from 112 bytes to 32 bytes (for
>    functions that need a frame), and many functions will used just the
>    minimum.  After some debate, we decided to keep the stack back-chain
>    word.
> 
> The ABI's are incompatible.  It won't be possible to link old objects
> with new except in rare cases, or to use old shared libraries with new
> executables at run time.
> 
> The first two patches in this series make changes that affect the old
> ABI too, the first one fixing a hole in the PowerPC64 ABI, and the
> second one makes all stubs conform with the ELFv2 ABI requirement on
> r12.
> 


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