]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Add tests of the linker's --errror-execstack and --error-rwx-segments options
authorNick Clifton <nickc@redhat.com>
Tue, 19 Aug 2025 14:25:39 +0000 (15:25 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 19 Aug 2025 14:25:39 +0000 (15:25 +0100)
ld/testsuite/ld-elf/elf.exp
ld/testsuite/ld-elf/gnu_execstack.err [new file with mode: 0644]
ld/testsuite/ld-elf/missing-execstack.err [new file with mode: 0644]
ld/testsuite/ld-elf/rwx-segments-3.err [new file with mode: 0644]
ld/testsuite/ld-elf/rwx-segments-4.err [new file with mode: 0644]
ld/testsuite/ld-elf/z_execstack.err [new file with mode: 0644]

index 1ae1af924dd2083d1f3dfb3aefb668553bd0b299..bb1f0eb6d65432f2b05f86ebc3a6673c5351ae26 100644 (file)
@@ -285,6 +285,13 @@ if {   [istarget *-*-*linux*]
            {pr29072-a.s} \
            {{ld pr29072.a.warn}} \
            "pr29072-a.exe"] \
+       [list "Test --error-execstack with an executable .note.GNU-stack" \
+           "--warn-execstack --error-execstack" \
+           "" \
+           "" \
+           {pr29072-a.s} \
+            {{ld gnu_execstack.err}} \
+           "gnu_execstack.exe"] \
        [list "PR 29072 (warn about -z execstack)" \
            "-z execstack --warn-execstack --no-error-execstack" \
            "" \
@@ -292,6 +299,13 @@ if {   [istarget *-*-*linux*]
            {stack.s} \
             {{ld pr29072.c.warn}} \
            "pr29072-c.exe"] \
+       [list "Test --error-execstack with -z execstack" \
+           "-z execstack --warn-execstack --error-execstack" \
+           "" \
+           "" \
+           {stack.s} \
+            {{ld z_execstack.err}} \
+           "execstack.exe"] \
        [list "PR ld/29072 (suppress warnings about executable stack)" \
            "-e 0 --no-warn-execstack" \
            "" \
@@ -299,13 +313,20 @@ if {   [istarget *-*-*linux*]
            {pr29072-a.s} \
            {} \
            "pr29072-d.exe"] \
-       [list "Ensure that a warning issued when creating a segment with RWX permissions" \
+       [list "Ensure that a warning is issued when creating a segment with RWX permissions" \
            "-e 0 -Tnobits-1.t --warn-rwx-segments --no-error-rwx-segments" \
            "" \
            "" \
            {nobits-1.s} \
             {{ld rwx-segments-1.l}} \
            "rwx-segments-1.exe"] \
+       [list "Ensure that a error can be issued when creating a segment with RWX permissions" \
+           "-e 0 -Tnobits-1.t --warn-rwx-segments --error-rwx-segments" \
+           "" \
+           "" \
+           {nobits-1.s} \
+            {{ld rwx-segments-3.err}} \
+           "rwx-segments-3.exe"] \
        [list "Ensure that a warning issued when creating a TLS segment with execute permission" \
            "-e 0 -T rwx-segments-2.t --warn-rwx-segments --no-error-rwx-segments" \
            "" \
@@ -313,6 +334,13 @@ if {   [istarget *-*-*linux*]
            {size-2.s} \
             {{ld rwx-segments-2.l}} \
            "rwx-segments-2.exe"] \
+       [list "Ensure that an error cn be issued when creating a TLS segment with execute permission" \
+           "-e 0 -T rwx-segments-2.t --warn-rwx-segments --error-rwx-segments" \
+           "" \
+           "" \
+           {size-2.s} \
+            {{ld rwx-segments-4.err}} \
+           "rwx-segments-4.exe"] \
        [list "Ensure that the RWX warning can be suppressed" \
            "-e 0 -Tnobits-1.t --no-warn-rwx-segments" \
            "" \
@@ -334,6 +362,16 @@ if {   [istarget *-*-*linux*]
            {{ld pr29072.b.warn}} \
            "pr29072-b.exe"] \
        ]
+
+      run_ld_link_tests [list \
+       [list "error when .note.GNU-stack is absent" \
+        "-e 0 -z stack-size=0x123400 --warn-execstack --error-execstack" \
+        "" \
+        "" \
+        {pr29072-b.s} \
+        {{ld missing-execstack.err}} \
+        "missing-execstack.exe"] \
+       ]
     } else {
        run_ld_link_tests [list \
           [list "PR ld/29072 (ignore absent .note.GNU-stack)" \
diff --git a/ld/testsuite/ld-elf/gnu_execstack.err b/ld/testsuite/ld-elf/gnu_execstack.err
new file mode 100644 (file)
index 0000000..be70b63
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*: error: .*: is triggering the generation of an executable stack \(because it has an executable .note.GNU-stack section\)
+#...
diff --git a/ld/testsuite/ld-elf/missing-execstack.err b/ld/testsuite/ld-elf/missing-execstack.err
new file mode 100644 (file)
index 0000000..9549cf5
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*: error: .*\.o: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section
+#...
diff --git a/ld/testsuite/ld-elf/rwx-segments-3.err b/ld/testsuite/ld-elf/rwx-segments-3.err
new file mode 100644 (file)
index 0000000..5a584db
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.* error: .* has a LOAD segment with RWX permissions
+#...
\ No newline at end of file
diff --git a/ld/testsuite/ld-elf/rwx-segments-4.err b/ld/testsuite/ld-elf/rwx-segments-4.err
new file mode 100644 (file)
index 0000000..2603f57
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+.*: error: .* has a TLS segment with execute permission
+#...
diff --git a/ld/testsuite/ld-elf/z_execstack.err b/ld/testsuite/ld-elf/z_execstack.err
new file mode 100644 (file)
index 0000000..703b42a
--- /dev/null
@@ -0,0 +1,4 @@
+#...
+.*: error: creating an executable stack because of -z execstack command line option
+#...
+