Some Qt apps crashs if they are compiled with gcc5 (QTBUG-45755)
This commit is contained in:
parent
e3ee214066
commit
656fd93b8c
131
0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch
Normal file
131
0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch
Normal file
@ -0,0 +1,131 @@
|
||||
From 36d6eb721e7d5997ade75e289d4088dc48678d0d Mon Sep 17 00:00:00 2001
|
||||
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||
Date: Tue, 5 May 2015 08:43:42 -0700
|
||||
Subject: [PATCH 260/266] Require -fPIC instead of just -fPIE for
|
||||
-reduce-relocations
|
||||
|
||||
GCC 5 combined with a recent binutils have a new optimization that
|
||||
allows them to generate copy relocations even in -fPIE code. Clang has
|
||||
the same functionality when compiling an executable with -flto. We need
|
||||
to let the compilers know that they cannot use copy relocations, so they
|
||||
need to use really position-independent code.
|
||||
|
||||
Position independent code throughout is not really required. We just
|
||||
need the compilers to use position-independent access to symbols coming
|
||||
from the Qt libraries, but there's currently no other way of doing that.
|
||||
|
||||
Task-number: QTBUG-45755
|
||||
Change-Id: I0d4913955e3745b69672ffff13db5df7377398c5
|
||||
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
||||
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
|
||||
---
|
||||
mkspecs/common/gcc-base.conf | 2 +-
|
||||
mkspecs/common/qcc-base.conf | 2 +-
|
||||
mkspecs/linux-icc/qmake.conf | 2 +-
|
||||
src/corelib/Qt5CoreConfigExtras.cmake.in | 2 +-
|
||||
src/corelib/global/qglobal.h | 4 ++--
|
||||
tests/auto/tools/moc/tst_moc.cpp | 6 +++---
|
||||
6 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
|
||||
index a149f4d..e4ccbd7 100644
|
||||
--- a/mkspecs/common/gcc-base.conf
|
||||
+++ b/mkspecs/common/gcc-base.conf
|
||||
@@ -42,7 +42,7 @@ QMAKE_CFLAGS_RELEASE += $$QMAKE_CFLAGS_OPTIMIZE
|
||||
QMAKE_CFLAGS_DEBUG += -g
|
||||
QMAKE_CFLAGS_SHLIB += -fPIC
|
||||
QMAKE_CFLAGS_STATIC_LIB += -fPIC
|
||||
-QMAKE_CFLAGS_APP += -fPIE
|
||||
+QMAKE_CFLAGS_APP += -fPIC
|
||||
QMAKE_CFLAGS_ISYSTEM = -isystem
|
||||
QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||
diff --git a/mkspecs/common/qcc-base.conf b/mkspecs/common/qcc-base.conf
|
||||
index f529d7f..8276316 100644
|
||||
--- a/mkspecs/common/qcc-base.conf
|
||||
+++ b/mkspecs/common/qcc-base.conf
|
||||
@@ -23,7 +23,7 @@ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -g
|
||||
QMAKE_CFLAGS_DEBUG += -g
|
||||
QMAKE_CFLAGS_SHLIB += -fPIC -shared
|
||||
QMAKE_CFLAGS_STATIC_LIB += -fPIC
|
||||
-QMAKE_CFLAGS_APP += -fPIE
|
||||
+QMAKE_CFLAGS_APP += -fPIC
|
||||
QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
|
||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||
QMAKE_CFLAGS_SSE2 += -msse2
|
||||
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
|
||||
index 8119c8a..9190aa9 100644
|
||||
--- a/mkspecs/linux-icc/qmake.conf
|
||||
+++ b/mkspecs/linux-icc/qmake.conf
|
||||
@@ -12,7 +12,7 @@ QMAKE_LEXFLAGS =
|
||||
QMAKE_YACC = yacc
|
||||
QMAKE_YACCFLAGS = -d
|
||||
QMAKE_CFLAGS =
|
||||
-QMAKE_CFLAGS_APP = -fPIE
|
||||
+QMAKE_CFLAGS_APP = -fPIC
|
||||
QMAKE_CFLAGS_DEPS = -M
|
||||
QMAKE_CFLAGS_WARN_ON = -w1 -Wall -Wcheck -wd1572,873,2259,2261
|
||||
QMAKE_CFLAGS_WARN_OFF = -w
|
||||
diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in
|
||||
index 7213a84..48d5f21 100644
|
||||
--- a/src/corelib/Qt5CoreConfigExtras.cmake.in
|
||||
+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in
|
||||
@@ -71,7 +71,7 @@ set(_qt5_corelib_extra_includes)
|
||||
# macro to add it.
|
||||
set(Qt5_POSITION_INDEPENDENT_CODE True)
|
||||
set_property(TARGET Qt5::Core PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE \"ON\")
|
||||
-set(Qt5Core_EXECUTABLE_COMPILE_FLAGS \"-fPIE\")
|
||||
+set(Qt5Core_EXECUTABLE_COMPILE_FLAGS \"-fPIC\")
|
||||
|
||||
!!IF !isEmpty(QT_NAMESPACE)
|
||||
list(APPEND Qt5Core_DEFINITIONS -DQT_NAMESPACE=$$QT_NAMESPACE)
|
||||
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
|
||||
index 455582e..ef84662 100644
|
||||
--- a/src/corelib/global/qglobal.h
|
||||
+++ b/src/corelib/global/qglobal.h
|
||||
@@ -1047,9 +1047,9 @@ Q_CORE_EXPORT int qrand();
|
||||
# define QT_NO_SHAREDMEMORY
|
||||
#endif
|
||||
|
||||
-#if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && !defined(__PIC__) && !defined(__PIE__)
|
||||
+#if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && !defined(__PIC__)
|
||||
# error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
|
||||
- "Compile your code with -fPIC or -fPIE."
|
||||
+ "Compile your code with -fPIC."
|
||||
#endif
|
||||
|
||||
namespace QtPrivate {
|
||||
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
|
||||
index edb6488..748cb82 100644
|
||||
--- a/tests/auto/tools/moc/tst_moc.cpp
|
||||
+++ b/tests/auto/tools/moc/tst_moc.cpp
|
||||
@@ -662,7 +662,7 @@ void tst_Moc::oldStyleCasts()
|
||||
|
||||
QStringList args;
|
||||
args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "."
|
||||
- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIE" << "-";
|
||||
+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-";
|
||||
proc.start("gcc", args);
|
||||
QVERIFY(proc.waitForStarted());
|
||||
proc.write(mocOut);
|
||||
@@ -732,7 +732,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension()
|
||||
|
||||
QStringList args;
|
||||
args << "-c" << "-x" << "c++" << "-I" << ".."
|
||||
- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIE" << "-";
|
||||
+ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-";
|
||||
proc.start("gcc", args);
|
||||
QVERIFY(proc.waitForStarted());
|
||||
proc.write(mocOut);
|
||||
@@ -1011,7 +1011,7 @@ void tst_Moc::ignoreOptionClashes()
|
||||
// If -pthread wasn't ignored, it was parsed as a prefix of "thread/", which breaks compilation.
|
||||
QStringList gccArgs;
|
||||
gccArgs << "-c" << "-x" << "c++" << "-I" << ".."
|
||||
- << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" << "-fPIE" << "-";
|
||||
+ << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" << "-fPIC" << "-";
|
||||
proc.start("gcc", gccArgs);
|
||||
QVERIFY(proc.waitForStarted());
|
||||
proc.write(mocOut);
|
||||
--
|
||||
2.4.0
|
||||
|
@ -37,7 +37,7 @@
|
||||
Summary: Qt5 - QtBase components
|
||||
Name: qt5-qtbase
|
||||
Version: 5.4.1
|
||||
Release: 15%{?dist}
|
||||
Release: 16%{?dist}
|
||||
|
||||
# See LGPL_EXCEPTIONS.txt, for exception details
|
||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||
@ -111,6 +111,8 @@ Patch332: 0132-Call-ofono-nm-Registered-delayed-in-constructor-othe.patch
|
||||
Patch336: 0136-Make-sure-there-s-a-scene-before-using-it.patch
|
||||
Patch440: 0240-QLockFile-fix-deadlock-when-the-lock-file-is-corrupt.patch
|
||||
Patch448: 0248-QNAM-Fix-upload-corruptions-when-server-closes-conne.patch
|
||||
Patch460: 0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch
|
||||
|
||||
# http://lists.qt-project.org/pipermail/announce/2015-February/000059.html
|
||||
# CVE-2015-0295
|
||||
Patch349: 0149-Fix-a-division-by-zero-when-processing-malformed-BMP.patch
|
||||
@ -388,6 +390,7 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
|
||||
%patch401 -p1 -b .0201
|
||||
%patch440 -p1 -b .0240
|
||||
%patch448 -p1 -b .0248
|
||||
%patch460 -p1 -b .0260
|
||||
|
||||
# drop -fexceptions from $RPM_OPT_FLAGS
|
||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
||||
@ -910,6 +913,9 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu May 14 2015 Rex Dieter <rdieter@fedoraproject.org> 5.4.1-16
|
||||
- Some Qt apps crashs if they are compiled with gcc5 (QTBUG-45755)
|
||||
|
||||
* Thu May 07 2015 Rex Dieter <rdieter@fedoraproject.org> 5.4.1-15
|
||||
- try harder to avoid doc/multilib conflicts (#1212750)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user