gdb: Remove arm_pc_is_thumb_dummy() and related code.
This is basically an import of the following gdb change: http://sourceware.org/ml/gdb-cvs/2005-03/msg00143.html (which in effect fixes problems with gracefully closing down the non-Thumb program being debugged).
This commit is contained in:
parent
1aa21acd61
commit
ee3d6ade2e
@ -181,20 +181,6 @@ struct arm_prologue_cache
|
||||
|
||||
int arm_apcs_32 = 1;
|
||||
|
||||
/* Flag set by arm_fix_call_dummy that tells whether the target
|
||||
function is a Thumb function. This flag is checked by
|
||||
arm_push_arguments. FIXME: Change the PUSH_ARGUMENTS macro (and
|
||||
its use in valops.c) to pass the function address as an additional
|
||||
parameter. */
|
||||
|
||||
static int target_is_thumb;
|
||||
|
||||
/* Flag set by arm_fix_call_dummy that tells whether the calling
|
||||
function is a Thumb function. This flag is checked by
|
||||
arm_pc_is_thumb and arm_call_dummy_breakpoint_offset. */
|
||||
|
||||
static int caller_is_thumb;
|
||||
|
||||
/* Determine if the program counter specified in MEMADDR is in a Thumb
|
||||
function. */
|
||||
|
||||
@ -219,27 +205,6 @@ arm_pc_is_thumb (CORE_ADDR memaddr)
|
||||
}
|
||||
}
|
||||
|
||||
/* Determine if the program counter specified in MEMADDR is in a call
|
||||
dummy being called from a Thumb function. */
|
||||
|
||||
int
|
||||
arm_pc_is_thumb_dummy (CORE_ADDR memaddr)
|
||||
{
|
||||
CORE_ADDR sp = read_sp ();
|
||||
|
||||
/* FIXME: Until we switch for the new call dummy macros, this heuristic
|
||||
is the best we can do. We are trying to determine if the pc is on
|
||||
the stack, which (hopefully) will only happen in a call dummy.
|
||||
We hope the current stack pointer is not so far alway from the dummy
|
||||
frame location (true if we have not pushed large data structures or
|
||||
gone too many levels deep) and that our 1024 is not enough to consider
|
||||
code regions as part of the stack (true for most practical purposes). */
|
||||
if (DEPRECATED_PC_IN_CALL_DUMMY (memaddr, sp, sp + 1024))
|
||||
return caller_is_thumb;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Remove useless bits from addresses in a running program. */
|
||||
static CORE_ADDR
|
||||
arm_addr_bits_remove (CORE_ADDR val)
|
||||
@ -2021,7 +1986,7 @@ arm_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
|
||||
|
||||
if (arm_pc_is_thumb (*pcptr) || arm_pc_is_thumb_dummy (*pcptr))
|
||||
if (arm_pc_is_thumb (*pcptr))
|
||||
{
|
||||
*pcptr = UNMAKE_THUMB_ADDR (*pcptr);
|
||||
*lenptr = tdep->thumb_breakpoint_size;
|
||||
|
Loading…
Reference in New Issue
Block a user