diff options
author | Michal Bloch <m.bloch@samsung.com> | 2021-05-19 13:11:51 +0200 |
---|---|---|
committer | Michal Bloch <m.bloch@samsung.com> | 2021-05-19 13:11:51 +0200 |
commit | 70a7d5a494e986dac2e83b8d8324853e8c3348bb (patch) | |
tree | 4a872640813feb5e0db027742011900439e71d02 | |
parent | 741d9fd0f86609a35c09b820a2907e877266f6b4 (diff) | |
download | libunwind-tizen.tar.gz libunwind-tizen.tar.bz2 libunwind-tizen.zip |
Change-Id: Id42676afafc1da2f8c37f315f0047c8d664475ea
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
-rw-r--r-- | include/tdep-arm/libunwind_i.h | 4 | ||||
-rw-r--r-- | src/mi/Gdyn-remote.c | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/include/tdep-arm/libunwind_i.h b/include/tdep-arm/libunwind_i.h index 2602f41c..0084054b 100644 --- a/include/tdep-arm/libunwind_i.h +++ b/include/tdep-arm/libunwind_i.h @@ -50,8 +50,8 @@ typedef struct { 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) */ diff --git a/src/mi/Gdyn-remote.c b/src/mi/Gdyn-remote.c index 40a5ad8b..702c265a 100644 --- a/src/mi/Gdyn-remote.c +++ b/src/mi/Gdyn-remote.c @@ -228,7 +228,7 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip, 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) { @@ -245,6 +245,10 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t ip, { if (!di) di = calloc (1, sizeof (*di)); + if (!di) { + ret = -UNW_ENOMEM; + goto fail; + } di->start_ip = start_ip; di->end_ip = end_ip; @@ -275,10 +279,11 @@ unwi_dyn_remote_find_proc_info (unw_addr_space_t as, unw_word_t 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); |