On Tuesday 27 October 2015 18:03:22 Thiago Macieira wrote: > On Tuesday 27 October 2015 17:52:38 Thiago Macieira wrote: > > A3) if not (if the constexpr methods in the Standard Library are missing) > > but the toolchain supports <atomic> with its constexpr methods, I can fix > > the header. Constexpr is not a mandatory feature outside of > > QAtomicInteger. > > BTW, the <atomic> header is documented in the QNX 6.6 site: > > http://www.qnx.com/developers/docs/660/index.jsp?topic=/com.qnx.doc.dinkum/t > opic/cpp11/index.html > > So I've gone ahead and implemented the above solution in > > https://codereview.qt-project.org/139149 > > I've self-approved and staged it just so we get a report on whether this > works or whether there are more breakages. We should get the reply in about > 3 hours from now.
Or sooner. http://testresults.qt.io/logs/qt/qtbase/f37b972295a6d204414c39367e0b537fa3369e04/LinuxRHEL_6_6x86_64QNXQNX_660armv5GCCRelease_DisableTests_OpenGLES2/da39a3ee5e6b4b0d3255bfef95601890afd80709/buildlog.txt.gz /opt/qnx660/target/qnx6/usr/include/cpp/xxatomic: In instantiation of 'std::atomic<_Ty*>::atomic(_Ty*) [with _Ty = void(QtMsgType, const char*)]': /opt/qnx660/target/qnx6/usr/include/cpp/xxatomic:336:3: error: invalid conversion from 'void (*)(QtMsgType, const char*)' to 'void*' [-fpermissive] /opt/qnx660/target/qnx6/usr/include/cpp/xxatomic:394:27: error: invalid static_cast from type 'void*' to type 'void (*)(QtMsgType, const QMessageLogContext&, const QString&)' This is caused by making the same mistake that the Intel Compiler's stdatomic.h header makes: failing to cast pointers to void* [1]. Note that it needs to be a C-style cast or a reinterpret_cast. Since this is an easy fix, can we count on the DW headers being fixed? If not, we should detect the mistake in the configure script and print the patch people should apply to their toolchains. [1] "What are you talking about? All pointers cast implicitly to void*!" Not all pointers do: function pointers and member pointers don't. That's why QLibrary::resolve() returns a QFunctionPointer instead of void*. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
