diff options
author | Mike Leach <mike.leach@linaro.org> | 2021-05-16 11:58:40 +0100 |
---|---|---|
committer | Mike Leach <mike.leach@linaro.org> | 2021-05-16 11:58:40 +0100 |
commit | 63b59ee56d8acfad3ea9bbea25f56119e298bd72 (patch) | |
tree | b5ff093b1e84aacb6a9f1b7c0720b1136320764f | |
parent | 01d44a34f8fc057f4b041c01f8d9502d77fe612f (diff) | |
download | OpenCSD-63b59ee56d8acfad3ea9bbea25f56119e298bd72.tar.gz |
opencsd: etm4: Fix commit elements bug.
Fix processing for commit elements that has potential for
loop due to incorrect restore of skipped elements.
Signed-off-by: Mike Leach <mike.leach@linaro.org>
-rw-r--r-- | decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp index e4caf0a..2e4e723 100644 --- a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp +++ b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp @@ -1024,17 +1024,19 @@ ocsd_err_t TrcPktDecodeEtmV4I::cancelElements() m_elem_res.P0_cancel = 0; break; } - - if (temp.size()) + } + + /* restore any saved elements that are unaffected by cancel. */ + if (temp.size()) + { + while (temp.size()) { - while (temp.size()) - { - pElem = temp.back(); - m_P0_stack.push_front(pElem); - temp.pop_back(false); - } + pElem = temp.back(); + m_P0_stack.push_front(pElem); + temp.pop_back(false); } } + m_curr_spec_depth -= num_cancel_req - m_elem_res.P0_cancel; return err; } |