Skip to content

ABI: Compare libstdc++.so.6 by version definitions

Simon McVittie requested to merge wip/scout/libstdcpp into steamrt/scout

On Exherbo, the realpath() of libstdc++.so.6 is something like /usr/x86_64-pc-linux-gnu/lib/libstdc++-10.so.6.0.28 as part of a way to switch between gcc major versions. This doesn't strverscmp() correctly against the libstdc++.so.6.0.25 in the soldier runtime, or the equivalent in the scout runtime.

Because the libstdc++ ABI is curated by the gcc maintainers and associates every symbol with a public version definition, we should be able to compare versions correctly by comparing their set of version definitions.

This resolves the main part of https://github.com/ValveSoftware/steam-runtime/issues/381.


Still to do: verify that the version definitions are maintained as carefully as I think they are (the history of the .symbols file in Debian can confirm this).

This should be cherry-picked into soldier and sniper after merge.

Edited by Simon McVittie

Merge request reports