Re: Do symbols make sense for C++
On Thu, Jan 26, 2012 at 08:58:55AM +0100, Raphael Hertzog wrote:
> Hi,
>
> On Wed, 25 Jan 2012, Russ Allbery wrote:
> > 4. Once I had a symbols file that resulted in a successful build and that
> > I could have uploaded, I started thinking about how I was going to
> > maintain it. With a C program, I would change the symbols file
> > versions when the underlying function implementation changes in a way
> > that may not offer eqiuvalence, similar to bumping shlibs. I realized
> > that I was going to have no idea when that happened, and the only way
> > that I would maintain the symbols file would be to either trust
> > upstream to maintain ABI equivalence and therefore only change the
> > symbols file when upstream changes the SONAME, or not trust upstream to
> > maintain ABI equivalence and therefore change all the versions with
> > each new upstream release. That gives me exactly the same semantics as
> > a shlibs file, so what's the point in having a symbols file?
>
> The main benefit of the symbols file is that new symbols (API extension)
> are listed with the version where they have been introduced. So that
> seriously reduces the number of packages which would be affected by the
> equivalent shlibs bump.
>
> Otherwise I agree with you, maintainers of C++ libs are unlikely to be
> able to (preemptively) detect when a given symbol should have had its
> version bumped... so you should really trust upstream and hope to catch
> API extension that preserve ABI in the upstream changelog.
>
> > 5. The exported symbols of the library contained many symbols that
> > obviously weren't really from that library, but instead were artifacts
> > of the C++ compilation process, things like instantiations of
> > std::vector. Do those go into the symbols file? Do they change from
> > architecture to architecture? If they disappear again, is that
> > actually an ABI break? How do I know? It's all very mysterious, and
> > while shlibs provides the same semantics as just ignoring this, at
> > least I'm not then including in the package data, generated by me,
> > things that I'm just blindly ignoring.
>
> It's also very mysterious to me. :) But Modestas Vainius has still managed
> to maintain symbols files for many KDE libraries. He might be able to tell
> you more.
Chances are KDE libraries are using visibility flags when compiling,
which limits the number of exported symbols.
Mike
Reply to: