[cfe-dev] RFC: Only change libclang.so SONAME when the ABI changes

Dimitry Andric via cfe-dev cfe-dev at lists.llvm.org
Sat Jun 26 03:28:39 PDT 2021


On 26 Jun 2021, at 06:04, Tom Stellard via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> 
> I would like to propose that we only change the SONAME of libclang.so
> (this is the library that contains the C API for clang) when the ABI changes.
> Currently, we change the SONAME whenever we bump the major version of LLVM,
> but the C API tends to not change that often.
> 
> This change will allow operating system maintainers to update the version
> of libclang.so in their operating system without forcing rebuilds of
> all programs that depend on it.
> 
> The steps for implementing this change would be:
> 
> - Hard-code the SONAME for libclang.so to libclang.so.13 (which is the current
> SONAME).
> - Hard-code the symbol versions to LLVM_13 (which is the current symbol version)
>  for all existing symbols.
> - Add a test case that checks if a new symbol has been added and ensures it has
>  the correct symbol version.
> - Add a buildbot that uses abi-compliance-checker[1] to ensure that ABI/API does
>  not change unexpectedly.
> - The next time the ABI of libclang.so is changed, the SOANME will be updated to
>  libclang.so.$LLVM_MAJOR_VERSION.
> 
> What do you think?

This sounds like a good plan in general (not only for libclang :), but
how strict is this ABI check? Does *any* change (even like adding a new
function) trigger an ABI check error?

E.g., what are the criteria for bumping the version?

-Dimitry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20210626/8315828e/attachment.sig>


More information about the cfe-dev mailing list