diff options
author | Nick Clifton <nickc@redhat.com> | 2007-02-16 10:24:48 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2007-02-16 10:24:48 +0000 |
commit | af69206070ccb02c8253df2c9e995c5ee4921273 (patch) | |
tree | 57c1c1a095203842335bddb1eedb6d96de276de9 /opcodes/avr-dis.c | |
parent | e7ff5c732e7b95aafccd0910ea1a5cb8251a1033 (diff) | |
download | gdb-af69206070ccb02c8253df2c9e995c5ee4921273.zip gdb-af69206070ccb02c8253df2c9e995c5ee4921273.tar.gz gdb-af69206070ccb02c8253df2c9e995c5ee4921273.tar.bz2 |
PR binutils/4045
* avr-dis.c (comment_start): New variable, contains the prefix to use when
printing addresses in comments.
(print_insn_avr): Set comment_start to an empty space if there is no symbol
table available as the generic address printing code will prefix the
numeric value of the address with 0x.
Diffstat (limited to 'opcodes/avr-dis.c')
-rw-r--r-- | opcodes/avr-dis.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/opcodes/avr-dis.c b/opcodes/avr-dis.c index 0a2bd36..aea807e 100644 --- a/opcodes/avr-dis.c +++ b/opcodes/avr-dis.c @@ -43,6 +43,8 @@ const struct avr_opcodes_s avr_opcodes[] = {NULL, NULL, NULL, 0, 0, 0} }; +static const char * comment_start = "0x"; + static int avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constraint, char *buf, char *comment, int regs, int *sym, bfd_vma *sym_addr) @@ -144,8 +146,7 @@ avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constra value of the address only once, but this would mean recoding objdump_print_address() which would affect many targets. */ sprintf (buf, "%#lx", (unsigned long) *sym_addr); - sprintf (comment, "0x"); - + sprintf (comment, comment_start); break; case 'L': @@ -154,17 +155,18 @@ avr_operand (unsigned int insn, unsigned int insn2, unsigned int pc, int constra sprintf (buf, ".%+-8d", rel_addr); *sym = 1; *sym_addr = pc + 2 + rel_addr; - sprintf (comment, "0x"); + sprintf (comment, comment_start); } break; case 'l': { int rel_addr = ((((insn >> 3) & 0x7f) ^ 0x40) - 0x40) * 2; + sprintf (buf, ".%+-8d", rel_addr); *sym = 1; *sym_addr = pc + 2 + rel_addr; - sprintf (comment, "0x"); + sprintf (comment, comment_start); } break; @@ -267,10 +269,17 @@ print_insn_avr (bfd_vma addr, disassemble_info *info) int sym_op1 = 0, sym_op2 = 0; bfd_vma sym_addr1, sym_addr2; + if (!initialized) { unsigned int nopcodes; + /* PR 4045: Try to avoid duplicating the 0x prefix that + objdump_print_addr() will put on addresses when there + is no symbol table available. */ + if (info->symtab_size == 0) + comment_start = " "; + nopcodes = sizeof (avr_opcodes) / sizeof (struct avr_opcodes_s); avr_bin_masks = xmalloc (nopcodes * sizeof (unsigned int)); |