diff --git a/0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch b/0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch new file mode 100644 index 0000000..9f488c2 --- /dev/null +++ b/0260-Require-fPIC-instead-of-just-fPIE-for-reduce-relocat.patch @@ -0,0 +1,131 @@ +From 36d6eb721e7d5997ade75e289d4088dc48678d0d Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +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 +Reviewed-by: Oswald Buddenhagen +--- + 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 + diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec index bd825ee..48c334d 100644 --- a/qt5-qtbase.spec +++ b/qt5-qtbase.spec @@ -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 5.4.1-16 +- Some Qt apps crashs if they are compiled with gcc5 (QTBUG-45755) + * Thu May 07 2015 Rex Dieter 5.4.1-15 - try harder to avoid doc/multilib conflicts (#1212750)