2008-04-10 Andreas Krebbel <krebbel1@de.ibm.com>

* s390-dis.c (init_disasm): Evaluate disassembler_options.
	(print_s390_disassembler_options): New function.
	* disassemble.c (disassembler_usage): Invoke
	print_s390_disassembler_options.

2008-04-10  Andreas Krebbel  <krebbel1@de.ibm.com>

	* dis-asm.h (print_s390_disassembler_options):
	Prototype added.
This commit is contained in:
Andreas Krebbel
2008-04-10 13:36:43 +00:00
parent 7ff4264847
commit 112b7c5071
5 changed files with 55 additions and 9 deletions

View File

@ -23,6 +23,7 @@
#include "ansidecl.h"
#include "sysdep.h"
#include "dis-asm.h"
#include "opintl.h"
#include "opcode/s390.h"
static int init_flag = 0;
@ -36,6 +37,7 @@ init_disasm (struct disassemble_info *info)
{
const struct s390_opcode *opcode;
const struct s390_opcode *opcode_end;
const char *p;
memset (opc_index, 0, sizeof (opc_index));
opcode_end = s390_opcodes + s390_num_opcodes;
@ -46,17 +48,34 @@ init_disasm (struct disassemble_info *info)
(opcode[1].opcode[0] == opcode->opcode[0]))
opcode++;
}
switch (info->mach)
for (p = info->disassembler_options; p != NULL; )
{
case bfd_mach_s390_31:
current_arch_mask = 1 << S390_OPCODE_ESA;
break;
case bfd_mach_s390_64:
current_arch_mask = 1 << S390_OPCODE_ZARCH;
break;
default:
abort ();
if (CONST_STRNEQ (p, "esa"))
current_arch_mask = 1 << S390_OPCODE_ESA;
else if (CONST_STRNEQ (p, "zarch"))
current_arch_mask = 1 << S390_OPCODE_ZARCH;
else
fprintf (stderr, "Unknown S/390 disassembler option: %s\n", p);
p = strchr (p, ',');
if (p != NULL)
p++;
}
if (!current_arch_mask)
switch (info->mach)
{
case bfd_mach_s390_31:
current_arch_mask = 1 << S390_OPCODE_ESA;
break;
case bfd_mach_s390_64:
current_arch_mask = 1 << S390_OPCODE_ZARCH;
break;
default:
abort ();
}
init_flag = 1;
}
@ -250,3 +269,14 @@ print_insn_s390 (bfd_vma memaddr, struct disassemble_info *info)
return 1;
}
}
void
print_s390_disassembler_options (FILE *stream)
{
fprintf (stream, _("\n\
The following S/390 specific disassembler options are supported for use\n\
with the -M switch (multiple options should be separated by commas):\n"));
fprintf (stream, _(" esa Disassemble in ESA architecture mode\n"));
fprintf (stream, _(" zarch Disassemble in z/Architecture mode\n"));
}