mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-01-08 18:33:42 +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;
|
||||
};
|
||||
|
||||
#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,
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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,
|
|
@ -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
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