Change-Id: Id42676afafc1da2f8c37f315f0047c8d664475ea
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
{
uint32_t virtual_address;
int32_t frame_type : 3; /* unw_tdep_frame_type_t classification */
- int32_t last_frame : 1; /* non-zero if last frame in chain */
- int32_t cfa_reg_sp : 1; /* cfa dwarf base register is sp vs. r7 */
+ uint32_t last_frame : 1; /* non-zero if last frame in chain */
+ uint32_t cfa_reg_sp : 1; /* cfa dwarf base register is sp vs. r7 */
int32_t cfa_reg_offset : 30; /* cfa is at this offset from base register value */
int32_t r7_cfa_offset : 30; /* r7 saved at this offset from cfa (-1 = not saved) */
int32_t lr_cfa_offset : 30; /* lr saved at this offset from cfa (-1 = not saved) */
if (fetchw (as, a, &addr, &gen1, arg) < 0
|| fetchw (as, a, &addr, &next_addr, arg) < 0)
- return ret;
+ goto fail;
for (addr = next_addr; addr != 0; addr = next_addr)
{
{
if (!di)
di = calloc (1, sizeof (*di));
+ if (!di) {
+ ret = -UNW_ENOMEM;
+ goto fail;
+ }
di->start_ip = start_ip;
di->end_ip = end_ip;
recheck:
addr = dyn_list_addr;
if (fetchw (as, a, &addr, &gen2, arg) < 0)
- return ret;
+ goto fail;
}
while (gen1 != gen2);
+fail:
if (ret < 0 && di)
free (di);