forked from OSchip/llvm-project
1ae8d81147
parseInstructions() doesn't always process the whole set of DWARF instructions for a frame. It will stop once the target PC is reached, or if malformed instructions are found. So, for example, if we have an instruction sequence like this: ``` <start> ... DW_CFA_remember_state ... DW_CFA_advance_loc past the location we're unwinding at (pcoffset in parseInstructions() main loop) ... DW_CFA_restore_state <end> ``` ... the saved state will never be freed, even though the DW_CFA_remember_state opcode has a matching DW_CFA_restore_state later in the sequence. This change adds code to free whatever is left on rememberStack after parsing the CIE and the FDE instructions. Differential Revision: https://reviews.llvm.org/D66904 |
||
---|---|---|
.. | ||
libunwind | ||
CMakeLists.txt | ||
alignment.pass.cpp | ||
libunwind_01.pass.cpp | ||
libunwind_02.pass.cpp | ||
lit.cfg | ||
lit.site.cfg.in | ||
remember_state_leak.pass.sh.s | ||
signal_frame.pass.cpp | ||
unw_getcontext.pass.cpp |