mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-01-09 10:53:43 +01: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:
parent
d86155f72e
commit
fd21d07fe4
5 changed files with 25 additions and 3 deletions
|
@ -57,6 +57,13 @@ struct arm_exbuf_data
|
||||||
uint32_t 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_init_local (void);
|
||||||
int arm_exidx_table_add (const char *name, struct arm_exidx_entry *start,
|
int arm_exidx_table_add (const char *name, struct arm_exidx_entry *start,
|
||||||
|
|
|
@ -138,7 +138,7 @@ libunwind_la_LIBADD += $(LIBUNWIND_ELF)
|
||||||
noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
|
noinst_HEADERS += arm/init.h arm/offsets.h arm/unwind_i.h
|
||||||
libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \
|
libunwind_la_SOURCES_arm_common = $(libunwind_la_SOURCES_common) \
|
||||||
arm/is_fpreg.c arm/regname.c \
|
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:
|
# The list of files that go into libunwind:
|
||||||
libunwind_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \
|
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/getcontext.S \
|
||||||
arm/Lcreate_addr_space.c arm/Lget_proc_info.c arm/Lget_save_loc.c \
|
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/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_arm_la_SOURCES_arm = $(libunwind_la_SOURCES_arm_common) \
|
||||||
$(libunwind_la_SOURCES_generic) \
|
$(libunwind_la_SOURCES_generic) \
|
||||||
arm/Gcreate_addr_space.c arm/Gget_proc_info.c arm/Gget_save_loc.c \
|
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/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:
|
# The list of files that go both into libunwind and libunwind-ia64:
|
||||||
noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h \
|
noinst_HEADERS += ia64/init.h ia64/offsets.h ia64/regs.h \
|
||||||
|
|
|
@ -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_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 {
|
enum arm_exbuf_cmd_flags {
|
||||||
ARM_EXIDX_VFP_SHIFT_16 = 1 << 16,
|
ARM_EXIDX_VFP_SHIFT_16 = 1 << 16,
|
||||||
ARM_EXIDX_VFP_DOUBLE = 1 << 17,
|
ARM_EXIDX_VFP_DOUBLE = 1 << 17,
|
|
@ -27,6 +27,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
#include "offsets.h"
|
#include "offsets.h"
|
||||||
#include "ex_tables.h"
|
#include "ex_tables.h"
|
||||||
|
|
||||||
|
#define arm_exidx_step UNW_OBJ(arm_exidx_step)
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
arm_exidx_step (struct cursor *c)
|
arm_exidx_step (struct cursor *c)
|
||||||
{
|
{
|
||||||
|
|
5
src/arm/Lex_tables.c
Normal file
5
src/arm/Lex_tables.c
Normal 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
|
Loading…
Reference in a new issue