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.ang...@bell.net

Reply via email to