[SCM] Qt 4 Debian packaging branch, master, updated. debian/4.6.0-1-65-g50b45f1
Modestas Vainius
modax at alioth.debian.org
Mon Feb 15 13:23:17 UTC 2010
The following commit has been merged in the master branch:
commit 50b45f15f7b4deedfec3d01835341815700f0122
Author: Modestas Vainius <modestas at vainius.eu>
Date: Mon Feb 15 15:21:16 2010 +0200
Simply armel ABI compatibility patch.
Create the alias with asm .symver directive rathen than overloading and casting
hacks.
---
debian/patches/92_armel_gcc43_valist_compat.diff | 67 ++++------------------
1 files changed, 11 insertions(+), 56 deletions(-)
diff --git a/debian/patches/92_armel_gcc43_valist_compat.diff b/debian/patches/92_armel_gcc43_valist_compat.diff
index 1db7aa3..e690d5c 100644
--- a/debian/patches/92_armel_gcc43_valist_compat.diff
+++ b/debian/patches/92_armel_gcc43_valist_compat.diff
@@ -8,80 +8,35 @@ Subject: Restore QtCore ABI compatibility with binaries built with g++ 4.3 on ar
qvsnprintf(char *str, size_t n, const char *fmt, va_list ap);
QString &QString::vsprintf(const char* cformat, va_list ap);
.
- The patch uses overloading feature of the C++ language to add aliases for the
- symbols above. Those aliases are mangled under g++ 4.4 in the same way as
- original symbols are under g++ 4.3 and below.
+ The patch uses .symver assembler directive to add aliases for the symbols
+ above. Those aliases are mangled in the same way as g++ 4.3 would mangle
+ original symbols.
Forward: not-needed
---- a/src/corelib/tools/qbytearray.h
-+++ b/src/corelib/tools/qbytearray.h
-@@ -52,6 +52,10 @@
- #error qbytearray.h must be included before any header file that defines truncate
- #endif
-
-+// Workaround type safety when casting to va_list.
-+#define DEBIAN_CAST_TO_VA_LIST(list, type) \
-+ (*reinterpret_cast<va_list*>(reinterpret_cast<type*>(&list)))
-+
- QT_BEGIN_HEADER
-
- QT_BEGIN_NAMESPACE
-@@ -96,6 +100,11 @@ Q_CORE_EXPORT int qstrnicmp(const char *
-
- // implemented in qvsnprintf.cpp
- Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap);
-+#if defined __ARM_EABI__ && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
-+ // va_list mangling has been changed in g++ 4.4 on armel. Add binary
-+ // compatibility hack for g++ 4.3 and below.
-+ Q_CORE_EXPORT int qvsnprintf(char *str, size_t n, const char *fmt, void* ap);
-+#endif
- Q_CORE_EXPORT int qsnprintf(char *str, size_t n, const char *fmt, ...);
-
- #ifdef QT3_SUPPORT
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
-@@ -5289,6 +5289,12 @@ QString &QString::vsprintf(const char* c
+@@ -5289,6 +5289,11 @@
return *this;
}
++// va_list mangling has been changed in g++ 4.4
++// Add ABI compatibility hack for g++ 4.3 and below.
+#if defined __ARM_EABI__ && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
-+QString &QString::vsprintf(const char* cformat, void* ap)
-+{
-+ return vsprintf(cformat, DEBIAN_CAST_TO_VA_LIST(ap, void*));
-+}
++__asm__(".symver _ZN7QString8vsprintfEPKcSt9__va_list, _ZN7QString8vsprintfEPKcPv@@");
+#endif
/*!
Returns the string converted to a \c{long long} using base \a
base, which is 10 by default and must be between 2 and 36, or 0.
---- a/src/corelib/tools/qstring.h
-+++ b/src/corelib/tools/qstring.h
-@@ -177,6 +177,15 @@ public:
- __attribute__ ((format (printf, 2, 0)))
- #endif
- ;
-+ // va_list mangling has been changed in g++ 4.4 on armel. Add binary
-+ // compatibility hack for g++ 4.3 and below.
-+#if defined __ARM_EABI__ && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
-+ QString &vsprintf(const char *format, void* ap)
-+#if defined(Q_CC_GNU) && !defined(__INSURE__)
-+ __attribute__ ((format (printf, 2, 0)))
-+#endif
-+ ;
-+#endif
- QString &sprintf(const char *format, ...)
- #if defined(Q_CC_GNU) && !defined(__INSURE__)
- __attribute__ ((format (printf, 2, 3)))
--- a/src/corelib/tools/qvsnprintf.cpp
+++ b/src/corelib/tools/qvsnprintf.cpp
-@@ -104,6 +104,13 @@ int qvsnprintf(char *str, size_t n, cons
+@@ -104,6 +104,12 @@
#endif
++// va_list mangling has been changed in g++ 4.4
++// Add ABI compatibility hack for g++ 4.3 and below.
+#if defined __ARM_EABI__ && defined __GNUC__ && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4)
-+int qvsnprintf(char *str, size_t n, const char *fmt, void* ap)
-+{
-+ return qvsnprintf(str, n, fmt, DEBIAN_CAST_TO_VA_LIST(ap, void*));
-+}
++__asm__(".symver _Z10qvsnprintfPcjPKcSt9__va_list, _Z10qvsnprintfPcjPKcPv@@");
+#endif
+
/*!
--
Qt 4 Debian packaging
More information about the pkg-kde-commits
mailing list