| # Copyright 2018-2021 Free Software Foundation, Inc. |
| |
| # 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/>. |
| |
| # Test MIPS disassembler options. |
| |
| if { ![istarget "mips*-*-*"] } then { |
| verbose "Skipping MIPS disassembler option tests." |
| return |
| } |
| |
| standard_testfile .s |
| set objfile [standard_output_file ${testfile}.o] |
| |
| if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {}] \ |
| != "" } { |
| return |
| } |
| |
| clean_restart ${objfile} |
| |
| proc mips_disassemble_test { func insn mesg } { |
| gdb_test "disassemble $func" \ |
| "Dump of assembler code for function\ |
| $func:\r\n\[^:\]+:\t$insn\r\nEnd of assembler dump\." \ |
| $mesg |
| } |
| |
| # Verify defaults. |
| mips_disassemble_test foo "move\tv0,v1" "disassemble default" |
| |
| # Verify option overrides. |
| gdb_test "set disassembler-options gpr-names=numeric" |
| mips_disassemble_test foo "move\t\\\$2,\\\$3" "disassemble numeric, gpr-names" |
| # Check multiple options too. |
| gdb_test "set disassembler-options msa,reg-names=numeric,reg-names=r3000" |
| mips_disassemble_test foo "move\t\\\$2,\\\$3" "disassemble numeric, reg-names" |
| |
| # Verify ABI overrides. |
| mips_disassemble_test bar "move\t\\\$2,\\\$8" "disassemble ABI, numeric" |
| gdb_test "set disassembler-options" |
| gdb_test "set mips abi o32" |
| mips_disassemble_test bar "move\tv0,t0" "disassemble ABI, o32" |
| gdb_test "set mips abi n32" |
| mips_disassemble_test bar "move\tv0,a4" "disassemble ABI, n32" |
| gdb_test "set mips abi n64" |
| mips_disassemble_test bar "move\tv0,a4" "disassemble ABI, n64" |