/* 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
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;
}
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;
}
return;
}
+#endif
-/* Just return the given address. */
+/* Just return true. */
int
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;
+}