| /* Unwinder test program. |
| |
| Copyright 2006-2021 Free Software Foundation, Inc. |
| |
| This file is part of GDB. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| |
| #ifdef SYMBOL_PREFIX |
| #define SYMBOL(str) SYMBOL_PREFIX #str |
| #else |
| #define SYMBOL(str) #str |
| #endif |
| |
| void gdb2029 (void); |
| void optimized_1 (void); |
| |
| int |
| main (void) |
| { |
| gdb2029 (); |
| optimized_1 (); |
| return 0; |
| } |
| |
| void |
| optimized_1_marker (void) |
| { |
| } |
| |
| void |
| gdb2029_marker (void) |
| { |
| } |
| |
| /* A typical PIC prologue from GCC. */ |
| /* This is a ppc64(le) variation of the code as seen |
| in powerpc-prologue.c. */ |
| |
| asm(".text\n" |
| " .p2align 3\n" |
| SYMBOL (gdb2029) ":\n" |
| " mflr %r0\n" |
| " std %r0,16(%r1)\n" |
| " std %r31,-8(%r1)\n" |
| " stdu %r1,-128(%r1)\n" |
| " mr %r31,%r1\n" |
| " mr %r9,%r3\n" |
| " stw %r9,176(%r31)\n" |
| " lwz %r9,176(%r31)\n" |
| " bl gdb2029_marker\n" |
| " nop\n" |
| " mr %r9,%r3\n" |
| " mr %r3,%r9\n" |
| " addi %r1,%r31,128\n" |
| " ld %r0,16(%r1)\n" |
| " mtlr %r0\n" |
| " ld %r31,-8(%r1)\n" |
| " blr"); |
| |
| /* A heavily scheduled prologue. */ |
| asm(".text\n" |
| " .p2align 3\n" |
| SYMBOL (optimized_1) ":\n" |
| " stdu %r1,-32(%r1)\n" |
| " lis %r9,-16342\n" |
| " lis %r11,-16342\n" |
| " mflr %r0\n" |
| " addi %r11,%r11,3776\n" |
| " std %r30,12(%r1)\n" |
| " addi %r31,%r9,3152\n" |
| " cmplw %cr7,%r31,%r11\n" |
| " std %r0,36(%r1)\n" |
| " mr %r30,%r3\n" |
| " bl optimized_1_marker\n" |
| " nop \n" |
| " ld %r0,36(%r1)\n" |
| " mtlr %r0\n" |
| " ld %r30,12(%r1)\n" |
| " addi %r1,%r1,32\n" |
| " blr"); |