diff options
author | Yao Qi <yao@codesourcery.com> | 2014-11-28 16:17:37 +0800 |
---|---|---|
committer | Yao Qi <yao@codesourcery.com> | 2014-11-29 22:26:35 +0800 |
commit | 4072f9208f12fdd60e68c73807fed4624607d290 (patch) | |
tree | 9f4a8140064775d9a87fe5119b88c31d3c5efe9a /gdb | |
parent | 6c659fc2c7cd2da6d2b9a3d7c38597ad3821832a (diff) | |
download | gdb-4072f9208f12fdd60e68c73807fed4624607d290.zip gdb-4072f9208f12fdd60e68c73807fed4624607d290.tar.gz gdb-4072f9208f12fdd60e68c73807fed4624607d290.tar.bz2 |
[arm] compute framereg and framesize when needed
I find local variables framereg and framesize is only used when cache
isn't NULL. This patch to move the code into "if (cache)" block.
gdb:
2014-11-29 Yao Qi <yao@codesourcery.com>
* arm-tdep.c (arm_analyze_prologue): Move local variables
'framereg' and 'framesize' to inner block. Move code to
inner block too.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/arm-tdep.c | 33 |
2 files changed, 23 insertions, 16 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 552c13b..c35f0ae 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2014-11-29 Yao Qi <yao@codesourcery.com> + + * arm-tdep.c (arm_analyze_prologue): Move local variables + 'framereg' and 'framesize' to inner block. Move code to + inner block too. + 2014-11-28 Siva Chandra Reddy <sivachandra@google.com> * eval.c: Include gdbthread.h. diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 1002870..7ec3bff 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -1686,7 +1686,6 @@ arm_analyze_prologue (struct gdbarch *gdbarch, pv_t regs[ARM_FPS_REGNUM]; struct pv_area *stack; struct cleanup *back_to; - int framereg, framesize; CORE_ADDR unrecognized_pc = 0; /* Search the prologue looking for instructions that set up the @@ -1887,23 +1886,25 @@ arm_analyze_prologue (struct gdbarch *gdbarch, if (unrecognized_pc == 0) unrecognized_pc = current_pc; - /* The frame size is just the distance from the frame register - to the original stack pointer. */ - if (pv_is_register (regs[ARM_FP_REGNUM], ARM_SP_REGNUM)) - { - /* Frame pointer is fp. */ - framereg = ARM_FP_REGNUM; - framesize = -regs[ARM_FP_REGNUM].k; - } - else - { - /* Try the stack pointer... this is a bit desperate. */ - framereg = ARM_SP_REGNUM; - framesize = -regs[ARM_SP_REGNUM].k; - } - if (cache) { + int framereg, framesize; + + /* The frame size is just the distance from the frame register + to the original stack pointer. */ + if (pv_is_register (regs[ARM_FP_REGNUM], ARM_SP_REGNUM)) + { + /* Frame pointer is fp. */ + framereg = ARM_FP_REGNUM; + framesize = -regs[ARM_FP_REGNUM].k; + } + else + { + /* Try the stack pointer... this is a bit desperate. */ + framereg = ARM_SP_REGNUM; + framesize = -regs[ARM_SP_REGNUM].k; + } + cache->framereg = framereg; cache->framesize = framesize; |