diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2015-09-17 11:35:36 -0700 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2015-09-21 15:22:49 +0000 |
commit | 05d401104ee6b10699b7288ead044d6765b19c4d (patch) | |
tree | 0909ed270cf051721ab528bd7baf5d16db1b9c29 /src/corelib/global/qversiontagging.cpp | |
parent | 67d4052be5f9b04bcb40d419370859fe71657d62 (diff) |
Fix QtCore compilation with clang
The .altmacro is not supported with Clang's integrated assembly.
The worst part is that I had this fixed, but apparently I never pushed
the update to Gerrit and then we staged the old version. This commit
brings back the fixes.
Incidentally, it also makes things work with freebsd-clang.
Change-Id: Id2a5d90d07d7ee470fcb9ad9696a9a0f9ced7ea7
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/corelib/global/qversiontagging.cpp')
-rw-r--r-- | src/corelib/global/qversiontagging.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/corelib/global/qversiontagging.cpp b/src/corelib/global/qversiontagging.cpp index e3d9efa16b..66d3f8d00f 100644 --- a/src/corelib/global/qversiontagging.cpp +++ b/src/corelib/global/qversiontagging.cpp @@ -33,18 +33,25 @@ #include "qglobal.h" -#if defined(Q_CC_GNU) && defined(Q_OS_LINUX) && defined(Q_PROCESSOR_X86) && !defined(QT_STATIC) +#if defined(Q_CC_GNU) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)) && defined(Q_PROCESSOR_X86) && !defined(QT_STATIC) # define SYM QT_MANGLE_NAMESPACE(qt_version_tag) # define SSYM QT_STRINGIFY(SYM) asm( +// ASM macro that makes one ELF versioned symbol +".macro make_versioned_symbol plainsym versionedsym\n" +".globl plainsym\n" +".type plainsym, @object\n" +".size plainsym, 1\n" +".symver plainsym, versionedsym\n" +"plainsym :\n" +".endm\n" + // ASM macro that makes one ELF versioned symbol qt_version_tag{sep}Qt_{major}.{minor} // that is an alias to qt_version_tag_{major}_{minor}. // The {sep} parameter must be @ for all old versions and @@ for the current version. ".macro make_one_tag major minor sep\n" -".globl " SSYM "_\\major\\()_\\minor\n" // make the symbol global -SSYM "_\\major\\()_\\minor:\n" // declare it -" .symver " SSYM "_\\major\\()_\\minor, " SSYM "\\sep\\()Qt_\\major\\().\\minor\n" +" make_versioned_symbol " SSYM "_\\major\\()_\\minor, " SSYM "\\sep\\()Qt_\\major\\().\\minor\n" ".endm\n" ".altmacro\n" |