On Tuesday 26 August 2014, Thiago Macieira wrote: > On Monday 25 August 2014 22:44:38 Allan Sandfeld Jensen wrote: > > Using namespace or versioned symbols. I think something like > > -Wl,--default- symver on all Qt modules and > > -Wl,--default-imported-symver on anything using Qt modules could solve > > such crashes in many cases. It doesn't solve all issues though, and > > versioned symbols have a bad reputation. Finally the two options are not > > support by the gold linker we now prefer on linux, which would require > > using version scripts instead. > > To properly fix this, we need to break the ABI on either Qt 4 or Qt 5 and > that will not happen. That's what libudev did when it got integrated into > systemd and is causing us some headache. > > Something for people to remind us for Qt 6.
Well. That would the safe way, and we should keep that in mind for Qt6, but I believe with symbol versioning it can be done without breaking ABI, assuming it works as advertised. The libraries would export all symbols as both their normal form and with @Qt_5 or @Qt_4 added. The libraries would at link time remember which the version suffix they linked against, and prefer that symbol at runtime linking. This means the duplicate non versioned symbol shouldn't cause any issues. I haven't tried, and some information I found about it, seems to suggest it can run into bugs in ld.so. `Allan _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
