[committed] hppa: Fix canonicalize of method and void pointers in comparison operations

John David Anglin dave.anglin@bell.net
Mon Sep 17 17:11:00 GMT 2018


On 2018-09-17 11:02 AM, Jeff Law wrote:
> On 9/14/18 5:44 PM, John David Anglin wrote:
>> The attached change fixes the canonicalization of method and void
>> pointers in comparisons against
>> another method or function pointer on 32-bit hppa targets.  As far as I
>> know, 32-bit hppa is the only
>> architecture that requires function pointer canonicalization due to lazy
>> binding.
>>
>> Tested on hppa2.0w-hp-hpux11.11 and hppa-unknown-linux-gnu, GCC trunk
>> and 8.  Committed to
>> trunk and gcc-8 branch.
> My recollection is HP's engineers were really concerned about the cost
> of indirect calls and wanted to drop all the $$dyncall and associated
> canonicalization of function pointers as they went to the 64 bit ABI.
As things stand, the linker and glibc would have to change to use OPDs.  
I doubt very much
much that this can be done without breaking compatibility with existing 
applications.  In linux,
there is a problem with the trampoline design used for lazy binding.  Of 
course, the code to
canonicalize function pointers is pretty horrible and fragile.

Helge has been pushing to get the 64-bit ABI working on linux.  I tend 
to think it would be easier
to get a 64-bit glibc working than solve the above.  Helge has the 
kernel interface more or less
done.

Dave

-- 
John David Anglin  dave.anglin@bell.net



More information about the Gcc-patches mailing list