This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Fix gas crash on missing seh_endproc.
- From: Tristan Gingold <gingold at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 19 Jul 2017 06:06:28 -0000
- Subject: [binutils-gdb] Fix gas crash on missing seh_endproc.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=804a4093182a4bdbc30abfd3081a3f58c3bd2329
commit 804a4093182a4bdbc30abfd3081a3f58c3bd2329
Author: Tristan Gingold <tgingold@free.fr>
Date: Wed Jul 19 08:05:30 2017 +0200
Fix gas crash on missing seh_endproc.
gas/
* testsuite/gas/pe/seh-x64-err-2.s: New test.
* testsuite/gas/pe/seh-x64-err-2.l: New stderr output.
* testsuite/gas/pe/pe.exp: Add test.
* config/obj-coff-seh.c (obj_coff_seh_do_final): Don't try to end
seh part.
Diff:
---
gas/ChangeLog | 8 ++++++++
gas/config/obj-coff-seh.c | 5 +----
gas/testsuite/gas/pe/pe.exp | 1 +
gas/testsuite/gas/pe/seh-x64-err-2.l | 3 +++
gas/testsuite/gas/pe/seh-x64-err-2.s | 9 +++++++++
5 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bd3333b..c53ac9a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2017-07-19 Tristan Gingold <gingold@adacore.com>
+
+ * testsuite/gas/pe/seh-x64-err-2.s: New test.
+ * testsuite/gas/pe/seh-x64-err-2.l: New stderr output.
+ * testsuite/gas/pe/pe.exp: Add test.
+ * config/obj-coff-seh.c (obj_coff_seh_do_final): Don't try to end
+ seh part.
+
2017-07-18 Nick Clifton <nickc@redhat.com>
PR 21775
diff --git a/gas/config/obj-coff-seh.c b/gas/config/obj-coff-seh.c
index 5c028f1..88ce0fc 100644
--- a/gas/config/obj-coff-seh.c
+++ b/gas/config/obj-coff-seh.c
@@ -483,10 +483,7 @@ void
obj_coff_seh_do_final (void)
{
if (seh_ctx_cur != NULL)
- {
- as_bad (_("open SEH entry at end of file (missing .cfi_endproc)"));
- do_seh_endproc ();
- }
+ as_bad (_("open SEH entry at end of file (missing .seh_endproc)"));
}
/* Enter a prologue element into current context (x64). */
diff --git a/gas/testsuite/gas/pe/pe.exp b/gas/testsuite/gas/pe/pe.exp
index 9293b85..8a6c0d9 100644
--- a/gas/testsuite/gas/pe/pe.exp
+++ b/gas/testsuite/gas/pe/pe.exp
@@ -43,6 +43,7 @@ run_dump_test "set"
# These tests are only for x86_64 targets
if ([istarget "x86_64-*-mingw*"]) then {
run_list_test "seh-x64-err-1" ""
+ run_list_test "seh-x64-err-2" ""
run_dump_test "peseh-x64"
run_dump_test "peseh-x64-2"
run_dump_test "peseh-x64-3"
diff --git a/gas/testsuite/gas/pe/seh-x64-err-2.l b/gas/testsuite/gas/pe/seh-x64-err-2.l
new file mode 100644
index 0000000..48019ec
--- /dev/null
+++ b/gas/testsuite/gas/pe/seh-x64-err-2.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+
+.*: Error: open SEH entry at end of file \(missing .seh_endproc\)
diff --git a/gas/testsuite/gas/pe/seh-x64-err-2.s b/gas/testsuite/gas/pe/seh-x64-err-2.s
new file mode 100644
index 0000000..2feff04
--- /dev/null
+++ b/gas/testsuite/gas/pe/seh-x64-err-2.s
@@ -0,0 +1,9 @@
+ .file "t2.c"
+ .text
+
+# missing endproc
+ .seh_proc test_missing_endproc
+test_missing_endproc:
+ .seh_setframe %rbp, 0
+ .seh_endprologue
+ ret