2002-10-31 Andrew Cagney <cagney@redhat.com>

* z8k-tdep.c (z8k_print_register_hook): Make static.
	(z8k_print_registers_info): New static function, clone of
	infcmd.c's default_print_registers_info.
	(z8k_do_registers_info): New function.  Wrap
	z8k_print_registers_info.
	* config/z8k/tm-z8k.h: Update copyright.
	(PRINT_REGISTER_HOOK): Delete macro.
	(z8k_print_register_hook): Delete declaration.
	(DEPRECATED_DO_REGISTERS_INFO): Define.
	(z8k_do_registers_info): Declare.
This commit is contained in:
Andrew Cagney 2002-10-31 19:14:07 +00:00
parent e68cc12e04
commit 0bdd672b8c
3 changed files with 130 additions and 6 deletions

View File

@ -1,3 +1,16 @@
2002-10-31 Andrew Cagney <cagney@redhat.com>
* z8k-tdep.c (z8k_print_register_hook): Make static.
(z8k_print_registers_info): New static function, clone of
infcmd.c's default_print_registers_info.
(z8k_do_registers_info): New function. Wrap
z8k_print_registers_info.
* config/z8k/tm-z8k.h: Update copyright.
(PRINT_REGISTER_HOOK): Delete macro.
(z8k_print_register_hook): Delete declaration.
(DEPRECATED_DO_REGISTERS_INFO): Define.
(z8k_do_registers_info): Declare.
2002-10-30 Joel Brobecker <brobecker@gnat.com>
* hppa-tdep.c (find_function_in_inferior): Remove this extern,

View File

@ -1,6 +1,7 @@
/* Parameters for execution on a z8000 series machine.
Copyright 1992, 1993, 1994, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
Copyright 1992, 1993, 1994, 1998, 1999, 2000, 2001, 2002 Free
Software Foundation, Inc.
This file is part of GDB.
@ -276,9 +277,9 @@ int sim_z8001_mode;
#define NO_STD_REGS
extern void z8k_print_register_hook (int regno);
#define PRINT_REGISTER_HOOK(regno) z8k_print_register_hook(regno)
extern void z8k_do_registers_info (int regnum, int all);
#define DEPRECATED_DO_REGISTERS_INFO(REGNUM,ALL) \
z8k_do_registers_info (REGNUM, ALL)
extern void z8k_set_pointer_size (int newsize);
#define INIT_EXTRA_SYMTAB_INFO \

View File

@ -319,7 +319,7 @@ store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
}
void
static void
z8k_print_register_hook (int regno)
{
if ((regno & 1) == 0 && regno < 16)
@ -359,7 +359,117 @@ z8k_print_register_hook (int regno)
(unsigned int)read_memory_short (rval + i));
}
}
}
static void
z8k_print_registers_info (struct gdbarch *gdbarch,
struct ui_file *file,
struct frame_info *frame,
int regnum, int print_all)
{
int i;
const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
char *raw_buffer = alloca (MAX_REGISTER_RAW_SIZE);
char *virtual_buffer = alloca (MAX_REGISTER_VIRTUAL_SIZE);
for (i = 0; i < numregs; i++)
{
/* Decide between printing all regs, non-float / vector regs, or
specific reg. */
if (regnum == -1)
{
if (!print_all)
{
if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
continue;
if (TYPE_VECTOR (REGISTER_VIRTUAL_TYPE (i)))
continue;
}
}
else
{
if (i != regnum)
continue;
}
/* If the register name is empty, it is undefined for this
processor, so don't display anything. */
if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
continue;
fputs_filtered (REGISTER_NAME (i), file);
print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
/* Get the data in raw format. */
if (! frame_register_read (frame, i, raw_buffer))
{
fprintf_filtered (file, "*value not available*\n");
continue;
}
/* FIXME: cagney/2002-08-03: This code shouldn't be necessary.
The function frame_register_read() should have returned the
pre-cooked register so no conversion is necessary. */
/* Convert raw data to virtual format if necessary. */
if (REGISTER_CONVERTIBLE (i))
{
REGISTER_CONVERT_TO_VIRTUAL (i, REGISTER_VIRTUAL_TYPE (i),
raw_buffer, virtual_buffer);
}
else
{
memcpy (virtual_buffer, raw_buffer,
REGISTER_VIRTUAL_SIZE (i));
}
/* If virtual format is floating, print it that way, and in raw
hex. */
if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
{
int j;
val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
file, 0, 1, 0, Val_pretty_default);
fprintf_filtered (file, "\t(raw 0x");
for (j = 0; j < REGISTER_RAW_SIZE (i); j++)
{
int idx;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
idx = j;
else
idx = REGISTER_RAW_SIZE (i) - 1 - j;
fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]);
}
fprintf_filtered (file, ")");
}
else
{
/* Print the register in hex. */
val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
file, 'x', 1, 0, Val_pretty_default);
/* If not a vector register, print it also according to its
natural format. */
if (TYPE_VECTOR (REGISTER_VIRTUAL_TYPE (i)) == 0)
{
fprintf_filtered (file, "\t");
val_print (REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
file, 0, 1, 0, Val_pretty_default);
}
}
/* Some z8k specific info. */
z8k_print_register_hook (i);
fprintf_filtered (file, "\n");
}
}
void
z8k_do_registers_info (int regnum, int all)
{
z8k_print_registers_info (current_gdbarch, gdb_stdout, selected_frame,
regnum, all);
}
void