]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.arch/i386-signal.c
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.arch / i386-signal.c
CommitLineData
93d42b30
DJ
1/* Unwinder test program for signal frames.
2
213516ef 3 Copyright 2007-2023 Free Software Foundation, Inc.
93d42b30
DJ
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
93d42b30 10 (at your option) any later version.
a9762ec7 11
93d42b30
DJ
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
a9762ec7 16
93d42b30 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
93d42b30
DJ
19
20void sigframe (void);
21void setup (void);
22
23void
24func (void)
25{
26}
27
28int
29main (void)
30{
31 setup ();
32}
33
34/* Create an imitation signal frame. This will work on any x86 or
35 x86-64 target which uses a version of GAS recent enough for
36 .cfi_signal_frame (added 2006-02-27 and included in binutils 2.17).
37 The default CIE created by gas suffices to unwind from an empty
38 function. */
39
6e0a4f15
MS
40/* Note: to make sure that the Dwarf unwinder gets to handle
41 the frame, we add an extra 'nop' after the label. Otherwise,
42 the epilogue unwinder will see the 'ret' and grab the frame. */
43
93d42b30
DJ
44asm(".text\n"
45 " .align 8\n"
46 " .globl setup\n"
47 "setup:\n"
48 " push $sigframe\n"
49 " jmp func\n"
50 "\n"
51 " .cfi_startproc\n"
52 " .cfi_signal_frame\n"
53 " nop\n"
54 " .globl sigframe\n"
55 "sigframe:\n"
6e0a4f15 56 " nop\n"
93d42b30
DJ
57 " ret\n"
58 " .cfi_endproc");