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 | |
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.
-rw-r--r-- | opcodes/ChangeLog | 9 | ||||
-rw-r--r-- | opcodes/avr-dis.c | 17 |
2 files changed, 22 insertions, 4 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 1164417..72609ef 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,12 @@ +2007-02-16 Nick Clifton <nickc@redhat.com> + + 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. + 2007-02-13 H.J. Lu <hongjiu.lu@intel.com> * i386-dis.c: Updated to use an array of MAX_OPERANDS operands 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)); |