* dis-asm.h (disassemble_info): New members arch, mach, endian.
authorDavid Edelsohn <dje.gcc@gmail.com>
Tue, 23 Jan 1996 00:39:54 +0000 (00:39 +0000)
committerDavid Edelsohn <dje.gcc@gmail.com>
Tue, 23 Jan 1996 00:39:54 +0000 (00:39 +0000)
(INIT_DISASSEMBLE_INFO): Initialize them.
(DISASM_RAW_INSN{,FLAG}): Define.

include/ChangeLog
include/dis-asm.h

index 35f66ff..682dd9d 100644 (file)
@@ -1,3 +1,9 @@
+Mon Jan 22 16:37:59 1996  Doug Evans  <dje@charmed.cygnus.com>
+
+       * dis-asm.h (disassemble_info): New members arch, mach, endian.
+       (INIT_DISASSEMBLE_INFO): Initialize them.
+       (DISASM_RAW_INSN{,FLAG}): Define.
+
 Thu Jan 18 11:32:38 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * demangle.h (cplus_demangle_opname): Change opname parameter to
index ac8c724..08884ec 100644 (file)
@@ -40,10 +40,29 @@ typedef struct disassemble_info {
   FILE *stream;
   PTR application_data;
 
-  /* For use by the disassembler.  */
-  int flags;
+  /* Target description.  We could replace this with a pointer to the bfd,
+     but that would require one.  There currently isn't any such requirement
+     so to avoid introducing one we record these explicitly.  */
+  /* The bfd_arch value.  */
+  enum bfd_architecture arch;
+  /* The bfd_mach value.  */
+  unsigned long mach;
+  /* Endianness (for bi-endian cpus).  Mono-endian cpus can ignore this.  */
+  enum bfd_endian endian;
+
+  /* For use by the disassembler.
+     The top 16 bits are reserved for public use (and are documented here).
+     The bottom 16 bits are for the internal use of the disassembler.  */
+  unsigned long flags;
   PTR private_data;
 
+  /* Non-zero if an instruction is to be displayed in raw form (eg: hex)
+     (along with the symbolic form which is always printed).
+     ??? Not all targets support this yet and not all have the same default
+     (which they should).  */
+#define DISASM_RAW_INSN_FLAG   0x10000
+#define DISASM_RAW_INSN(INFO)  ((INFO)->flags & DISASM_RAW_INSN_FLAG)
+
   /* Function used to get bytes to disassemble.  MEMADDR is the
      address of the stuff to be disassembled, MYADDR is the address to
      put the bytes in, and LENGTH is the number of bytes to read.
@@ -104,10 +123,12 @@ extern int print_insn_h8300h              PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_h8500            PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_alpha            PARAMS ((bfd_vma, disassemble_info*));
 /* start-sanitize-arc */
-extern int print_insn_arc              PARAMS ((bfd_vma, disassemble_info*));
+extern disassembler_ftype arc_get_disassembler PARAMS ((int, int));
 /* end-sanitize-arc */
-extern int print_insn_arm              PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_big_arm          PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_little_arm       PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_sparc            PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_sparc64          PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_big_a29k         PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_little_a29k      PARAMS ((bfd_vma, disassemble_info*));
 extern int print_insn_i960             PARAMS ((bfd_vma, disassemble_info*));
@@ -138,7 +159,7 @@ extern int buffer_read_memory
 extern void perror_memory PARAMS ((int, bfd_vma, struct disassemble_info *));
 
 
-/* Just print the address is hex.  This is included for completeness even
+/* Just print the address in hex.  This is included for completeness even
    though both GDB and objdump provide their own (to print symbolic
    addresses).  */
 extern void generic_print_address
@@ -153,34 +174,10 @@ extern void generic_print_address
   (INFO).read_memory_func = buffer_read_memory, \
   (INFO).memory_error_func = perror_memory, \
   (INFO).print_address_func = generic_print_address, \
-  (INFO).insn_info_valid = 0
-
-
-
-\f
-/* This block of definitions is for calling the instruction decoders
-   from GDB.  */
-
-/* GDB--Like target_read_memory, but slightly different parameters.  */
-extern int
-dis_asm_read_memory PARAMS ((bfd_vma memaddr, bfd_byte *myaddr, int len,
-                            disassemble_info *info));
-
-/* GDB--Like memory_error with slightly different parameters.  */
-extern void
-dis_asm_memory_error
-  PARAMS ((int status, bfd_vma memaddr, disassemble_info *info));
-
-/* GDB--Like print_address with slightly different parameters.  */
-extern void
-dis_asm_print_address PARAMS ((bfd_vma addr, disassemble_info *info));
-
-#define GDB_INIT_DISASSEMBLE_INFO(INFO, STREAM) \
-  (INFO).fprintf_func = (fprintf_ftype)fprintf_filtered, \
-  (INFO).stream = (STREAM), \
-  (INFO).read_memory_func = dis_asm_read_memory, \
-  (INFO).memory_error_func = dis_asm_memory_error, \
-  (INFO).print_address_func = dis_asm_print_address, \
+  (INFO).arch = bfd_arch_unknown, \
+  (INFO).mach = 0, \
+  (INFO).endian = BFD_ENDIAN_BIG, \
+  (INFO).flags = 0, \
   (INFO).insn_info_valid = 0
 
 #endif /* ! defined (DIS_ASM_H) */