X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=opcodes%2Fdis-buf.c;h=83fbfbd7d21e62aac239d1453a73bf816334dde9;hb=bd21e58e631f4320cd48921034fdcabfdbd1c943;hp=c6e512122eb076568b8b8124b8dcc6a3c8de6d25;hpb=30727aa6d12fb866494020c0b62ab265a2bdcdfe;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/dis-buf.c b/opcodes/dis-buf.c index c6e512122e..83fbfbd7d2 100644 --- a/opcodes/dis-buf.c +++ b/opcodes/dis-buf.c @@ -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; +}