46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
From 3eca75de67b3fd2c890715b30c7899cebc096fe9 Mon Sep 17 00:00:00 2001
|
|
From: Thiago Macieira <thiago.macieira@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@gmail.com>
|
|
Reviewed-by: Simon Hausmann <simon.hausmann@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
|
|
|