opcodes/ * arm-dis.c (coprocessor_opcodes): Add %c to unconditional arm instructions. (neon_opcodes): Add conditional execution specifiers. (thumb_opcodes): Ditto. (thumb32_opcodes): Ditto. (arm_conditional): Change 0xe to "al" and add "" to end. (ifthen_state, ifthen_next_state, ifthen_address): New. (IFTHEN_COND): Define. (print_insn_coprocessor, print_insn_neon): Print thumb conditions. (print_insn_arm): Change %c to use new values of arm_conditional. (print_insn_thumb16): Print thumb conditions. Add %I. (print_insn_thumb32): Print thumb conditions. (find_ifthen_state): New function. (print_insn): Track IT block state. gas/testsuite/ * gas/arm/thumb2_bcond.d: Update expected output. * gas/arm/thumb32.d: Ditto. * gas/arm/vfp1_t2.d: Ditto. * gas/arm/vfp1xD_t2.d: Ditto. binutils/testsuite/ * binutils-all/arm/objdump.exp: New file. * binutils-all/arm/thumb2-cond.s: New test.
64 lines
1.7 KiB
Plaintext
64 lines
1.7 KiB
Plaintext
# Copyright 2004
|
|
# 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 2 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, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
if {![istarget "arm*-*-*"]} then {
|
|
return
|
|
}
|
|
|
|
if {[which $OBJDUMP] == 0} then {
|
|
perror "$OBJDUMP does not exist"
|
|
return
|
|
}
|
|
|
|
send_user "Version [binutil_version $OBJDUMP]"
|
|
|
|
###########################
|
|
# Set up the test of movem.s
|
|
###########################
|
|
|
|
if {![binutils_assemble $srcdir/$subdir/thumb2-cond.s tmpdir/thumb2-cond.o]} then {
|
|
return
|
|
}
|
|
|
|
if [is_remote host] {
|
|
set objfile [remote_download host tmpdir/thumb2-cond.o]
|
|
} else {
|
|
set objfile tmpdir/thumb2-cond.o
|
|
}
|
|
|
|
# Make sure that conditional instructions are correctly decoded.
|
|
|
|
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --start-address=6 $objfile"]
|
|
|
|
set want "bcc.w\te12.*bx\tlr"
|
|
|
|
if [regexp $want $got] then {
|
|
pass "thumb2-cond test1"
|
|
} else {
|
|
fail "thumb2-cond test1"
|
|
}
|
|
|
|
set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --start-address=10 $objfile"]
|
|
|
|
set want "bx\tlr"
|
|
|
|
if [regexp $want $got] then {
|
|
pass "thumb2-cond test1"
|
|
} else {
|
|
fail "thumb2-cond test1"
|
|
}
|