mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-25 05:00:01 +00:00
Rename gdbarch-utils.[hc] to arch-utils.[hc].
This commit is contained in:
parent
e30db7381c
commit
a5ea25581c
@ -1,3 +1,23 @@
|
||||
Sun Apr 9 23:42:16 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
From 2000-04-07 Jonathan Larmour <jlarmour@redhat.co.uk>:
|
||||
* mips-tdep.c (saved_gpreg_size_enums): Define enum command for
|
||||
new "set mips saved-gpreg-size" command
|
||||
(MIPS_SAVED_REGSIZE): Now a function mips_saved_regsize()
|
||||
(MIPS_DEFAULT_SAVED_REGSIZE): Define for default MIPS_SAVED_REGSIZE,
|
||||
either from target, or gdb multi-arch
|
||||
(show_mips_command): New. For "show mips" prefix command
|
||||
(set_mips_command): New. For "show mips" prefix command
|
||||
(_initialize_mips_tdep): Add top-level mips prefix command
|
||||
Add "set mips saved-gpreg-size" command
|
||||
|
||||
* mips-tdep.c (struct gdbarch_tdep): Rename mips_saved_regsize to
|
||||
mips_default_saved_regsize.
|
||||
(mips_gdbarch_init): Update.
|
||||
(MIPS_DEFAULT_SAVED_REGSIZE): Update.
|
||||
(mips_gdbarch_init): Use MIPS_REGSIZE as the default value for
|
||||
mips_default_saved_regsize.
|
||||
|
||||
Sun Apr 9 23:27:00 2000 Andrew Cagney <cagney@b1.cygnus.com>
|
||||
|
||||
From 2000-04-07 J.T. Conklin <jtc@redback.com>:
|
||||
|
126
gdb/mips-tdep.c
126
gdb/mips-tdep.c
@ -45,6 +45,22 @@ struct frame_extra_info
|
||||
int num_args;
|
||||
};
|
||||
|
||||
/* We allow the user to override MIPS_SAVED_REGSIZE, so define
|
||||
the subcommand enum settings allowed. */
|
||||
static char saved_gpreg_size_auto[] = "auto";
|
||||
static char saved_gpreg_size_32[] = "32";
|
||||
static char saved_gpreg_size_64[] = "64";
|
||||
|
||||
static char *saved_gpreg_size_enums[] = {
|
||||
saved_gpreg_size_auto,
|
||||
saved_gpreg_size_32,
|
||||
saved_gpreg_size_64,
|
||||
0
|
||||
};
|
||||
|
||||
/* The current (string) value of saved_gpreg_size. */
|
||||
static char *mips_saved_regsize_string = saved_gpreg_size_auto;
|
||||
|
||||
/* Some MIPS boards don't support floating point while others only
|
||||
support single-precision floating-point operations. See also
|
||||
FP_REGISTER_DOUBLE. */
|
||||
@ -63,10 +79,12 @@ static int mips_fpu_type_auto = 1;
|
||||
static enum mips_fpu_type mips_fpu_type = MIPS_DEFAULT_FPU_TYPE;
|
||||
#define MIPS_FPU_TYPE mips_fpu_type
|
||||
|
||||
#ifndef MIPS_SAVED_REGSIZE
|
||||
#define MIPS_SAVED_REGSIZE MIPS_REGSIZE
|
||||
#ifndef MIPS_DEFAULT_SAVED_REGSIZE
|
||||
#define MIPS_DEFAULT_SAVED_REGSIZE MIPS_REGSIZE
|
||||
#endif
|
||||
|
||||
#define MIPS_SAVED_REGSIZE (mips_saved_regsize())
|
||||
|
||||
/* Do not use "TARGET_IS_MIPS64" to test the size of floating point registers */
|
||||
#ifndef FP_REGISTER_DOUBLE
|
||||
#define FP_REGISTER_DOUBLE (REGISTER_VIRTUAL_SIZE(FP0_REGNUM) == 8)
|
||||
@ -83,7 +101,7 @@ struct gdbarch_tdep
|
||||
enum mips_fpu_type mips_fpu_type;
|
||||
int mips_last_arg_regnum;
|
||||
int mips_last_fp_arg_regnum;
|
||||
int mips_saved_regsize;
|
||||
int mips_default_saved_regsize;
|
||||
int mips_fp_register_double;
|
||||
};
|
||||
|
||||
@ -108,8 +126,8 @@ struct gdbarch_tdep
|
||||
#endif
|
||||
|
||||
#if GDB_MULTI_ARCH
|
||||
#undef MIPS_SAVED_REGSIZE
|
||||
#define MIPS_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_saved_regsize)
|
||||
#undef MIPS_DEFAULT_SAVED_REGSIZE
|
||||
#define MIPS_DEFAULT_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_saved_regsize)
|
||||
#endif
|
||||
|
||||
/* Indicate that the ABI makes use of double-precision registers
|
||||
@ -166,6 +184,10 @@ char *tmp_mips_processor_type;
|
||||
char *mips_generic_reg_names[] = MIPS_REGISTER_NAMES;
|
||||
char **mips_processor_reg_names = mips_generic_reg_names;
|
||||
|
||||
/* The list of available "set mips " and "show mips " commands */
|
||||
static struct cmd_list_element *setmipscmdlist = NULL;
|
||||
static struct cmd_list_element *showmipscmdlist = NULL;
|
||||
|
||||
char *
|
||||
mips_register_name (i)
|
||||
int i;
|
||||
@ -303,6 +325,19 @@ mips_print_extra_frame_info (fi)
|
||||
paddr_d (fi->extra_info->proc_desc->pdr.frameoffset));
|
||||
}
|
||||
|
||||
/* Return the currently configured (or set) saved register size */
|
||||
|
||||
static unsigned int
|
||||
mips_saved_regsize ()
|
||||
{
|
||||
if (mips_saved_regsize_string == saved_gpreg_size_auto)
|
||||
return MIPS_DEFAULT_SAVED_REGSIZE;
|
||||
else if (mips_saved_regsize_string == saved_gpreg_size_64)
|
||||
return 8;
|
||||
else /* if (mips_saved_regsize_string == saved_gpreg_size_32) */
|
||||
return 4;
|
||||
}
|
||||
|
||||
/* Convert between RAW and VIRTUAL registers. The RAW register size
|
||||
defines the remote-gdb packet. */
|
||||
|
||||
@ -3144,6 +3179,28 @@ in_sigtramp (pc, ignore)
|
||||
return (pc >= sigtramp_address && pc < sigtramp_end);
|
||||
}
|
||||
|
||||
/* Root of all "set mips "/"show mips " commands. This will eventually be
|
||||
used for all MIPS-specific commands. */
|
||||
|
||||
static void show_mips_command PARAMS ((char *, int));
|
||||
static void
|
||||
show_mips_command (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
help_list (showmipscmdlist, "show mips ", all_commands, gdb_stdout);
|
||||
}
|
||||
|
||||
static void set_mips_command PARAMS ((char *, int));
|
||||
static void
|
||||
set_mips_command (args, from_tty)
|
||||
char *args;
|
||||
int from_tty;
|
||||
{
|
||||
printf_unfiltered ("\"set mips\" must be followed by an appropriate subcommand.\n");
|
||||
help_list (setmipscmdlist, "set mips ", all_commands, gdb_stdout);
|
||||
}
|
||||
|
||||
/* Commands to show/set the MIPS FPU type. */
|
||||
|
||||
static void show_mipsfpu_command PARAMS ((char *, int));
|
||||
@ -3708,7 +3765,7 @@ mips_gdbarch_init (info, arches)
|
||||
case E_MIPS_ABI_O32:
|
||||
ef_mips_abi = "o32";
|
||||
tdep->mips_eabi = 0;
|
||||
tdep->mips_saved_regsize = 4;
|
||||
tdep->mips_default_saved_regsize = 4;
|
||||
tdep->mips_fp_register_double = 0;
|
||||
set_gdbarch_long_bit (gdbarch, 32);
|
||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||
@ -3717,7 +3774,7 @@ mips_gdbarch_init (info, arches)
|
||||
case E_MIPS_ABI_O64:
|
||||
ef_mips_abi = "o64";
|
||||
tdep->mips_eabi = 0;
|
||||
tdep->mips_saved_regsize = 8;
|
||||
tdep->mips_default_saved_regsize = 8;
|
||||
tdep->mips_fp_register_double = 1;
|
||||
set_gdbarch_long_bit (gdbarch, 32);
|
||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||
@ -3726,7 +3783,7 @@ mips_gdbarch_init (info, arches)
|
||||
case E_MIPS_ABI_EABI32:
|
||||
ef_mips_abi = "eabi32";
|
||||
tdep->mips_eabi = 1;
|
||||
tdep->mips_saved_regsize = 4;
|
||||
tdep->mips_default_saved_regsize = 4;
|
||||
tdep->mips_fp_register_double = 0;
|
||||
set_gdbarch_long_bit (gdbarch, 32);
|
||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||
@ -3735,7 +3792,7 @@ mips_gdbarch_init (info, arches)
|
||||
case E_MIPS_ABI_EABI64:
|
||||
ef_mips_abi = "eabi64";
|
||||
tdep->mips_eabi = 1;
|
||||
tdep->mips_saved_regsize = 8;
|
||||
tdep->mips_default_saved_regsize = 8;
|
||||
tdep->mips_fp_register_double = 1;
|
||||
set_gdbarch_long_bit (gdbarch, 64);
|
||||
set_gdbarch_ptr_bit (gdbarch, 64);
|
||||
@ -3744,7 +3801,7 @@ mips_gdbarch_init (info, arches)
|
||||
default:
|
||||
ef_mips_abi = "default";
|
||||
tdep->mips_eabi = 0;
|
||||
tdep->mips_saved_regsize = MIPS_REGSIZE;
|
||||
tdep->mips_default_saved_regsize = MIPS_REGSIZE;
|
||||
tdep->mips_fp_register_double = (REGISTER_VIRTUAL_SIZE (FP0_REGNUM) == 8);
|
||||
set_gdbarch_long_bit (gdbarch, 32);
|
||||
set_gdbarch_ptr_bit (gdbarch, 32);
|
||||
@ -3752,6 +3809,27 @@ mips_gdbarch_init (info, arches)
|
||||
break;
|
||||
}
|
||||
|
||||
/* FIXME: jlarmour/2000-04-07: There *is* a flag EF_MIPS_32BIT_MODE
|
||||
that could indicate -gp32 BUT gas/config/tc-mips.c contains the
|
||||
comment:
|
||||
|
||||
``We deliberately don't allow "-gp32" to set the MIPS_32BITMODE
|
||||
flag in object files because to do so would make it impossible to
|
||||
link with libraries compiled without "-gp32". This is
|
||||
unnecessarily restrictive.
|
||||
|
||||
We could solve this problem by adding "-gp32" multilibs to gcc,
|
||||
but to set this flag before gcc is built with such multilibs will
|
||||
break too many systems.''
|
||||
|
||||
But even more unhelpfully, the default linker output target for
|
||||
mips64-elf is elf32-bigmips, and has EF_MIPS_32BIT_MODE set, even
|
||||
for 64-bit programs - you need to change the ABI to change this,
|
||||
and not all gcc targets support that currently. Therefore using
|
||||
this flag to detect 32-bit mode would do the wrong thing given
|
||||
the current gcc - it would make GDB treat these 64-bit programs
|
||||
as 32-bit programs by default. */
|
||||
|
||||
/* determine the ISA */
|
||||
switch (elf_flags & EF_MIPS_ARCH)
|
||||
{
|
||||
@ -3890,8 +3968,8 @@ mips_gdbarch_init (info, arches)
|
||||
: tdep->mips_fpu_type == MIPS_FPU_DOUBLE ? "double"
|
||||
: "???"));
|
||||
fprintf_unfiltered (gdb_stderr,
|
||||
"mips_gdbarch_init: tdep->mips_saved_regsize = %d\n",
|
||||
tdep->mips_saved_regsize);
|
||||
"mips_gdbarch_init: tdep->mips_default_saved_regsize = %d\n",
|
||||
tdep->mips_default_saved_regsize);
|
||||
fprintf_unfiltered (gdb_stderr,
|
||||
"mips_gdbarch_init: tdep->mips_fp_register_double = %d (%s)\n",
|
||||
tdep->mips_fp_register_double,
|
||||
@ -3913,6 +3991,30 @@ _initialize_mips_tdep ()
|
||||
if (!tm_print_insn) /* Someone may have already set it */
|
||||
tm_print_insn = gdb_print_insn_mips;
|
||||
|
||||
/* Add root prefix command for all "set mips"/"show mips" commands */
|
||||
add_prefix_cmd ("mips", no_class, set_mips_command,
|
||||
"Various MIPS specific commands.",
|
||||
&setmipscmdlist, "set mips ", 0, &setlist);
|
||||
|
||||
add_prefix_cmd ("mips", no_class, show_mips_command,
|
||||
"Various MIPS specific commands.",
|
||||
&showmipscmdlist, "show mips ", 0, &showlist);
|
||||
|
||||
/* Allow the user to override the saved register size. */
|
||||
add_show_from_set (add_set_enum_cmd ("saved-gpreg-size",
|
||||
class_obscure,
|
||||
saved_gpreg_size_enums,
|
||||
(char *) &mips_saved_regsize_string, "\
|
||||
Set size of general purpose registers saved on the stack.\n\
|
||||
This option can be set to one of:\n\
|
||||
32 - Force GDB to treat saved GP registers as 32-bit\n\
|
||||
64 - Force GDB to treat saved GP registers as 64-bit\n\
|
||||
auto - Allow GDB to use the target's default setting or autodetect the\n\
|
||||
saved GP register size from information contained in the executable.\n\
|
||||
(default: auto)",
|
||||
&setmipscmdlist),
|
||||
&showmipscmdlist);
|
||||
|
||||
/* Let the user turn off floating point and set the fence post for
|
||||
heuristic_proc_start. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user