[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [patches] Make --disable-versioning work in EGLIBC



Maxim Kuvyrkov wrote:

...

The remaining differences in API are the following ('Missing' means that the default configuration provides the symbol, but --disable-versioning configuration does not):

I forgot to mention an issue which occured only on powerpc; unfortunately, I didn't solve this problem completely:

7. Certain symbols, which are defined in sysdeps/ieee754/ with default_symbol_version have different binding when EGLIBC is built without symbol versioning. These symbols use global binding instead of weak binding.

This problem is due to the fact that .symver copies weakness from original symbol to versioned alias, but there is no way in GNU binutils to otherwise create an alias to a symbol preserving weak binding. Lack of such functionality does not allow to automatically set correct binding on symbol aliases when not using symbol versioning.

Current patch somewhat fixes this by adding __attribute__((weak)) to several identified occurrences of the problem. This workaround cannot guarantee, though, that all instances are fixed.

A proper way would be to add necessary functionality to copy symbol weakness to binutils GAS. E.g., .ifweak directive would be enough to handle this issue.

--
Maxim