From 804a4093182a4bdbc30abfd3081a3f58c3bd2329 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 19 Jul 2017 08:05:30 +0200 Subject: [PATCH] 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. --- 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(-) create mode 100644 gas/testsuite/gas/pe/seh-x64-err-2.l create mode 100644 gas/testsuite/gas/pe/seh-x64-err-2.s diff --git a/gas/ChangeLog b/gas/ChangeLog index bd3333b453..c53ac9ad1f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2017-07-19 Tristan Gingold + + * 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 PR 21775 diff --git a/gas/config/obj-coff-seh.c b/gas/config/obj-coff-seh.c index 5c028f1a03..88ce0fcea4 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 9293b85834..8a6c0d906a 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 0000000000..48019ecd14 --- /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 0000000000..2feff04af4 --- /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 -- 2.34.1