mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-13 21:49:40 +00:00
2007-10-10 Markus Deuling <deuling@de.ibm.com>
* stack.c (print_frame_args, frame_info, return_command): Use get_regcache_arch or get_frame_arch to get at the current architecture by regcache or by frame, respectively.
This commit is contained in:
parent
8b164abbfd
commit
7500260a55
@ -1,3 +1,9 @@
|
||||
2007-10-10 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* stack.c (print_frame_args, frame_info, return_command): Use
|
||||
get_regcache_arch or get_frame_arch to get at the current architecture
|
||||
by regcache or by frame, respectively.
|
||||
|
||||
2007-10-10 Markus Deuling <deuling@de.ibm.com>
|
||||
|
||||
* rs6000-nat.c (fetch_register, store_register)
|
||||
|
36
gdb/stack.c
36
gdb/stack.c
@ -338,7 +338,7 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
|
||||
long start;
|
||||
|
||||
if (highest_offset == -1)
|
||||
start = gdbarch_frame_args_skip (current_gdbarch);
|
||||
start = gdbarch_frame_args_skip (get_frame_arch (frame));
|
||||
else
|
||||
start = highest_offset;
|
||||
|
||||
@ -836,6 +836,7 @@ frame_info (char *addr_exp, int from_tty)
|
||||
enum language funlang = language_unknown;
|
||||
const char *pc_regname;
|
||||
int selected_frame_p;
|
||||
struct gdbarch *gdbarch;
|
||||
|
||||
fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
|
||||
|
||||
@ -855,6 +856,7 @@ frame_info (char *addr_exp, int from_tty)
|
||||
pc_regname = "pc";
|
||||
|
||||
find_frame_sal (fi, &sal);
|
||||
gdbarch = get_frame_arch (fi);
|
||||
func = get_frame_function (fi);
|
||||
/* FIXME: cagney/2002-11-28: Why bother? Won't sal.symtab contain
|
||||
the same value? */
|
||||
@ -975,14 +977,14 @@ frame_info (char *addr_exp, int from_tty)
|
||||
deprecated_print_address_numeric (arg_list, 1, gdb_stdout);
|
||||
printf_filtered (",");
|
||||
|
||||
if (!gdbarch_frame_num_args_p (current_gdbarch))
|
||||
if (!gdbarch_frame_num_args_p (gdbarch))
|
||||
{
|
||||
numargs = -1;
|
||||
puts_filtered (" args: ");
|
||||
}
|
||||
else
|
||||
{
|
||||
numargs = gdbarch_frame_num_args (current_gdbarch, fi);
|
||||
numargs = gdbarch_frame_num_args (gdbarch, fi);
|
||||
gdb_assert (numargs >= 0);
|
||||
if (numargs == 0)
|
||||
puts_filtered (" no args.");
|
||||
@ -1025,26 +1027,26 @@ frame_info (char *addr_exp, int from_tty)
|
||||
at one stage the frame cached the previous frame's SP instead
|
||||
of its address, hence it was easiest to just display the cached
|
||||
value. */
|
||||
if (gdbarch_sp_regnum (current_gdbarch) >= 0)
|
||||
if (gdbarch_sp_regnum (gdbarch) >= 0)
|
||||
{
|
||||
/* Find out the location of the saved stack pointer with out
|
||||
actually evaluating it. */
|
||||
frame_register_unwind (fi, gdbarch_sp_regnum (current_gdbarch),
|
||||
frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
|
||||
&optimized, &lval, &addr,
|
||||
&realnum, NULL);
|
||||
if (!optimized && lval == not_lval)
|
||||
{
|
||||
gdb_byte value[MAX_REGISTER_SIZE];
|
||||
CORE_ADDR sp;
|
||||
frame_register_unwind (fi, gdbarch_sp_regnum (current_gdbarch),
|
||||
frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
|
||||
&optimized, &lval, &addr,
|
||||
&realnum, value);
|
||||
/* NOTE: cagney/2003-05-22: This is assuming that the
|
||||
stack pointer was packed as an unsigned integer. That
|
||||
may or may not be valid. */
|
||||
sp = extract_unsigned_integer (value,
|
||||
register_size (current_gdbarch,
|
||||
gdbarch_sp_regnum (current_gdbarch)));
|
||||
register_size (gdbarch,
|
||||
gdbarch_sp_regnum (gdbarch)));
|
||||
printf_filtered (" Previous frame's sp is ");
|
||||
deprecated_print_address_numeric (sp, 1, gdb_stdout);
|
||||
printf_filtered ("\n");
|
||||
@ -1060,18 +1062,18 @@ frame_info (char *addr_exp, int from_tty)
|
||||
else if (!optimized && lval == lval_register)
|
||||
{
|
||||
printf_filtered (" Previous frame's sp in %s\n",
|
||||
gdbarch_register_name (current_gdbarch, realnum));
|
||||
gdbarch_register_name (gdbarch, realnum));
|
||||
need_nl = 0;
|
||||
}
|
||||
/* else keep quiet. */
|
||||
}
|
||||
|
||||
count = 0;
|
||||
numregs = gdbarch_num_regs (current_gdbarch)
|
||||
+ gdbarch_num_pseudo_regs (current_gdbarch);
|
||||
numregs = gdbarch_num_regs (gdbarch)
|
||||
+ gdbarch_num_pseudo_regs (gdbarch);
|
||||
for (i = 0; i < numregs; i++)
|
||||
if (i != gdbarch_sp_regnum (current_gdbarch)
|
||||
&& gdbarch_register_reggroup_p (current_gdbarch, i, all_reggroup))
|
||||
if (i != gdbarch_sp_regnum (gdbarch)
|
||||
&& gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
|
||||
{
|
||||
/* Find out the location of the saved register without
|
||||
fetching the corresponding value. */
|
||||
@ -1087,7 +1089,7 @@ frame_info (char *addr_exp, int from_tty)
|
||||
puts_filtered (",");
|
||||
wrap_here (" ");
|
||||
printf_filtered (" %s at ",
|
||||
gdbarch_register_name (current_gdbarch, i));
|
||||
gdbarch_register_name (gdbarch, i));
|
||||
deprecated_print_address_numeric (addr, 1, gdb_stdout);
|
||||
count++;
|
||||
}
|
||||
@ -1854,10 +1856,10 @@ If you continue, the return value that you specified will be ignored.\n";
|
||||
if (return_value != NULL)
|
||||
{
|
||||
struct type *return_type = value_type (return_value);
|
||||
gdb_assert (gdbarch_return_value (current_gdbarch, return_type,
|
||||
NULL, NULL, NULL)
|
||||
struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
|
||||
gdb_assert (gdbarch_return_value (gdbarch, return_type, NULL, NULL, NULL)
|
||||
== RETURN_VALUE_REGISTER_CONVENTION);
|
||||
gdbarch_return_value (current_gdbarch, return_type,
|
||||
gdbarch_return_value (gdbarch, return_type,
|
||||
get_current_regcache (), NULL /*read*/,
|
||||
value_contents (return_value) /*write*/);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user