diff options
author | Doug Evans <dje@google.com> | 1998-02-24 20:57:58 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 1998-02-24 20:57:58 +0000 |
commit | 88b38f0c3c59ccfcf2dab95f780360f6e7714a4a (patch) | |
tree | 01ab3688d41312f680daf9a860259cbf99389242 /opcodes/mips-dis.c | |
parent | b6d331b9cd6965f15762c17f2ee2b4596fe88772 (diff) | |
download | gdb-88b38f0c3c59ccfcf2dab95f780360f6e7714a4a.zip gdb-88b38f0c3c59ccfcf2dab95f780360f6e7714a4a.tar.gz gdb-88b38f0c3c59ccfcf2dab95f780360f6e7714a4a.tar.bz2 |
* arm-dis.c (print_insn_{big,little}_arm): info->symbol changed
to *info->symbols.
* mips-dis.c (print_insn_{big,little}_mips): Likewise.
* tic30-dis.c (print_branch): Likewise.
start-sanitize-sky
* mips-dis.c (print_insn_little_mips): Call dvp_info_mach_type.
* dvp-dis.c (dvp_info_mach_type): New function.
(print_insn_dvp): Call it.
(print_vif): Return length of 4 if mpg or direct insn so following
insns get properly disabled.
* dvp-opc.c (vif_insn_len): New argument `pcpu'. All callers updated.
end-sanitize-sky
Diffstat (limited to 'opcodes/mips-dis.c')
-rw-r--r-- | opcodes/mips-dis.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c index d1d80a5..673dbfe 100644 --- a/opcodes/mips-dis.c +++ b/opcodes/mips-dis.c @@ -443,8 +443,8 @@ print_insn_big_mips (memaddr, info) if (info->mach == 16 || (info->flavour == bfd_target_elf_flavour - && info->symbol != NULL - && (((elf_symbol_type *) info->symbol)->internal_elf_sym.st_other + && info->symbols != NULL + && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other == STO_MIPS16))) return print_insn_mips16 (memaddr, info); @@ -469,18 +469,23 @@ print_insn_little_mips (memaddr, info) /* start-sanitize-sky */ #ifdef ARCH_dvp - if (bfd_mach_dvp_p (info->mach) - || (info->flavour == bfd_target_elf_flavour - && info->symbol != NULL - && STO_DVP_P (((elf_symbol_type *) info->symbol)->internal_elf_sym.st_other))) - return print_insn_dvp (memaddr, info); + { + /* bfd_mach_dvp_p is a macro which may evaluate its arguments more than + once. Since dvp_mach_type is a function, ensure it's only called + once. */ + int mach = dvp_info_mach_type (info); + + if (bfd_mach_dvp_p (info->mach) + || bfd_mach_dvp_p (mach)) + return print_insn_dvp (memaddr, info); + } #endif /* end-sanitize-sky */ if (info->mach == 16 || (info->flavour == bfd_target_elf_flavour - && info->symbol != NULL - && (((elf_symbol_type *) info->symbol)->internal_elf_sym.st_other + && info->symbols != NULL + && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other == STO_MIPS16))) return print_insn_mips16 (memaddr, info); |