ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/mon/src/disass/dis-asm.h
(Generate patch)

Comparing mon/src/disass/dis-asm.h (file contents):
Revision 1.2 by gbeauche, 2002-07-17T09:14:12Z vs.
Revision 1.3 by gbeauche, 2002-09-07T12:48:15Z

# Line 1 | Line 1
1   /* Interface between the opcode library and its callers.
2 +
3 +   Copyright 2001, 2002 Free Software Foundation, Inc.
4 +  
5 +   This program is free software; you can redistribute it and/or modify
6 +   it under the terms of the GNU General Public License as published by
7 +   the Free Software Foundation; either version 2, or (at your option)
8 +   any later version.
9 +
10 +   This program is distributed in the hope that it will be useful,
11 +   but WITHOUT ANY WARRANTY; without even the implied warranty of
12 +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 +   GNU General Public License for more details.
14 +
15 +   You should have received a copy of the GNU General Public License
16 +   along with this program; if not, write to the Free Software
17 +   Foundation, Inc., 59 Temple Place - Suite 330,
18 +   Boston, MA 02111-1307, USA.
19 +  
20     Written by Cygnus Support, 1993.
21  
22     The opcode library (libopcodes.a) provides instruction decoders for
# Line 9 | Line 27
27   #ifndef DIS_ASM_H
28   #define DIS_ASM_H
29  
30 + #ifdef __cplusplus
31 + extern "C" {
32 + #endif
33 +
34   #include <stdio.h>
13 #include <stdlib.h>
14 #include <string.h>
35   #include "bfd.h"
36  
37 < typedef int (*fprintf_ftype) PARAMS((FILE*, const char*, ...));
37 > typedef int (*fprintf_ftype) PARAMS((PTR, const char*, ...));
38  
39   enum dis_insn_type {
40    dis_noninsn,                  /* Not a valid instruction */
# Line 39 | Line 59 | enum dis_insn_type {
59  
60   typedef struct disassemble_info {
61    fprintf_ftype fprintf_func;
62 <  FILE *stream;
62 >  PTR stream;
63    PTR application_data;
64  
65    /* Target description.  We could replace this with a pointer to the bfd,
# Line 53 | Line 73 | typedef struct disassemble_info {
73    unsigned long mach;
74    /* Endianness (for bi-endian cpus).  Mono-endian cpus can ignore this.  */
75    enum bfd_endian endian;
76 +  /* An arch/mach-specific bitmask of selected instruction subsets, mainly
77 +     for processors with run-time-switchable instruction sets.  The default,
78 +     zero, means that there is no constraint.  CGEN-based opcodes ports
79 +     may use ISA_foo masks.  */
80 +  unsigned long insn_sets;
81  
82    /* An array of pointers to symbols either at the location being disassembled
83       or at the start of the function being disassembled.  The array is sorted
# Line 76 | Line 101 | typedef struct disassemble_info {
101       INFO is a pointer to this struct.
102       Returns an errno value or 0 for success.  */
103    int (*read_memory_func)
104 <    PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, int length,
104 >    PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
105               struct disassemble_info *info));
106  
107    /* Function which should be called if we get an error that we can't
# Line 103 | Line 128 | typedef struct disassemble_info {
128    /* These are for buffer_read_memory.  */
129    bfd_byte *buffer;
130    bfd_vma buffer_vma;
131 <  int buffer_length;
131 >  unsigned int buffer_length;
132  
133    /* This variable may be set by the instruction decoder.  It suggests
134        the number of bytes objdump should display on a single line.  If
# Line 119 | Line 144 | typedef struct disassemble_info {
144    int bytes_per_chunk;
145    enum bfd_endian display_endian;
146  
147 +  /* Number of octets per incremented target address
148 +     Normally one, but some DSPs have byte sizes of 16 or 32 bits.  */
149 +  unsigned int octets_per_byte;
150 +
151    /* Results from instruction decoders.  Not all decoders yet support
152       this information.  This info is set each time an instruction is
153       decoded, and is only valid for the last such instruction.
# Line 135 | Line 164 | typedef struct disassemble_info {
164                                     zero if unknown.  */
165    bfd_vma target2;              /* Second target address for dref2 */
166  
167 +  /* Command line options specific to the target disassembler.  */
168 +  char * disassembler_options;
169 +
170   } disassemble_info;
171  
172  
173   /* Standard disassemblers.  Disassemble one instruction at the given
174 <   target address.  Return number of bytes processed.  */
174 >   target address.  Return number of octets processed.  */
175   typedef int (*disassembler_ftype)
176       PARAMS((bfd_vma, disassemble_info *));
177  
178   extern int print_insn_big_mips          PARAMS ((bfd_vma, disassemble_info*));
179   extern int print_insn_little_mips       PARAMS ((bfd_vma, disassemble_info*));
180 < extern int print_insn_i386              PARAMS ((bfd_vma, disassemble_info*));
180 > extern int print_insn_i386              PARAMS ((bfd_vma, disassemble_info *));
181 > extern int print_insn_i386_att          PARAMS ((bfd_vma, disassemble_info*));
182 > extern int print_insn_i386_intel        PARAMS ((bfd_vma, disassemble_info*));
183 > extern int print_insn_ia64              PARAMS ((bfd_vma, disassemble_info*));
184 > extern int print_insn_i370              PARAMS ((bfd_vma, disassemble_info*));
185 > extern int print_insn_m68hc11           PARAMS ((bfd_vma, disassemble_info*));
186 > extern int print_insn_m68hc12           PARAMS ((bfd_vma, disassemble_info*));
187   extern int print_insn_m68k              PARAMS ((bfd_vma, disassemble_info*));
188   extern int print_insn_z8001             PARAMS ((bfd_vma, disassemble_info*));
189   extern int print_insn_z8002             PARAMS ((bfd_vma, disassemble_info*));
# Line 154 | Line 192 | extern int print_insn_h8300h           PARAMS ((b
192   extern int print_insn_h8300s            PARAMS ((bfd_vma, disassemble_info*));
193   extern int print_insn_h8500             PARAMS ((bfd_vma, disassemble_info*));
194   extern int print_insn_alpha             PARAMS ((bfd_vma, disassemble_info*));
157 extern disassembler_ftype arc_get_disassembler PARAMS ((int, int));
195   extern int print_insn_big_arm           PARAMS ((bfd_vma, disassemble_info*));
196   extern int print_insn_little_arm        PARAMS ((bfd_vma, disassemble_info*));
197   extern int print_insn_sparc             PARAMS ((bfd_vma, disassemble_info*));
198   extern int print_insn_big_a29k          PARAMS ((bfd_vma, disassemble_info*));
199   extern int print_insn_little_a29k       PARAMS ((bfd_vma, disassemble_info*));
200 < extern int print_insn_i960              PARAMS ((bfd_vma, disassemble_info*));
201 < extern int print_insn_sh                PARAMS ((bfd_vma, disassemble_info*));
202 < extern int print_insn_shl               PARAMS ((bfd_vma, disassemble_info*));
200 > extern int print_insn_avr               PARAMS ((bfd_vma, disassemble_info*));
201 > extern int print_insn_d10v              PARAMS ((bfd_vma, disassemble_info*));
202 > extern int print_insn_d30v              PARAMS ((bfd_vma, disassemble_info*));
203 > extern int print_insn_dlx               PARAMS ((bfd_vma, disassemble_info*));
204 > extern int print_insn_fr30              PARAMS ((bfd_vma, disassemble_info*));
205   extern int print_insn_hppa              PARAMS ((bfd_vma, disassemble_info*));
206 + extern int print_insn_i860              PARAMS ((bfd_vma, disassemble_info*));
207 + extern int print_insn_i960              PARAMS ((bfd_vma, disassemble_info*));
208   extern int print_insn_m32r              PARAMS ((bfd_vma, disassemble_info*));
209   extern int print_insn_m88k              PARAMS ((bfd_vma, disassemble_info*));
210 + extern int print_insn_mcore             PARAMS ((bfd_vma, disassemble_info*));
211 + extern int print_insn_mmix              PARAMS ((bfd_vma, disassemble_info*));
212   extern int print_insn_mn10200           PARAMS ((bfd_vma, disassemble_info*));
213   extern int print_insn_mn10300           PARAMS ((bfd_vma, disassemble_info*));
214   extern int print_insn_ns32k             PARAMS ((bfd_vma, disassemble_info*));
215 + extern int print_insn_openrisc          PARAMS ((bfd_vma, disassemble_info*));
216 + extern int print_insn_big_or32          PARAMS ((bfd_vma, disassemble_info*));
217 + extern int print_insn_little_or32       PARAMS ((bfd_vma, disassemble_info*));
218 + extern int print_insn_pdp11             PARAMS ((bfd_vma, disassemble_info*));
219 + extern int print_insn_pj                PARAMS ((bfd_vma, disassemble_info*));
220   extern int print_insn_big_powerpc       PARAMS ((bfd_vma, disassemble_info*));
221   extern int print_insn_little_powerpc    PARAMS ((bfd_vma, disassemble_info*));
222   extern int print_insn_rs6000            PARAMS ((bfd_vma, disassemble_info*));
223 < extern int print_insn_w65               PARAMS ((bfd_vma, disassemble_info*));
224 < extern int print_insn_d10v              PARAMS ((bfd_vma, disassemble_info*));
177 < extern int print_insn_v850              PARAMS ((bfd_vma, disassemble_info*));
223 > extern int print_insn_s390              PARAMS ((bfd_vma, disassemble_info*));
224 > extern int print_insn_sh                PARAMS ((bfd_vma, disassemble_info*));
225   extern int print_insn_tic30             PARAMS ((bfd_vma, disassemble_info*));
226 + extern int print_insn_tic54x            PARAMS ((bfd_vma, disassemble_info*));
227 + extern int print_insn_tic80             PARAMS ((bfd_vma, disassemble_info*));
228 + extern int print_insn_v850              PARAMS ((bfd_vma, disassemble_info*));
229 + extern int print_insn_vax               PARAMS ((bfd_vma, disassemble_info*));
230 + extern int print_insn_w65               PARAMS ((bfd_vma, disassemble_info*));
231 + extern int print_insn_xstormy16         PARAMS ((bfd_vma, disassemble_info*));
232 + extern int print_insn_sh64              PARAMS ((bfd_vma, disassemble_info *));
233 + extern int print_insn_sh64x_media       PARAMS ((bfd_vma, disassemble_info *));
234 + extern int print_insn_frv               PARAMS ((bfd_vma, disassemble_info *));
235 +
236 + extern disassembler_ftype arc_get_disassembler PARAMS ((void *));
237 + extern disassembler_ftype cris_get_disassembler PARAMS ((bfd *));
238 +
239 + extern void print_arm_disassembler_options PARAMS ((FILE *));
240 + extern void parse_arm_disassembler_option  PARAMS ((char *));
241 + extern int  get_arm_regname_num_options    PARAMS ((void));
242 + extern int  set_arm_regname_option         PARAMS ((int));
243 + extern int  get_arm_regnames               PARAMS ((int, const char **, const char **, const char ***));
244  
245   /* Fetch the disassembler for a given BFD, if that support is available.  */
246   extern disassembler_ftype disassembler  PARAMS ((bfd *));
247  
248 + /* Document any target specific options available from the disassembler.  */
249 + extern void disassembler_usage          PARAMS ((FILE *));
250 +
251  
252   /* This block of definitions is for particular callers who read instructions
253     into a buffer before calling the instruction decoder.  */
# Line 187 | Line 255 | extern disassembler_ftype disassembler P
255   /* Here is a function which callers may wish to use for read_memory_func.
256     It gets bytes from a buffer.  */
257   extern int buffer_read_memory
258 <  PARAMS ((bfd_vma, bfd_byte *, int, struct disassemble_info *));
258 >  PARAMS ((bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *));
259  
260   /* This function goes with buffer_read_memory.
261     It prints a message using info->fprintf_func and info->stream.  */
# Line 210 | Line 278 | extern int generic_symbol_at_address
278    (INFO).flavour = bfd_target_unknown_flavour, \
279    (INFO).arch = bfd_arch_unknown, \
280    (INFO).mach = 0, \
281 +  (INFO).insn_sets = 0, \
282    (INFO).endian = BFD_ENDIAN_UNKNOWN, \
283 +  (INFO).octets_per_byte = 1, \
284    INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC)
285  
286   /* Call this macro to initialize only the internal variables for the
287     disassembler.  Architecture dependent things such as byte order, or machine
288     variant are not touched by this macro.  This makes things much easier for
289 <   GDB which must initialize these things seperatly.  */
289 >   GDB which must initialize these things separately.  */
290  
291   #define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
292 <  (INFO).fprintf_func = (FPRINTF_FUNC), \
293 <  (INFO).stream = (STREAM), \
292 >  (INFO).fprintf_func = (fprintf_ftype)(FPRINTF_FUNC), \
293 >  (INFO).stream = (PTR)(STREAM), \
294    (INFO).symbols = NULL, \
295    (INFO).num_symbols = 0, \
296 +  (INFO).private_data = NULL, \
297    (INFO).buffer = NULL, \
298    (INFO).buffer_vma = 0, \
299    (INFO).buffer_length = 0, \
# Line 234 | Line 305 | extern int generic_symbol_at_address
305    (INFO).bytes_per_line = 0, \
306    (INFO).bytes_per_chunk = 0, \
307    (INFO).display_endian = BFD_ENDIAN_UNKNOWN, \
308 +  (INFO).disassembler_options = NULL, \
309    (INFO).insn_info_valid = 0
310  
311 + #ifdef __cplusplus
312 + };
313 + #endif
314 +
315   #endif /* ! defined (DIS_ASM_H) */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines