1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-05-19 11:35:17 +02:00

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>
This commit is contained in:
Ken Werner 2011-04-01 18:41:16 +02:00 committed by Arun Sharma
parent d86155f72e
commit fd21d07fe4
5 changed files with 25 additions and 3 deletions

View file

@ -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,

View file

@ -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 \

View file

@ -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,

View file

@ -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)
{

5
src/arm/Lex_tables.c Normal file
View file

@ -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