As some of you might know for what we have been discussing on IRC Qt 5.6 
introduced the notion of adding symbols version to the symbols it generates.

I'm not an expert on this area (so feel free to correct me if you think I'm 
wrong), but basically we should stop seeing symbols like:

  foo@Base 5.6.0

To see:

  foo@Qt_5 5.6.0

If I understood things correctly this was added upstream in order to, in the 
future, allow certain compatibility between Qt5 and Qt6. For example let's 
supose VLC loads two plugins: one built against Qt5 and another built against 

In the previous form the Qt6-based plugin might declare a QString, and chances 
are that the linker would load the Qt5 version. With this change it should 
load the appropriate one on each case.

We also have special definitions for private symbols, so we will catch them 
more easily.

Now we feared that this change would create us problems with loading apps 
compiled against older versions of Qt. In order to test this I built qtbase 
5.6 beta with this changes:

- sed -i 's/@Base/@Qt_5/g'  # yes, private symbols would get this wrong.
- Build qtbase and get symbols changes.
- Process them with pkgkde's symbolshelper. In this step private symbols will 
get corrected by marking as missing the @Base versions and "new ones" 
appearing with @QT5_PRIVATE in them.
- Build again this time succesfully getting the binary packages.
- On a VM I installed both an app I compiled with Qt 5.5 and hexalate, which 
only require stuff present in qtbase and qt5.6~beta's qtbase5-dev and 
- ssh -X the VM and run them both without issues.

So I think it's safe to go ahead with the changes.

Dmitry: we still need to look for private symbols as we used to, IIRC there 
where some cases of upstream not marking private symbols as such. having both 
methods at hand will surely catch those cases.

Kinds regards, Lisandro.

Si vives cada día de tu vida como si fuera el último,
algún día realmente tendrás razón.
  Steve Jobs

Lisandro Damián Nicanor Pérez Meyer

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply via email to