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.
This commit is contained in:
Nick Clifton 2007-02-16 10:24:48 +00:00
parent e7ff5c732e
commit af69206070
2 changed files with 22 additions and 4 deletions

View File

@ -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

View File

@ -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));