summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/unix/stack-protector/stack-protector.cpp52
-rw-r--r--config.tests/unix/stack-protector/stack-protector.pro2
-rw-r--r--configure.json6
-rw-r--r--mkspecs/common/qcc-base.conf2
-rw-r--r--mkspecs/features/default_post.prf5
-rw-r--r--mkspecs/features/qt_common.prf1
-rw-r--r--mkspecs/qnx-aarch64le-qcc/qmake.conf8
-rw-r--r--mkspecs/qnx-x86-64-qcc/qmake.conf8
8 files changed, 65 insertions, 19 deletions
diff --git a/config.tests/unix/stack-protector/stack-protector.cpp b/config.tests/unix/stack-protector/stack-protector.cpp
new file mode 100644
index 0000000000..8b3926fe1f
--- /dev/null
+++ b/config.tests/unix/stack-protector/stack-protector.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the config.tests of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#if defined(__QNXNTO__)
+#include <sys/neutrino.h>
+
+#if _NTO_VERSION < 700
+#error stack-protector not used (by default) before QNX 7.0.0.
+#endif
+
+#endif
+
+int main()
+{
+ return 0;
+}
diff --git a/config.tests/unix/stack-protector/stack-protector.pro b/config.tests/unix/stack-protector/stack-protector.pro
new file mode 100644
index 0000000000..ac84d7f148
--- /dev/null
+++ b/config.tests/unix/stack-protector/stack-protector.pro
@@ -0,0 +1,2 @@
+SOURCES = stack-protector.cpp
+QMAKE_CXXFLAGS += -fstack-protector-strong
diff --git a/configure.json b/configure.json
index 52831f161f..8b5f07ed54 100644
--- a/configure.json
+++ b/configure.json
@@ -425,8 +425,8 @@
},
"stack_protector": {
"label": "stack protection",
- "type": "compilerSupportsFlag",
- "test": "-fstack-protector-strong"
+ "type": "compile",
+ "test": "unix/stack-protector"
},
"incredibuild_xge": {
"label": "IncrediBuild",
@@ -930,7 +930,7 @@
"stack-protector-strong": {
"label": "stack protection",
"condition": "config.qnx && tests.stack_protector",
- "output": [ "publicQtConfig" ]
+ "output": [ "privateFeature" ]
},
"system-zlib": {
"label": "Using system zlib",
diff --git a/mkspecs/common/qcc-base.conf b/mkspecs/common/qcc-base.conf
index 4ef03d8587..b48e84ee1d 100644
--- a/mkspecs/common/qcc-base.conf
+++ b/mkspecs/common/qcc-base.conf
@@ -34,6 +34,8 @@ QMAKE_CFLAGS_SSE4_2 += -msse4.2
QMAKE_CFLAGS_AVX += -mavx
QMAKE_CFLAGS_AVX2 += -mavx2
+QMAKE_CFLAGS_STACK_PROTECTOR_STRONG = -fstack-protector-strong
+
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS -lang-c++
QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index d18604e0b8..7e027325bd 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -71,6 +71,11 @@ debug {
QMAKE_LIBFLAGS += $$QMAKE_LIBFLAGS_RELEASE
}
+stack_protector_strong {
+ QMAKE_CFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG
+ QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_STACK_PROTECTOR_STRONG
+}
+
# disable special linker flags for host builds (no proper test for host support yet)
!host_build|!cross_compile {
use_gold_linker: QMAKE_LFLAGS += $$QMAKE_LFLAGS_USE_GOLD
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index ea235514b7..1e138730b3 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -17,6 +17,7 @@ DEFINES *= QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
qtConfig(c++11): CONFIG += c++11 strict_c++
qtConfig(c++14): CONFIG += c++14
qtConfig(c++1z): CONFIG += c++1z
+qtConfig(stack-protector-strong): CONFIG += stack_protector_strong
contains(TEMPLATE, .*lib) {
# module and plugins
if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols
diff --git a/mkspecs/qnx-aarch64le-qcc/qmake.conf b/mkspecs/qnx-aarch64le-qcc/qmake.conf
index 5e3123bece..754bc27358 100644
--- a/mkspecs/qnx-aarch64le-qcc/qmake.conf
+++ b/mkspecs/qnx-aarch64le-qcc/qmake.conf
@@ -7,11 +7,3 @@ DEFINES += _FORTIFY_SOURCE=2
QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now
include(../common/qcc-base-qnx-aarch64le.conf)
-
-qtConfig(stack-protector-strong) {
- QMAKE_CFLAGS += -fstack-protector-strong
- QMAKE_CXXFLAGS += -fstack-protector-strong
-} else {
- QMAKE_CFLAGS += -fstack-protector -fstack-protector-all
- QMAKE_CXXFLAGS += -fstack-protector -fstack-protector-all
-}
diff --git a/mkspecs/qnx-x86-64-qcc/qmake.conf b/mkspecs/qnx-x86-64-qcc/qmake.conf
index 2a01ed1405..c479181342 100644
--- a/mkspecs/qnx-x86-64-qcc/qmake.conf
+++ b/mkspecs/qnx-x86-64-qcc/qmake.conf
@@ -5,11 +5,3 @@
QMAKE_LFLAGS_SHLIB += -Wl,-z,relro -Wl,-z,now
include(../common/qcc-base-qnx-x86-64.conf)
-
-qtConfig(stack-protector-strong) {
- QMAKE_CFLAGS += -fstack-protector-strong
- QMAKE_CXXFLAGS += -fstack-protector-strong
-} else {
- QMAKE_CFLAGS += -fstack-protector -fstack-protector-all
- QMAKE_CXXFLAGS += -fstack-protector -fstack-protector-all
-}