--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: dh-acc: Testing C++ headers with dh-acc results in: function body not available
- From: Maximiliano Curia <maxy@debian.org>
- Date: Fri, 09 Sep 2016 16:01:25 +0200
- Message-id: <147342968575.2490.3944923575567675297.reportbug@amadeus.gnuservers.com.ar>
Package: dh-acc
Version: 1.99.22-1
Severity: important
Hi,
Lately, I've been having some issues with dh-acc as used in the KDE packages
(only used to test the headers running in an autopkgtest test), the run stops
in a gcc error related to an inline function that can't be expanded. For
example the kglobalaccel acc test log ends with:
The GCC parameters:
gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC "/tmp/7OQ4QvzIdj/dump1.h" -I/usr/include/KF5/KGlobalAccel -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:13:0,
from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBusDepends:3,
from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBus:3,
from /usr/include/KF5/KGlobalAccel/private/kglobalacceld.h:31,
from /tmp/7OQ4QvzIdj/dump1.h:10:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h: In function ‘void qbswap(T, uchar*) [with T = long long unsigned int; uchar = unsigned char]’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:72:44: error: inlining failed in call to always_inline ‘void qToUnaligned(T, uchar*) [with T = long long unsigned int; uchar = unsigned char]’: function body not available
template <typename T> Q_ALWAYS_INLINE void qToUnaligned(const T src, uchar *dest)
^~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:120:59: note: called from here
qToUnaligned<quint64>(__builtin_bswap64(source), dest);
^
Removing either the "-fkeep-inline-functions" parameter or the "-x c++-header"
in the gcc call makes the gcc invocation to succeed. But, in principle,
keeping those arguments make sense for acc.
I've seen this issue in some libstdc++ calls, and not only in qt5 ones, but
I'm still not sure if the issue is in to gcc, libstdc++ or if something's
really wrong with acc.
Please reassign as you see fit.
Happy hacking,
-- System Information:
Debian Release: stretch/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'buildd-unstable'), (500, 'testing'), (500, 'stable'), (50, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf
Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
Versions of packages dh-acc depends on:
ii abi-compliance-checker 1.99.22-1
ii debhelper 9.20160814
ii perl 5.22.2-4
dh-acc recommends no packages.
dh-acc suggests no packages.
-- no debconf information
Temporary header file '/tmp/shVagLXFQx/dump1.h' with the following content will be compiled to create GCC translation unit dump:
// add includes
#include "/usr/include/KF5/KGlobalAccel/KGlobalAccel"
#include "/usr/include/KF5/KGlobalAccel/kglobalaccel.h"
#include "/usr/include/KF5/KGlobalAccel/kglobalaccel_export.h"
#include "/usr/include/KF5/KGlobalAccel/private/kf5globalaccelprivate_export.h"
#include "/usr/include/KF5/KGlobalAccel/private/kglobalaccel_interface.h"
#include "/usr/include/KF5/KGlobalAccel/KGlobalShortcutInfo"
#include "/usr/include/KF5/KGlobalAccel/kglobalshortcutinfo.h"
#include "/usr/include/KF5/KGlobalAccel/private/kglobalacceld.h"
// add namespaces
namespace QDBusPendingReplyTypes{typedef int tmp_add_type_1;}
QDBusPendingReplyTypes::tmp_add_type_1 tmp_add_func_1(){return 0;};
namespace Qt{typedef int tmp_add_type_2;}
Qt::tmp_add_type_2 tmp_add_func_2(){return 0;};
namespace QtMetaTypePrivate{typedef int tmp_add_type_3;}
QtMetaTypePrivate::tmp_add_type_3 tmp_add_func_3(){return 0;};
namespace QtPrivate{typedef int tmp_add_type_4;}
QtPrivate::tmp_add_type_4 tmp_add_func_4(){return 0;};
namespace QtPrivate{namespace internal{typedef int tmp_add_type_5;}}
QtPrivate::internal::tmp_add_type_5 tmp_add_func_5(){return 0;};
namespace QtPrivate{namespace std{typedef int tmp_add_type_6;}}
QtPrivate::std::tmp_add_type_6 tmp_add_func_6(){return 0;};
namespace QtPrivate{namespace SwapExceptionTester{typedef int tmp_add_type_7;}}
QtPrivate::SwapExceptionTester::tmp_add_type_7 tmp_add_func_7(){return 0;};
namespace QtSharedPointer{typedef int tmp_add_type_8;}
QtSharedPointer::tmp_add_type_8 tmp_add_func_8(){return 0;};
// add classes
KGlobalAccel* tmp_add_class_0;
KGlobalAccelD* tmp_add_class_1;
KGlobalAccelInterface* tmp_add_class_2;
KGlobalShortcutInfo* tmp_add_class_3;
QAbstractAnimation* tmp_add_class_4;
QAbstractConcatenable* tmp_add_class_5;
QAbstractEventDispatcher* tmp_add_class_6;
QAbstractItemModel* tmp_add_class_7;
QAbstractListModel* tmp_add_class_8;
QAbstractNativeEventFilter* tmp_add_class_9;
QAbstractProxyModel* tmp_add_class_10;
QAbstractState* tmp_add_class_11;
QAbstractTableModel* tmp_add_class_12;
QAbstractTransition* tmp_add_class_13;
QAnimationDriver* tmp_add_class_14;
QAnimationGroup* tmp_add_class_15;
QArrayData* tmp_add_class_16;
QAssociativeIterable* tmp_add_class_17;
QAtomicInt* tmp_add_class_18;
QBasicMutex* tmp_add_class_19;
QBasicTimer* tmp_add_class_20;
QBitArray* tmp_add_class_21;
QBitRef* tmp_add_class_22;
QBuffer* tmp_add_class_23;
QByteArrayDataPtr* tmp_add_class_24;
QByteArrayMatcher* tmp_add_class_25;
QByteRef* tmp_add_class_26;
QChar* tmp_add_class_27;
QCharRef* tmp_add_class_28;
QChildEvent* tmp_add_class_29;
QCollator* tmp_add_class_30;
QCollatorSortKey* tmp_add_class_31;
QCommandLineOption* tmp_add_class_32;
QCommandLineParser* tmp_add_class_33;
QContiguousCacheData* tmp_add_class_34;
QCoreApplication* tmp_add_class_35;
QCryptographicHash* tmp_add_class_36;
QDBusAbstractAdaptor* tmp_add_class_37;
QDBusAbstractInterface* tmp_add_class_38;
QDBusAbstractInterfaceBase* tmp_add_class_39;
QDBusArgument* tmp_add_class_40;
QDBusConnection* tmp_add_class_41;
QDBusConnectionInterface* tmp_add_class_42;
QDBusContext* tmp_add_class_43;
QDBusError* tmp_add_class_44;
QDBusInterface* tmp_add_class_45;
QDBusMessage* tmp_add_class_46;
QDBusMetaType* tmp_add_class_47;
QDBusObjectPath* tmp_add_class_48;
QDBusPendingCall* tmp_add_class_49;
QDBusPendingCallWatcher* tmp_add_class_50;
QDBusPendingReplyData* tmp_add_class_51;
QDBusServer* tmp_add_class_52;
QDBusServiceWatcher* tmp_add_class_53;
QDBusSignature* tmp_add_class_54;
QDBusUnixFileDescriptor* tmp_add_class_55;
QDBusVariant* tmp_add_class_56;
QDBusVirtualObject* tmp_add_class_57;
QDate* tmp_add_class_58;
QDateTime* tmp_add_class_59;
QDebugStateSaver* tmp_add_class_60;
QDeferredDeleteEvent* tmp_add_class_61;
QDir* tmp_add_class_62;
QDirIterator* tmp_add_class_63;
QDynamicPropertyChangeEvent* tmp_add_class_64;
QEasingCurve* tmp_add_class_65;
QElapsedTimer* tmp_add_class_66;
QEvent* tmp_add_class_67;
QEventLoop* tmp_add_class_68;
QEventLoopLocker* tmp_add_class_69;
QEventTransition* tmp_add_class_70;
QException* tmp_add_class_71;
QFactoryInterface* tmp_add_class_72;
QFile* tmp_add_class_73;
QFileDevice* tmp_add_class_74;
QFileInfo* tmp_add_class_75;
QFileSelector* tmp_add_class_76;
QFileSystemWatcher* tmp_add_class_77;
QFinalState* tmp_add_class_78;
QFlag* tmp_add_class_79;
QFutureInterfaceBase* tmp_add_class_80;
QFutureWatcherBase* tmp_add_class_81;
QGenericArgument* tmp_add_class_82;
QGenericReturnArgument* tmp_add_class_83;
QHashData* tmp_add_class_84;
QHashDummyValue* tmp_add_class_85;
QHistoryState* tmp_add_class_86;
QIODevice* tmp_add_class_87;
QIdentityProxyModel* tmp_add_class_88;
QIncompatibleFlag* tmp_add_class_89;
QInternal* tmp_add_class_90;
QItemSelection* tmp_add_class_91;
QItemSelectionModel* tmp_add_class_92;
QItemSelectionRange* tmp_add_class_93;
QJsonArray* tmp_add_class_94;
QJsonDocument* tmp_add_class_95;
QJsonObject* tmp_add_class_96;
QJsonParseError* tmp_add_class_97;
QJsonValue* tmp_add_class_98;
QJsonValuePtr* tmp_add_class_99;
QJsonValueRef* tmp_add_class_100;
QJsonValueRefPtr* tmp_add_class_101;
QKeySequence* tmp_add_class_102;
QLatin1Char* tmp_add_class_103;
QLatin1String* tmp_add_class_104;
QLibrary* tmp_add_class_105;
QLibraryInfo* tmp_add_class_106;
QLine* tmp_add_class_107;
QLineF* tmp_add_class_108;
QLinkedListData* tmp_add_class_109;
QListData* tmp_add_class_110;
QLocale* tmp_add_class_111;
QLockFile* tmp_add_class_112;
QMapDataBase* tmp_add_class_113;
QMapNodeBase* tmp_add_class_114;
QMargins* tmp_add_class_115;
QMarginsF* tmp_add_class_116;
QMessageAuthenticationCode* tmp_add_class_117;
QMessageLogContext* tmp_add_class_118;
QMetaClassInfo* tmp_add_class_119;
QMetaEnum* tmp_add_class_120;
QMetaMethod* tmp_add_class_121;
QMetaObject* tmp_add_class_122;
QMetaProperty* tmp_add_class_123;
QMetaType* tmp_add_class_124;
QMimeData* tmp_add_class_125;
QMimeDatabase* tmp_add_class_126;
QMimeType* tmp_add_class_127;
QModelIndex* tmp_add_class_128;
QMutex* tmp_add_class_129;
QMutexLocker* tmp_add_class_130;
QObject* tmp_add_class_131;
QObjectCleanupHandler* tmp_add_class_132;
QObjectData* tmp_add_class_133;
QObjectUserData* tmp_add_class_134;
QParallelAnimationGroup* tmp_add_class_135;
QPauseAnimation* tmp_add_class_136;
QPersistentModelIndex* tmp_add_class_137;
QPluginLoader* tmp_add_class_138;
QPoint* tmp_add_class_139;
QPointF* tmp_add_class_140;
QProcess* tmp_add_class_141;
QProcessEnvironment* tmp_add_class_142;
QPropertyAnimation* tmp_add_class_143;
QReadLocker* tmp_add_class_144;
QReadWriteLock* tmp_add_class_145;
QRect* tmp_add_class_146;
QRectF* tmp_add_class_147;
QRegExp* tmp_add_class_148;
QRegularExpression* tmp_add_class_149;
QRegularExpressionMatch* tmp_add_class_150;
QRegularExpressionMatchIterator* tmp_add_class_151;
QResource* tmp_add_class_152;
QRunnable* tmp_add_class_153;
QSaveFile* tmp_add_class_154;
QScopedPointerPodDeleter* tmp_add_class_155;
QSemaphore* tmp_add_class_156;
QSequentialAnimationGroup* tmp_add_class_157;
QSequentialIterable* tmp_add_class_158;
QSettings* tmp_add_class_159;
QSharedData* tmp_add_class_160;
QSharedMemory* tmp_add_class_161;
QSignalBlocker* tmp_add_class_162;
QSignalMapper* tmp_add_class_163;
QSignalTransition* tmp_add_class_164;
QSize* tmp_add_class_165;
QSizeF* tmp_add_class_166;
QSocketNotifier* tmp_add_class_167;
QSortFilterProxyModel* tmp_add_class_168;
QStandardPaths* tmp_add_class_169;
QState* tmp_add_class_170;
QStateMachine* tmp_add_class_171;
QStaticPlugin* tmp_add_class_172;
QStorageInfo* tmp_add_class_173;
QStringDataPtr* tmp_add_class_174;
QStringList* tmp_add_class_175;
QStringListModel* tmp_add_class_176;
QStringMatcher* tmp_add_class_177;
QStringRef* tmp_add_class_178;
QSysInfo* tmp_add_class_179;
QSystemSemaphore* tmp_add_class_180;
QTemporaryDir* tmp_add_class_181;
QTemporaryFile* tmp_add_class_182;
QTextBoundaryFinder* tmp_add_class_183;
QTextCodec* tmp_add_class_184;
QTextDecoder* tmp_add_class_185;
QTextEncoder* tmp_add_class_186;
QTextStream* tmp_add_class_187;
QTextStreamManipulator* tmp_add_class_188;
QThread* tmp_add_class_189;
QThreadPool* tmp_add_class_190;
QThreadStorageData* tmp_add_class_191;
QTime* tmp_add_class_192;
QTimeLine* tmp_add_class_193;
QTimeZone* tmp_add_class_194;
QTimer* tmp_add_class_195;
QTimerEvent* tmp_add_class_196;
QTranslator* tmp_add_class_197;
QUnhandledException* tmp_add_class_198;
QUrl* tmp_add_class_199;
QUrlQuery* tmp_add_class_200;
QUuid* tmp_add_class_201;
QVariant* tmp_add_class_202;
QVariantAnimation* tmp_add_class_203;
QVariantComparisonHelper* tmp_add_class_204;
QVersionNumber* tmp_add_class_205;
QWaitCondition* tmp_add_class_206;
QWriteLocker* tmp_add_class_207;
QXmlStreamAttribute* tmp_add_class_208;
QXmlStreamAttributes* tmp_add_class_209;
QXmlStreamEntityDeclaration* tmp_add_class_210;
QXmlStreamEntityResolver* tmp_add_class_211;
QXmlStreamNamespaceDeclaration* tmp_add_class_212;
QXmlStreamNotationDeclaration* tmp_add_class_213;
QXmlStreamReader* tmp_add_class_214;
QXmlStreamStringRef* tmp_add_class_215;
QXmlStreamWriter* tmp_add_class_216;
pthread_attr_t* tmp_add_class_217;
The GCC parameters:
gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++-header -fpermissive -w -fPIC "/tmp/shVagLXFQx/dump1.h" -I/usr/include/KF5/KGlobalAccel -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:13:0,
from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBusDepends:3,
from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBus:3,
from /usr/include/KF5/KGlobalAccel/private/kglobalacceld.h:31,
from /tmp/shVagLXFQx/dump1.h:10:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h: In function ‘void qbswap(T, uchar*) [with T = long long unsigned int; uchar = unsigned char]’:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:72:44: error: inlining failed in call to always_inline ‘void qToUnaligned(T, uchar*) [with T = long long unsigned int; uchar = unsigned char]’: function body not available
template <typename T> Q_ALWAYS_INLINE void qToUnaligned(const T src, uchar *dest)
^~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt5/QtCore/qendian.h:120:59: note: called from here
qToUnaligned<quint64>(__builtin_bswap64(source), dest);
^
--- End Message ---