[ARC] Force the disassam to use the hexadecimal number for printing
Force printing of the short/signed values using hexadecimal representation via disassembler option. opcode/ 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. binutils/ 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.
This commit is contained in:
parent
7605d94453
commit
fdddd2900f
6 changed files with 40 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
|||
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>
|
||||
|
||||
|
|
|
@ -2313,6 +2313,10 @@ special QuarkSE-EM instructions, @option{fpuda} selects the printing
|
|||
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.
|
||||
|
|
2
binutils/testsuite/binutils-all/arc/hexprint.s
Normal file
2
binutils/testsuite/binutils-all/arc/hexprint.s
Normal file
|
@ -0,0 +1,2 @@
|
|||
.cpu EM
|
||||
st r0,[r1,-9]
|
|
@ -91,4 +91,9 @@ check_assembly "arc double_store -Mcpu=em,fpus" $objfile \
|
|||
# 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\]}
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
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)
|
||||
|
|
|
@ -122,6 +122,9 @@ static linkclass decodelist = NULL;
|
|||
|
||||
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
|
||||
|
@ -772,6 +775,8 @@ parse_option (const char *option)
|
|||
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);
|
||||
}
|
||||
|
@ -1257,7 +1262,12 @@ print_insn_arc (bfd_vma memaddr,
|
|||
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)
|
||||
{
|
||||
|
@ -1368,6 +1378,8 @@ with -M switch (multiple options should be separated by commas):\n"));
|
|||
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,
|
||||
|
|
Loading…
Add table
Reference in a new issue