X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fdisassemble.c;h=66850a71e737eaf10df38ba605b07c1016865bf5;hb=c3d65c1ced61cfb87d77e677ee576a3353ce5e34;hp=507606807f94d3affddbc9eed25f22b3085073ab;hpb=3c9b82baee30a1d3cfeb419643c6363dc9267208;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/disassemble.c b/opcodes/disassemble.c index 507606807f..66850a71e7 100644 --- a/opcodes/disassemble.c +++ b/opcodes/disassemble.c @@ -1,10 +1,12 @@ /* Select disassembly routine for specified architecture. Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify + This file is part of the GNU opcodes library. + + This library 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 + 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, @@ -14,7 +16,8 @@ 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. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ #include "sysdep.h" #include "dis-asm.h" @@ -25,6 +28,7 @@ #define ARCH_arm #define ARCH_avr #define ARCH_bfin +#define ARCH_cr16 #define ARCH_cris #define ARCH_crx #define ARCH_d10v @@ -50,11 +54,12 @@ #define ARCH_m88k #define ARCH_maxq #define ARCH_mcore +#define ARCH_mep #define ARCH_mips #define ARCH_mmix #define ARCH_mn10200 #define ARCH_mn10300 -#define ARCH_ms1 +#define ARCH_mt #define ARCH_msp430 #define ARCH_ns32k #define ARCH_openrisc @@ -64,8 +69,10 @@ #define ARCH_powerpc #define ARCH_rs6000 #define ARCH_s390 +#define ARCH_score #define ARCH_sh #define ARCH_sparc +#define ARCH_spu #define ARCH_tic30 #define ARCH_tic4x #define ARCH_tic54x @@ -74,6 +81,7 @@ #define ARCH_vax #define ARCH_w65 #define ARCH_xstormy16 +#define ARCH_xc16x #define ARCH_xtensa #define ARCH_z80 #define ARCH_z8k @@ -125,6 +133,11 @@ disassembler (abfd) disassemble = print_insn_bfin; break; #endif +#ifdef ARCH_cr16 + case bfd_arch_cr16: + disassemble = print_insn_cr16; + break; +#endif #ifdef ARCH_cris case bfd_arch_cris: disassemble = cris_get_disassembler (abfd); @@ -238,9 +251,9 @@ disassembler (abfd) disassemble = print_insn_maxq_little; break; #endif -#ifdef ARCH_ms1 - case bfd_arch_ms1: - disassemble = print_insn_ms1; +#ifdef ARCH_mt + case bfd_arch_mt: + disassemble = print_insn_mt; break; #endif #ifdef ARCH_msp430 @@ -258,6 +271,11 @@ disassembler (abfd) disassemble = print_insn_mcore; break; #endif +#ifdef ARCH_mep + case bfd_arch_mep: + disassemble = print_insn_mep; + break; +#endif #ifdef ARCH_mips case bfd_arch_mips: if (bfd_big_endian (abfd)) @@ -325,6 +343,14 @@ disassembler (abfd) disassemble = print_insn_s390; break; #endif +#ifdef ARCH_score + case bfd_arch_score: + if (bfd_big_endian (abfd)) + disassemble = print_insn_big_score; + else + disassemble = print_insn_little_score; + break; +#endif #ifdef ARCH_sh case bfd_arch_sh: disassemble = print_insn_sh; @@ -335,6 +361,11 @@ disassembler (abfd) disassemble = print_insn_sparc; break; #endif +#ifdef ARCH_spu + case bfd_arch_spu: + disassemble = print_insn_spu; + break; +#endif #ifdef ARCH_tic30 case bfd_arch_tic30: disassemble = print_insn_tic30; @@ -370,6 +401,11 @@ disassembler (abfd) disassemble = print_insn_xstormy16; break; #endif +#ifdef ARCH_xc16x + case bfd_arch_xc16x: + disassemble = print_insn_xc16x; + break; +#endif #ifdef ARCH_xtensa case bfd_arch_xtensa: disassemble = print_insn_xtensa; @@ -427,6 +463,9 @@ disassembler_usage (stream) #ifdef ARCH_powerpc print_ppc_disassembler_options (stream); #endif +#ifdef ARCH_i386 + print_i386_disassembler_options (stream); +#endif return; } @@ -442,6 +481,7 @@ disassemble_init_for_target (struct disassemble_info * info) #ifdef ARCH_arm case bfd_arch_arm: info->symbol_is_valid = arm_symbol_is_valid; + info->disassembler_needs_relocs = TRUE; break; #endif #ifdef ARCH_ia64 @@ -452,14 +492,25 @@ disassemble_init_for_target (struct disassemble_info * info) #ifdef ARCH_tic4x case bfd_arch_tic4x: info->skip_zeroes = 32; + break; +#endif +#ifdef ARCH_mep + case bfd_arch_mep: + info->skip_zeroes = 256; + info->skip_zeroes_at_end = 0; + break; #endif #ifdef ARCH_m32c case bfd_arch_m32c: info->endian = BFD_ENDIAN_BIG; - if (info->mach == bfd_mach_m16c) - info->insn_sets = 1 << ISA_M16C; - else - info->insn_sets = 1 << ISA_M32C; + if (! info->insn_sets) + { + info->insn_sets = cgen_bitset_create (ISA_MAX); + if (info->mach == bfd_mach_m16c) + cgen_bitset_set (info->insn_sets, ISA_M16C); + else + cgen_bitset_set (info->insn_sets, ISA_M32C); + } break; #endif default: