On 2021-11-08 2:48 p.m., Jakub Jelinek wrote:
Not really sure about PA or IA-64 function descriptors, are any of those allocated by the dynamic linker rather than created by the static linker?
On PA, the static linker creates all function descriptors. The dynamic linker is responsible for resolving descriptors when lazy binding is used.
The primary difference between 32 and 64-bit descriptors is that there can be multiple descriptors that resolve to the same function in the 32-bit run time. In the 64-bit case, there is one official procedure descriptor for each function.
I guess instead of removing the c-pch.c changes we could remember there not just a function pointer, but also a data pointer and compare if both are either the same or have the same load bias and punt only if they have different bias. Though, on architecture where all function pointers would be dynamically allocated and could change any time even that wouldn't be really a reliable check.
There is no call to dynamically allocate a descriptor but it is possible for code to dynamically build a descriptor. Dave -- John David Anglin dave.ang...@bell.net