diff options
author | Ken Werner <ken.werner@linaro.org> | 2011-04-01 18:41:16 +0200 |
---|---|---|
committer | Arun Sharma <asharma@fb.com> | 2011-04-05 20:59:10 -0700 |
commit | fd21d07fe422aacea422a8942ac2cc3f363f0fce (patch) | |
tree | 201dfa8a52215ea151ef1afb023cc597933226ff | |
parent | d86155f72e0a2db73a6cf4b873d400536ed06486 (diff) | |
download | libunwind-fd21d07fe422aacea422a8942ac2cc3f363f0fce.tar.gz |
Create a generic and local variant of the extbl parser.
In order to have the DWARF_* macros working properly a generic and a local
variant of the ex_tables.c have been created.
Signed-off-by: Ken Werner <ken.werner@linaro.org>
-rw-r--r-- | include/tdep-arm/ex_tables.h | 7 | ||||
-rw-r--r-- | src/Makefile.am | 8 | ||||
-rw-r--r-- | src/arm/Gex_tables.c (renamed from src/arm/ex_tables.c) | 6 | ||||
-rw-r--r-- | src/arm/Gstep.c | 2 | ||||
-rw-r--r-- | src/arm/Lex_tables.c | 5 |
5 files changed, 25 insertions, 3 deletions
diff --git a/include/tdep-arm/ex_tables.h b/include/tdep-arm/ex_tables.h index 6376ea75..b6649957 100644 --- a/include/tdep-arm/ex_tables.h +++ b/include/tdep-arm/ex_tables.h @@ -57,6 +57,13 @@ struct arm_exbuf_data uint32_t data; }; +#define arm_exidx_init_local UNW_OBJ(arm_exidx_init_local) +#define arm_exidx_table_add UNW_OBJ(arm_exidx_table_add) +#define arm_exidx_table_find UNW_OBJ(arm_exidx_table_find) +#define arm_exidx_table_lookup UNW_OBJ(arm_exidx_table_lookup) +#define arm_exidx_extract UNW_OBJ(arm_exidx_extract) +#define arm_exidx_decode UNW_OBJ(arm_exidx_decode) +#define arm_exidx_apply_cmd UNW_OBJ(arm_exidx_apply_cmd) int arm_exidx_init_local (void); int arm_exidx_table_add (const char *name, struct arm_exidx_entry *start, diff --git a/src/Makefile.am b/src/Makefile.am index 9703724e..e889235b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -138,7 +138,7 @@ libunwind_la_LIBADD += $(LIBUNWIND_ELF) noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \ arm/is_fpreg.c arm/regname.c \ - arm/ex_tables.c arm/ex_tables.h + arm/ex_tables.h # The list of files that go into libunwind: libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ @@ -146,13 +146,15 @@ libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ arm/getcontext.S \ arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c \ arm/Lglobal.c arm/Linit.c arm/Linit_local.c arm/Linit_remote.c \ - arm/Lis_signal_frame.c arm/Lregs.c arm/Lresume.c arm/Lstep.c + arm/Lis_signal_frame.c arm/Lregs.c arm/Lresume.c arm/Lstep.c \ + arm/Lex_tables.c libunwind_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \ $(libunwind_la_SOURCES_generic) \ arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c \ arm/Gglobal.c arm/Ginit.c arm/Ginit_local.c arm/Ginit_remote.c \ - arm/Gis_signal_frame.c arm/Gregs.c arm/Gresume.c arm/Gstep.c + arm/Gis_signal_frame.c arm/Gregs.c arm/Gresume.c arm/Gstep.c \ + arm/Gex_tables.c # The list of files that go both into libunwind and libunwind-ia64: noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h \ diff --git a/src/arm/ex_tables.c b/src/arm/Gex_tables.c index 499febe6..035b24a6 100644 --- a/src/arm/ex_tables.c +++ b/src/arm/Gex_tables.c @@ -35,6 +35,12 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #define ARM_EXIDX_TABLE_LIMIT 32 +#define arm_exidx_tables UNW_OBJ(arm_exidx_tables) +#define arm_exidx_table_count UNW_OBJ(arm_exidx_table_count) +#define arm_exidx_table_find UNW_OBJ(arm_exidx_table_find) +#define arm_exidx_table_reset_all UNW_OBJ(arm_exidx_table_reset_all) +#define arm_exidx_init_local_cb UNW_OBJ(arm_exidx_init_local_cb) + enum arm_exbuf_cmd_flags { ARM_EXIDX_VFP_SHIFT_16 = 1 << 16, ARM_EXIDX_VFP_DOUBLE = 1 << 17, diff --git a/src/arm/Gstep.c b/src/arm/Gstep.c index f0360939..9164d78e 100644 --- a/src/arm/Gstep.c +++ b/src/arm/Gstep.c @@ -27,6 +27,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "offsets.h" #include "ex_tables.h" +#define arm_exidx_step UNW_OBJ(arm_exidx_step) + static inline int arm_exidx_step (struct cursor *c) { diff --git a/src/arm/Lex_tables.c b/src/arm/Lex_tables.c new file mode 100644 index 00000000..4a4f925c --- /dev/null +++ b/src/arm/Lex_tables.c @@ -0,0 +1,5 @@ +#define UNW_LOCAL_ONLY +#include <libunwind.h> +#if defined(UNW_LOCAL_ONLY) && !defined(UNW_REMOTE_ONLY) +#include "Gex_tables.c" +#endif |