aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2024-11-26 14:37:21 -0500
committerMarek Polacek <polacek@redhat.com>2025-02-13 17:17:16 -0500
commita134dcd8a010744a0097d190f73a4efc2e381531 (patch)
treee358ce920fda691dc363074e2cfa139aec9db9e3 /gcc/testsuite/c-c++-common
parenta560b5b5b508f39294989ee2559fcecdd2d8924a (diff)
downloadgcc-a134dcd8a010744a0097d190f73a4efc2e381531.zip
gcc-a134dcd8a010744a0097d190f73a4efc2e381531.tar.gz
gcc-a134dcd8a010744a0097d190f73a4efc2e381531.tar.bz2
driver: -fhardened and -z lazy/-z norelro [PR117739]
As the manual states, using "-fhardened -fstack-protector" will produce a warning because -fhardened wants to enable -fstack-protector-strong, but it can't since it's been overriden by the weaker -fstack-protector. -fhardened also attempts to enable -Wl,-z,relro,-z,now. By the same logic as above, "-fhardened -z norelro" or "-fhardened -z lazy" should produce the same warning. But we don't detect this combination, so this patch fixes it. I also renamed a variable to better reflect its purpose. Also don't check warn_hardened in process_command, since it's always true there. Also tweak wording in the manual as Jon Wakely suggested on IRC. PR driver/117739 gcc/ChangeLog: * doc/invoke.texi: Tweak wording for -Whardened. * gcc.cc (driver_handle_option): If -z lazy or -z norelro was specified, don't enable linker hardening. (process_command): Don't check warn_hardened. gcc/testsuite/ChangeLog: * c-c++-common/fhardened-16.c: New test. * c-c++-common/fhardened-17.c: New test. * c-c++-common/fhardened-18.c: New test. * c-c++-common/fhardened-19.c: New test. * c-c++-common/fhardened-20.c: New test. * c-c++-common/fhardened-21.c: New test. Reviewed-by: Jakub Jelinek <jakub@redhat.com>
Diffstat (limited to 'gcc/testsuite/c-c++-common')
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-16.c5
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-17.c5
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-18.c5
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-19.c5
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-20.c5
-rw-r--r--gcc/testsuite/c-c++-common/fhardened-21.c5
6 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/fhardened-16.c b/gcc/testsuite/c-c++-common/fhardened-16.c
new file mode 100644
index 0000000..7a50ad0
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-16.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-fhardened -O -Wl,-z,lazy -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/c-c++-common/fhardened-17.c b/gcc/testsuite/c-c++-common/fhardened-17.c
new file mode 100644
index 0000000..acef8c6
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-17.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-fhardened -O -z lazy -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/c-c++-common/fhardened-18.c b/gcc/testsuite/c-c++-common/fhardened-18.c
new file mode 100644
index 0000000..1a9a34b
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-18.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-Wl,-z,lazy -fhardened -O -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/c-c++-common/fhardened-19.c b/gcc/testsuite/c-c++-common/fhardened-19.c
new file mode 100644
index 0000000..a871702
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-19.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-z lazy -fhardened -O -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/c-c++-common/fhardened-20.c b/gcc/testsuite/c-c++-common/fhardened-20.c
new file mode 100644
index 0000000..c9f2d89
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-20.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-fhardened -O -Wl,-z,norelro -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */
diff --git a/gcc/testsuite/c-c++-common/fhardened-21.c b/gcc/testsuite/c-c++-common/fhardened-21.c
new file mode 100644
index 0000000..07b7ee1
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/fhardened-21.c
@@ -0,0 +1,5 @@
+/* PR driver/117739 */
+/* { dg-do compile { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-fhardened -O -z norelro -Whardened" } */
+
+/* { dg-warning "linker hardening options not enabled" "" { target *-*-* } 0 } */