mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 12:33:36 +08:00
[AArch64] Refactor aarch64_make_stub_cache
We would previously have to make sure the frame cache was not already created before calling aarch64_make_stub_cache. This patch makes this function check it so the caller does not need to do so. gdb/ChangeLog: * aarch64-tdep.c (aarch64_make_stub_cache): Update comment. New argument this_cache. Remove unused local variables reg and unwound_fp. Return early if this_cache is already set. Set this_cache. (aarch64_stub_this_id): Update call to aarch64_make_stub_cache.
This commit is contained in:
parent
7c8edfae86
commit
8b61f75db5
@ -1,3 +1,11 @@
|
|||||||
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
||||||
|
|
||||||
|
* aarch64-tdep.c (aarch64_make_stub_cache): Update comment. New
|
||||||
|
argument this_cache. Remove unused local variables reg and
|
||||||
|
unwound_fp. Return early if this_cache is already set. Set
|
||||||
|
this_cache.
|
||||||
|
(aarch64_stub_this_id): Update call to aarch64_make_stub_cache.
|
||||||
|
|
||||||
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
2015-07-09 Pierre Langlois <pierre.langlois@arm.com>
|
||||||
|
|
||||||
* aarch64-tdep.c (aarch64_make_prologue_cache): Update comment.
|
* aarch64-tdep.c (aarch64_make_prologue_cache): Update comment.
|
||||||
|
@ -1050,18 +1050,22 @@ struct frame_unwind aarch64_prologue_unwind =
|
|||||||
default_frame_sniffer
|
default_frame_sniffer
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Allocate an aarch64_prologue_cache and fill it with information
|
/* Allocate and fill in *THIS_CACHE with information about the prologue of
|
||||||
about the prologue of *THIS_FRAME. */
|
*THIS_FRAME. Do not do this is if *THIS_CACHE was already allocated.
|
||||||
|
Return a pointer to the current aarch64_prologue_cache in
|
||||||
|
*THIS_CACHE. */
|
||||||
|
|
||||||
static struct aarch64_prologue_cache *
|
static struct aarch64_prologue_cache *
|
||||||
aarch64_make_stub_cache (struct frame_info *this_frame)
|
aarch64_make_stub_cache (struct frame_info *this_frame, void **this_cache)
|
||||||
{
|
{
|
||||||
int reg;
|
|
||||||
struct aarch64_prologue_cache *cache;
|
struct aarch64_prologue_cache *cache;
|
||||||
CORE_ADDR unwound_fp;
|
|
||||||
|
if (*this_cache != NULL)
|
||||||
|
return *this_cache;
|
||||||
|
|
||||||
cache = FRAME_OBSTACK_ZALLOC (struct aarch64_prologue_cache);
|
cache = FRAME_OBSTACK_ZALLOC (struct aarch64_prologue_cache);
|
||||||
cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
|
cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
|
||||||
|
*this_cache = cache;
|
||||||
|
|
||||||
cache->prev_sp
|
cache->prev_sp
|
||||||
= get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
|
= get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
|
||||||
@ -1075,11 +1079,8 @@ static void
|
|||||||
aarch64_stub_this_id (struct frame_info *this_frame,
|
aarch64_stub_this_id (struct frame_info *this_frame,
|
||||||
void **this_cache, struct frame_id *this_id)
|
void **this_cache, struct frame_id *this_id)
|
||||||
{
|
{
|
||||||
struct aarch64_prologue_cache *cache;
|
struct aarch64_prologue_cache *cache
|
||||||
|
= aarch64_make_stub_cache (this_frame, this_cache);
|
||||||
if (*this_cache == NULL)
|
|
||||||
*this_cache = aarch64_make_stub_cache (this_frame);
|
|
||||||
cache = *this_cache;
|
|
||||||
|
|
||||||
*this_id = frame_id_build (cache->prev_sp, get_frame_pc (this_frame));
|
*this_id = frame_id_build (cache->prev_sp, get_frame_pc (this_frame));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user