xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.arch/powerpc-prologue.c (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1 /* Unwinder test program.
2 
3    Copyright 2006-2023 Free Software Foundation, Inc.
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
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11 
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.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #ifdef SYMBOL_PREFIX
21 #define SYMBOL(str)	SYMBOL_PREFIX #str
22 #else
23 #define SYMBOL(str)	#str
24 #endif
25 
26 void gdb2029 (void);
27 void optimized_1 (void);
28 
29 int
30 main (void)
31 {
32   gdb2029 ();
33   optimized_1 ();
34   return 0;
35 }
36 
37 void
38 optimized_1_marker (void)
39 {
40 }
41 
42 void
43 gdb2029_marker (void)
44 {
45 }
46 
47 /* A typical PIC prologue from GCC.  */
48 
49 asm(".text\n"
50     "    .p2align 3\n"
51     SYMBOL (gdb2029) ":\n"
52     "	stwu	%r1, -32(%r1)\n"
53     "	mflr	%r0\n"
54     "	bcl-	20,31,.+4\n"
55     "	stw	%r30, 24(%r1)\n"
56     "	mflr	%r30\n"
57     "	stw	%r0, 36(%r1)\n"
58     "	bl	gdb2029_marker\n"
59     "	lwz	%r0, 36(%r1)\n"
60     "	lwz	%r30, 24(%r1)\n"
61     "	mtlr	%r0\n"
62     "	addi	%r1, %r1, 32\n"
63     "	blr");
64 
65 /* A heavily scheduled prologue.  */
66 asm(".text\n"
67     "	.p2align 3\n"
68     SYMBOL (optimized_1) ":\n"
69     "	stwu	%r1,-32(%r1)\n"
70     "	lis	%r9,-16342\n"
71     "	lis	%r11,-16342\n"
72     "	mflr	%r0\n"
73     "	addi	%r11,%r11,3776\n"
74     "	stmw	%r27,12(%r1)\n"
75     "	addi	%r31,%r9,3152\n"
76     "	cmplw	%cr7,%r31,%r11\n"
77     "	stw	%r0,36(%r1)\n"
78     "	mr	%r30,%r3\n"
79     "	bl	optimized_1_marker\n"
80     "	lwz	%r0,36(%r1)\n"
81     "	lmw	%r27,12(%r1)\n"
82     "	addi	%r1,%r1,32\n"
83     "	blr");
84