[Development] Linker script / symbols versions for private entries in Qt 6, regression from Qt 5?

Thiago Macieira thiago.macieira at intel.com
Tue Apr 19 03:16:08 CEST 2022


On Monday, 18 April 2022 16:37:00 PDT Kevin Kofler via Development wrote:
> Lisandro Damián Nicanor Pérez Meyer wrote:
> > Sorry, that should have been
> > 
> > _ZN10QTableViewC2ER17QTableViewPrivateP7QWidget at Qt_6_PRIVATE_API

That's what I have here:

$ eu-readelf --dyn-syms lib/libQt6Widgets.t.so | grep 
_ZN10QTableViewC2ER17QTableViewPrivateP7QWidget   
11644: 000000000063bb88    114 FUNC    GLOBAL DEFAULT       15 
_ZN10QTableViewC2ER17QTableViewPrivateP7QWidget@@Qt_6_PRIVATE_API

Can you confirm that *17QTableViewPrivate* appears in your src/widgets/
Widgets.version?

> That should really be
> _ZN10QTableViewC2ER17QTableViewPrivateP7QWidget at Qt_6.3.0_PRIVATE_API
> (or whatever exact version you are building), as in the openSUSE patch to Qt
> 5 that Fedora and some other distributions are also carrying.
> 
> The point of those private APIs is that they change at every new version, so
> you want to require rebuilding stuff built with private APIs of the wrong
> version. If the symbol versioning does not ensure that, it is essentially
> useless.

Yes and that's very useful for Linux distributions. That patch should be 
upstreamed and enabled by default... but there should be an opt-out for 
developers. Those of us who recompile Qt often and do regression testing may 
need to run code across the version change boundaries without recompiling.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering





More information about the Development mailing list