mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-04-12 08:22:18 +02:00
dwarf: Allow DWARF version both 3 and 4 (#56)
This commit is contained in:
parent
9e81e9efee
commit
1870b26a00
2 changed files with 6 additions and 4 deletions
|
@ -135,7 +135,8 @@ typedef enum
|
||||||
}
|
}
|
||||||
dwarf_expr_op_t;
|
dwarf_expr_op_t;
|
||||||
|
|
||||||
#define DWARF_CIE_VERSION 3 /* GCC emits version 1??? */
|
#define DWARF_CIE_VERSION 3
|
||||||
|
#define DWARF_CIE_VERSION_MAX 4
|
||||||
|
|
||||||
#define DWARF_CFA_OPCODE_MASK 0xc0
|
#define DWARF_CFA_OPCODE_MASK 0xc0
|
||||||
#define DWARF_CFA_OPERAND_MASK 0x3f
|
#define DWARF_CFA_OPERAND_MASK 0x3f
|
||||||
|
|
|
@ -116,10 +116,11 @@ parse_cie (unw_addr_space_t as, unw_accessors_t *a, unw_word_t addr,
|
||||||
if ((ret = dwarf_readu8 (as, a, &addr, &version, arg)) < 0)
|
if ((ret = dwarf_readu8 (as, a, &addr, &version, arg)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (version != 1 && version != DWARF_CIE_VERSION)
|
/* GCC emits version 1??? */
|
||||||
|
if (version != 1 && (version < DWARF_CIE_VERSION || version > DWARF_CIE_VERSION_MAX))
|
||||||
{
|
{
|
||||||
Debug (1, "Got CIE version %u, expected version 1 or "
|
Debug (1, "Got CIE version %u, expected version 1 or between "
|
||||||
STR (DWARF_CIE_VERSION) "\n", version);
|
STR (DWARF_CIE_VERSION) " and " STR (DWARF_CIE_VERSION_MAX) "\n", version);
|
||||||
return -UNW_EBADVERSION;
|
return -UNW_EBADVERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue