1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22: #include "sysdep.h"
23: #include "dis-asm.h"
24: #include <errno.h>
25: #include "opintl.h"
26:
27:
28:
29: int
30: buffer_read_memory (bfd_vma memaddr,
31: bfd_byte *myaddr,
32: unsigned int length,
33: struct disassemble_info *info)
34: {
35: unsigned int opb = info->octets_per_byte;
36: unsigned int end_addr_offset = length / opb;
37: unsigned int max_addr_offset = info->buffer_length / opb;
38: unsigned int octets = (memaddr - info->buffer_vma) * opb;
39:
40: if (memaddr < info->buffer_vma
41: || memaddr - info->buffer_vma + end_addr_offset > max_addr_offset)
42:
43: return EIO;
44: memcpy (myaddr, info->buffer + octets, length);
45:
46: return 0;
47: }
48:
49:
50:
51:
52: void
53: perror_memory (int status,
54: bfd_vma memaddr,
55: struct disassemble_info *info)
56: {
57: if (status != EIO)
58:
59: info->fprintf_func (info->stream, _("Unknown error %d\n"), status);
60: else
61: {
62: char buf[30];
63:
64:
65:
66: sprintf_vma (buf, memaddr);
67: info->fprintf_func (info->stream,
68: _("Address 0x%s is out of bounds.\n"), buf);
69: }
70: }
71:
72:
73:
74:
75:
76:
77:
78:
79: void
80: generic_print_address (bfd_vma addr, struct disassemble_info *info)
81: {
82: char buf[30];
83:
84: sprintf_vma (buf, addr);
85: (*info->fprintf_func) (info->stream, "0x%s", buf);
86: }
87:
88:
89:
90: int
91: generic_symbol_at_address (bfd_vma addr ATTRIBUTE_UNUSED,
92: struct disassemble_info *info ATTRIBUTE_UNUSED)
93: {
94: return 1;
95: }
96:
97:
98:
99: bfd_boolean
100: generic_symbol_is_valid (asymbol * sym ATTRIBUTE_UNUSED,
101: struct disassemble_info *info ATTRIBUTE_UNUSED)
102: {
103: return TRUE;
104: }