From 6e0a4f159349aa3d4f6a0c46eb23ec86197fccfc Mon Sep 17 00:00:00 2001
From: Michael Snyder <msnyder@vmware.com>
Date: Wed, 15 Jul 2009 01:12:16 +0000
Subject: [PATCH] 2009-07-14  Michael Snyder  <msnyder@vmware.com>

	* gdb.arch/i386-signal.c (sigframe): Add a nop to avoid
	confusing the i386 epilogue unwinder.
---
 gdb/testsuite/ChangeLog              | 5 +++++
 gdb/testsuite/gdb.arch/i386-signal.c | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index ad57d81432b..4c3fd098a9a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-14  Michael Snyder  <msnyder@vmware.com>
+
+	* gdb.arch/i386-signal.c (sigframe): Add a nop to avoid
+	confusing the i386 epilogue unwinder.
+
 2009-07-14  Stan Shebs  <stan@codesourcery.com>
 
 	* gdb.trace/tracecmd.exp: Add basic test of tracepoint conditions.
diff --git a/gdb/testsuite/gdb.arch/i386-signal.c b/gdb/testsuite/gdb.arch/i386-signal.c
index d44bc888648..bf6f5c73443 100644
--- a/gdb/testsuite/gdb.arch/i386-signal.c
+++ b/gdb/testsuite/gdb.arch/i386-signal.c
@@ -37,6 +37,10 @@ main (void)
    The default CIE created by gas suffices to unwind from an empty
    function.  */
 
+/* Note: to make sure that the Dwarf unwinder gets to handle
+   the frame, we add an extra 'nop' after the label.  Otherwise,
+   the epilogue unwinder will see the 'ret' and grab the frame.  */
+
 asm(".text\n"
     "    .align 8\n"
     "    .globl setup\n"
@@ -49,5 +53,6 @@ asm(".text\n"
     "    nop\n"
     "    .globl sigframe\n"
     "sigframe:\n"
+    "    nop\n"
     "    ret\n"
     "    .cfi_endproc");
-- 
GitLab