Generally, handle CRISv32.
[deliverable/binutils-gdb.git] / opcodes / dis-buf.c
index c6e512122eb076568b8b8124b8dcc6a3c8de6d25..83fbfbd7d21e62aac239d1453a73bf816334dde9 100644 (file)
@@ -1,5 +1,6 @@
 /* Disassemble from a buffer, for GNU.
-   Copyright (C) 1993, 1994, 1998, 1999 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1996, 1997, 1998, 1999, 2000
+   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
@@ -26,14 +27,20 @@ int
 buffer_read_memory (memaddr, myaddr, length, info)
      bfd_vma memaddr;
      bfd_byte *myaddr;
-     int length;
+     unsigned int length;
      struct disassemble_info *info;
 {
+  unsigned int opb = info->octets_per_byte;
+  unsigned int end_addr_offset = length / opb;
+  unsigned int max_addr_offset = info->buffer_length / opb; 
+  unsigned int octets = (memaddr - info->buffer_vma) * opb;
+
   if (memaddr < info->buffer_vma
-      || memaddr + length > info->buffer_vma + info->buffer_length)
+      || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset)
     /* Out of bounds.  Use EIO because GDB uses it.  */
     return EIO;
-  memcpy (myaddr, info->buffer + (memaddr - info->buffer_vma), length);
+  memcpy (myaddr, info->buffer + octets, length);
+
   return 0;
 }
 
@@ -67,13 +74,19 @@ generic_print_address (addr, info)
      bfd_vma addr;
      struct disassemble_info *info;
 {
-  (*info->fprintf_func) (info->stream, "0x%x", addr);
+  char buf[30];
+
+  sprintf_vma (buf, addr);
+  (*info->fprintf_func) (info->stream, "0x%s", buf);
 }
 
+#if 0
 /* Just concatenate the address as hex.  This is included for
    completeness even though both GDB and objdump provide their own (to
    print symbolic addresses).  */
 
+void generic_strcat_address PARAMS ((bfd_vma, char *, int));
+
 void
 generic_strcat_address (addr, buf, len)
      bfd_vma addr;
@@ -92,8 +105,9 @@ generic_strcat_address (addr, buf, len)
     }
   return;
 }
+#endif
 
-/* Just return the given address.  */
+/* Just return true.  */
 
 int
 generic_symbol_at_address (addr, info)
@@ -102,3 +116,12 @@ generic_symbol_at_address (addr, info)
 {
   return 1;
 }
+
+/* Just return TRUE.  */
+
+bfd_boolean
+generic_symbol_is_valid (asymbol * sym ATTRIBUTE_UNUSED,
+                        struct disassemble_info *info ATTRIBUTE_UNUSED)
+{
+  return TRUE;
+}
This page took 0.024143 seconds and 4 git commands to generate.