diff -Nru libopencsd-1.2.0/debian/changelog libopencsd-1.3.1/debian/changelog --- libopencsd-1.2.0/debian/changelog 2022-01-05 17:26:43.000000000 +0000 +++ libopencsd-1.3.1/debian/changelog 2022-06-06 20:08:27.000000000 +0000 @@ -1,3 +1,9 @@ +libopencsd (1.3.1-1) unstable; urgency=medium + + * New upstream release. + + -- Wookey Mon, 06 Jun 2022 21:08:27 +0100 + libopencsd (1.2.0-1) unstable; urgency=medium * New upstream release. diff -Nru libopencsd-1.2.0/debian/source/lintian-overrides libopencsd-1.3.1/debian/source/lintian-overrides --- libopencsd-1.2.0/debian/source/lintian-overrides 2022-01-05 17:26:43.000000000 +0000 +++ libopencsd-1.3.1/debian/source/lintian-overrides 2022-06-06 20:08:27.000000000 +0000 @@ -1 +1,2 @@ -libopencsd: source-is-missing \ No newline at end of file +libopencsd: source-is-missing +libopencsd: binary-with-bad-dynamic-table diff -Nru libopencsd-1.2.0/debian/source/patch-header libopencsd-1.3.1/debian/source/patch-header --- libopencsd-1.2.0/debian/source/patch-header 2020-06-14 00:58:45.000000000 +0000 +++ libopencsd-1.3.1/debian/source/patch-header 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -The Debian packaging of foo is maintained in git, using the merging -workflow described in dgit-maint-merge(7). There isn't a patch -queue that can be represented as a quilt series. - -A detailed breakdown of the changes is available from their -canonical representation - git commits in the packaging repository. -For example, to see the changes made by the Debian maintainer in -the first upload of upstream version 0.14.1, (when this package first -used dgit) you could use: - - % git clone https://git.dgit.debian.org/libopencsd - % cd libopencsd - % git log --oneline 0.14.1..debian/0.14.1-1 -- . ':!debian' - -(If you have dgit, use `dgit clone foo`, rather than plain `git -clone`.) - -A single combined diff, containing all the changes, follows. diff -Nru libopencsd-1.2.0/decoder/docs/doxygen_config.dox libopencsd-1.3.1/decoder/docs/doxygen_config.dox --- libopencsd-1.2.0/decoder/docs/doxygen_config.dox 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/docs/doxygen_config.dox 2022-05-05 11:17:09.000000000 +0000 @@ -38,7 +38,7 @@ # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.2.0 +PROJECT_NUMBER = 1.3.1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff -Nru libopencsd-1.2.0/decoder/include/common/trc_pkt_decode_base.h libopencsd-1.3.1/decoder/include/common/trc_pkt_decode_base.h --- libopencsd-1.2.0/decoder/include/common/trc_pkt_decode_base.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/common/trc_pkt_decode_base.h 2022-05-05 11:17:09.000000000 +0000 @@ -96,6 +96,7 @@ /* target access */ ocsd_err_t accessMemory(const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, uint32_t *num_bytes, uint8_t *p_buffer); + ocsd_err_t invalidateMemAccCache(); /* instruction decode */ ocsd_err_t instrDecode(ocsd_instr_info *instr_info); @@ -180,6 +181,14 @@ return OCSD_ERR_DCD_INTERFACE_UNUSED; } +inline ocsd_err_t TrcPktDecodeI::invalidateMemAccCache() +{ + if (!m_uses_memaccess) + return OCSD_ERR_DCD_INTERFACE_UNUSED; + m_mem_access.first()->InvalidateMemAccCache(getCoreSightTraceID()); + return OCSD_OK; +} + /**********************************************************************/ template class TrcPktDecodeBase : public TrcPktDecodeI, public IPktDataIn

