From 8b61f75db53877215c7cb15b901a094bf1fb916e Mon Sep 17 00:00:00 2001 From: Pierre Langlois Date: Thu, 9 Jul 2015 16:35:10 +0100 Subject: [PATCH] [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. --- gdb/ChangeLog | 8 ++++++++ gdb/aarch64-tdep.c | 21 +++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 672b29731e1..73ee4d183e0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2015-07-09 Pierre Langlois + + * 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 * aarch64-tdep.c (aarch64_make_prologue_cache): Update comment. diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 6f3a643405e..b21182b2f81 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -1050,18 +1050,22 @@ struct frame_unwind aarch64_prologue_unwind = default_frame_sniffer }; -/* Allocate an aarch64_prologue_cache and fill it with information - about the prologue of *THIS_FRAME. */ +/* Allocate and fill in *THIS_CACHE with information about the prologue of + *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 * -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; - CORE_ADDR unwound_fp; + + if (*this_cache != NULL) + return *this_cache; cache = FRAME_OBSTACK_ZALLOC (struct aarch64_prologue_cache); cache->saved_regs = trad_frame_alloc_saved_regs (this_frame); + *this_cache = cache; cache->prev_sp = get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM); @@ -1075,11 +1079,8 @@ static void aarch64_stub_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id) { - struct aarch64_prologue_cache *cache; - - if (*this_cache == NULL) - *this_cache = aarch64_make_stub_cache (this_frame); - cache = *this_cache; + struct aarch64_prologue_cache *cache + = aarch64_make_stub_cache (this_frame, this_cache); *this_id = frame_id_build (cache->prev_sp, get_frame_pc (this_frame)); } -- 2.30.2