rdieter pushed to qt5-qtbase (f22). "Try to ensure that -fPIC is used in CMake builds (QTBUG-45755)"

notifications at fedoraproject.org notifications at fedoraproject.org
Sun May 17 13:25:25 UTC 2015


From 30b6c9691645b3bf55dc52eb447d3d6c35aa8355 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter at math.unl.edu>
Date: Sat, 16 May 2015 23:43:45 -0500
Subject: Try to ensure that -fPIC is used in CMake builds (QTBUG-45755)


diff --git a/0260-Make-qglobal.h-complain-if-you-use-fPIE.patch b/0260-Make-qglobal.h-complain-if-you-use-fPIE.patch
new file mode 100644
index 0000000..4208948
--- /dev/null
+++ b/0260-Make-qglobal.h-complain-if-you-use-fPIE.patch
@@ -0,0 +1,45 @@
+From 3eca75de67b3fd2c890715b30c7899cebc096fe9 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira at intel.com>
+Date: Mon, 11 May 2015 18:30:00 +0900
+Subject: [PATCH 260/262] Make qglobal.h complain if you use -fPIE
+
+Prior to Qt 5.4.2 (commit 36d6eb721e7d5997ade75e289d4088dc48678d0d), we
+allowed it, but now we need to enforce that it is not used. Note that
+-fPIE does define __PIC__, so we need this to catch the use of -fPIE.
+
+[ChangeLog][Important Behavior Changes] On x86 and x86-64 systems with
+ELF binaries (especially Linux), due to a new optimization in GCC 5.x in
+combination with a recent version of GNU binutils, compiling Qt
+applications with -fPIE is no longer enough. Applications now need to be
+compiled with the -fPIC option if Qt's option "reduce relocations" is
+active. Note that Clang is known to generate incompatible code even with
+-fPIC if the -flto option is active.
+
+Task-number: QTBUG-45755
+Change-Id: I66a35ce5f88941f29aa6ffff13dd210e0aa2728f
+Reviewed-by: Dmitry Shachnev <mitya57 at gmail.com>
+Reviewed-by: Simon Hausmann <simon.hausmann at theqtcompany.com>
+---
+ dist/changes-5.4.2           | 7 +++++++
+ src/corelib/global/qglobal.h | 4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
+index ef84662..4547877 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__)
++#if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && (!defined(__PIC__) || defined(__PIE__))
+ #  error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
+-         "Compile your code with -fPIC."
++         "Compile your code with -fPIC (-fPIE is not enough)."
+ #endif
+ 
+ namespace QtPrivate {
+-- 
+2.4.1
+
diff --git a/0262-Try-to-ensure-that-fPIC-is-used-in-CMake-builds.patch b/0262-Try-to-ensure-that-fPIC-is-used-in-CMake-builds.patch
new file mode 100644
index 0000000..cdfb455
--- /dev/null
+++ b/0262-Try-to-ensure-that-fPIC-is-used-in-CMake-builds.patch
@@ -0,0 +1,34 @@
+From 083c9269ed73e8771e1dbe10812696b45b7389f3 Mon Sep 17 00:00:00 2001
+From: Evangelos Foutras <evangelos at foutrelis.com>
+Date: Mon, 11 May 2015 12:20:57 +0300
+Subject: [PATCH 262/262] Try to ensure that -fPIC is used in CMake builds
+
+In commit 36d6eb721e7d5997ade75e289d4088dc48678d0d the -fPIE switch was
+replaced with -fPIC in an effort to avoid generating copy relocations
+which are incompatible with Qt5 when built with -reduce-relocations.
+
+Task-number: QTBUG-45755
+Change-Id: I59a55ea15052f498104848c5fd867e563ddc2290
+Reviewed-by: Thiago Macieira <thiago.macieira at intel.com>
+---
+ src/corelib/Qt5CoreConfigExtras.cmake.in | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in
+index 48d5f21..d4abc5f 100644
+--- a/src/corelib/Qt5CoreConfigExtras.cmake.in
++++ b/src/corelib/Qt5CoreConfigExtras.cmake.in
+@@ -70,8 +70,9 @@ set(_qt5_corelib_extra_includes)
+ # Qt5_POSITION_INDEPENDENT_CODE variable is used in the # qt5_use_module
+ # 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 \"-fPIC\")
++set_property(TARGET Qt5::Core PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE \"ON\")
++set_property(TARGET Qt5::Core APPEND PROPERTY INTERFACE_COMPILE_OPTIONS ${Qt5Core_EXECUTABLE_COMPILE_FLAGS})
+ 
+ !!IF !isEmpty(QT_NAMESPACE)
+ list(APPEND Qt5Core_DEFINITIONS -DQT_NAMESPACE=$$QT_NAMESPACE)
+-- 
+2.4.1
+
diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec
index 48c334d..a29a79e 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: 16%{?dist}
+Release: 17%{?dist}
 
 # See LGPL_EXCEPTIONS.txt, for exception details
 License: LGPLv2 with exceptions or GPLv3 with exceptions
@@ -112,6 +112,9 @@ 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
+# from 5.4.2 branch
+Patch461: 0260-Make-qglobal.h-complain-if-you-use-fPIE.patch
+Patch462: 0262-Try-to-ensure-that-fPIC-is-used-in-CMake-builds.patch
 
 # http://lists.qt-project.org/pipermail/announce/2015-February/000059.html
 # CVE-2015-0295
@@ -391,6 +394,8 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
 %patch440 -p1 -b .0240
 %patch448 -p1 -b .0248
 %patch460 -p1 -b .0260
+%patch461 -p1 -b .0260-2
+%patch462 -p1 -b .0262
 
 # drop -fexceptions from $RPM_OPT_FLAGS
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
@@ -913,8 +918,11 @@ fi
 
 
 %changelog
+* Sat May 16 2015 Rex Dieter <rdieter at fedoraproject.org> 5.4.1-17
+- Try to ensure that -fPIC is used in CMake builds (QTBUG-45755)
+
 * Thu May 14 2015 Rex Dieter <rdieter at fedoraproject.org> 5.4.1-16
-- Some Qt apps crashs if they are compiled with gcc5 (QTBUG-45755)
+- Some Qt apps crash if they are compiled with gcc5 (QTBUG-45755)
 
 * Thu May 07 2015 Rex Dieter <rdieter at fedoraproject.org> 5.4.1-15
 - try harder to avoid doc/multilib conflicts (#1212750)
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/qt5-qtbase.git/commit/?h=f22&id=30b6c9691645b3bf55dc52eb447d3d6c35aa8355


More information about the scm-commits mailing list