summaryrefslogtreecommitdiff
path: root/include/tdep-arm
diff options
context:
space:
mode:
authorKen Werner <ken.werner@linaro.org>2011-03-23 15:54:59 +0000
committerArun Sharma <asharma@fb.com>2011-03-24 20:42:00 -0700
commitcf8d5e41af582b9070576889dcc479397a19bf48 (patch)
treecedbe361b4d091838ba1fb9b8d845f118ee52a6f /include/tdep-arm
parent04fc88fa31ffac9e6189c4debd745c965473d1d4 (diff)
downloadlibunwind-cf8d5e41af582b9070576889dcc479397a19bf48.tar.gz
Have the ARM extbtl-parser operate on the DWARF model directly.
This eliminates the arm_stackframe and therefore the need to synchronize the two models. It also clears the way for unwinding call stacks with mixed DWARF- and extbl-frames. Signed-off-by: Ken Werner <ken.werner@linaro.org>
Diffstat (limited to 'include/tdep-arm')
-rw-r--r--include/tdep-arm/ex_tables.h35
-rw-r--r--include/tdep-arm/libunwind_i.h1
2 files changed, 4 insertions, 32 deletions
diff --git a/include/tdep-arm/ex_tables.h b/include/tdep-arm/ex_tables.h
index 3805c608..7369b35c 100644
--- a/include/tdep-arm/ex_tables.h
+++ b/include/tdep-arm/ex_tables.h
@@ -64,16 +64,12 @@ enum arm_exbuf_cmd_flags {
#define ARM_EXBUF_COUNT(x) ((x) & 0x0f)
#define ARM_EXBUF_END(x) (ARM_EXBUF_START(x) + ARM_EXBUF_COUNT(x))
-struct arm_exbuf_callback_data {
- uint8_t ops[11];
- uint8_t n_ops;
+struct arm_exbuf_data
+{
arm_exbuf_cmd_t cmd;
uint32_t data;
- void *cb_data;
};
-typedef int (*arm_exbuf_callback_t)(struct arm_exbuf_callback_data *aecb);
-
static inline void *
prel31_to_addr (void *addr)
{
@@ -99,30 +95,7 @@ int arm_exidx_entry_extract (struct elf_image *ei,
int arm_exidx_extract (struct arm_exidx_entry *entry, uint8_t *buf);
int arm_exidx_decode (const uint8_t *buf, uint8_t len,
- arm_exbuf_callback_t cb, void *cb_data);
-
-struct arm_stackframe {
- void *fp;
- void *sp;
- void *lr;
- void *pc;
-};
-
-struct arm_exidx_vrs {
- uint32_t vrs[16];
-};
-
-enum arm_exidx_vrs_regs {
- FP_thumb = 7,
- FP_arm = 11,
- SP = 13,
- LR = 14,
- PC = 15,
-};
-
-void arm_exidx_frame_to_vrs(struct arm_stackframe *f, struct arm_exidx_vrs *s);
-int arm_exidx_vrs_to_frame(struct arm_exidx_vrs *s, struct arm_stackframe *f);
-
-int arm_exidx_vrs_callback (struct arm_exbuf_callback_data *aecd);
+ struct dwarf_cursor *c);
+int arm_exidx_apply_cmd (struct arm_exbuf_data *edata, struct dwarf_cursor *c);
#endif // ARM_EX_TABLES_H
diff --git a/include/tdep-arm/libunwind_i.h b/include/tdep-arm/libunwind_i.h
index 839415cc..acaf6d71 100644
--- a/include/tdep-arm/libunwind_i.h
+++ b/include/tdep-arm/libunwind_i.h
@@ -55,7 +55,6 @@ struct unw_addr_space
struct cursor
{
struct dwarf_cursor dwarf; /* must be first */
- struct arm_stackframe frame;
unw_word_t sigcontext_addr;
};