Home | History | Annotate | Line # | Download | only in gdb.arch
      1  1.1.1.11  christos # Copyright 2006-2025 Free Software Foundation, Inc.
      2       1.1  christos 
      3       1.1  christos # This program is free software; you can redistribute it and/or modify
      4       1.1  christos # it under the terms of the GNU General Public License as published by
      5       1.1  christos # the Free Software Foundation; either version 3 of the License, or
      6       1.1  christos # (at your option) any later version.
      7       1.1  christos #
      8       1.1  christos # This program is distributed in the hope that it will be useful,
      9       1.1  christos # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10       1.1  christos # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11       1.1  christos # GNU General Public License for more details.
     12       1.1  christos #
     13       1.1  christos # You should have received a copy of the GNU General Public License
     14       1.1  christos # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15       1.1  christos 
     16       1.1  christos # Test PowerPC prologue analyzer.
     17       1.1  christos 
     18       1.1  christos # Do not run on AIX (where we won't be able to build the tests without
     19       1.1  christos # some surgery) or on PowerPC64 (ditto, dot symbols).
     20  1.1.1.10  christos require {!istarget *-*-aix*} {istarget "powerpc-*-*"}
     21       1.1  christos 
     22       1.1  christos set testfile "powerpc-prologue"
     23       1.1  christos set srcfile ${testfile}.c
     24   1.1.1.6  christos set binfile [standard_output_file ${testfile}]
     25       1.1  christos 
     26       1.1  christos # Don't use "debug", so that we don't have line information for the assembly
     27       1.1  christos # fragments.
     28       1.1  christos if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {}] != "" } {
     29       1.1  christos     untested "PowerPC prologue tests"
     30       1.1  christos     return -1
     31       1.1  christos }
     32       1.1  christos 
     33       1.1  christos 
     34  1.1.1.11  christos clean_restart $testfile
     35       1.1  christos 
     36       1.1  christos #
     37       1.1  christos # Run to `main' where we begin our tests.
     38       1.1  christos #
     39       1.1  christos 
     40   1.1.1.9  christos if {![runto_main]} {
     41   1.1.1.7  christos     return 0
     42       1.1  christos }
     43       1.1  christos 
     44       1.1  christos # Testcase for PIC prologue.
     45       1.1  christos 
     46       1.1  christos gdb_breakpoint "gdb2029_marker"
     47       1.1  christos gdb_test "continue" "Breakpoint $decimal, $hex in gdb2029_marker \\(\\).*" \
     48       1.1  christos 	"continue to PIC"
     49       1.1  christos 
     50       1.1  christos gdb_test "backtrace 10" \
     51       1.1  christos 	"#0\[ \t\]*$hex in gdb2029_marker.*\r\n#1\[ \t\]*$hex in gdb2029.*\r\n#2\[ \t\]*$hex in main.*" \
     52       1.1  christos 	"backtrace in PIC marker"
     53       1.1  christos 
     54       1.1  christos gdb_test "finish" ".*$hex in gdb2029 .*" "finish from PIC"
     55       1.1  christos 
     56       1.1  christos gdb_test "backtrace 10" \
     57       1.1  christos 	"#0\[ \t\]*$hex in gdb2029 .*\r\n#1\[ \t\]*$hex in main.*" \
     58       1.1  christos 	"backtrace in PIC"
     59       1.1  christos 
     60       1.1  christos gdb_test "info frame" \
     61       1.1  christos 	".*Saved registers:.*r30 at.*pc at.*lr at.*" \
     62       1.1  christos 	"saved registers in PIC"
     63       1.1  christos 
     64       1.1  christos # Testcase for scheduled prologue.
     65       1.1  christos 
     66       1.1  christos gdb_breakpoint "optimized_1_marker"
     67       1.1  christos gdb_test "continue" "Breakpoint $decimal, $hex in optimized_1_marker \\(\\).*" \
     68       1.1  christos 	"continue to optimized"
     69       1.1  christos 
     70       1.1  christos gdb_test "backtrace 10" \
     71       1.1  christos 	"#0\[ \t\]*$hex in optimized_1_marker.*\r\n#1\[ \t\]*$hex in optimized_1.*\r\n#2\[ \t\]*$hex in main.*" \
     72       1.1  christos 	"backtrace in optimized marker"
     73       1.1  christos 
     74       1.1  christos gdb_test "finish" ".*$hex in optimized_1 .*" "finish from optimized"
     75       1.1  christos 
     76       1.1  christos gdb_test "backtrace 10" \
     77       1.1  christos 	"#0\[ \t\]*$hex in optimized_1 .*\r\n#1\[ \t\]*$hex in main.*" \
     78       1.1  christos 	"backtrace in optimized"
     79       1.1  christos 
     80       1.1  christos gdb_test "info frame" \
     81       1.1  christos 	".*Saved registers:.*r30 at.*pc at.*lr at.*" \
     82       1.1  christos 	"saved registers in optimized"
     83