* Richard Biener:

>> Am 22.11.2025 um 00:29 schrieb H.J. Lu <[email protected]>:
>> 
>> On Sat, Nov 22, 2025 at 5:33 AM Florian Weimer <[email protected]> wrote:
>>> 
>>> * Richard Biener:
>>> 
>>>> +/* When the glibc we build against does not have dl_find_object 
>>>> tentatively
>>>> +   declare the relevant bits of the structure here and use a weak 
>>>> declaration
>>>> +   so we can perform a runtime check on its presence.  */
>>>> +#if !defined(DLFO_STRUCT_HAS_EH_DBASE)
>>> 
>>> I agree with Jakub that this should be restricted to __GLIBC__.
>>> 
>>> This works for the narrow case that _dl_find_object is not available at
>>> build time and becomes available at run time.  Extending this to make it
>>> optional at run time when it was available and build time does not work
>>> quite work because BFD ld does not support weak symbol versions (the
>> 
>> If a symbol isn't available at link-time, how can it be versioned?  At most,
>> some versions for BFD linker will make it with an empty version.  Does ld.so
>> disallow undefined weak symbols with an empty version?
>
> I suppose if glibc would change the _dl_find_object ABI by providing a
> new default version but keeping a compat one the weak symbol would
> pick up the new default at runtime as it is not possible to have a
> weak UNDEF binding to a specific version?

The weak unversioned symbol should bind to the base version, which we
expect will keep using the types that are copied into the GCC sources.

Only if we add a new glibc target with a future symbol version baseline
that might change.  But such a target will have _dl_find_object from the
start, so the duplicated declarations in the GCC sources won't be used.

Thanks,
Florian

Reply via email to