diff -Nru libopencsd-1.2.0/decoder/include/interfaces/trc_pkt_raw_in_i.h libopencsd-1.3.1/decoder/include/interfaces/trc_pkt_raw_in_i.h --- libopencsd-1.2.0/decoder/include/interfaces/trc_pkt_raw_in_i.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/interfaces/trc_pkt_raw_in_i.h 2022-05-05 11:17:09.000000000 +0000 @@ -47,7 +47,7 @@ * * This interface provides a monitor point for the packet processor block. * The templated interface is called with a complete packet of the given - * type, plus the raw packet bytes. Use for tools which need to display compplete + * type, plus the raw packet bytes. Use for tools which need to display complete * packets or require additional processing on raw packet data. * * This interface is not part of the data decode path and cannot provide feedback. diff -Nru libopencsd-1.2.0/decoder/include/interfaces/trc_tgt_mem_access_i.h libopencsd-1.3.1/decoder/include/interfaces/trc_tgt_mem_access_i.h --- libopencsd-1.2.0/decoder/include/interfaces/trc_tgt_mem_access_i.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/interfaces/trc_tgt_mem_access_i.h 2022-05-05 11:17:09.000000000 +0000 @@ -83,6 +83,14 @@ const ocsd_mem_space_acc_t mem_space, uint32_t *num_bytes, uint8_t *p_buffer) = 0; + + /*! + * Invalidate any caching that the memory accessor functions are using. + * Generally called when a memory context changes in the trace. + * + * @param cs_trace_id : protocol source trace ID. + */ + virtual void InvalidateMemAccCache(const uint8_t cs_trace_id) = 0; }; diff -Nru libopencsd-1.2.0/decoder/include/mem_acc/trc_mem_acc_mapper.h libopencsd-1.3.1/decoder/include/mem_acc/trc_mem_acc_mapper.h --- libopencsd-1.2.0/decoder/include/mem_acc/trc_mem_acc_mapper.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/mem_acc/trc_mem_acc_mapper.h 2022-05-05 11:17:09.000000000 +0000 @@ -61,6 +61,8 @@ uint32_t *num_bytes, uint8_t *p_buffer); + virtual void InvalidateMemAccCache(const uint8_t cs_trace_id); + // mapper memory area configuration interface // add an accessor to this map diff -Nru libopencsd-1.2.0/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h libopencsd-1.3.1/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h --- libopencsd-1.2.0/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h 2022-05-05 11:17:09.000000000 +0000 @@ -145,7 +145,7 @@ void setCondRF3(const uint16_t tokens); void setCondRF4(const uint8_t token); - void setContextInfo(const bool update, const uint8_t EL = 0, const uint8_t NS = 0, const uint8_t SF = 0); + void setContextInfo(const bool update, const uint8_t EL = 0, const uint8_t NS = 0, const uint8_t SF = 0, const uint8_t NSE = 0); void setContextVMID(const uint32_t VMID); void setContextCID(const uint32_t CID); @@ -416,7 +416,7 @@ cond_result.f2f4_token = token; } -inline void EtmV4ITrcPacket::setContextInfo(const bool update, const uint8_t EL, const uint8_t NS, const uint8_t SF) +inline void EtmV4ITrcPacket::setContextInfo(const bool update, const uint8_t EL, const uint8_t NS, const uint8_t SF, const uint8_t NSE) { pkt_valid.bits.context_valid = 1; if(update) @@ -425,6 +425,7 @@ context.EL = EL; context.NS = NS; context.SF = SF; + context.NSE = NSE; } } diff -Nru libopencsd-1.2.0/decoder/include/opencsd/etmv4/trc_pkt_types_etmv4.h libopencsd-1.3.1/decoder/include/opencsd/etmv4/trc_pkt_types_etmv4.h --- libopencsd-1.2.0/decoder/include/opencsd/etmv4/trc_pkt_types_etmv4.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/opencsd/etmv4/trc_pkt_types_etmv4.h 2022-05-05 11:17:09.000000000 +0000 @@ -184,6 +184,7 @@ uint32_t updated:1; //!< updated this context packet (otherwise same as last time) uint32_t updated_c:1; //!< updated CtxtID uint32_t updated_v:1; //!< updated VMID + uint32_t NSE:1; //!< PE FEAT_RME: root / realm indicator }; uint32_t ctxtID; //!< Current ctxtID uint32_t VMID; //!< current VMID diff -Nru libopencsd-1.2.0/decoder/include/opencsd/ocsd_if_types.h libopencsd-1.3.1/decoder/include/opencsd/ocsd_if_types.h --- libopencsd-1.2.0/decoder/include/opencsd/ocsd_if_types.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/opencsd/ocsd_if_types.h 2022-05-05 11:17:09.000000000 +0000 @@ -338,8 +338,10 @@ */ typedef enum _ocsd_sec_level { - ocsd_sec_secure, /**< Core is in secure state */ - ocsd_sec_nonsecure /**< Core is in non-secure state */ + ocsd_sec_secure, /**< Core is in secure state */ + ocsd_sec_nonsecure, /**< Core is in non-secure state */ + ocsd_sec_root, /**< PE FEAT_RME: Core is in root state. */ + ocsd_sec_realm, /**< PE FEAT_RME: Core is in realm state. */ } ocsd_sec_level ; /** Exception level type diff -Nru libopencsd-1.2.0/decoder/include/opencsd/ocsd_if_version.h libopencsd-1.3.1/decoder/include/opencsd/ocsd_if_version.h --- libopencsd-1.2.0/decoder/include/opencsd/ocsd_if_version.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/include/opencsd/ocsd_if_version.h 2022-05-05 11:17:09.000000000 +0000 @@ -43,8 +43,8 @@ /** @name Library Versioning @{*/ #define OCSD_VER_MAJOR 0x1 /**< Library Major Version */ -#define OCSD_VER_MINOR 0x2 /**< Library Minor Version */ -#define OCSD_VER_PATCH 0x0 /**< Library Patch Version */ +#define OCSD_VER_MINOR 0x3 /**< Library Minor Version */ +#define OCSD_VER_PATCH 0x1 /**< Library Patch Version */ /** Library version number - MMMMnnpp format. MMMM = major version, @@ -53,7 +53,7 @@ */ #define OCSD_VER_NUM ((OCSD_VER_MAJOR << 16) | (OCSD_VER_MINOR << 8) | OCSD_VER_PATCH) -#define OCSD_VER_STRING "1.2.0" /**< Library Version string */ +#define OCSD_VER_STRING "1.3.1" /**< Library Version string */ #define OCSD_LIB_NAME "OpenCSD Library" /**< Library name string */ #define OCSD_LIB_SHORT_NAME "OCSD" /**< Library Short name string */ /** @}*/ diff -Nru libopencsd-1.2.0/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp libopencsd-1.3.1/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp --- libopencsd-1.2.0/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp 2022-05-05 11:17:09.000000000 +0000 @@ -664,14 +664,18 @@ if (m_elem_res.P0_commit) err = commitElements(); - if (!err && m_elem_res.P0_cancel) - err = cancelElements(); + // allow for early flush on context element + if (!m_elem_res.P0_commit) { - if (!err && m_elem_res.mispredict) - err = mispredictAtom(); - - if (!err && m_elem_res.discard) - err = discardElements(); + if (!err && m_elem_res.P0_cancel) + err = cancelElements(); + + if (!err && m_elem_res.mispredict) + err = mispredictAtom(); + + if (!err && m_elem_res.discard) + err = discardElements(); + } if (err != OCSD_OK) resp = OCSD_RESP_FATAL_INVALID_DATA; @@ -706,10 +710,11 @@ int num_commit_req = m_elem_res.P0_commit; ocsd_trc_index_t err_idx = 0; TrcStackElem *pElem = 0; // stacked element pointer + bool contextFlush = false; err = m_out_elem.resetElemStack(); - while(m_elem_res.P0_commit && !err) + while(m_elem_res.P0_commit && !err && !contextFlush) { if (m_P0_stack.size() > 0) { @@ -751,8 +756,17 @@ if(ctxt.updated) { err = m_out_elem.addElem(pElem->getRootIndex()); - if (!err) + if (!err) { updateContext(pCtxtElem, outElem()); + + // updated context - need to force this to be output to the client so correct memory + // context can be used. + contextFlush = true; + + // invalidate memory accessor cacheing - force next memory access out to client to + // ensure that the correct memory context is in play when decoding subsequent atoms. + invalidateMemAccCache(); + } } } } @@ -1858,7 +1872,10 @@ m_is_64bit = (ctxt.SF != 0); elem.context.bits64 = ctxt.SF; m_is_secure = (ctxt.NS == 0); - elem.context.security_level = ctxt.NS ? ocsd_sec_nonsecure : ocsd_sec_secure; + if (ctxt.NSE) + elem.context.security_level = ctxt.NS ? ocsd_sec_realm : ocsd_sec_root; + else + elem.context.security_level = ctxt.NS ? ocsd_sec_nonsecure : ocsd_sec_secure; elem.context.exception_level = (ocsd_ex_level)ctxt.EL; elem.context.el_valid = 1; if(ctxt.updated_c) diff -Nru libopencsd-1.2.0/decoder/source/etmv4/trc_pkt_proc_etmv4i.cpp libopencsd-1.3.1/decoder/source/etmv4/trc_pkt_proc_etmv4i.cpp --- libopencsd-1.2.0/decoder/source/etmv4/trc_pkt_proc_etmv4i.cpp 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/source/etmv4/trc_pkt_proc_etmv4i.cpp 2022-05-05 11:17:09.000000000 +0000 @@ -872,7 +872,7 @@ // on input, buffer index points at the info byte - always present uint8_t infoByte = m_currPacketData[st_idx]; - m_curr_packet.setContextInfo(true, (infoByte & 0x3), (infoByte >> 5) & 0x1, (infoByte >> 4) & 0x1); + m_curr_packet.setContextInfo(true, (infoByte & 0x3), (infoByte >> 5) & 0x1, (infoByte >> 4) & 0x1, (infoByte >> 3) & 0x1); // see if there are VMID and CID bytes, and how many. int nVMID_bytes = ((infoByte & 0x40) == 0x40) ? (m_config.vmidSize()/8) : 0; diff -Nru libopencsd-1.2.0/decoder/source/i_dec/trc_idec_arminst.cpp libopencsd-1.3.1/decoder/source/i_dec/trc_idec_arminst.cpp --- libopencsd-1.2.0/decoder/source/i_dec/trc_idec_arminst.cpp 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/source/i_dec/trc_idec_arminst.cpp 2022-05-05 11:17:09.000000000 +0000 @@ -244,8 +244,9 @@ int is_direct_branch = 1; if ((inst & 0x7c000000) == 0x34000000) { /* CB, TB */ - } else if ((inst & 0xff000010) == 0x54000000) { + } else if ((inst & 0xff000000) == 0x54000000) { /* B */ + /* BC 8.8 / 9.3 arch - bit 4 = 1'b1 */ } else if ((inst & 0x7c000000) == 0x14000000) { /* B, BL imm */ if (inst & 0x80000000) { @@ -414,8 +415,9 @@ { uint64_t npc; int is_direct_branch = 1; - if ((inst & 0xff000010) == 0x54000000) { + if ((inst & 0xff000000) == 0x54000000) { /* B */ + /* BC */ npc = addr + ((int32_t)((inst & 0x00ffffe0) << 8) >> 11); } else if ((inst & 0x7c000000) == 0x14000000) { /* B, BL imm */ @@ -568,8 +570,9 @@ if ((inst & 0x7c000000) == 0x34000000) { /* CB, TB */ return 1; - } else if ((inst & 0xff000010) == 0x54000000) { + } else if ((inst & 0xff000000) == 0x54000000) { /* B.cond */ + /* BC.cond */ return 1; } return 0; diff -Nru libopencsd-1.2.0/decoder/source/mem_acc/trc_mem_acc_mapper.cpp libopencsd-1.3.1/decoder/source/mem_acc/trc_mem_acc_mapper.cpp --- libopencsd-1.2.0/decoder/source/mem_acc/trc_mem_acc_mapper.cpp 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/source/mem_acc/trc_mem_acc_mapper.cpp 2022-05-05 11:17:09.000000000 +0000 @@ -119,6 +119,14 @@ return err; } +void TrcMemAccMapper::InvalidateMemAccCache(const uint8_t /* cs_trace_id */) +{ + // default mapper does not use cs_trace_id for cache invalidation. + if (m_cache.enabled()) + m_cache.invalidateAll(); + m_acc_curr = 0; +} + void TrcMemAccMapper::RemoveAllAccessors() { TrcMemAccessorBase *pAcc = 0; diff -Nru libopencsd-1.2.0/decoder/source/trc_gen_elem.cpp libopencsd-1.3.1/decoder/source/trc_gen_elem.cpp --- libopencsd-1.2.0/decoder/source/trc_gen_elem.cpp 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/source/trc_gen_elem.cpp 2022-05-05 11:17:09.000000000 +0000 @@ -171,7 +171,14 @@ { oss << "EL" << std::dec << (int)(context.exception_level); } - oss << (context.security_level == ocsd_sec_secure ? "S; " : "N; ") << (context.bits64 ? "64-bit; " : "32-bit; "); + switch (context.security_level) + { + case ocsd_sec_secure: oss << "S; "; break; + case ocsd_sec_nonsecure: oss << "N; "; break; + case ocsd_sec_root: oss << "Root; "; break; + case ocsd_sec_realm: oss << "Realm; "; break; + } + oss << (context.bits64 ? "64-bit; " : "32-bit; "); if(context.vmid_valid) oss << "VMID=0x" << std::hex << context.vmid << "; "; if(context.ctxt_id_valid) diff -Nru libopencsd-1.2.0/decoder/tests/run_pkt_decode_tests-ete.bash libopencsd-1.3.1/decoder/tests/run_pkt_decode_tests-ete.bash --- libopencsd-1.2.0/decoder/tests/run_pkt_decode_tests-ete.bash 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/run_pkt_decode_tests-ete.bash 2022-05-05 11:17:09.000000000 +0000 @@ -53,6 +53,7 @@ # directories for tests using full decode declare -a test_dirs_decode=( "001-ack_test" "002-ack_test_scr" + "ete-bc-instr" "ete_ip" "ete_mem" "ete_spec_1" diff -Nru libopencsd-1.2.0/decoder/tests/snapshot_parser_lib/include/snapshot_parser_util.h libopencsd-1.3.1/decoder/tests/snapshot_parser_lib/include/snapshot_parser_util.h --- libopencsd-1.2.0/decoder/tests/snapshot_parser_lib/include/snapshot_parser_util.h 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshot_parser_lib/include/snapshot_parser_util.h 2022-05-05 11:17:09.000000000 +0000 @@ -35,6 +35,7 @@ #ifndef ARM_SNAPSHOT_PARSER_UTIL_H_INCLUDED #define ARM_SNAPSHOT_PARSER_UTIL_H_INCLUDED +#include #include #include #include Binary files /tmp/tmp4zx5vqf3/Ja9in67jXf/libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/leafBlock_EL3_0_l1_0_l2_0_l3_256_0_exec and /tmp/tmp4zx5vqf3/300KNb1i2O/libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/leafBlock_EL3_0_l1_0_l2_0_l3_256_0_exec differ Binary files /tmp/tmp4zx5vqf3/Ja9in67jXf/libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/OTHERS_exec and /tmp/tmp4zx5vqf3/300KNb1i2O/libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/OTHERS_exec differ Binary files /tmp/tmp4zx5vqf3/Ja9in67jXf/libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/TEST_NON_DET_CODE_exec and /tmp/tmp4zx5vqf3/300KNb1i2O/libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/TEST_NON_DET_CODE_exec differ Binary files /tmp/tmp4zx5vqf3/Ja9in67jXf/libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/VAL_NON_DET_CODE_exec and /tmp/tmp4zx5vqf3/300KNb1i2O/libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/bindir_64/VAL_NON_DET_CODE_exec differ diff -Nru libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/checker_metadata.ini libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/checker_metadata.ini --- libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/checker_metadata.ini 1970-01-01 00:00:00.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/checker_metadata.ini 2022-05-05 11:17:09.000000000 +0000 @@ -0,0 +1,7 @@ +[trace_source] +sessions = session1 + +[session1] +partnum = 1 +checktype = TRC_CFC_CHECK + diff -Nru libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/cpu_0.ini libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/cpu_0.ini --- libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/cpu_0.ini 1970-01-01 00:00:00.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/cpu_0.ini 2022-05-05 11:17:09.000000000 +0000 @@ -0,0 +1,32 @@ +[device] +name=cpu_0 +class=core +type=ARM-AA64 + +[regs] +PC(size:64)=0x0 +SP(size:64)=0 +SCTLR_EL1=0x0 +CPSR=0x0 + + +[dump1] +file=bindir_64/OTHERS_exec +address=0x00060000 +length=0x70f80 + +[dump2] +file=bindir_64/leafBlock_EL3_0_l1_0_l2_0_l3_256_0_exec +address=0x01000000 +length=0x1e988 + +[dump3] +file=bindir_64/VAL_NON_DET_CODE_exec +address=0x00010000 +length=0x1f318 + +[dump4] +file=bindir_64/TEST_NON_DET_CODE_exec +address=0x00050000 +length=0x48 + diff -Nru libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/ETE_0_s1.ini libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/ETE_0_s1.ini --- libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/ETE_0_s1.ini 1970-01-01 00:00:00.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/ETE_0_s1.ini 2022-05-05 11:17:09.000000000 +0000 @@ -0,0 +1,15 @@ +[device] +name=ETE_0_s1 +class=trace_source +type=ETE + + +[regs] +TRCCONFIGR=0x8001 +TRCTRACEIDR=0x1 +TRCDEVARCH=0x47715a13 +TRCIDR0=0x2881cea1 +TRCIDR1=0x4100fff0 +TRCIDR2=0xd0001088 +TRCIDR8=0x0 + Binary files /tmp/tmp4zx5vqf3/Ja9in67jXf/libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/session1.bin and /tmp/tmp4zx5vqf3/300KNb1i2O/libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/session1.bin differ diff -Nru libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/snapshot.ini libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/snapshot.ini --- libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/snapshot.ini 1970-01-01 00:00:00.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/snapshot.ini 2022-05-05 11:17:09.000000000 +0000 @@ -0,0 +1,11 @@ +[snapshot] +version=1.0 +description=checker_metadata.ini + +[device_list] +device0=cpu_0.ini +device1=ETE_0_s1.ini + +[trace] +metadata=trace.ini + diff -Nru libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/trace.ini libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/trace.ini --- libopencsd-1.2.0/decoder/tests/snapshots-ete/ete-bc-instr/trace.ini 1970-01-01 00:00:00.000000000 +0000 +++ libopencsd-1.3.1/decoder/tests/snapshots-ete/ete-bc-instr/trace.ini 2022-05-05 11:17:09.000000000 +0000 @@ -0,0 +1,15 @@ +[trace_buffers] +buffers=buffer1 + +[buffer1] +name=ETB_1 +file=session1.bin +format=source_data + + +[source_buffers] +ETE_0_s1=ETB_1 + +[core_trace_sources] +cpu_0=ETE_0_s1 + diff -Nru libopencsd-1.2.0/README.md libopencsd-1.3.1/README.md --- libopencsd-1.2.0/README.md 2021-10-11 15:00:29.000000000 +0000 +++ libopencsd-1.3.1/README.md 2022-05-05 11:17:09.000000000 +0000 @@ -27,11 +27,11 @@ CoreSight Trace Component Support. ---------------------------------- -_Current Version 1.2.0_ +_Current Version 1.3.1_ ### Current support: -- ETE (v1.1) instruction trace - packet processing and packet decode. +- ETE (v1.2) instruction trace - packet processing and packet decode. - ETMv4 (v4.6 [A/R profile] v4.4 [M profile]) instruction trace - packet processing and packet decode. - PTM (v1.1) instruction trace - packet processing and packet decode. - ETMv3 (v3.5) instruction trace - packet processing and packet decode. @@ -258,6 +258,22 @@ - __Bugfix__: Remove noisy printf (James Clark) - __Bugfix__: Fix documentation issues (github issues #39 & #40 from rbresalier) +- _Version 1.2.1_: + - __Bugfix__: ETM4x / ETE - output of context elements to client can in some circumstances + be delayed until after subsequent atoms have been processed leading to incorrect + memory decode access via the client callbacks. + Fixed to flush context elements immediately they are committed. + +- _Version 1.3.0_: + - __Admin__: Dev versions now have patch versions at least +100 from root public version + - __Update__: Add support for conditional branch (BC.cond) introduced for v8.8 / v9.3 architecture. + - __Update__: ETE: Add support for NSE bit - security state bit defining Root / Realm states in FEAT_RME. + +- _Version 1.3.1_: + - __Bugfix__: Add header file in snapshot parser - fix build for certain libc++ libs (github issue #43 from manojgupta) + - __Bugfix__: Fix typo in comment (github issue #42 from nothatDinger) + + Licence Information ===================