+2017-11-03 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * doc/binutils.texi (ARC): Update disassembler options.
+ * testsuite/binutils-all/arc/hexprint.s: New file.
+ * testsuite/binutils-all/arc/objdump.exp: Test hex printing
+ feature.
+
2017-11-03 Mingi Cho <mgcho.minic@gmail.com>
Nick Clifton <nickc@redhat.com>
of double precision assist instructions, @option{fpus} selects the
printing of FPU single precision FP instructions, while @option{fpud}
selects the printing of FPU souble precision FP instructions.
+Additionally, one can choose to have all the immediates printed in
+hexadecimal using @option{hex}. By default, the short immediates are
+printed using the decimal representation, while the long immediate
+values are printed as hexadecimal.
@option{cpu=...} allows to enforce a particular ISA when disassembling
instructions, overriding the @option{-m} value or whatever is in the ELF file.
--- /dev/null
+ .cpu EM
+ st r0,[r1,-9]
# Make sure that the last cpu= value is used.
check_assembly "arc double_store -Mcpu=hs,cpu=em" $objfile \
$double_store_em_expected "-Mcpu=hs,cpu=em"
-
+# Check the hex printing for short immediates.
+set thexobj [do_objfile hexprint.s]
+check_assembly "arc hex printing" $thexobj \
+ {st\s*r0,\[r1,0xfffffff7\]} "-Mhex"
+check_assembly "arc normal printing" $thexobj \
+ {st\s*r0,\[r1,-9\]}
+2017-11-03 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * arc-dis.c (print_hex): New variable.
+ (parse_option): Check for hex option.
+ (print_insn_arc): Use hexadecimal representation for short
+ immediate values when requested.
+ (print_arc_disassembler_options): Add hex option to the list.
+
2017-11-03 Claudiu Zissulescu <claziss@synopsys.com>
* arc-tbl.h (abss, abssh, adc, adcs, adds, aslacc, asls, aslsacc)
static unsigned enforced_isa_mask = ARC_OPCODE_NONE;
+/* True if we want to print using only hex numbers. */
+static bfd_boolean print_hex = FALSE;
+
/* Macros section. */
#ifdef DEBUG
add_to_decodelist (FLOAT, DP);
add_to_decodelist (FLOAT, CVT);
}
+ else if (CONST_STRNEQ (option, "hex"))
+ print_hex = TRUE;
else
fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
}
if (rname && open_braket)
(*info->fprintf_func) (info->stream, "%s", rname);
else
- (*info->fprintf_func) (info->stream, "%d", value);
+ {
+ if (print_hex)
+ (*info->fprintf_func) (info->stream, "%#x", value);
+ else
+ (*info->fprintf_func) (info->stream, "%d", value);
+ }
}
else if (operand->flags & ARC_OPERAND_ADDRTYPE)
{
fpus Recognize single precision FPU instructions.\n"));
fprintf (stream, _("\
fpud Recognize double precision FPU instructions.\n"));
+ fprintf (stream, _("\
+ hex Use only hexadecimal number to print immediates.\n"));
}
void arc_insn_decode (bfd_vma addr,