aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-05-16 01:07:19 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-05-16 01:07:19 +0000
commit324fa350a635b9bc082cbcdb77c89748904877d2 (patch)
tree034388be85f6c599ed680b0ad415d3f4a8e76ff4
parent622e07a8df96da49d0ade4f787819713f2f1af7f (diff)
parentaaaa30af2c97a6c8ae12c713c778f3ea738cc8dd (diff)
downloadOpenCSD-sdk-release.tar.gz
Snap for 11847757 from aaaa30af2c97a6c8ae12c713c778f3ea738cc8dd to sdk-releasesdk-release
Change-Id: Iaacca73d3c491f0629e5ff3af2d89926d5353ac9
-rw-r--r--HOWTO.md4
-rw-r--r--METADATA23
-rw-r--r--README.md33
-rw-r--r--decoder/build/linux/makefile8
-rw-r--r--decoder/build/linux/makefile.dev2
-rw-r--r--decoder/build/win-vs2015/opencsd.props20
-rw-r--r--decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj327
-rw-r--r--decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters48
-rw-r--r--decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln156
-rw-r--r--decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj460
-rw-r--r--decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters515
-rw-r--r--decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.sln42
-rw-r--r--decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj2
-rw-r--r--decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters6
-rw-r--r--decoder/docs/build_libs.md47
-rw-r--r--decoder/docs/doxygen_config.dox2
-rw-r--r--decoder/docs/man/trc_pkt_lister.1155
-rw-r--r--decoder/docs/prog_guide/prog_guide_generic_pkts.md28
-rw-r--r--decoder/docs/prog_guide/prog_guide_main.md43
-rw-r--r--decoder/docs/test_progs.md176
-rw-r--r--decoder/include/common/ocsd_code_follower.h6
-rw-r--r--decoder/include/i_dec/trc_i_decode.h20
-rw-r--r--decoder/include/mem_acc/trc_mem_acc_base.h6
-rw-r--r--decoder/include/mem_acc/trc_mem_acc_bufptr.h17
-rw-r--r--decoder/include/mem_acc/trc_mem_acc_cache.h138
-rw-r--r--decoder/include/mem_acc/trc_mem_acc_cb.h4
-rw-r--r--decoder/include/mem_acc/trc_mem_acc_mapper.h8
-rw-r--r--decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h8
-rw-r--r--decoder/include/opencsd/ocsd_if_types.h120
-rw-r--r--decoder/include/opencsd/ocsd_if_version.h6
-rw-r--r--decoder/include/opencsd/trc_gen_elem_types.h3
-rw-r--r--decoder/source/etmv3/trc_pkt_decode_etmv3.cpp1
-rw-r--r--decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp72
-rw-r--r--decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp6
-rw-r--r--decoder/source/i_dec/trc_i_decode.cpp20
-rw-r--r--decoder/source/i_dec/trc_idec_arminst.cpp8
-rw-r--r--decoder/source/mem_acc/trc_mem_acc_base.cpp42
-rw-r--r--decoder/source/mem_acc/trc_mem_acc_bufptr.cpp17
-rw-r--r--decoder/source/mem_acc/trc_mem_acc_cache.cpp270
-rw-r--r--decoder/source/mem_acc/trc_mem_acc_cb.cpp13
-rw-r--r--decoder/source/mem_acc/trc_mem_acc_mapper.cpp60
-rw-r--r--decoder/source/ocsd_dcd_tree.cpp11
-rw-r--r--decoder/source/ocsd_error.cpp4
-rw-r--r--decoder/source/ptm/trc_pkt_decode_ptm.cpp2
-rw-r--r--decoder/source/stm/trc_pkt_decode_stm.cpp10
-rw-r--r--decoder/source/stm/trc_pkt_proc_stm.cpp6
-rw-r--r--decoder/source/trc_gen_elem.cpp7
-rw-r--r--decoder/source/trc_printable_elem.cpp8
-rw-r--r--decoder/tests/build/linux/mem_acc_test/makefile88
-rw-r--r--decoder/tests/build/linux/perr/makefile88
-rw-r--r--decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj333
-rw-r--r--decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj.filters33
-rw-r--r--decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj314
-rw-r--r--decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj.filters72
-rw-r--r--decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj316
-rw-r--r--decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj.filters27
-rw-r--r--decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj (renamed from decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj)93
-rw-r--r--decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj.filters (renamed from decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj.filters)6
-rw-r--r--decoder/tests/build/win-vs2022/perr/perr.vcxproj (renamed from decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj)131
-rw-r--r--decoder/tests/build/win-vs2022/perr/perr.vcxproj.filters (renamed from decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj.filters)6
-rwxr-xr-xdecoder/tests/perf-test-scripts/perf-test-script.bash2
-rwxr-xr-xdecoder/tests/run_pkt_decode_single_ete.bash77
-rwxr-xr-xdecoder/tests/run_pkt_decode_tests-ete.bash23
-rwxr-xr-xdecoder/tests/run_pkt_decode_tests.bash20
-rw-r--r--decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h2
-rw-r--r--decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp69
-rw-r--r--decoder/tests/snapshots-ete/ete-ite-instr/trace.ini11
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/ETE_0_s1.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/ETE_0_s2.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/ETE_0_s3.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/bindir_64/OTHERS_execbin0 -> 143728 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/bindir_64/TEST_NON_DET_CODE_execbin0 -> 564 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_NON_DET_CODE_execbin0 -> 177084 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_TEST_CODE_execbin0 -> 232992 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/cpu_0.ini32
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/session1.binbin0 -> 203 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/session2.binbin0 -> 221 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/session3.binbin0 -> 198 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/snapshot.ini13
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr/trace.ini29
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s1.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s2.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s3.ini15
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/OTHERS_execbin0 -> 143728 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/TEST_NON_DET_CODE_execbin0 -> 564 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_NON_DET_CODE_execbin0 -> 152828 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_TEST_CODE_execbin0 -> 232864 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/cpu_0.ini32
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/session1.binbin0 -> 188 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/session2.binbin0 -> 204 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/session3.binbin0 -> 183 bytes
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/snapshot.ini13
-rwxr-xr-xdecoder/tests/snapshots-ete/pauth_lr_Rm/trace.ini29
-rw-r--r--decoder/tests/snapshots-ete/q_elem/trace.ini13
-rw-r--r--decoder/tests/snapshots-ete/rme_test/ETE_0_s1.ini15
-rw-r--r--decoder/tests/snapshots-ete/rme_test/ETE_0_s2.ini15
-rw-r--r--decoder/tests/snapshots-ete/rme_test/ETE_0_s3.ini15
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64ns/OTHERS_execbin0 -> 136072 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64ns/TEST_NON_DET_CODE_execbin0 -> 620 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_NON_DET_CODE_execbin0 -> 150552 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_TEST_CODE_execbin0 -> 250304 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rl/OTHERS_execbin0 -> 136072 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rl/TEST_NON_DET_CODE_execbin0 -> 620 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_NON_DET_CODE_execbin0 -> 150552 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_TEST_CODE_execbin0 -> 250304 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rt/OTHERS_execbin0 -> 136072 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rt/TEST_NON_DET_CODE_execbin0 -> 620 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_NON_DET_CODE_execbin0 -> 150552 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_TEST_CODE_execbin0 -> 250304 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/cpu_0.ini32
-rw-r--r--decoder/tests/snapshots-ete/rme_test/session1.binbin0 -> 422 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/session2.binbin0 -> 193 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/session3.binbin0 -> 422 bytes
-rw-r--r--decoder/tests/snapshots-ete/rme_test/snapshot.ini13
-rw-r--r--decoder/tests/snapshots-ete/rme_test/trace.ini29
-rw-r--r--decoder/tests/snapshots-ete/s_9001/ETE_0_s1.ini15
-rw-r--r--decoder/tests/snapshots-ete/s_9001/ETE_0_s2.ini15
-rw-r--r--decoder/tests/snapshots-ete/s_9001/bindir_64/OTHERS_execbin0 -> 143232 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/bindir_64/TEST_NON_DET_CODE_execbin0 -> 564 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_NON_DET_CODE_execbin0 -> 177340 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_TEST_CODE_execbin0 -> 245376 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/cpu_0.ini32
-rw-r--r--decoder/tests/snapshots-ete/s_9001/session1.binbin0 -> 30 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/session2.binbin0 -> 260 bytes
-rw-r--r--decoder/tests/snapshots-ete/s_9001/snapshot.ini12
-rw-r--r--decoder/tests/snapshots-ete/s_9001/trace.ini22
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s1.ini15
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s2.ini15
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/OTHERS_execbin0 -> 143232 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/TEST_NON_DET_CODE_execbin0 -> 564 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_NON_DET_CODE_execbin0 -> 177596 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_TEST_CODE_execbin0 -> 244608 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/cpu_0.ini32
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/session1.binbin0 -> 30 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/session2.binbin0 -> 262 bytes
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/snapshot.ini12
-rw-r--r--decoder/tests/snapshots-ete/ss_ib_el1ns/trace.ini22
-rw-r--r--decoder/tests/source/mem_acc_test.cpp771
-rw-r--r--decoder/tests/source/perr.cpp64
-rw-r--r--decoder/tests/source/trc_pkt_lister.cpp318
140 files changed, 3264 insertions, 3152 deletions
diff --git a/HOWTO.md b/HOWTO.md
index c1196ce..3d92e3b 100644
--- a/HOWTO.md
+++ b/HOWTO.md
@@ -538,7 +538,7 @@ interesting results.
linaro@t430:~/linaro/coresight/sept20$ export EXEC_PATH=/home/linaro/coresight/perf-opencsd-master/tools/perf/
linaro@t430:~/linaro/coresight/sept20$ export SCRIPT_PATH=$EXEC_PATH/scripts/python/
linaro@t430:~/linaro/coresight/sept20$ export XTOOL_PATH=/your/aarch64/toolchain/path/bin/
- linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf --exec-path=${EXEC_PATH} script --script=python:${SCRIPT_PATH}/cs-trace-disasm.py -- -d ${XTOOL_PATH}/aarch64-linux-gnu-objdump
+ linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf --exec-path=${EXEC_PATH} script --script=python:${SCRIPT_PATH}/arm-cs-trace-disasm.py -- -d ${XTOOL_PATH}/aarch64-linux-gnu-objdump
7f89f24d80: 910003e0 mov x0, sp
7f89f24d84: 94000d53 bl 7f89f282d0 <free@plt+0x3790>
@@ -583,7 +583,7 @@ an above but for traces but for kernel traces, the command line becomes:
linaro@t430:~/linaro/coresight/sept20$ export XTOOL_PATH=/your/aarch64/toolchain/path/bin/
linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf --exec-path=${EXEC_PATH} script \
--vmlinux=./vmlinux \
- --script=python:${SCRIPT_PATH}/cs-trace-disasm.py -- \
+ --script=python:${SCRIPT_PATH}/arm-cs-trace-disasm.py -- \
-d ${XTOOLS_PATH}/aarch64-linux-gnu-objdump \
-k ./vmlinux
...
diff --git a/METADATA b/METADATA
index 937792e..9cc5b67 100644
--- a/METADATA
+++ b/METADATA
@@ -1,23 +1,20 @@
# This project was upgraded with external_updater.
-# Usage: tools/external_updater/updater.sh update OpenCSD
+# Usage: tools/external_updater/updater.sh update external/OpenCSD
# For more info, check https://cs.android.com/android/platform/superproject/+/main:tools/external_updater/README.md
name: "OpenCSD"
description: "This library provides an API suitable for the decode of ARM(r) CoreSight(tm) trace streams."
third_party {
- url {
- type: HOMEPAGE
- value: "https://github.com/Linaro/OpenCSD"
- }
- url {
- type: GIT
- value: "https://github.com/Linaro/OpenCSD.git"
- }
- version: "v1.4.1"
license_type: RESTRICTED
last_upgrade_date {
- year: 2023
- month: 8
- day: 17
+ year: 2024
+ month: 5
+ day: 15
+ }
+ homepage: "https://github.com/Linaro/OpenCSD"
+ identifier {
+ type: "Git"
+ value: "https://github.com/Linaro/OpenCSD.git"
+ version: "v1.5.2"
}
}
diff --git a/README.md b/README.md
index ec880be..352e865 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Releases will appear on the master branch in the git repository with an appropri
CoreSight Trace Component Support.
----------------------------------
-_Current Version 1.4.1_
+_Current Version 1.5.2_
### Current support:
@@ -291,11 +291,40 @@ Version and Modification Information
Adds in new generic output packet type: OCSD_GEN_TRC_ELEM_INSTRUMENTATION.
- __Bugfix__: Fix memory leak in mispredict handling (github issue #52 from yabinc)
-_Version 1.4.1_:
+- _Version 1.4.1_:
- __Update__: Test: Update test program trc_pkt_lister with option to have no logging output - final stats only.
- __Bugfix__: ETM4x: ETE: Fix memory leak / use after free (github issues #53, #58 from yabinc)
- __Bugfix__: C-API: Fix memory leak with output sink object. (github issue #55)
+- _Version 1.4.2_:
+ - __Update__: Decoder memory access - add debug features and cacheing to improve performance of decode.
+ Caching controllable by API or environment variables.
+ - __Update__: Decode debug options to control potential runaway debug when incorrect memory images input
+ to decoder.
+
+ - aarch64 instruction check for invalid instruction opcode. (any opcode with 0x0000 as top
+ 16 bits).
+
+ - optional instruction range maximum run limit. Set by environment variable.
+
+ - __Update__: Remove VS2015 support.
+ - __Bugfix__: Memory spaces: ensure that decoder memory requests are correctly labelled with Realm and
+ root characteristics when appropriate.
+ - __Bugfix__: M class tail chained interrupts now correctly handled.
+ - __Bugfix__: STM: - fix master and channel ID initialisation (github issue #61 from MommeSherif)
+ - __Bugfix__: Test: update HOWTO.md and perf-test-script.base for new paths (github issue #60 from yuxy-c)
+ - __Bugfix__: build: Fix GCC version dir handling for versions of GCC > 9.
+
+
+- _Version 1.5.1_:
+ - __Update__: ETE: Add support for Arch 9.5 FEAT_PAUTH_LR. Add new instructions to disassembler to
+ recognise RETA<k>SPPC variants as indirect branches. Adds new test snapshots.
+
+- _Version 1.5.2_:
+ - __Update__: docs: Update documentation for test programs.
+ - __Update__: docs: Update trc_pkt_lister man file.
+ - __Bugfix__: build: fix warnings building library.
+ - __Bugfix__: tests: Fix typo in trc_pkt_lister help output.
Licence Information
===================
diff --git a/decoder/build/linux/makefile b/decoder/build/linux/makefile
index 5515737..c62a189 100644
--- a/decoder/build/linux/makefile
+++ b/decoder/build/linux/makefile
@@ -174,6 +174,8 @@ tests: libs
cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE)
cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE)
cd $(OCSD_ROOT)/tests/build/linux/frame_demux_test && $(MAKE)
+ cd $(OCSD_ROOT)/tests/build/linux/perr && $(MAKE)
+ cd $(OCSD_ROOT)/tests/build/linux/mem_acc_test && $(MAKE)
#
# build docs
@@ -200,14 +202,18 @@ clean_tests:
cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE) clean
cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE) clean
cd $(OCSD_ROOT)/tests/build/linux/frame_demux_test && $(MAKE) clean
+ cd $(OCSD_ROOT)/tests/build/linux/perr && $(MAKE) clean
+ cd $(OCSD_ROOT)/tests/build/linux/mem_acc_test && $(MAKE) clean
-rmdir $(OCSD_TESTS)/lib
clean_docs:
-rm -r $(OCSD_ROOT)/docs/html
-clean_install:
+clean_install: clean_man
-rm $(INSTALL_LIB_DIR)/lib$(LIB_BASE_NAME).*
-rm $(INSTALL_LIB_DIR)/lib$(LIB_CAPI_NAME).*
-rm -r $(INSTALL_INCLUDE_DIR)/$(LIB_UAPI_INC_DIR)
-rm $(INSTALL_BIN_DIR)/trc_pkt_lister
+
+clean_man:
-rm $(INSTALL_MAN_DIR)/trc_pkt_lister.1
diff --git a/decoder/build/linux/makefile.dev b/decoder/build/linux/makefile.dev
index aaaa983..4b0b4b0 100644
--- a/decoder/build/linux/makefile.dev
+++ b/decoder/build/linux/makefile.dev
@@ -57,7 +57,7 @@ CFLAGS += $(MFLAG)
LDFLAGS += $(MFLAG)
ifdef GCCDIR
-GCCVER:= $(shell $(CROSS_COMPILE)gcc -dumpversion | cut -c 1-3)
+GCCVER:= $(shell $(CROSS_COMPILE)gcc -dumpversion | sed 's/\([0-9]*\.[0-9]*\).*/\1/')
PLAT_DIR=builddir/linux$(BIT_VARIANT)/GCC_$(GCCVER)
else
PLAT_DIR=linux$(BIT_VARIANT)/$(BUILD_VARIANT)
diff --git a/decoder/build/win-vs2015/opencsd.props b/decoder/build/win-vs2015/opencsd.props
deleted file mode 100644
index 64b1268..0000000
--- a/decoder/build/win-vs2015/opencsd.props
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros">
- <LIB_BASE_NAME>opencsd</LIB_BASE_NAME>
- <LIB_CAPI_NAME>opencsd_c_api</LIB_CAPI_NAME>
- </PropertyGroup>
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup>
- <BuildMacro Include="LIB_BASE_NAME">
- <Value>$(LIB_BASE_NAME)</Value>
- <EnvironmentVariable>true</EnvironmentVariable>
- </BuildMacro>
- <BuildMacro Include="LIB_CAPI_NAME">
- <Value>$(LIB_CAPI_NAME)</Value>
- <EnvironmentVariable>true</EnvironmentVariable>
- </BuildMacro>
- </ItemGroup>
-</Project>
diff --git a/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj b/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj
deleted file mode 100644
index c82ad9b..0000000
--- a/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj
+++ /dev/null
@@ -1,327 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug-dll|Win32">
- <Configuration>Debug-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug-dll|x64">
- <Configuration>Debug-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|Win32">
- <Configuration>Release-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|x64">
- <Configuration>Release-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{533F929A-A73B-46B6-9D5F-FFCD62F734E3}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>rctdl_c_api_lib</RootNamespace>
- <ProjectName>ocsd_c_api_lib</ProjectName>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_CAPI_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- <TargetName>$(LIB_CAPI_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>lib$(LIB_CAPI_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>$(LIB_CAPI_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>lib$(LIB_CAPI_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>$(LIB_CAPI_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_CAPI_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- <TargetName>$(LIB_CAPI_NAME)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;_OCSD_C_API_DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;_OCSD_C_API_DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_custom.h" />
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_cust_fact.h" />
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_cust_impl.h" />
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_types.h" />
- <ClInclude Include="..\..\..\include\opencsd\c_api\opencsd_c_api.h" />
- <ClInclude Include="..\..\..\source\c_api\ocsd_c_api_custom_obj.h" />
- <ClInclude Include="..\..\..\source\c_api\ocsd_c_api_obj.h" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\ref_trace_decode_lib\ref_trace_decode_lib.vcxproj">
- <Project>{7f500891-cc76-405f-933f-f682bc39f923}</Project>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\c_api\ocsd_c_api.cpp" />
- <ClCompile Include="..\..\..\source\c_api\ocsd_c_api_custom_obj.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters b/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters
deleted file mode 100644
index a9b05ad..0000000
--- a/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_types.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\c_api\opencsd_c_api.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\source\c_api\ocsd_c_api_obj.h">
- <Filter>Source Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_custom.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\source\c_api\ocsd_c_api_custom_obj.h">
- <Filter>Source Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_cust_fact.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\c_api\ocsd_c_api_cust_impl.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\c_api\ocsd_c_api.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\c_api\ocsd_c_api_custom_obj.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln b/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln
deleted file mode 100644
index 4f3ddeb..0000000
--- a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln
+++ /dev/null
@@ -1,156 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opencsd_lib", "ref_trace_decode_lib.vcxproj", "{7F500891-CC76-405F-933F-F682BC39F923}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ocsd_c_api_lib", "..\rctdl_c_api_lib\rctdl_c_api_lib.vcxproj", "{533F929A-A73B-46B6-9D5F-FFCD62F734E3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "snapshot_parser_lib", "..\..\..\tests\build\win-vs2015\snapshot_parser_lib\snapshot_parser_lib.vcxproj", "{DE1F395D-4F53-42FB-8AEF-993A4BF7E411}"
- ProjectSection(ProjectDependencies) = postProject
- {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "trc_pkt_lister", "..\..\..\tests\build\win-vs2015\trc_pkt_lister\trc_pkt_lister.vcxproj", "{18ABC652-AB11-4993-9491-1A7FB7117339}"
- ProjectSection(ProjectDependencies) = postProject
- {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "c_api_pkt_print_test", "..\..\..\tests\build\win-vs2015\c_api_pkt_print_test\c_api_pkt_print_test.vcxproj", "{3AC169DA-E156-4D16-95DF-73D7302A5606}"
- ProjectSection(ProjectDependencies) = postProject
- {46219A32-8178-41C1-B3B1-B5A6E547515F} = {46219A32-8178-41C1-B3B1-B5A6E547515F}
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3} = {533F929A-A73B-46B6-9D5F-FFCD62F734E3}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ext_dcd_echo_test", "..\..\..\tests\build\win-vs2015\ext_dcd_echo_test\ext_dcd_echo_test.vcxproj", "{46219A32-8178-41C1-B3B1-B5A6E547515F}"
- ProjectSection(ProjectDependencies) = postProject
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3} = {533F929A-A73B-46B6-9D5F-FFCD62F734E3}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mem-buffer-eg", "..\..\..\tests\build\win-vs2015\mem-buffer-eg\mem-buffer-eg.vcxproj", "{BC090130-2C53-4CF6-8AD4-37BF72B8D01A}"
- ProjectSection(ProjectDependencies) = postProject
- {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Debug-dll|Win32 = Debug-dll|Win32
- Debug-dll|x64 = Debug-dll|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- Release-dll|Win32 = Release-dll|Win32
- Release-dll|x64 = Release-dll|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug|Win32.ActiveCfg = Debug|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug|Win32.Build.0 = Debug|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug|x64.ActiveCfg = Debug|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug|x64.Build.0 = Debug|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|Win32.Build.0 = Debug-dll|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|x64.ActiveCfg = Debug-dll|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Debug-dll|x64.Build.0 = Debug-dll|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Release|Win32.ActiveCfg = Release|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Release|Win32.Build.0 = Release|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Release|x64.ActiveCfg = Release|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Release|x64.Build.0 = Release|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|Win32.ActiveCfg = Release-dll|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|Win32.Build.0 = Release-dll|Win32
- {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|x64.ActiveCfg = Release-dll|x64
- {7F500891-CC76-405F-933F-F682BC39F923}.Release-dll|x64.Build.0 = Release-dll|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|Win32.ActiveCfg = Debug|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|Win32.Build.0 = Debug|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|x64.ActiveCfg = Debug|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug|x64.Build.0 = Debug|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|Win32.Build.0 = Debug-dll|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|x64.ActiveCfg = Debug-dll|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Debug-dll|x64.Build.0 = Debug-dll|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|Win32.ActiveCfg = Release|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|Win32.Build.0 = Release|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|x64.ActiveCfg = Release|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release|x64.Build.0 = Release|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|Win32.ActiveCfg = Release-dll|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|Win32.Build.0 = Release-dll|Win32
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|x64.ActiveCfg = Release-dll|x64
- {533F929A-A73B-46B6-9D5F-FFCD62F734E3}.Release-dll|x64.Build.0 = Release-dll|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|Win32.ActiveCfg = Debug|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|Win32.Build.0 = Debug|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|x64.ActiveCfg = Debug|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug|x64.Build.0 = Debug|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Debug-dll|x64.ActiveCfg = Debug-dll|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|Win32.ActiveCfg = Release|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|Win32.Build.0 = Release|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|x64.ActiveCfg = Release|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release|x64.Build.0 = Release|x64
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release-dll|Win32.ActiveCfg = Release-dll|Win32
- {DE1F395D-4F53-42FB-8AEF-993A4BF7E411}.Release-dll|x64.ActiveCfg = Release-dll|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|Win32.ActiveCfg = Debug|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|Win32.Build.0 = Debug|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|x64.ActiveCfg = Debug|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug|x64.Build.0 = Debug|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Debug-dll|x64.ActiveCfg = Debug-dll|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|Win32.ActiveCfg = Release|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|Win32.Build.0 = Release|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|x64.ActiveCfg = Release|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release|x64.Build.0 = Release|x64
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release-dll|Win32.ActiveCfg = Release-dll|Win32
- {18ABC652-AB11-4993-9491-1A7FB7117339}.Release-dll|x64.ActiveCfg = Release-dll|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|Win32.ActiveCfg = Debug|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|Win32.Build.0 = Debug|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|x64.ActiveCfg = Debug|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug|x64.Build.0 = Debug|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|Win32.ActiveCfg = Debug-dll|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|Win32.Build.0 = Debug-dll|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|x64.ActiveCfg = Debug-dll|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Debug-dll|x64.Build.0 = Debug-dll|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|Win32.ActiveCfg = Release|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|Win32.Build.0 = Release|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|x64.ActiveCfg = Release|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release|x64.Build.0 = Release|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|Win32.ActiveCfg = Release-dll|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|Win32.Build.0 = Release-dll|Win32
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|x64.ActiveCfg = Release-dll|x64
- {3AC169DA-E156-4D16-95DF-73D7302A5606}.Release-dll|x64.Build.0 = Release-dll|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|Win32.ActiveCfg = Debug|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|Win32.Build.0 = Debug|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|x64.ActiveCfg = Debug|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug|x64.Build.0 = Debug|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|Win32.ActiveCfg = Debug|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|Win32.Build.0 = Debug|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|x64.ActiveCfg = Debug|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Debug-dll|x64.Build.0 = Debug|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|Win32.ActiveCfg = Release|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|Win32.Build.0 = Release|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|x64.ActiveCfg = Release|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release|x64.Build.0 = Release|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|Win32.ActiveCfg = Release|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|Win32.Build.0 = Release|Win32
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|x64.ActiveCfg = Release|x64
- {46219A32-8178-41C1-B3B1-B5A6E547515F}.Release-dll|x64.Build.0 = Release|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|Win32.ActiveCfg = Debug|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|Win32.Build.0 = Debug|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|x64.ActiveCfg = Debug|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug|x64.Build.0 = Debug|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|Win32.ActiveCfg = Debug|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|Win32.Build.0 = Debug|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|x64.ActiveCfg = Debug|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Debug-dll|x64.Build.0 = Debug|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|Win32.ActiveCfg = Release|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|Win32.Build.0 = Release|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|x64.ActiveCfg = Release|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release|x64.Build.0 = Release|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|Win32.ActiveCfg = Release|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|Win32.Build.0 = Release|Win32
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|x64.ActiveCfg = Release|x64
- {BC090130-2C53-4CF6-8AD4-37BF72B8D01A}.Release-dll|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj b/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj
deleted file mode 100644
index 8dca67d..0000000
--- a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj
+++ /dev/null
@@ -1,460 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug-dll|Win32">
- <Configuration>Debug-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug-dll|x64">
- <Configuration>Debug-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|Win32">
- <Configuration>Release-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|x64">
- <Configuration>Release-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{7F500891-CC76-405F-933F-F682BC39F923}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>ref_trace_decode_lib</RootNamespace>
- <ProjectName>opencsd_lib</ProjectName>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\opencsd.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>lib$(LIB_BASE_NAME)</TargetName>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- <TargetExt>.lib</TargetExt>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="..\..\..\..\HOWTO.md" />
- <None Include="..\..\..\..\LICENSE" />
- <None Include="..\..\..\..\README.md" />
- <None Include="..\..\..\..\TODO" />
- <None Include="..\..\..\docs\build_libs.md" />
- <None Include="..\..\..\docs\external_custom.md" />
- <None Include="..\..\..\docs\man\trc_pkt_lister.1" />
- <None Include="..\..\..\docs\test_progs.md" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\include\common\comp_attach_notifier_i.h" />
- <ClInclude Include="..\..\..\include\common\comp_attach_pt_t.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_code_follower.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_mngr.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_mngr_i.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_tree.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_tree_elem.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_error.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_error_logger.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_gen_elem_list.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_gen_elem_stack.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_lib_dcd_register.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_msg_logger.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_pe_context.h" />
- <ClInclude Include="..\..\..\include\common\ocsd_version.h" />
- <ClInclude Include="..\..\..\include\common\trc_component.h" />
- <ClInclude Include="..\..\..\include\common\trc_core_arch_map.h" />
- <ClInclude Include="..\..\..\include\common\trc_cs_config.h" />
- <ClInclude Include="..\..\..\include\common\trc_frame_deformatter.h" />
- <ClInclude Include="..\..\..\include\common\trc_gen_elem.h" />
- <ClInclude Include="..\..\..\include\common\trc_pkt_decode_base.h" />
- <ClInclude Include="..\..\..\include\common\trc_pkt_elem_base.h" />
- <ClInclude Include="..\..\..\include\common\trc_pkt_proc_base.h" />
- <ClInclude Include="..\..\..\include\common\trc_printable_elem.h" />
- <ClInclude Include="..\..\..\include\common\trc_ret_stack.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cache.h" />
- <ClInclude Include="..\..\..\include\opencsd\ete\ete_decoder.h" />
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_cmp_cfg_ete.h" />
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_dcd_mngr_ete.h" />
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_pkt_types_ete.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\etmv3_decoder.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_cmp_cfg_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_dcd_mngr_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_decode_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_elem_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_proc_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_types_etmv3.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\etmv4_decoder.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_cmp_cfg_etmv4.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_dcd_mngr_etmv4i.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_etmv4_stack_elem.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_decode_etmv4i.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_elem_etmv4d.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_elem_etmv4i.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_proc_etmv4.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_proc_etmv4i.h" />
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_types_etmv4.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_abs_typed_base_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_data_rawframe_in_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_data_raw_in_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_error_log_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_gen_elem_in_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_indexer_pkt_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_indexer_src_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_instr_decode_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_pkt_in_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_pkt_raw_in_i.h" />
- <ClInclude Include="..\..\..\include\interfaces\trc_tgt_mem_access_i.h" />
- <ClInclude Include="..\..\..\include\i_dec\trc_idec_arminst.h" />
- <ClInclude Include="..\..\..\include\i_dec\trc_i_decode.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_base.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_bufptr.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cb.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cb_if.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_file.h" />
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_mapper.h" />
- <ClInclude Include="..\..\..\include\opencsd\ocsd_if_types.h" />
- <ClInclude Include="..\..\..\include\opencsd.h" />
- <ClInclude Include="..\..\..\include\opencsd\ocsd_if_version.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\gen_elem_printer.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\item_printer.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\pkt_printer_t.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\raw_frame_printer.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\trc_pkt_printers.h" />
- <ClInclude Include="..\..\..\include\pkt_printers\trc_print_fact.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\ptm_decoder.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_cmp_cfg_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_dcd_mngr_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_decode_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_elem_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_proc_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_types_ptm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\stm_decoder.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_cmp_cfg_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_dcd_mngr_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_decode_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_elem_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_proc_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_types_stm.h" />
- <ClInclude Include="..\..\..\include\opencsd\trc_gen_elem_types.h" />
- <ClInclude Include="..\..\..\include\opencsd\trc_pkt_types.h" />
- <ClInclude Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3_impl.h" />
- <ClInclude Include="..\..\..\source\trc_frame_deformatter_impl.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\ete\trc_cmp_cfg_ete.cpp" />
- <ClCompile Include="..\..\..\source\etmv3\trc_cmp_cfg_etmv3.cpp" />
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_decode_etmv3.cpp" />
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_elem_etmv3.cpp" />
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3.cpp" />
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3_impl.cpp" />
- <ClCompile Include="..\..\..\source\etmv4\trc_cmp_cfg_etmv4.cpp" />
- <ClCompile Include="..\..\..\source\etmv4\trc_etmv4_stack_elem.cpp" />
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_decode_etmv4i.cpp" />
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_elem_etmv4i.cpp" />
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_proc_etmv4i.cpp" />
- <ClCompile Include="..\..\..\source\i_dec\trc_idec_arminst.cpp" />
- <ClCompile Include="..\..\..\source\i_dec\trc_i_decode.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_base.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_bufptr.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_cache.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_cb.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_file.cpp" />
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_mapper.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_code_follower.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_dcd_tree.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_error.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_error_logger.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_gen_elem_list.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_gen_elem_stack.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_lib_dcd_register.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_msg_logger.cpp" />
- <ClCompile Include="..\..\..\source\ocsd_version.cpp" />
- <ClCompile Include="..\..\..\source\pkt_printers\raw_frame_printer.cpp" />
- <ClCompile Include="..\..\..\source\pkt_printers\trc_print_fact.cpp" />
- <ClCompile Include="..\..\..\source\ptm\trc_cmp_cfg_ptm.cpp" />
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_decode_ptm.cpp" />
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_elem_ptm.cpp" />
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_proc_ptm.cpp" />
- <ClCompile Include="..\..\..\source\stm\trc_pkt_decode_stm.cpp" />
- <ClCompile Include="..\..\..\source\stm\trc_pkt_elem_stm.cpp" />
- <ClCompile Include="..\..\..\source\stm\trc_pkt_proc_stm.cpp" />
- <ClCompile Include="..\..\..\source\trc_component.cpp" />
- <ClCompile Include="..\..\..\source\trc_core_arch_map.cpp" />
- <ClCompile Include="..\..\..\source\trc_frame_deformatter.cpp" />
- <ClCompile Include="..\..\..\source\trc_gen_elem.cpp" />
- <ClCompile Include="..\..\..\source\trc_printable_elem.cpp" />
- <ClCompile Include="..\..\..\source\trc_ret_stack.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters b/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters
deleted file mode 100644
index 47e9a3a..0000000
--- a/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters
+++ /dev/null
@@ -1,515 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- <Filter Include="interfaces">
- <UniqueIdentifier>{80012968-9f0d-4623-901a-c2fa5f1c0890}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\etmv3">
- <UniqueIdentifier>{98cd2a71-b44f-4884-bb8a-56c851cc8321}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\etmv4">
- <UniqueIdentifier>{dd155712-7990-4cdd-b9b0-299d97f625e4}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\ptm">
- <UniqueIdentifier>{9ec501e2-9ba4-4bad-a3d3-cdb604cc38b4}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\mem_acc">
- <UniqueIdentifier>{23a35c62-e38f-43f6-a03b-6f1287478a69}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\i_dec">
- <UniqueIdentifier>{f550018a-8974-4f8b-975a-bd8b86ae418f}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\stm">
- <UniqueIdentifier>{2c796b59-81f6-49c9-88cf-e90ed2e741a3}</UniqueIdentifier>
- </Filter>
- <Filter Include="docs-files">
- <UniqueIdentifier>{5ea7e02d-0667-4d2d-8c3d-039daf112edc}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\ptm">
- <UniqueIdentifier>{2aa8a97b-13da-4bd1-bdb5-02f3e1cf030b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\etmv4">
- <UniqueIdentifier>{ff9157b6-ef07-41e4-8ff4-322c50ea6665}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\etmv3">
- <UniqueIdentifier>{0c2ba881-cc82-4567-ab59-d2363b4c3d1b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\stm">
- <UniqueIdentifier>{73a56760-b7ff-4d56-88f0-13249201081c}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\i_dec">
- <UniqueIdentifier>{cb3682ee-abbd-44c3-a175-4522d76e2d68}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\mem_acc">
- <UniqueIdentifier>{eb9beab1-99c6-4eaa-88c0-893b05b2e673}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\common">
- <UniqueIdentifier>{58d2398e-efdd-45d9-b7be-fc6096f3bec2}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\pkt_printers">
- <UniqueIdentifier>{0e6e1f5d-465e-4f91-88a3-479952bbd316}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\pkt_printers">
- <UniqueIdentifier>{baf047d0-0ff7-4502-b42b-4f1fda94d54b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Header Files\ete">
- <UniqueIdentifier>{3d119e90-c89b-4f27-8163-305924453e1f}</UniqueIdentifier>
- </Filter>
- <Filter Include="Source Files\ete">
- <UniqueIdentifier>{8cfdb19c-28fc-4e79-b8d5-4e54907b1f82}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="..\..\..\..\LICENSE">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\..\README.md">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\..\TODO">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\docs\build_libs.md">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\docs\test_progs.md">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\..\HOWTO.md">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\docs\external_custom.md">
- <Filter>docs-files</Filter>
- </None>
- <None Include="..\..\..\docs\man\trc_pkt_lister.1">
- <Filter>docs-files</Filter>
- </None>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\source\trc_frame_deformatter_impl.h">
- <Filter>Source Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_tgt_mem_access_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_pkt_raw_in_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_pkt_in_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_instr_decode_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_indexer_src_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_indexer_pkt_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_gen_elem_in_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_error_log_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_data_raw_in_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_data_rawframe_in_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\etmv3_decoder.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_elem_etmv3.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_cmp_cfg_etmv3.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_proc_etmv3.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_types_etmv3.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_proc_etmv4.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_types_etmv4.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_elem_etmv4d.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_elem_etmv4i.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_cmp_cfg_etmv4.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\etmv4_decoder.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_elem_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_cmp_cfg_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_types_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_proc_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\ptm_decoder.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_base.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_file.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_bufptr.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_mapper.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\i_dec\trc_idec_arminst.h">
- <Filter>Header Files\i_dec</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\i_dec\trc_i_decode.h">
- <Filter>Header Files\i_dec</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_decode_etmv4i.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\stm_decoder.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_elem_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_cmp_cfg_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_proc_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_types_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_pkt_decode_etmv3.h">
- <Filter>Header Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cb_if.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cb.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_pkt_decode_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3_impl.h">
- <Filter>Source Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\comp_attach_notifier_i.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\comp_attach_pt_t.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_tree.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_tree_elem.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_error.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_error_logger.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_msg_logger.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_version.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_component.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_core_arch_map.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_frame_deformatter.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_gen_elem.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_pkt_decode_base.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_pkt_proc_base.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_printable_elem.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_pe_context.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_code_follower.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_gen_elem_list.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_cs_config.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_mngr.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_dcd_mngr_i.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_lib_dcd_register.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\interfaces\trc_abs_typed_base_i.h">
- <Filter>interfaces</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_dcd_mngr_etmv4i.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv3\trc_dcd_mngr_etmv3.h">
- <Filter>Source Files\etmv3</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ptm\trc_dcd_mngr_ptm.h">
- <Filter>Header Files\ptm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_dcd_mngr_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_pkt_elem_base.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\stm\trc_pkt_decode_stm.h">
- <Filter>Header Files\stm</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\gen_elem_printer.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\item_printer.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\pkt_printer_t.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\raw_frame_printer.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\trc_pkt_printers.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\pkt_printers\trc_print_fact.h">
- <Filter>Header Files\pkt_printers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\trc_ret_stack.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_etmv4_stack_elem.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ocsd_if_types.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\trc_gen_elem_types.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\trc_pkt_types.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\mem_acc\trc_mem_acc_cache.h">
- <Filter>Header Files\mem_acc</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ocsd_if_version.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\common\ocsd_gen_elem_stack.h">
- <Filter>Header Files\common</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_pkt_types_ete.h">
- <Filter>Header Files\ete</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_cmp_cfg_ete.h">
- <Filter>Header Files\ete</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ete\trc_dcd_mngr_ete.h">
- <Filter>Header Files\ete</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\ete\ete_decoder.h">
- <Filter>Header Files\ete</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\include\opencsd\etmv4\trc_pkt_proc_etmv4i.h">
- <Filter>Header Files\etmv4</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\trc_component.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\trc_frame_deformatter.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\trc_core_arch_map.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\trc_printable_elem.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\trc_gen_elem.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_decode_ptm.cpp">
- <Filter>Source Files\ptm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_elem_ptm.cpp">
- <Filter>Source Files\ptm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ptm\trc_pkt_proc_ptm.cpp">
- <Filter>Source Files\ptm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_elem_etmv4i.cpp">
- <Filter>Source Files\etmv4</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_decode_etmv4i.cpp">
- <Filter>Source Files\etmv4</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_elem_etmv3.cpp">
- <Filter>Source Files\etmv3</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_decode_etmv3.cpp">
- <Filter>Source Files\etmv3</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv3\trc_cmp_cfg_etmv3.cpp">
- <Filter>Source Files\etmv3</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3.cpp">
- <Filter>Source Files\etmv3</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv3\trc_pkt_proc_etmv3_impl.cpp">
- <Filter>Source Files\etmv3</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv4\trc_cmp_cfg_etmv4.cpp">
- <Filter>Source Files\etmv4</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ptm\trc_cmp_cfg_ptm.cpp">
- <Filter>Source Files\ptm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\stm\trc_pkt_proc_stm.cpp">
- <Filter>Source Files\stm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\stm\trc_pkt_elem_stm.cpp">
- <Filter>Source Files\stm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\i_dec\trc_i_decode.cpp">
- <Filter>Source Files\i_dec</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\i_dec\trc_idec_arminst.cpp">
- <Filter>Source Files\i_dec</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_base.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_mapper.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_bufptr.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_cb.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_file.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_dcd_tree.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_error.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_error_logger.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_msg_logger.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_version.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_code_follower.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_gen_elem_list.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_lib_dcd_register.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\stm\trc_pkt_decode_stm.cpp">
- <Filter>Source Files\stm</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\pkt_printers\raw_frame_printer.cpp">
- <Filter>Source Files\pkt_printers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\pkt_printers\trc_print_fact.cpp">
- <Filter>Source Files\pkt_printers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\trc_ret_stack.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv4\trc_etmv4_stack_elem.cpp">
- <Filter>Source Files\etmv4</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\mem_acc\trc_mem_acc_cache.cpp">
- <Filter>Source Files\mem_acc</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\etmv4\trc_pkt_proc_etmv4i.cpp">
- <Filter>Source Files\etmv4</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ocsd_gen_elem_stack.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\source\ete\trc_cmp_cfg_ete.cpp">
- <Filter>Source Files\ete</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.sln b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.sln
index ce4ee29..6cd686d 100644
--- a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.sln
+++ b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.sln
@@ -32,6 +32,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "frame_demux_test", "..\..\.
{7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "perr", "..\..\..\tests\build\win-vs2022\perr\perr.vcxproj", "{3D1E409D-5F4B-4B47-8513-A622639A5399}"
+ ProjectSection(ProjectDependencies) = postProject
+ {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mem-acc-test", "..\..\..\tests\build\win-vs2022\mem-acc-test\mem-acc-test.vcxproj", "{FF4F9135-DD70-4698-9B8F-0451CEA3CA44}"
+ ProjectSection(ProjectDependencies) = postProject
+ {7F500891-CC76-405F-933F-F682BC39F923} = {7F500891-CC76-405F-933F-F682BC39F923}
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -156,6 +166,38 @@ Global
{98EE9884-A4EB-4C75-A911-DFEDF992754F}.Release|x64.Build.0 = Release|x64
{98EE9884-A4EB-4C75-A911-DFEDF992754F}.Release-dll|Win32.ActiveCfg = Release|Win32
{98EE9884-A4EB-4C75-A911-DFEDF992754F}.Release-dll|x64.ActiveCfg = Release|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug|Win32.Build.0 = Debug|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug|x64.ActiveCfg = Debug|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug|x64.Build.0 = Debug|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug-dll|Win32.ActiveCfg = Debug|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug-dll|Win32.Build.0 = Debug|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug-dll|x64.ActiveCfg = Debug|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Debug-dll|x64.Build.0 = Debug|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release|Win32.ActiveCfg = Release|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release|Win32.Build.0 = Release|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release|x64.ActiveCfg = Release|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release|x64.Build.0 = Release|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release-dll|Win32.ActiveCfg = Release|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release-dll|Win32.Build.0 = Release|Win32
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release-dll|x64.ActiveCfg = Release|x64
+ {3D1E409D-5F4B-4B47-8513-A622639A5399}.Release-dll|x64.Build.0 = Release|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug|Win32.Build.0 = Debug|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug|x64.ActiveCfg = Debug|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug|x64.Build.0 = Debug|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug-dll|Win32.ActiveCfg = Debug|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug-dll|Win32.Build.0 = Debug|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug-dll|x64.ActiveCfg = Debug|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Debug-dll|x64.Build.0 = Debug|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release|Win32.ActiveCfg = Release|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release|Win32.Build.0 = Release|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release|x64.ActiveCfg = Release|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release|x64.Build.0 = Release|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release-dll|Win32.ActiveCfg = Release|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release-dll|Win32.Build.0 = Release|Win32
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release-dll|x64.ActiveCfg = Release|x64
+ {FF4F9135-DD70-4698-9B8F-0451CEA3CA44}.Release-dll|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj
index 30724aa..efb65ad 100644
--- a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj
+++ b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj
@@ -313,6 +313,8 @@
<None Include="..\..\..\docs\build_libs.md" />
<None Include="..\..\..\docs\external_custom.md" />
<None Include="..\..\..\docs\man\trc_pkt_lister.1" />
+ <None Include="..\..\..\docs\prog_guide\prog_guide_generic_pkts.md" />
+ <None Include="..\..\..\docs\prog_guide\prog_guide_main.md" />
<None Include="..\..\..\docs\test_progs.md" />
</ItemGroup>
<ItemGroup>
diff --git a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters
index 4ec5327..9547906 100644
--- a/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters
+++ b/decoder/build/win-vs2022/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters
@@ -96,6 +96,12 @@
<None Include="..\..\..\docs\man\trc_pkt_lister.1">
<Filter>docs-files</Filter>
</None>
+ <None Include="..\..\..\docs\prog_guide\prog_guide_generic_pkts.md">
+ <Filter>docs-files</Filter>
+ </None>
+ <None Include="..\..\..\docs\prog_guide\prog_guide_main.md">
+ <Filter>docs-files</Filter>
+ </None>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\source\trc_frame_deformatter_impl.h">
diff --git a/decoder/docs/build_libs.md b/decoder/docs/build_libs.md
index e3435a2..550d1cc 100644
--- a/decoder/docs/build_libs.md
+++ b/decoder/docs/build_libs.md
@@ -18,7 +18,7 @@ Building the Library
--------------------
The library and test programs are built from the library `./build/<platform>` directory, where
-<platform> is either 'linux' or 'win-vs2015' / 'win-vs2022'
+<platform> is either 'linux' or 'win-vs2022'
See [`./docs/test_progs.md`](@ref test_progs) for further information on use of the test
programs.
@@ -172,3 +172,48 @@ the header file. Also link against the main C++ library.
To link against the main C++ library include the library name in the dependency list.
+
+Library Performance Options
+---------------------------
+
+The library caches parts of the memory images requested during the decode process, to improve performance by reducing the number of requests to the memory accessor (memacc) objects or callbacks.
+
+The default settings can be adjusted at runtime either by programmable API, or using environment variables.
+
+Cache parameters can be set in terms of page size and number of pages.
+Caching can also be disabled.
+
+Page size can vary between 64 bytes and 16384 bytes.
+Number of pages can vary between 4 and 256.
+
+Default values are set at 16 pages of 2048 bytes.
+
+### Environment variables to control caching ###
+
+- `OPENCSD_MEMACC_CACHE_PAGE_SIZE` : Page size in bytes.
+- `OPENCSD_MEMACC_CACHE_PAGE_NUM` : number of pages.
+- `OPENCSD_MEMACC_CACHE_OFF` : disable memacc caching.
+
+
+Library Debug Options
+---------------------
+
+### ETMv4 / ETE instruction run limit ###
+
+The ETMv4 / ETE decoder has an optional run length limit for the amount of instructions in a range permitted before an error code will be returned.
+
+This option allows debug of potential runaway decode if incorrect memory image imformation is provided to the debuger.
+
+Option controlled by environment variable `OPENCSD_INSTR_RANGE_LIMIT`. Set value to number of instructions as the limit.
+
+### AA64 Invalid opcode detection ###
+
+The instruction decode part of the library can be set to detect invalid aarch64 opcodes and throw an error.
+
+In the aarch64 opcodes define any opcode with the top 16 bits as 0x0000 as an invalid opcode range - which is the range detected by the library.
+Any other opcodes that are undefined or invalid that are not in this range will not be detected.
+
+This also allows the potential to detect runaway decode where incorrect memory information is supplied which contains data sections initilised with 0x00000000.
+
+Option is controlled by environment variable `OPENCSD_ERR_ON_AA64_BAD_OPCODE`. If this is set then the invalid opcodes will be detected.
+
diff --git a/decoder/docs/doxygen_config.dox b/decoder/docs/doxygen_config.dox
index 06ad074..8aa6ea8 100644
--- a/decoder/docs/doxygen_config.dox
+++ b/decoder/docs/doxygen_config.dox
@@ -38,7 +38,7 @@ PROJECT_NAME = "OpenCSD - CoreSight Trace Decode Library"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.4.1
+PROJECT_NUMBER = 1.5.2
# 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 --git a/decoder/docs/man/trc_pkt_lister.1 b/decoder/docs/man/trc_pkt_lister.1
index a2e2679..b0c9bc3 100644
--- a/decoder/docs/man/trc_pkt_lister.1
+++ b/decoder/docs/man/trc_pkt_lister.1
@@ -1,29 +1,19 @@
.\" Hey, EMACS: -*- nroff -*-
-.TH TRC_PKT_LISTER 1 "2018-03-28"
+.TH TRC_PKT_LISTER 1 "2024-03-28"
.SH NAME
-trc_pkt_lister \- decodes captured CoreSight\*R trace
+.PP
+trc_pkt_lister - decodes captured CoreSight\*R trace from a trace snapshot directory.
.SH SYNOPSIS
.RI trc_pkt_lister
-[ \-ss_dir \fI<dir>\fP ]
-[ -ss_verbose ]
-[ \-id \fI<n>\fP ]
-[ \-src_name \fI<name>\fP ]
-[ \-decode ]
-[ \-decode_only ]
-[ \-src_addr_n ]
-[ \-o_raw_packed ]
-[ \-o_raw_unpacked ]
-[ \-logstdout ]
-[ \-logstderr ]
-[ \-logfile ]
-[ \-logfilename \fI<name>\fP ]
+.RB [ --help ]
+.RI [OPTIONS...]
.br
.SH DESCRIPTION
.B trc_pkt_lister
is a tool that takes a snapshot directory as an input, and lists and/or
-decodes all the trace packets for a single source, for any currently
-supported protocol.
+decodes all the trace packets from a given trace sink, for any source in
+that sink where the protocol is supported.
.PP
The output will be a list of discrete packets, generic output packets
and any error messages to file and/or screen as selected by the input
@@ -31,74 +21,100 @@ command line options.
.PP
By default the program will list packets only (no decode), for the
first discovered trace sink (ETB, ETF, ETR) in the snapshot directory,
-with all streams output.
+with all source streams output.
.SH OPTIONS
.SS Snapshot selection
-The program defaults to \./ if no \-ss_dir option is given
+The program defaults to ./. if no
+.B -ss_dir
+option is given
.TP
-.B \-ss\_dir <dir>
+.B -ss_dir <dir>
Set the directory path to a trace snapshot.
.TP
-\fB\fC\-ss\_verbose\fR
+.B -ss_verbose
Verbose output when reading the snapshot.
.SS Decode options
.TP
-.B \-id <n>
-Set an ID to list (may be used multiple times) \- default if no id set is for all IDs to be printed.
+.B -id <n>
+Set a trace ID to list (may be used multiple times). Default if no id set is for all IDs to be printed.
.TP
-.B \-src\_name <name>
+.B -src_name <name>
List packets from a given snapshot source name (defaults to first source found).
.TP
-.B \-decode
-Full decode of the packets from the trace snapshot (default is to list undecoded packets only.
+.B -multi_session
+Decode all buffers listed in snapshot under
+.B buffers
+key in
+.B trace.ini.
+.br
+Uses config of first buffer to decode all. Ignored if
+.B -src_name
+is used.
+.TP
+.B -dstream_format
+Input is DSTREAM framed.
+.TP
+.B -tpiu
+Input data is from a TPIU source that has TPIU FSYNC packets present.
.TP
-.B \-decode_only
+.B -tpiu_hsync
+Input data is from a TPIU source that has both TPIU FSYNC and HSYNC packets present.
+.TP
+.B -decode
+Full decode of the packets from the trace snapshot (default is to list undecoded packets only).
+.TP
+.B -decode_only
Does not list the undecoded packets, just the trace decode.
.TP
-.B \-src\_addr\_n
+.B -src_addr_n
In ETE protocol, indicate skipped N atoms in source address packet ranges by breaking the decode
range into multiple ranges on N atoms.
.TP
-.B \-o\_raw\_packed
+.B -o_raw_packed
Output raw packed trace frames.
.TP
-.B \-o\_raw\_unpacked
-Output raw unpacked trace data per ID.
+.B -o_raw_unpacked
+Output raw unpacked trace data per ID.-
+.TP
+.B -stats
+Output packet processing statistics (if available).
.SS Output options
Default is to output to file and stdout. Setting any option overrides and limits to only
the options set.
.TP
-.B \-logstdout
+.B -logstdout
output to stdout.
.TP
-.B \-logstderr
+.B -logstderr
output to stderr.
.TP
-.B \-logfile
+.B -logfile
output to file using the default log file name.
.TP
-.B \-logfilename <name>
+.B -logfilename <name>
change the name of the output log file.
.SH FILES
.B Trace Snapshot directory.
.PP
-The \fR./tests/snapshots\fP directory contains a number of trace
-snapshots used for testing the library. Trace snapshots are dumps of
-captured binary trace data, CoreSight component configurations and
-memory dumps to allow trace decode.
+The
+.B ./tests/snapshots
+directory contains a number of trace snapshots used for testing the library.
+Trace snapshots are dumps of captured binary trace data, CoreSight component
+configurations and memory dumps to allow trace decode.
.PP
Snapshots are generated on ARM targets and can then be analysed
offline. The snapshot format is available in a separate document.
-.SH EXAMPLE
+.SH EXAMPLES
Example command lines with short output excerpts.
.PP
-.BI TC2 " ETMv3 packet processor output, raw packet output."
-.br
-Command line:
+.B TC2 :
+ETMv3 packet processor output, raw packet output.
+.PP
+.B Command line:
.br
-.RI "trc\_pkt\_lister -ss\_dir ../../snapshots/TC2 -o_raw_unpacked"
+trc_pkt_lister -ss_dir ../../snapshots/TC2 -o_raw_unpacked
.PP
-Output:
+.B Output:
.br
Frame Data; Index 17958; ID_DATA[0x11]; 16 04 c0 86 42 97 e1 c4
.br
@@ -113,15 +129,52 @@ Idx:17962; ID:11; TIMESTAMP : Timestamp Value.; TS=0x82f9d13097 (562536984727)
.br
Idx:17974; ID:11; P_HDR : Atom P-header.; WW; Cycles=2
.PP
-.BI Juno " ETB\_1 selected for STM packet output, raw packet output"
+.B Juno :
+ETB_1 selected which contains STM source output, plus raw packet output
+.PP
+.B Command line:
+trc_pkt_lister -ss_dir ../../snapshots/juno_r1_1 -o_raw_unpacked -src_name ETB_1
+.PP
+.B Output
+Trace Packet Lister : STM Protocol on Trace ID 0x20
+.br
+Frame Data; Index 0; ID_DATA[0x20]; ff ff ff ff ff ff ff ff ff ff 0f 0f 30 41
+.br
+Idx:0; ID:20; ASYNC:Alignment synchronisation packet.
+.br
+Idx:11; ID:20; VERSION:Version packet.; Ver=3
.br
+Frame Data; Index 16; ID_DATA[0x20]; f1 1a 00 00 00 30 10 af 01 00 00 10 03 f2 1a
+.br
+Idx:13; ID:20; M8:Set current master.; Master=0x41
+.br
+Idx:17; ID:20; D32M:32 bit data; with marker.; Data=0x10000000
+.br
+Idx:22; ID:20; C8:Set current channel.; Chan=0x0001
+.PP
+.B Juno :
+ETMv4 full trace decode + packet monitor, source trace ID 0x10 only.
+.PP
Command line:
.br
-.RI "trc\_pkt\_lister -ss\_dir ../../snapshots/juno_r1_1 -o\_raw\_unpacked -src\_name ETB\_1"
+trc_pkt_lister -ss_dir ../../snapshots/juno_r1_1 -decode -id 0x10
.PP
-.BI Juno " ETMv4 full trace decode + packet monitor, source trace ID 0x10 only."
+.B Output
.br
-Command line:
+Idx:17204; ID:10; [0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 ]; I_ASYNC : Alignment Synchronisation.
.br
-.RI "trc\_pkt\_lister -ss\_dir ../../snapshots/juno\_r1\_1 -decode -id 0x10"
-
+Idx:17218; ID:10; [0x01 0x01 0x00 ]; I_TRACE_INFO : Trace Info.; INFO=0x0
+.br
+Idx:17221; ID:10; [0x9d 0x00 0x35 0x09 0x00 0xc0 0xff 0xff 0xff ]; I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0xFFFFFFC000096A00;
+.br
+Idx:17230; ID:10; [0x04 ]; I_TRACE_ON : Trace On.
+.br
+Idx:17232; ID:10; [0x85 0x00 0x35 0x09 0x00 0xc0 0xff 0xff 0xff 0xf1 0x00 0x00 0x00 0x00 0x00 ]; I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0xFFFFFFC000096A00; Ctxt: AArch64,EL1, NS; CID=0x00000000; VMID=0x0000;
+.br
+Idx:17248; ID:10; [0xf7 ]; I_ATOM_F1 : Atom format 1.; E
+.br
+Idx:17230; ID:10; OCSD_GEN_TRC_ELEM_TRACE_ON( [begin or filter])
+.br
+Idx:17232; ID:10; OCSD_GEN_TRC_ELEM_PE_CONTEXT((ISA=A64) EL1N; 64-bit; VMID=0x0; CTXTID=0x0; )
+.br
+Idx:17248; ID:10; OCSD_GEN_TRC_ELEM_INSTR_RANGE(exec range=0xffffffc000096a00:[0xffffffc000096a10] num_i(4) last_sz(4) (ISA=A64) E ISB )
diff --git a/decoder/docs/prog_guide/prog_guide_generic_pkts.md b/decoder/docs/prog_guide/prog_guide_generic_pkts.md
index aad15b8..0845d02 100644
--- a/decoder/docs/prog_guide/prog_guide_generic_pkts.md
+++ b/decoder/docs/prog_guide/prog_guide_generic_pkts.md
@@ -62,16 +62,18 @@ typedef struct _ocsd_generic_trace_elem {
//! per element flags
union {
struct {
- uint32_t last_instr_exec:1; /* 1 if last instruction in range was executed; */
- uint32_t last_instr_sz:3; /* size of last instruction in bytes (2/4) */
- uint32_t has_cc:1; /* 1 if this packet has a valid cycle count included (e.g. cycle count included as part of instruction range packet, always 1 for pure cycle count packet.*/
- uint32_t cpu_freq_change:1; /* 1 if this packet indicates a change in CPU frequency */
- uint32_t excep_ret_addr:1; /* 1 if en_addr is the preferred exception return address on exception packet type */
- uint32_t excep_data_marker:1; /* 1 if the exception entry packet is a data push marker only, with no address information (used typically in v7M trace for marking data pushed onto stack) */
- uint32_t extended_data:1; /* 1 if the packet extended data pointer is valid. Allows packet extensions for custom decoders, or additional data payloads for data trace. */
- uint32_t has_ts:1; /* 1 if the packet has an associated timestamp - e.g. SW/STM trace TS+Payload as a single packet */
- uint32_t last_instr_cond:1; /* 1 if the last instruction was conditional */
+ uint32_t last_instr_exec:1; /* 1 if last instruction in range was executed; */
+ uint32_t last_instr_sz:3; /* size of last instruction in bytes (2/4) */
+ uint32_t has_cc:1; /* 1 if this packet has a valid cycle count included (e.g. cycle count included as part of instruction range packet, always 1 for pure cycle count packet.*/
+ uint32_t cpu_freq_change:1; /* 1 if this packet indicates a change in CPU frequency */
+ uint32_t excep_ret_addr:1; /* 1 if en_addr is the preferred exception return address on exception packet type */
+ uint32_t excep_data_marker:1; /* 1 if the exception entry packet is a data push marker only, with no address information (used typically in v7M trace for marking data pushed onto stack) */
+ uint32_t extended_data:1; /* 1 if the packet extended data pointer is valid. Allows packet extensions for custom decoders, or additional data payloads for data trace. */
+ uint32_t has_ts:1; /* 1 if the packet has an associated timestamp - e.g. SW/STM trace TS+Payload as a single packet */
+ uint32_t last_instr_cond:1; /* 1 if the last instruction was conditional */
uint32_t excep_ret_addr_br_tgt:1; /* 1 if exception return address (en_addr) is also the target of a taken branch addr from the previous range. */
+ uint32_t excep_M_tail_chain:1; /* 1 if the exception is an M class exception with no pref ret address - tail chained or similar */
+
};
uint32_t flag_bits;
};
@@ -242,7 +244,7 @@ The packet will be sent once when unknown address occurs. Further `OCSD_GEN_TRC_
### OCSD_GEN_TRC_ELEM_EXCEPTION ###
__packet fields valid__: `exception_number`
-__packet fields optional__: `has_cc -> cycle_count, excep_ret_addr -> en_addr, excep_data_marker, excep_ret_addr_br_tgt`
+__packet fields optional__: `has_cc -> cycle_count, excep_ret_addr -> en_addr, excep_data_marker, excep_ret_addr_br_tgt, excep_M_tail_chain`
__protocol specific__: ETMv4, ETMv3, PTM
@@ -251,7 +253,11 @@ All protocols will include the exception number in the packet.
__ETMv4__ : This protocol may provide the preferred return address for the exception - this is the address of
the instruction that could be executed on exception return. This address appears in `en_addr` if `excep_ret_addr` = 1.
-Additionally, this address could also represent the target address of a branch, if the exception occured at the branch target, before any further instructions were execute. If htis is the case then the excep_ret_addr_br_tgt flag will be set. This makes explicit what was previously only implied by teh packet ordered. This information could be used for clients such as perf that branch source/target address pairs.
+Additionally, this address could also represent the target address of a branch, if the exception occured at the branch target, before any further
+instructions were executed. If this is the case then the excep_ret_addr_br_tgt flag will be set. This makes explicit what was previously only implied by teh packet ordered. This information could be used for clients such as perf that branch source/target address pairs.
+
+Where `excep_M_tail_chain == 1`, the exception was the result of M profile exception tail chaining, or similar M profile
+events indicated by a standard address value, where the value is not the preferred return address.
__ETMv3__ : This can set the `excep_data_marker` flag. This indicates that the exception packet is a marker
to indicate exception entry in a 7M profile core, for the purposes of tracking data. This will __not__ provide
diff --git a/decoder/docs/prog_guide/prog_guide_main.md b/decoder/docs/prog_guide/prog_guide_main.md
index 9504bdc..44ecb79 100644
--- a/decoder/docs/prog_guide/prog_guide_main.md
+++ b/decoder/docs/prog_guide/prog_guide_main.md
@@ -293,17 +293,35 @@ contain instruction opcodes that may be executed during the operation of the tra
the decoder to follow the path of the traced program by interpreting the information contained within the trace that
defines which program branches are taken and the target addresses of those branches.
+Memory images are associated with a memory space. This is a combination of exception level and security state. The images can
+be associated with a specific memory space, or a larger, more generic memory space. For example a memory image can be associated
+with all secure states (@ref OCSD_MEM_SPACE_S) or just the EL2 secure state (@ref OCSD_MEM_SPACE_EL2S).
+
The library defined memory image accessor objects, which can be simple memory buffers, files containing the binary
code image, or a callback that allows the client to handle memory accesses directly. When files are used, the
object may contain a set of base addresses and lengths, with offsets into the file - allowing the decoder
to directly access multiple code segments in executable image files.
-Memory image objects are collated by a memory mapper. This interfaces to the decoder through the ITargetMemAccess interface,
+Memory image accessor objects are collated by a memory mapper. This interfaces to the decoder through the ITargetMemAccess interface,
and selects the correct image object for the address requested by the decoder. The memory mapper will also validate image
-objects as they are added to the decoder, and will not permit overlapping images.
+objects as they are added to the decoder.
![Memory Mapper and Memory Images](memacc_objs.jpg)
+The mapper will not permit overlapping images in a given memory space - or between a specific and more generic memory space.
+
+For example, an image registered with address 0x00000000, size 0x8000, memory space @ref OCSD_MEM_SPACE_EL2S, ( `mem[0x0000000, 0x8000, OCSD_MEM_SPACE_EL2S]`),
+will not overlap with `mem[0x0000000, 0x8000, OCSD_MEM_SPACE_EL2N]`, which has an overlapping address range but distinct memory space,
+but will overlap with `mem[0x00001000, 0x4000, OCSD_MEM_SPACE_S]`, which has both an overlappring memory range and the same memory space, as the any secure
+space OCSD_MEM_SPACE_S matches the specific EL2 secure space OCSD_MEM_SPACE_EL2S.
+
+When the decoder needs to access memory, it will call the mapper with an address, size and a specific memory space. The mapper will
+then attempt to match by address and memory space to fulfil the request. If the decoder asks for `mem[0x800000, 0x4, OCSD_MEM_SPACE_EL1N]`,
+this will match with an image object which inclues the address, in memory space OCSD_MEM_SPACE_EL1N, OCSD_MEM_SPACE_N or OCSD_MEM_SPACE_ANY.
+The prevention of overlapped memory spaces means that there will only be a single match available.
+
+__Adding and Using Memory Images__
+
The client can add memory images to the decoder via API calls to the decode tree. These methods add memory image accessors of various
types to be managed by a memory access mapper:-
@@ -322,11 +340,6 @@ types to be managed by a memory access mapper:-
The `createMemAccMapper()` function must be called to create the mapper, before the `add...MemAcc()` calls are used.
-It is further possible to differentiate between memory image access objects by the memory space for which they are valid. If it is known that a certain code image
-is present in secure EL3, then an image can be associated with the @ref ocsd_mem_space_acc_t type value @ref OCSD_MEM_SPACE_EL3, which will allow another image to be
-present at the same address but a different exception level. However, for the majority of systems, such detailed knowledge of the code is not available, or
-overlaps across memory spaces do not occur. In these cases, and for general use (including Linux trace decode), @ref OCSD_MEM_SPACE_ANY should be used.
-
The C-API contains a similar set of calls to set up memory access objects:-
~~~{.c}
@@ -338,6 +351,22 @@ The C-API contains a similar set of calls to set up memory access objects:-
Note that the C-API will automatically create a default mapper when the first memory access object is added.
+The global mapper currently available in the library assumes that any images loaded apply to all cores in the system,
+throughout the decode session. There is currently no mapper in the library that will distinguish memory accessors by both memory space and cpu.
+
+Therefore the choice of memory image accessor added will depend on the client.
+
+For a session where the images are static throughout the session, apply to all the cores in a system, the client can add file or buffer type memory accessor can
+be used. This is the model used by the library test program `trc_pkt_lister`.
+
+Where the memory images can change over time, and/or differ according to the processor executing the code, then a callback memory accessor is
+generally used by the client. The `perf` tool used in the Linux kernel uses a callback memory accessor when decoding trace. The tool has
+a database of loaded programs on a per cpu basis over the time of trace recording. `perf` uses the callback accessor with the address and size
+set to the entire system memory area, with a memory space set to @ref OCSD_MEM_SPACE_ANY. This allows the decoder to callback into the `perf`
+client which will then determine the correct program image according to information collected and the cpu and progress through the trace session,
+and return the correct block of memory to the decode library.
+
+
### Adding the output callbacks ###
The decoded trace output ia collect by the client application through callback functions registered with the library.
diff --git a/decoder/docs/test_progs.md b/decoder/docs/test_progs.md
index 3af7692..dd8c7a9 100644
--- a/decoder/docs/test_progs.md
+++ b/decoder/docs/test_progs.md
@@ -6,45 +6,168 @@ Test Programs {#test_progs}
The Programs
------------
-There are currently two test programs built alongside the library.
+There are currently a number test programs built alongside the library.
-1. `trc_pkt_lister` : This test the C++ library by taking a trace "snapshot" directory as an input
-and decodes all or a chosen set of trace sources from within the trace data buffers in the library. Command
-line parameters allow the test program to be controlled.
+__Principle Test Programs__
-2. `c_api_pkt_print_test` : This program tests the "C" API functions, using hardcoded tests
-based on the same "snapshots" used for the C++ library. Limited user control for this program.
-This can also run tests using the external test decoder to validate the external decoder API.
+- `trc_pkt_lister`:
+
+This tests the C++ library by taking a trace "snapshot" directory as an input and decodes all
+or a chosen set of trace sources from within the trace data buffers in the library. Command
+line parameters allow the test program to be controlled.
+
+Users may also run this program on their own trace snapshots to investigate or validate trace from their platforms.
+
+The program may be installed alongside the library onto linux systems, using `make install` from the library build
+directories. This will be installed alongside a `man` file containing relevant user options.
+
+- `c_api_pkt_print_test`:
+
+This program tests the "C" API functions, using hardcoded tests based on the same "snapshots" used
+for the C++ library. Limited user control for this program.
+
+This can also run tests using the external test decoder library to validate the external decoder API.
See [external_custom.md](@ref custom_decoders) for details.
-These programs are both built at the same time as the library for the same set of platforms.
+__Development Utilities__
+
+These are small utilities, primarily used during the development and test of the decoder library.
+
+- `mem-acc-test` : tests the memory accessor interfaces.
+- `mem-buffer-eg` : example using a memory buffer input to the library.
+- `frame-demux-test` : tests the library CoreSight Frame demux object.
+- `ocsd-perr` : quickly list the library error codes and descriptions.
+
+__Build and Install__
+
+All the test programs are built at the same time as the library for the same set of platforms.
See [build_libs.md](@ref build_lib) for build details.
-_Note:_ The programs above use the library's [core name mapper helper class] (@ref CoreArchProfileMap) to map
-the name of the core into a profile / architecture pair that the library can use.
-The snapshot definition must use one of the names recognised by this class or an error will occur.
+Only `trc_pkt_lister` will be installed alongside the library.
+
Trace "Snapshot" directory.
----------------------------
-The `.\tests\snapshots` directory contains a number of trace snapshots used for testing the library.
+The `.\tests\snapshots` and `.\tests\snapshots-ete` directories contain a number of trace snapshots
+used for testing the library.
+
Trace snapshots are dumps of captured binary trace data, CoreSight component configurations and memory
dumps to allow trace decode.
-Snapshots are generated on ARM targets and can then be analysed offline. The snapshot format is available
-in a separate document.
+Snapshots are generated on ARM targets and can then be analysed offline.
+
+__Snapshot Specification__
+
+The principal snapshot format is available in a separate document in
+`.\docs\specs\ARM Trace and Debug Snapshot file format 0v2.pdf`.
+
+The programs above use the library's [core name mapper helper class] (@ref CoreArchProfileMap) to map
+the name of the core into a profile / architecture pair that the library can use.
+
+The snapshot definition must use one of the names recognised by this class, or alternatively use an approved
+profile / architecture profile pattern string as defined below.
+
+There are extensions to this specification, reflecting recent architectural changes.
+
+**Dump File Section Space Format**
+
+The dump file section in device .ini files can define a memory space associated with the file.
+This is done using the `space` keyword. Omitting this keyword with cause the test programs to assume
+that the file applies to all memory spaces enccountered in the trace stream
+
+For complex systems, the same virtual addresses may have differing contents in differing memory spaces.
+The library has extended the memory space names defined in the current specification version to include
+new names for the Realm and Root memory spaces.
+
+Mappings of names to spaces is used as follows :
+ - `EL1S` : maps file to EL1 / EL0 secure states.
+ - `EL2S` : maps file to EL2 secure state.
+ - `EL3` : maps file to EL3 secure state.
+ - `EL1N` : maps file to EL1 / EL0 non-secure state.
+ - `EL2` or `EL2N` : maps file to EL2 non-secure state.
+ - `EL1R` : maps file to EL1 / EL0 Realm state.
+ - `EL2R` : maps file to EL2 Realm state.
+ - `ROOT` : maps file to Root state.
+ - `S` : maps file to all secure states.
+ - `N` : maps file to all non-secure states.
+ - `R` : maps file to all Realm states.
+ - `ANY` : maps file to all security states. This is default if the `space` keyword is omitted.
+
+
+e.g. - Dump section examples with differing memory space definitions.
+
+ - dump 1 & 2 overlap in address but are in different memory spaces.
+ - dump 1 & 3 cover the same memory space, but do not overlap in address.
+ - dump 4 covers all memory spaces but does not overlap in address with any of the other dumps.
+
+~~~~~~~~~~~~~~~~
+[dump1]
+file=bindir_64ns/OTHERS_exec
+address=0x00060000
+length=0x21388
+space=N
+
+[dump2]
+file=bindir_64rt/OTHERS_exec
+address=0x00060000
+length=0x21388
+space=ROOT
+
+[dump3]
+file=bindir_64ns/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x24bf4
+space=EL1N
+
+[dump4]
+file=bindir_64ns/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x26c
+~~~~~~~~~~~~~~~~
+
+**Profile / Architecture pattern string**
+
+Where a specific core name is not used - then a profile / architecture pattern string may be used.
+This enables trace generated on cores with names not in the library to be decoded by the test programs.
+
+Pattern strings can be of the form:
+
+`ARMvM[.m]-P` :
+ - ARMv : fixed prefix
+ - M : architecture major version number 7-9.
+ - .m : optional minor version number
+ - -P : profile type, one of -A, -R or -M
+
+
+e.g. `ARMv8.3-A` , `ARMv7-M`
+
+This format can be used for any ARMv7 / ARMv8 core - including ARM Cortex cores where the name is
+not one of those mapped in the library.
+
+
+`ARM-{aa|AA}64[-P]` :
+ - ARM- : fixed prefix
+ - aa64 or AA64 : indicator for aarch64
+ - -P : optional profile - one of -R or -M, if missing A profile is assumed.
+
+e.g. `ARM-aa64` , `ARM-AA64-R`
+
+This format can be used for all Arm v9 architecture cores.
+
The `trc_pkt_lister` program.
-----------------------------
-This will take a snapshot directory as an input, and list and/or decode all the trace packets for a
-single source, for any currently supported protocol.
+This will take a snapshot directory as an input, and lists and/or
+decodes all the trace packets from a given trace sink, for any source in
+that sink where the protocol is supported.
The output will be a list of discrete packets, generic output packets and any error messages
to file and/or screen as selected by the input command line options.
By default the program will list packets only (no decode), for the first discovered trace sink
-(ETB, ETF, ETR) in the snapshot directory, with all streams output.
+(ETB, ETF, ETR) in the snapshot directory, with all source streams output.
__Command Line Options__
@@ -56,15 +179,19 @@ __Command Line Options__
*Decode options*
- `-id <n>` : Set an ID to list (may be used multiple times) - default if no id set is for all IDs to be printed.
-- `-src_name <name>` : List packets from a given snapshot source name (defaults to first source found).
+- `-src_name <name>` : List packets from a given snapshot source name - e.g ETB_0. (defaults to first source found).
+- `-multi_session` : Decode all buffers listed in snapshot under `buffers` key in `trace.ini`. Uses config of first
+ buffer to decode all. Ignored if `-src_name` is used.
+- `-dstream_format` : Input is DSTREAM framed.
- `-tpiu` : Input data is from a TPIU source that has TPIU FSYNC packets present.
- `-tpiu_hsync` : Input data is from a TPIU source that has both TPIU FSYNC and HSYNC packets present.
- `-decode` : Full decode of the packets from the trace snapshot (default is to list undecoded packets only.
- `-decode_only` : Does not list the undecoded packets, just the trace decode.
- `-src_addr_n` : ETE protocol; Indicate skipped N atoms in source address packet ranges by breaking the decode
- range into multiple ranges on N atoms.
+ range into multiple ranges of N atoms.
- `-o_raw_packed` : Output raw packed trace frames.
- `-o_raw_unpacked` : Output raw unpacked trace data per ID.
+- `-stats` : Output packet processing statistics (if available).
*Output options*
@@ -75,6 +202,15 @@ the options set.
- `-logfile` : output to file using the default log file name.
- `-logfilename <name>` : change the name of the output log file.
+*Library Development options*
+
+Options that are only useful if developing or testing the OpenCSD library.
+
+- `-test_waits <N>` : Force wait from packet printer for N packets - test the wait/flush mechanisms for the decoder.
+- `-profile` : Mute logging output while profiling library performance.
+- `-macc_cache_disable` : Switch off caching on memory accessor.
+- `-macc_cache_p_size` : Set size of caching pages.
+- `-macc_cache_p_num` : Set number of caching pages.
__Test output examples__
@@ -109,7 +245,7 @@ Idx:17988; ID:10; P_HDR : Atom P-header.; W; Cycles=1
Idx:17989; ID:10; P_HDR : Atom P-header.; WEE; Cycles=1
~~~~~~~~~~~~~~~~
-*Juno - ETB_1 selected for STM packet output, raw packet output*
+*Juno - ETB_1 selected which contains STM source output, raw packet output*
Command line:-
`trc_pkt_lister -ss_dir ..\..\..\snapshots\juno_r1_1 -o_raw_unpacked -src_name ETB_1`
diff --git a/decoder/include/common/ocsd_code_follower.h b/decoder/include/common/ocsd_code_follower.h
index b024aa0..cab38fa 100644
--- a/decoder/include/common/ocsd_code_follower.h
+++ b/decoder/include/common/ocsd_code_follower.h
@@ -101,6 +101,7 @@ public:
const bool isNacc() const; //!< true if Memory Not Accessible (nacc) error occurred
void clearNacc(); //!< clear the nacc error flag
const ocsd_vaddr_t getNaccAddr() const; //!< get the nacc error address.
+ const ocsd_mem_space_acc_t getMemSpaceAccess() const; //!< get the memory space used for access.
private:
bool initFollowerState(); //!< clear all the o/p data and flags, check init valid.
@@ -141,6 +142,11 @@ inline void OcsdCodeFollower::setMemSpaceAccess(const ocsd_mem_space_acc_t mem_a
m_mem_acc_rule = mem_acc_rule;
}
+inline const ocsd_mem_space_acc_t OcsdCodeFollower::getMemSpaceAccess() const
+{
+ return m_mem_acc_rule;
+}
+
inline void OcsdCodeFollower::setMemSpaceCSID(const uint8_t csid)
{
m_mem_space_csid = csid;
diff --git a/decoder/include/i_dec/trc_i_decode.h b/decoder/include/i_dec/trc_i_decode.h
index d519a3a..1f6d2b6 100644
--- a/decoder/include/i_dec/trc_i_decode.h
+++ b/decoder/include/i_dec/trc_i_decode.h
@@ -37,20 +37,34 @@
#include "interfaces/trc_instr_decode_i.h"
#include "opencsd/ocsd_if_types.h"
-class TrcIDecode : public IInstrDecode
+/** Throw error if AA64 opcode top 2 bytes == 0x0000. This range is invalid in AA64 */
+#define OCSD_ENV_ERR_ON_AA64_BAD_OPCODE "OPENCSD_ERR_ON_AA64_BAD_OPCODE"
+
+class TrcIDecode : public IInstrDecode
{
public:
- TrcIDecode() {};
+ TrcIDecode();
virtual ~TrcIDecode() {};
- virtual ocsd_err_t DecodeInstruction(ocsd_instr_info *instr_info);
+ virtual ocsd_err_t DecodeInstruction(ocsd_instr_info* instr_info);
+
+ /* control AA64 checking for invalid opcode */
+ void setAA64_errOnBadOpcode(bool bSet);
+ void envSetAA64_errOnBadOpcode();
private:
ocsd_err_t DecodeA32(ocsd_instr_info *instr_info, struct decode_info *info);
ocsd_err_t DecodeA64(ocsd_instr_info *instr_info, struct decode_info *info);
ocsd_err_t DecodeT32(ocsd_instr_info *instr_info, struct decode_info *info);
+
+ bool aa64_err_bad_opcode; //< error if aa64 opcode is in invalid range (top 2 bytes = 0x0000).
};
+inline void TrcIDecode::setAA64_errOnBadOpcode(bool bSet)
+{
+ aa64_err_bad_opcode = bSet;
+}
+
#endif // ARM_TRC_I_DECODE_H_INCLUDED
/* End of File trc_i_decode.h */
diff --git a/decoder/include/mem_acc/trc_mem_acc_base.h b/decoder/include/mem_acc/trc_mem_acc_base.h
index 7f17bde..29196be 100644
--- a/decoder/include/mem_acc/trc_mem_acc_base.h
+++ b/decoder/include/mem_acc/trc_mem_acc_base.h
@@ -110,7 +110,7 @@ public:
virtual const uint32_t bytesInRange(const ocsd_vaddr_t s_address, const uint32_t reqBytes) const;
/*!
- * test is supplied range accessor overlaps this range.
+ * test if supplied range accessor overlaps this range.
*
* @param *p_test_acc : Accessor to test for overlap.
*
@@ -149,11 +149,13 @@ public:
/* memory access info logging */
virtual void getMemAccString(std::string &accStr) const;
+ static void getMemAccSpaceString(std::string& spaceStr, const ocsd_mem_space_acc_t mem_space);
+
protected:
ocsd_vaddr_t m_startAddress; /**< accessible range start address */
ocsd_vaddr_t m_endAddress; /**< accessible range end address */
const MemAccTypes m_type; /**< memory accessor type */
- ocsd_mem_space_acc_t m_mem_space;
+ ocsd_mem_space_acc_t m_mem_space; /**< Matching memory space of this acessor */
};
inline TrcMemAccessorBase::TrcMemAccessorBase(MemAccTypes accType, ocsd_vaddr_t startAddr, ocsd_vaddr_t endAddr) :
diff --git a/decoder/include/mem_acc/trc_mem_acc_bufptr.h b/decoder/include/mem_acc/trc_mem_acc_bufptr.h
index b6208a7..e36f165 100644
--- a/decoder/include/mem_acc/trc_mem_acc_bufptr.h
+++ b/decoder/include/mem_acc/trc_mem_acc_bufptr.h
@@ -61,6 +61,23 @@ public:
*/
TrcMemAccBufPtr(const ocsd_vaddr_t s_address, const uint8_t *p_buffer, const uint32_t size);
+ /*!
+ * Default constructor - init later
+ *
+ */
+ TrcMemAccBufPtr();
+
+ /*
+ *uses the start address as the start of rangeand calculates the end address
+ * according to the buffer size
+ *
+ * @param s_address : Start address in memory map represented by the data in the buffer.
+ * @param* p_buffer : pointer to a buffer of binary data.
+ * @param size : size of the buffer.
+ */
+ void initAccessor(const ocsd_vaddr_t s_address, const uint8_t* p_buffer, const uint32_t size);
+
+
virtual ~TrcMemAccBufPtr() {}; /**< default destructor */
/** Memory access override - allow decoder to read bytes from the buffer. */
diff --git a/decoder/include/mem_acc/trc_mem_acc_cache.h b/decoder/include/mem_acc/trc_mem_acc_cache.h
index 5e81c2a..351d424 100644
--- a/decoder/include/mem_acc/trc_mem_acc_cache.h
+++ b/decoder/include/mem_acc/trc_mem_acc_cache.h
@@ -38,8 +38,17 @@
#include <string>
#include "opencsd/ocsd_if_types.h"
-#define MEM_ACC_CACHE_PAGE_SIZE 256
-#define MEM_ACC_CACHE_MRU_SIZE 12
+#define MEM_ACC_CACHE_DEFAULT_PAGE_SIZE 2048
+#define MEM_ACC_CACHE_DEFAULT_MRU_SIZE 16
+#define MEM_ACC_CACHE_PAGE_SIZE_MAX 16384
+#define MEM_ACC_CACHE_MRU_SIZE_MAX 256
+#define MEM_ACC_CACHE_PAGE_SIZE_MIN 64
+#define MEM_ACC_CACHE_MRU_SIZE_MIN 4
+
+#define OCSD_ENV_MEMACC_CACHE_OFF "OPENCSD_MEMACC_CACHE_OFF"
+#define OCSD_ENV_MEMACC_CACHE_PG_SIZE "OPENCSD_MEMACC_CACHE_PAGE_SIZE"
+#define OCSD_ENV_MEMACC_CACHE_PG_NUM "OPENCSD_MEMACC_CACHE_PAGE_NUM"
+
class TrcMemAccessorBase;
class ITraceErrorLog;
@@ -47,101 +56,142 @@ class ITraceErrorLog;
typedef struct cache_block {
ocsd_vaddr_t st_addr;
uint32_t valid_len;
- uint8_t data[MEM_ACC_CACHE_PAGE_SIZE];
+ uint8_t* data;
+ uint8_t trcID; // trace ID associated with the page
+ uint32_t use_sequence; // number representing the sequence of allocation to evict oldest page.
} cache_block_t;
// enable define to collect stats for debugging / cache performance tests
-//#define LOG_CACHE_STATS
-
-
-/** class TrcMemAccCache - cache small amounts of data from accessors to speed up decode. */
+// #define LOG_CACHE_STATS
+
+
+/** class TrcMemAccCache - cache small amounts of data from accessors to speed up decode.
+ *
+ * Reduce the need to read files / make callbacks into clients when walking memory images.
+ *
+ * Caching is done on a per Core/Trace ID basis - all caches from that ID are invalidated when a context
+ * switch appears on the core. This means that we do not account for memory spaces in the cache pages as
+ * these only change via a context switch.
+ *
+ * Memory space is used on cache miss if reading data from the underlying accessor (file / callback).
+ */
class TrcMemAccCache
{
public:
TrcMemAccCache();
- ~TrcMemAccCache() {};
+ ~TrcMemAccCache();
+
+ /* cache enabling and usage */
+ ocsd_err_t enableCaching(bool bEnable);
+ ocsd_err_t setCacheSizes(const uint16_t page_size, const int nr_pages);
- void enableCaching(bool bEnable) { m_bCacheEnabled = bEnable; };
- void invalidateAll();
const bool enabled() const { return m_bCacheEnabled; };
const bool enabled_for_size(const uint32_t reqSize) const
{
- return (m_bCacheEnabled && (reqSize <= MEM_ACC_CACHE_PAGE_SIZE));
+ return (m_bCacheEnabled && (reqSize <= m_mru_page_size));
}
-
-
- /** read bytes from cache if possible - load new page if needed, bail out if data not available */
+
+ /* cache invalidation */
+ void invalidateAll();
+ void invalidateByTraceID(int8_t trcID);
+ void clearPage(cache_block_t* page);
+
+ /** read bytes from cache if possible - load new page if needed from underlying accessor, bail out if data not available */
ocsd_err_t readBytesFromCache(TrcMemAccessorBase *p_accessor, const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t trcID, uint32_t *numBytes, uint8_t *byteBuffer);
void setErrorLog(ITraceErrorLog *log);
void logAndClearCounts();
+ /* look for runtime cache tuning vars */
+ static void getenvMemaccCacheSizes(bool& enable, int& page_size, int& num_pages);
+
private:
- bool blockInCache(const ocsd_vaddr_t address, const uint32_t reqBytes); // run through each page to look for data.
- bool blockInPage(const ocsd_vaddr_t address, const uint32_t reqBytes);
+ bool blockInCache(const ocsd_vaddr_t address, const uint32_t reqBytes, const uint8_t trcID); // run through each page to look for data.
+ bool blockInPage(const ocsd_vaddr_t address, const uint32_t reqBytes, const uint8_t trcID);
+
void logMsg(const std::string &szMsg);
+ int findNewPage();
+ void incSequence(); // increment sequence on current block
+
+ ocsd_err_t createCaches(); // create caches according to current sizes
+ void destroyCaches(); // destroy the cache blocks
+
+ cache_block_t *m_mru; // cache pages
+ int m_mru_idx = 0; // in use index - most recently used page
+ uint16_t m_mru_page_size; // page size
+ int m_mru_num_pages; // number of pages
+ uint32_t m_mru_sequence; // allocation & use sequence number
- cache_block_t m_mru[MEM_ACC_CACHE_MRU_SIZE];
- int m_mru_idx = 0; // in use index
- int m_mru_next_new = 0; // next new page at this index.
bool m_bCacheEnabled = false;
#ifdef LOG_CACHE_STATS
uint32_t m_hits = 0;
uint32_t m_misses = 0;
uint32_t m_pages = 0;
- uint32_t m_hit_rl[MEM_ACC_CACHE_MRU_SIZE];
- uint32_t m_hit_rl_max[MEM_ACC_CACHE_MRU_SIZE];
+ uint32_t* m_hit_rl = 0;
+ uint32_t* m_hit_rl_max = 0;
#endif
ITraceErrorLog *m_err_log = 0;
};
-inline TrcMemAccCache::TrcMemAccCache()
+inline TrcMemAccCache::TrcMemAccCache() :
+ m_mru(0), m_mru_sequence(1)
{
- for (int i = 0; i < MEM_ACC_CACHE_MRU_SIZE; i++)
- {
- m_mru[i].st_addr = 0;
- m_mru[i].valid_len = 0;
-#ifdef LOG_CACHE_STATS
- m_hit_rl[i] = 0;
- m_hit_rl_max[i] = 0;
-#endif
- }
+ /* set default cache sizes */
+ m_mru_page_size = MEM_ACC_CACHE_DEFAULT_PAGE_SIZE;
+ m_mru_num_pages = MEM_ACC_CACHE_DEFAULT_MRU_SIZE;
}
-inline bool TrcMemAccCache::blockInPage(const ocsd_vaddr_t address, const uint32_t reqBytes)
+inline TrcMemAccCache::~TrcMemAccCache()
+{
+ destroyCaches();
+}
+
+
+inline bool TrcMemAccCache::blockInPage(const ocsd_vaddr_t address, const uint32_t reqBytes, const uint8_t trcID)
{
+ /* check has data, trcID and mem space */
+ if ((m_mru[m_mru_idx].trcID != trcID) ||
+ (m_mru[m_mru_idx].valid_len == 0)
+ )
+ return false;
+
+ /* check block is in this page */
if ((m_mru[m_mru_idx].st_addr <= address) &&
m_mru[m_mru_idx].st_addr + m_mru[m_mru_idx].valid_len >= (address + reqBytes))
return true;
return false;
}
-inline bool TrcMemAccCache::blockInCache(const ocsd_vaddr_t address, const uint32_t reqBytes)
+inline bool TrcMemAccCache::blockInCache(const ocsd_vaddr_t address, const uint32_t reqBytes, const uint8_t trcID)
{
- int tests = MEM_ACC_CACHE_MRU_SIZE;
+ int tests = m_mru_num_pages;
while (tests)
{
- if (blockInPage(address, reqBytes))
+ if (blockInPage(address, reqBytes, trcID))
return true; // found address in page
+#ifdef LOG_CACHE_STATS
+ // miss counts of current page only - to determine if we hit other page
+ if (tests == m_mru_num_pages)
+ m_misses++;
+#endif
+
tests--;
m_mru_idx++;
- if (m_mru_idx == MEM_ACC_CACHE_MRU_SIZE)
+ if (m_mru_idx == m_mru_num_pages)
m_mru_idx = 0;
}
return false;
}
-inline void TrcMemAccCache::invalidateAll()
+// zero out page parameters rendering it empty
+inline void TrcMemAccCache::clearPage(cache_block_t* page)
{
- for (int i = 0; i < MEM_ACC_CACHE_MRU_SIZE; i++)
- {
- m_mru[i].valid_len = 0;
- m_mru[i].st_addr = 0;
- }
- m_mru_idx = 0;
- m_mru_next_new = 0;
+ page->use_sequence = 0;
+ page->st_addr = 0;
+ page->valid_len = 0;
+ page->trcID = OCSD_BAD_CS_SRC_ID;
}
#endif // ARM_TRC_MEM_ACC_CACHE_H_INCLUDED
diff --git a/decoder/include/mem_acc/trc_mem_acc_cb.h b/decoder/include/mem_acc/trc_mem_acc_cb.h
index e58c616..a1785b3 100644
--- a/decoder/include/mem_acc/trc_mem_acc_cb.h
+++ b/decoder/include/mem_acc/trc_mem_acc_cb.h
@@ -45,6 +45,10 @@ public:
const ocsd_vaddr_t e_address,
const ocsd_mem_space_acc_t mem_space);
+ // default constructor
+ TrcMemAccCB();
+
+ void initAccessor(const ocsd_vaddr_t s_address, const ocsd_vaddr_t e_address, const ocsd_mem_space_acc_t mem_space);
virtual ~TrcMemAccCB() {};
diff --git a/decoder/include/mem_acc/trc_mem_acc_mapper.h b/decoder/include/mem_acc/trc_mem_acc_mapper.h
index 4a08498..4d906f2 100644
--- a/decoder/include/mem_acc/trc_mem_acc_mapper.h
+++ b/decoder/include/mem_acc/trc_mem_acc_mapper.h
@@ -84,6 +84,12 @@ public:
// print out the ranges in this mapper.
virtual void logMappedRanges() = 0;
+ // control memory access caching at runtime
+ ocsd_err_t enableCaching(bool bEnable);
+
+ // set cache page size and number of pages (max 16k size, 256 pages)
+ ocsd_err_t setCacheSizes(uint16_t page_size, int num_pages);
+
protected:
virtual bool findAccessor(const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t cs_trace_id) = 0; // set m_acc_curr if found valid range, leave unchanged if not.
virtual bool readFromCurrent(const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t cs_trace_id) = 0;
@@ -103,7 +109,7 @@ protected:
// address spaces common to all sources using this mapper.
-// trace id unused.
+// trace id unused when differentiating accessors - may be used by underlying read operations.
class TrcMemAccMapGlobalSpace : public TrcMemAccMapper
{
public:
diff --git a/decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h b/decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h
index 7838ece..9b6f531 100644
--- a/decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h
+++ b/decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h
@@ -43,6 +43,8 @@
#include "common/ocsd_gen_elem_stack.h"
#include "opencsd/etmv4/trc_etmv4_stack_elem.h"
+#define OCSD_ENV_INSTR_RANGE_LIMIT "OPENCSD_INSTR_RANGE_LIMIT"
+
class TrcStackElem;
class TrcStackElemParam;
class TrcStackElemCtxt;
@@ -130,6 +132,12 @@ private:
WP_NACC
} WP_res_t;
+ /* Optional run limit for decoded instruction range.
+ * Throw error if limit exceeded. Set by env var - use for debugging decode runs
+ * which may be running away due to bad data
+ */
+ int m_num_instr_range_limit;
+
typedef struct {
ocsd_vaddr_t st_addr;
ocsd_vaddr_t en_addr;
diff --git a/decoder/include/opencsd/ocsd_if_types.h b/decoder/include/opencsd/ocsd_if_types.h
index f5ff6ac..9e05416 100644
--- a/decoder/include/opencsd/ocsd_if_types.h
+++ b/decoder/include/opencsd/ocsd_if_types.h
@@ -37,15 +37,7 @@
#include <stdint.h>
#include <stddef.h>
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
-/** VS2010 does not support inttypes - remove when VS2010 support is dropped */
-#define __PRI64_PREFIX "ll"
-#define PRIX64 __PRI64_PREFIX "X"
-#define PRIu64 __PRI64_PREFIX "u"
-#define PRIu32 "u"
-#else
#include <inttypes.h>
-#endif
/** @defgroup ocsd_interfaces OpenCSD Library : Interfaces
@@ -85,61 +77,64 @@ typedef uint32_t ocsd_trc_index_t; /**< Trace source index type - 32 bit size
typedef enum _ocsd_err_t {
/* general return errors */
- OCSD_OK = 0, /**< No Error. */
- OCSD_ERR_FAIL, /**< General systemic failure. */
- OCSD_ERR_MEM, /**< Internal memory allocation error. */
- OCSD_ERR_NOT_INIT, /**< Component not initialised or initialisation failure. */
- OCSD_ERR_INVALID_ID, /**< Invalid CoreSight Trace Source ID. */
- OCSD_ERR_BAD_HANDLE, /**< Invalid handle passed to component. */
- OCSD_ERR_INVALID_PARAM_VAL, /**< Invalid value parameter passed to component. */
- OCSD_ERR_INVALID_PARAM_TYPE, /**< Type mismatch on abstract interface */
- OCSD_ERR_FILE_ERROR, /**< File access error */
- OCSD_ERR_NO_PROTOCOL, /**< Trace protocol unsupported */
+ OCSD_OK = 0, /**< 0 No Error. */
+ OCSD_ERR_FAIL, /**< 1 General systemic failure. */
+ OCSD_ERR_MEM, /**< 2 Internal memory allocation error. */
+ OCSD_ERR_NOT_INIT, /**< 3 Component not initialised or initialisation failure. */
+ OCSD_ERR_INVALID_ID, /**< 4 Invalid CoreSight Trace Source ID. */
+ OCSD_ERR_BAD_HANDLE, /**< 5 Invalid handle passed to component. */
+ OCSD_ERR_INVALID_PARAM_VAL, /**< 6 Invalid value parameter passed to component. */
+ OCSD_ERR_INVALID_PARAM_TYPE, /**< 7 Type mismatch on abstract interface */
+ OCSD_ERR_FILE_ERROR, /**< 8 File access error */
+ OCSD_ERR_NO_PROTOCOL, /**< 9 Trace protocol unsupported */
/* attachment point errors */
- OCSD_ERR_ATTACH_TOO_MANY, /**< Cannot attach - attach device limit reached. */
- OCSD_ERR_ATTACH_INVALID_PARAM, /**< Cannot attach - invalid parameter. */
- OCSD_ERR_ATTACH_COMP_NOT_FOUND,/**< Cannot detach - component not found. */
+ OCSD_ERR_ATTACH_TOO_MANY, /**< 10 Cannot attach - attach device limit reached. */
+ OCSD_ERR_ATTACH_INVALID_PARAM, /**< 11 Cannot attach - invalid parameter. */
+ OCSD_ERR_ATTACH_COMP_NOT_FOUND,/**< 12 Cannot detach - component not found. */
/* source reader errors */
- OCSD_ERR_RDR_FILE_NOT_FOUND, /**< source reader - file not found. */
- OCSD_ERR_RDR_INVALID_INIT, /**< source reader - invalid initialisation parameter. */
- OCSD_ERR_RDR_NO_DECODER, /**< source reader - not trace decoder set. */
+ OCSD_ERR_RDR_FILE_NOT_FOUND, /**< 13 source reader - file not found. */
+ OCSD_ERR_RDR_INVALID_INIT, /**< 14 source reader - invalid initialisation parameter. */
+ OCSD_ERR_RDR_NO_DECODER, /**< 15 source reader - not trace decoder set. */
/* data path errors */
- OCSD_ERR_DATA_DECODE_FATAL, /**< A decoder in the data path has returned a fatal error. */
+ OCSD_ERR_DATA_DECODE_FATAL, /**< 16 A decoder in the data path has returned a fatal error. */
/* frame deformatter errors */
- OCSD_ERR_DFMTR_NOTCONTTRACE, /**< Trace input to deformatter none-continuous */
- OCSD_ERR_DFMTR_BAD_FHSYNC, /**< Bad frame or half frame sync in trace deformatter */
+ OCSD_ERR_DFMTR_NOTCONTTRACE, /**< 17 Trace input to deformatter none-continuous */
+ OCSD_ERR_DFMTR_BAD_FHSYNC, /**< 18 Bad frame or half frame sync in trace deformatter */
/* packet processor errors - protocol issues etc */
- OCSD_ERR_BAD_PACKET_SEQ, /**< Bad packet sequence */
- OCSD_ERR_INVALID_PCKT_HDR, /**< Invalid packet header */
- OCSD_ERR_PKT_INTERP_FAIL, /**< Interpreter failed - cannot recover - bad data or sequence */
+ OCSD_ERR_BAD_PACKET_SEQ, /**< 19 Bad packet sequence */
+ OCSD_ERR_INVALID_PCKT_HDR, /**< 20 Invalid packet header */
+ OCSD_ERR_PKT_INTERP_FAIL, /**< 21 Interpreter failed - cannot recover - bad data or sequence */
/* packet decoder errors */
- OCSD_ERR_UNSUPPORTED_ISA, /**< ISA not supported in decoder. */
- OCSD_ERR_HW_CFG_UNSUPP, /**< Programmed trace configuration not supported by decoder.*/
- OCSD_ERR_UNSUPP_DECODE_PKT, /**< Packet not supported in decoder */
- OCSD_ERR_BAD_DECODE_PKT, /**< reserved or unknown packet in decoder. */
- OCSD_ERR_COMMIT_PKT_OVERRUN, /**< overrun in commit packet stack - tried to commit more than available */
- OCSD_ERR_MEM_NACC, /**< unable to access required memory address */
- OCSD_ERR_RET_STACK_OVERFLOW, /**< internal return stack overflow checks failed - popped more than we pushed. */
+ OCSD_ERR_UNSUPPORTED_ISA, /**< 22 ISA not supported in decoder. */
+ OCSD_ERR_HW_CFG_UNSUPP, /**< 23 Programmed trace configuration not supported by decoder.*/
+ OCSD_ERR_UNSUPP_DECODE_PKT, /**< 24 Packet not supported in decoder */
+ OCSD_ERR_BAD_DECODE_PKT, /**< 25 reserved or unknown packet in decoder. */
+ OCSD_ERR_COMMIT_PKT_OVERRUN, /**< 26 overrun in commit packet stack - tried to commit more than available */
+ OCSD_ERR_MEM_NACC, /**< 27 unable to access required memory address */
+ OCSD_ERR_RET_STACK_OVERFLOW, /**< 28 internal return stack overflow checks failed - popped more than we pushed. */
/* decode tree errors */
- OCSD_ERR_DCDT_NO_FORMATTER, /**< No formatter in use - operation not valid. */
+ OCSD_ERR_DCDT_NO_FORMATTER, /**< 29 No formatter in use - operation not valid. */
/* target memory access errors */
- OCSD_ERR_MEM_ACC_OVERLAP, /**< Attempted to set an overlapping range in memory access map */
- OCSD_ERR_MEM_ACC_FILE_NOT_FOUND, /**< Memory access file could not be opened */
- OCSD_ERR_MEM_ACC_FILE_DIFF_RANGE, /**< Attempt to re-use the same memory access file for a different address range */
- OCSD_ERR_MEM_ACC_RANGE_INVALID, /**< Address range in accessor set to invalid values */
- OCSD_ERR_MEM_ACC_BAD_LEN, /**< Memory accessor returned a bad read length value (larger than requested */
+ OCSD_ERR_MEM_ACC_OVERLAP, /**< 30 Attempted to set an overlapping range in memory access map */
+ OCSD_ERR_MEM_ACC_FILE_NOT_FOUND, /**< 31 Memory access file could not be opened */
+ OCSD_ERR_MEM_ACC_FILE_DIFF_RANGE, /**< 32 Attempt to re-use the same memory access file for a different address range */
+ OCSD_ERR_MEM_ACC_RANGE_INVALID, /**< 33 Address range in accessor set to invalid values */
+ OCSD_ERR_MEM_ACC_BAD_LEN, /**< 34 Memory accessor returned a bad read length value (larger than requested */
/* test errors - errors generated only by the test code, not the library */
- OCSD_ERR_TEST_SNAPSHOT_PARSE, /**< test snapshot file parse error */
- OCSD_ERR_TEST_SNAPSHOT_PARSE_INFO, /**< test snapshot file parse information */
- OCSD_ERR_TEST_SNAPSHOT_READ, /**< test snapshot reader error */
- OCSD_ERR_TEST_SS_TO_DECODER, /**< test snapshot to decode tree conversion error */
+ OCSD_ERR_TEST_SNAPSHOT_PARSE, /**< 35 test snapshot file parse error */
+ OCSD_ERR_TEST_SNAPSHOT_PARSE_INFO, /**< 36 test snapshot file parse information */
+ OCSD_ERR_TEST_SNAPSHOT_READ, /**< 37 test snapshot reader error */
+ OCSD_ERR_TEST_SS_TO_DECODER, /**< 38 test snapshot to decode tree conversion error */
/* decoder registration */
- OCSD_ERR_DCDREG_NAME_REPEAT, /**< attempted to register a decoder with the same name as another one */
- OCSD_ERR_DCDREG_NAME_UNKNOWN, /**< attempted to find a decoder with a name that is not known in the library */
- OCSD_ERR_DCDREG_TYPE_UNKNOWN, /**< attempted to find a decoder with a type that is not known in the library */
- OCSD_ERR_DCDREG_TOOMANY, /**< attempted to register too many custom decoders */
+ OCSD_ERR_DCDREG_NAME_REPEAT, /**< 39 attempted to register a decoder with the same name as another one */
+ OCSD_ERR_DCDREG_NAME_UNKNOWN, /**< 40 attempted to find a decoder with a name that is not known in the library */
+ OCSD_ERR_DCDREG_TYPE_UNKNOWN, /**< 41 attempted to find a decoder with a type that is not known in the library */
+ OCSD_ERR_DCDREG_TOOMANY, /**< 42 attempted to register too many custom decoders */
/* decoder config */
- OCSD_ERR_DCD_INTERFACE_UNUSED, /**< Attempt to connect or use and interface not supported by this decoder. */
+ OCSD_ERR_DCD_INTERFACE_UNUSED, /**< 43 Attempt to connect or use and interface not supported by this decoder. */
+ /* additional errors */
+ OCSD_ERR_INVALID_OPCODE, /**< 44 Opcode found while decoding program memory is illegal */
+ OCSD_ERR_I_RANGE_LIMIT_OVERRUN, /**< 45 An optional limit on consecutive instructions in range during decode has been exceeded. */
/* end marker*/
OCSD_ERR_LAST
} ocsd_err_t;
@@ -431,14 +426,19 @@ typedef struct _ocsd_pe_context {
/** memory space bitfield enum for available security states and exception levels used
when accessing memory. */
typedef enum _ocsd_mem_space_acc_t {
- OCSD_MEM_SPACE_EL1S = 0x1, /**< S EL1/0 */
- OCSD_MEM_SPACE_EL1N = 0x2, /**< NS EL1/0 */
- OCSD_MEM_SPACE_EL2 = 0x4, /**< NS EL2 */
- OCSD_MEM_SPACE_EL3 = 0x8, /**< S EL3 */
- OCSD_MEM_SPACE_EL2S = 0x10, /**< S EL2 */
- OCSD_MEM_SPACE_S = 0x19, /**< Any S */
- OCSD_MEM_SPACE_N = 0x6, /**< Any NS */
- OCSD_MEM_SPACE_ANY = 0x1F, /**< Any sec level / EL - live system use current EL + sec state */
+ OCSD_MEM_SPACE_NONE = 0x0, /**< Mem space unknown / not yet set */
+ OCSD_MEM_SPACE_EL1S = 0x1, /**< Secure EL1/0 */
+ OCSD_MEM_SPACE_EL1N = 0x2, /**< Non Secure EL1/0 */
+ OCSD_MEM_SPACE_EL2 = 0x4, /**< Non Secure EL2 */
+ OCSD_MEM_SPACE_EL3 = 0x8, /**< Secure EL3 */
+ OCSD_MEM_SPACE_EL2S = 0x10, /**< Secure EL2 */
+ OCSD_MEM_SPACE_EL1R = 0x20, /**< Realm EL1/0 */
+ OCSD_MEM_SPACE_EL2R = 0x40, /**< Realm EL2 */
+ OCSD_MEM_SPACE_ROOT = 0x80, /**< Root */
+ OCSD_MEM_SPACE_S = 0x19, /**< Any Secure */
+ OCSD_MEM_SPACE_N = 0x6, /**< Any Non Secure */
+ OCSD_MEM_SPACE_R = 0x60, /**< Any Realm */
+ OCSD_MEM_SPACE_ANY = 0xFF, /**< Any sec level / EL - live system use current EL + sec state */
} ocsd_mem_space_acc_t;
/**
diff --git a/decoder/include/opencsd/ocsd_if_version.h b/decoder/include/opencsd/ocsd_if_version.h
index cefbe6b..284eec3 100644
--- a/decoder/include/opencsd/ocsd_if_version.h
+++ b/decoder/include/opencsd/ocsd_if_version.h
@@ -43,8 +43,8 @@
/** @name Library Versioning
@{*/
#define OCSD_VER_MAJOR 0x1 /**< Library Major Version */
-#define OCSD_VER_MINOR 0x4 /**< Library Minor Version */
-#define OCSD_VER_PATCH 0x1 /**< Library Patch Version */
+#define OCSD_VER_MINOR 0x5 /**< Library Minor Version */
+#define OCSD_VER_PATCH 0x2 /**< 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.4.1" /**< Library Version string */
+#define OCSD_VER_STRING "1.5.2" /**< Library Version string */
#define OCSD_LIB_NAME "OpenCSD Library" /**< Library name string */
#define OCSD_LIB_SHORT_NAME "OCSD" /**< Library Short name string */
/** @}*/
diff --git a/decoder/include/opencsd/trc_gen_elem_types.h b/decoder/include/opencsd/trc_gen_elem_types.h
index 99194d1..0965efc 100644
--- a/decoder/include/opencsd/trc_gen_elem_types.h
+++ b/decoder/include/opencsd/trc_gen_elem_types.h
@@ -133,7 +133,8 @@ typedef struct _ocsd_generic_trace_elem {
uint32_t extended_data:1; /**< 1 if the packet extended data pointer is valid. Allows packet extensions for custom decoders, or additional data payloads for data trace. */
uint32_t has_ts:1; /**< 1 if the packet has an associated timestamp - e.g. SW/STM trace TS+Payload as a single packet */
uint32_t last_instr_cond:1; /**< 1 if the last instruction was conditional */
- uint32_t excep_ret_addr_br_tgt:1; /**< 1 if exception return address (en_addr) is also the target of a taken branch addr from the previous range. */
+ uint32_t excep_ret_addr_br_tgt:1; /**< 1 if exception return address (en_addr) is also the target of a taken branch addr from the previous range. */
+ uint32_t excep_M_tail_chain:1; /**< 1 if the exception is an M class exception with no pref ret address - tail chained or similar */
};
uint32_t flag_bits;
};
diff --git a/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp b/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp
index e68a73f..ce3c326 100644
--- a/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp
+++ b/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp
@@ -631,6 +631,7 @@ ocsd_datapath_resp_t TrcPktDecodeEtmV3::processPHdr()
else
pElem->updateType(OCSD_GEN_TRC_ELEM_ADDR_NACC);
pElem->setAddrStart(m_code_follower.getNaccAddr());
+ pElem->setExceptionNum((uint32_t)m_code_follower.getMemSpaceAccess());
setNeedAddr(true);
m_code_follower.clearNacc(); // we have generated some code for the nacc.
}
diff --git a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
index 89c4505..c557998 100644
--- a/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
+++ b/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp
@@ -241,6 +241,20 @@ void TrcPktDecodeEtmV4I::initDecoder()
m_CSID = 0;
m_IASize64 = false;
+ // set debug range limit - look for debugging env var
+ char* env_var;
+ long env_val;
+
+ m_num_instr_range_limit = 0;
+ if ((env_var = getenv(OCSD_ENV_INSTR_RANGE_LIMIT)) != NULL)
+ {
+ env_val = strtol(env_var, NULL, 0);
+ /* if valid number set limit */
+ if (env_val > 0)
+ m_num_instr_range_limit = env_val;
+
+ }
+
// elements associated with data trace
#ifdef DATA_TRACE_SUPPORTED
m_p0_key_max = 0;
@@ -1383,12 +1397,15 @@ ocsd_err_t TrcPktDecodeEtmV4I::processAtom(const ocsd_atm_val atom)
{
outElem().setType(OCSD_GEN_TRC_ELEM_ADDR_NACC);
outElem().st_addr = m_instr_info.instr_addr;
+ outElem().exception_number = (uint32_t)getCurrMemSpace();
}
}
return err;
}
// Exception processor
+#define M_CLASS_TAIL_ADDR 0xFFFFFFFE
+
ocsd_err_t TrcPktDecodeEtmV4I::processException()
{
ocsd_err_t err;
@@ -1401,6 +1418,7 @@ ocsd_err_t TrcPktDecodeEtmV4I::processException()
ocsd_trc_index_t excep_pkt_index;
WP_res_t WPRes = WP_NOT_FOUND;
bool ETE_resetPkt = false;
+ bool bMTailChain = false;
// grab the exception element off the stack
pExceptElem = dynamic_cast<TrcStackElemExcept *>(m_P0_stack.back()); // get the exception element
@@ -1472,8 +1490,12 @@ ocsd_err_t TrcPktDecodeEtmV4I::processException()
if (!ETE_resetPkt)
{
+ /* check for M class tail chain / deferred exceptions */
+ if (m_config->coreProfile() == profile_CortexM)
+ bMTailChain = (excep_ret_addr == M_CLASS_TAIL_ADDR);
+
// if the preferred return address is not the end of the last output range...
- if (m_instr_info.instr_addr != excep_ret_addr)
+ if ((m_instr_info.instr_addr < excep_ret_addr) && !bMTailChain)
{
bool range_out = false;
instr_range_t addr_range;
@@ -1529,6 +1551,7 @@ ocsd_err_t TrcPktDecodeEtmV4I::processException()
outElem().setType(OCSD_GEN_TRC_ELEM_ADDR_NACC);
outElem().st_addr = m_instr_info.instr_addr;
+ outElem().exception_number = (uint32_t)getCurrMemSpace();
// used the element - need another for the final exception packet.
if ((err = m_out_elem.addElem(excep_pkt_index)))
@@ -1541,7 +1564,13 @@ ocsd_err_t TrcPktDecodeEtmV4I::processException()
// add end address as preferred return address to end addr in element
outElem().en_addr = excep_ret_addr;
+
outElem().excep_ret_addr = 1;
+ if (bMTailChain)
+ {
+ outElem().excep_ret_addr = 0;
+ outElem().excep_M_tail_chain = 1;
+ }
outElem().excep_ret_addr_br_tgt = branch_target;
outElem().exception_number = pExceptElem->getExcepNum();
@@ -1703,6 +1732,7 @@ ocsd_err_t TrcPktDecodeEtmV4I::processSourceAddress()
// can't access - no bytes returned - output nacc.
err = m_out_elem.addElemType(pElem->getRootIndex(), OCSD_GEN_TRC_ELEM_ADDR_NACC);
outElem().setAddrStart(srcAddr.val);
+ outElem().exception_number = (uint32_t)getCurrMemSpace();
return err;
}
@@ -1803,6 +1833,7 @@ ocsd_err_t TrcPktDecodeEtmV4I::processSourceAddress()
if (err)
return err;
outElem().setAddrStart(srcAddr.val);
+ outElem().exception_number = (uint32_t)getCurrMemSpace();
// force range to the one instruction
out_range.num_instr = 1;
@@ -1886,6 +1917,15 @@ ocsd_err_t TrcPktDecodeEtmV4I::traceInstrToWP(instr_range_t &range, WP_res_t &WP
// not enough memory accessible.
WPRes = WP_NACC;
}
+
+ if (m_num_instr_range_limit)
+ {
+ if (range.num_instr > (uint32_t)m_num_instr_range_limit)
+ {
+ err = OCSD_ERR_I_RANGE_LIMIT_OVERRUN;
+ LogError(ocsdError(OCSD_ERR_SEV_ERROR, err, "Decode Instruction Range Limit Overrun"));
+ }
+ }
}
// update the range decoded address in the output packet.
range.en_addr = m_instr_info.instr_addr;
@@ -1959,7 +1999,6 @@ ocsd_err_t TrcPktDecodeEtmV4I::handlePacketErr(ocsd_err_t err, ocsd_err_severity
}
-
inline ocsd_mem_space_acc_t TrcPktDecodeEtmV4I::getCurrMemSpace()
{
static ocsd_mem_space_acc_t SMemSpace[] = {
@@ -1976,12 +2015,37 @@ inline ocsd_mem_space_acc_t TrcPktDecodeEtmV4I::getCurrMemSpace()
OCSD_MEM_SPACE_EL3
};
+ static ocsd_mem_space_acc_t RMemSpace[] = {
+ OCSD_MEM_SPACE_EL1R,
+ OCSD_MEM_SPACE_EL1R,
+ OCSD_MEM_SPACE_EL2R,
+ OCSD_MEM_SPACE_ROOT
+ };
+
/* if no valid EL value - just use S/NS */
if (!outElem().context.el_valid)
return m_is_secure ? OCSD_MEM_SPACE_S : OCSD_MEM_SPACE_N;
-
+
/* mem space according to EL + S/NS */
+ ocsd_mem_space_acc_t mem_space = OCSD_MEM_SPACE_NONE;
int el = (int)(outElem().context.exception_level) & 0x3;
- return m_is_secure ? SMemSpace[el] : NSMemSpace[el];
+
+ switch (outElem().context.security_level)
+ {
+ case ocsd_sec_root:
+ mem_space = OCSD_MEM_SPACE_ROOT;
+ break;
+ case ocsd_sec_realm:
+ mem_space = RMemSpace[el];
+ break;
+ case ocsd_sec_nonsecure:
+ mem_space = NSMemSpace[el];
+ break;
+ case ocsd_sec_secure:
+ mem_space = SMemSpace[el];
+ break;
+ };
+
+ return mem_space;
}
/* End of File trc_pkt_decode_etmv4i.cpp */
diff --git a/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp b/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp
index 825b5f7..8475d7e 100644
--- a/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp
+++ b/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp
@@ -666,7 +666,11 @@ void EtmV4ITrcPacket::contextStr(std::string &ctxtStr) const
std::ostringstream oss;
if(context.updated)
{
- oss << "Ctxt: " << (context.SF ? "AArch64," : "AArch32, ") << "EL" << context.EL << ", " << (context.NS ? "NS; " : "S; ");
+ oss << "Ctxt: " << (context.SF ? "AArch64," : "AArch32, ") << "EL" << context.EL << ", ";
+ if (context.NSE)
+ oss << (context.NS ? "Realm; " : "Root; ");
+ else
+ oss << (context.NS ? "NS; " : "S; ");
if(context.updated_c)
{
oss << "CID=0x" << std::hex << std::setfill('0') << std::setw(8) << context.ctxtID << "; ";
diff --git a/decoder/source/i_dec/trc_i_decode.cpp b/decoder/source/i_dec/trc_i_decode.cpp
index 0e05895..11b70a3 100644
--- a/decoder/source/i_dec/trc_i_decode.cpp
+++ b/decoder/source/i_dec/trc_i_decode.cpp
@@ -36,6 +36,22 @@
#include "i_dec/trc_i_decode.h"
#include "i_dec/trc_idec_arminst.h"
+#include <cstdlib>
+
+TrcIDecode::TrcIDecode() :
+ aa64_err_bad_opcode(false)
+{
+}
+
+void TrcIDecode::envSetAA64_errOnBadOpcode()
+{
+ char* env_var = NULL;
+
+ if ((env_var = getenv(OCSD_ENV_ERR_ON_AA64_BAD_OPCODE)) != NULL)
+ setAA64_errOnBadOpcode(true);
+}
+
+
ocsd_err_t TrcIDecode::DecodeInstruction(ocsd_instr_info *instr_info)
{
ocsd_err_t err = OCSD_OK;
@@ -133,6 +149,10 @@ ocsd_err_t TrcIDecode::DecodeA64(ocsd_instr_info *instr_info, struct decode_info
instr_info->next_isa = instr_info->isa; // assume same ISA
instr_info->is_link = 0;
+ // check for invalid opcode - top 16 bits cannot be 0x0000.
+ if (aa64_err_bad_opcode && !(instr_info->opcode & 0xFFFF0000))
+ return OCSD_ERR_INVALID_OPCODE;
+
if(inst_A64_is_indirect_branch_link(instr_info->opcode, &instr_info->is_link, info))
{
instr_info->type = OCSD_INSTR_BR_INDIRECT;
diff --git a/decoder/source/i_dec/trc_idec_arminst.cpp b/decoder/source/i_dec/trc_idec_arminst.cpp
index 76951fd..c6b20ab 100644
--- a/decoder/source/i_dec/trc_idec_arminst.cpp
+++ b/decoder/source/i_dec/trc_idec_arminst.cpp
@@ -324,6 +324,14 @@ int inst_A64_is_indirect_branch_link(uint32_t inst, uint8_t *is_link, struct dec
} else if ((inst & 0xfffffbff) == 0xd65f0bff) {
/* RETAA, RETAB */
info->instr_sub_type = OCSD_S_INSTR_V8_RET;
+
+ } else if ((inst & 0xffc0001f) == 0x5500001f) {
+ /* RETA<k>SPPC label*/
+ info->instr_sub_type = OCSD_S_INSTR_V8_RET;
+ } else if (((inst & 0xfffffbe0) == 0xd65f0be0) &&
+ ((inst & 0x1f) != 0x1f)) {
+ /* RETA<k>SPPC <register>*/
+ info->instr_sub_type = OCSD_S_INSTR_V8_RET;
} else {
is_indirect_branch = 0;
}
diff --git a/decoder/source/mem_acc/trc_mem_acc_base.cpp b/decoder/source/mem_acc/trc_mem_acc_base.cpp
index 1250bdc..be45b66 100644
--- a/decoder/source/mem_acc/trc_mem_acc_base.cpp
+++ b/decoder/source/mem_acc/trc_mem_acc_base.cpp
@@ -94,16 +94,17 @@ void TrcMemAccFactory::DestroyAccessor(TrcMemAccessorBase *pAccessor)
/* memory access info logging */
-void TrcMemAccessorBase::getMemAccString(std::string &accStr) const
+void TrcMemAccessorBase::getMemAccString(std::string& accStr) const
{
std::ostringstream oss;
+ std::string spaceStr;
- switch(m_type)
+ switch (m_type)
{
case MEMACC_FILE:
oss << "FileAcc; Range::0x";
break;
-
+
case MEMACC_BUFPTR:
oss << "BuffAcc; Range::0x";
break;
@@ -112,37 +113,60 @@ void TrcMemAccessorBase::getMemAccString(std::string &accStr) const
oss << "CB Acc; Range::0x";
break;
- default:
+ default:
oss << "UnknAcc; Range::0x";
break;
}
oss << std::hex << std::setw(2) << std::setfill('0') << m_startAddress << ":" << m_endAddress;
oss << "; Mem Space::";
- switch(m_mem_space)
+ getMemAccSpaceString(spaceStr, m_mem_space);
+ oss << spaceStr;
+
+ accStr = oss.str();
+}
+
+void TrcMemAccessorBase::getMemAccSpaceString(std::string &spaceStr, const ocsd_mem_space_acc_t mem_space)
+{
+ std::ostringstream oss;
+
+ switch(mem_space)
{
case OCSD_MEM_SPACE_EL1S: oss << "EL1S"; break;
case OCSD_MEM_SPACE_EL1N: oss << "EL1N"; break;
- case OCSD_MEM_SPACE_EL2: oss << "EL2"; break;
+ case OCSD_MEM_SPACE_EL2: oss << "EL2N"; break;
case OCSD_MEM_SPACE_EL3: oss << "EL3"; break;
+ case OCSD_MEM_SPACE_EL2S: oss << "EL2S"; break;
+ case OCSD_MEM_SPACE_EL1R: oss << "EL1R"; break;
+ case OCSD_MEM_SPACE_EL2R: oss << "EL2R"; break;
+ case OCSD_MEM_SPACE_ROOT: oss << "Root"; break;
case OCSD_MEM_SPACE_S: oss << "Any S"; break;
case OCSD_MEM_SPACE_N: oss << "Any NS"; break;
+ case OCSD_MEM_SPACE_R: oss << "Any R"; break;
case OCSD_MEM_SPACE_ANY: oss << "Any"; break;
default:
{
- uint8_t MSBits = (uint8_t)m_mem_space;
+ uint8_t MSBits = (uint8_t)mem_space;
if(MSBits & (uint8_t)OCSD_MEM_SPACE_EL1S)
oss << "EL1S,";
if(MSBits & (uint8_t)OCSD_MEM_SPACE_EL1N)
oss << "EL1N,";
if(MSBits & (uint8_t)OCSD_MEM_SPACE_EL2)
- oss << "EL2,";
+ oss << "EL2N,";
if(MSBits & (uint8_t)OCSD_MEM_SPACE_EL3)
oss << "EL3,";
+ if (MSBits & (uint8_t)OCSD_MEM_SPACE_EL2S)
+ oss << "EL2S,";
+ if (MSBits & (uint8_t)OCSD_MEM_SPACE_EL1R)
+ oss << "EL1R,";
+ if (MSBits & (uint8_t)OCSD_MEM_SPACE_EL2R)
+ oss << "EL2R,";
+ if (MSBits & (uint8_t)OCSD_MEM_SPACE_ROOT)
+ oss << "Root,";
}
break;
}
- accStr = oss.str();
+ spaceStr = oss.str();
}
/* End of File trc_mem_acc_base.cpp */
diff --git a/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp b/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp
index 7ecd3b0..3f5c2df 100644
--- a/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp
+++ b/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp
@@ -41,9 +41,24 @@ TrcMemAccBufPtr::TrcMemAccBufPtr(const ocsd_vaddr_t s_address, const uint8_t *p_
{
}
+TrcMemAccBufPtr::TrcMemAccBufPtr() :
+ TrcMemAccessorBase(MEMACC_BUFPTR), m_p_buffer(0)
+{
+}
+
+void TrcMemAccBufPtr::initAccessor(const ocsd_vaddr_t s_address, const uint8_t* p_buffer, const uint32_t size)
+{
+ m_p_buffer = p_buffer;
+ setRange(s_address, s_address + size - 1);
+}
+
const uint32_t TrcMemAccBufPtr::readBytes(const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t trcID, const uint32_t reqBytes, uint8_t *byteBuffer)
{
- // mapper wlll filter memory spaces.
+ // no buffer - nothing to read.
+ if (!m_p_buffer)
+ return 0;
+
+ // mapper will filter memory spaces.
uint32_t bytesRead = bytesInRange(address,reqBytes); // check bytes available
if(bytesRead)
memcpy(byteBuffer,m_p_buffer+address-m_startAddress,bytesRead);
diff --git a/decoder/source/mem_acc/trc_mem_acc_cache.cpp b/decoder/source/mem_acc/trc_mem_acc_cache.cpp
index 444314e..903ab73 100644
--- a/decoder/source/mem_acc/trc_mem_acc_cache.cpp
+++ b/decoder/source/mem_acc/trc_mem_acc_cache.cpp
@@ -59,42 +59,237 @@
#endif
// uncomment to log cache ops
-//#define LOG_CACHE_OPS
+// #define LOG_CACHE_OPS
+
+ocsd_err_t TrcMemAccCache::createCaches()
+{
+ if (m_mru)
+ destroyCaches();
+ m_mru = (cache_block_t*) new (std::nothrow) cache_block_t[m_mru_num_pages];
+ if (!m_mru)
+ return OCSD_ERR_MEM;
+ for (int i = 0; i < m_mru_num_pages; i++) {
+ m_mru[i].data = new (std::nothrow) uint8_t[m_mru_page_size];
+ if (!m_mru[i].data)
+ return OCSD_ERR_MEM;
+ clearPage(&m_mru[i]);
+ }
+#ifdef LOG_CACHE_STATS
+ m_hit_rl = (uint32_t *) new (std::nothrow) uint32_t[m_mru_num_pages];
+ m_hit_rl_max = (uint32_t*) new (std::nothrow) uint32_t[m_mru_num_pages];
+ if (!m_hit_rl || !m_hit_rl_max)
+ return OCSD_ERR_MEM;
+ for (int j = 0; j < m_mru_num_pages; j++) {
+ m_hit_rl[j] = 0;
+ m_hit_rl_max[j] = 0;
+ }
+#endif
+
+ return OCSD_OK;
+}
+
+void TrcMemAccCache::destroyCaches()
+{
+ if (m_mru) {
+ for (int i = 0; i < m_mru_num_pages; i++)
+ delete[] m_mru[i].data;
+ delete[] m_mru;
+ m_mru = 0;
+ }
+#ifdef LOG_CACHE_STATS
+ if (m_hit_rl)
+ delete[] m_hit_rl;
+ if (m_hit_rl_max)
+ delete[] m_hit_rl_max;
+ m_hit_rl = 0;
+ m_hit_rl_max = 0;
+#endif
+
+}
+
+void TrcMemAccCache::getenvMemaccCacheSizes(bool& enable, int& page_size, int& num_pages)
+{
+ char* env_var;
+ long env_val;
+
+ /* set defaults */
+ enable = true;
+ page_size = MEM_ACC_CACHE_DEFAULT_PAGE_SIZE;
+ num_pages = MEM_ACC_CACHE_DEFAULT_MRU_SIZE;
+
+ /* check environment for adjustments */
+
+ /* override the default on switch? if so no need to look further */
+ if ((env_var = getenv(OCSD_ENV_MEMACC_CACHE_OFF)) != NULL)
+ {
+ enable = false;
+ return;
+ }
+
+ /* check for tweak in page size */
+ if ((env_var = getenv(OCSD_ENV_MEMACC_CACHE_PG_SIZE)) != NULL)
+ {
+ env_val = strtol(env_var, NULL, 0);
+ /*
+ * if no valid conversion then env_val = 0,
+ * otherwise set val and allow TrcMemAccCache::setCacheSizes
+ * fn to ensure the value in bounds
+ */
+ if (env_val > 0)
+ page_size = (int)env_val;
+ }
+
+ /* check for tweak in number of pages */
+ if ((env_var = getenv(OCSD_ENV_MEMACC_CACHE_PG_NUM)) != NULL)
+ {
+ env_val = strtol(env_var, NULL, 0);
+ /*
+ * if no valid conversion then env_val = 0,
+ * otherwise set val and allow TrcMemAccCache::setCacheSizes
+ * fn to ensure the value in bounds
+ */
+ if (env_val > 0)
+ num_pages = (int)env_val;
+ }
+
+}
+
+ocsd_err_t TrcMemAccCache::enableCaching(bool bEnable)
+{
+ ocsd_err_t err = OCSD_OK;
+
+ if (bEnable)
+ err = createCaches();
+ else
+ destroyCaches();
+ m_bCacheEnabled = bEnable;
+
+ return err;
+}
+
+ocsd_err_t TrcMemAccCache::setCacheSizes(const uint16_t page_size, const int nr_pages)
+{
+ /* remove any caches with the existing sizes */
+ destroyCaches();
+
+ /* set page size within Max/Min range */
+ if (page_size > MEM_ACC_CACHE_PAGE_SIZE_MAX)
+ m_mru_page_size = MEM_ACC_CACHE_PAGE_SIZE_MAX;
+ else if (page_size < MEM_ACC_CACHE_PAGE_SIZE_MIN)
+ m_mru_page_size = MEM_ACC_CACHE_PAGE_SIZE_MIN;
+ else
+ m_mru_page_size = page_size;
+
+ /* set num pages within max/min range */
+ if (nr_pages > MEM_ACC_CACHE_MRU_SIZE_MAX)
+ m_mru_num_pages = MEM_ACC_CACHE_MRU_SIZE_MAX;
+ else if (nr_pages < MEM_ACC_CACHE_MRU_SIZE_MIN)
+ m_mru_num_pages = MEM_ACC_CACHE_MRU_SIZE_MIN;
+ else
+ m_mru_num_pages = nr_pages;
+
+ /* re-create with new sizes */
+ return createCaches();
+}
+
+/* return index of unused page, or oldest used page by sequence number */
+int TrcMemAccCache::findNewPage()
+{
+ uint32_t oldest_seq;
+ int current_idx, oldest_idx;
+#ifdef LOG_CACHE_OPS
+ std::ostringstream oss;
+#endif
+
+ /* set up search indexes and check the current search index has not wrapped. */
+ current_idx = m_mru_idx + 1;
+ oldest_idx = m_mru_idx;
+ oldest_seq = 0;
+ if (current_idx >= m_mru_num_pages)
+ current_idx = 0;
+
+ /* search forwards from m_mru_idx + 1 until we wrap and hit the index again */
+ while (current_idx != m_mru_idx) {
+ if (m_mru[current_idx].use_sequence == 0) {
+#ifdef LOG_CACHE_OPS
+ oss << "TrcMemAccCache:: ALI-allocate clean page: [page: " << std::dec << current_idx << "]\n";
+ logMsg(oss.str());
+#endif
+ return current_idx;
+ }
+
+ // if we find a page with a lower use sequence, that is older.
+ if ((oldest_seq == 0) || (oldest_seq > m_mru[current_idx].use_sequence)) {
+ oldest_seq = m_mru[current_idx].use_sequence;
+ oldest_idx = current_idx;
+ }
+
+ current_idx++;
+
+ // wrap around?
+ if (current_idx >= m_mru_num_pages)
+ current_idx = 0;
+ }
+#ifdef LOG_CACHE_OPS
+ oss << "TrcMemAccCache:: ALI-evict and allocate old page: [page: " << std::dec << oldest_idx << "]\n";
+ logMsg(oss.str());
+#endif
+ return oldest_idx;
+}
+
+void TrcMemAccCache::incSequence()
+{
+ m_mru[m_mru_idx].use_sequence = m_mru_sequence++;
+ if (m_mru_sequence == 0) {
+ // wrapped which throws out the oldest algorithm - oldest will now appear newer - so not evicted.
+ // arbitrarily re-sequence all in use..
+ m_mru_sequence = 1;
+ for (int i = 0; i < m_mru_num_pages; i++)
+ if (m_mru[i].use_sequence != 0)
+ m_mru[i].use_sequence = m_mru_sequence++;
+
+ // ensure newest still newest...
+ m_mru[m_mru_idx].use_sequence = m_mru_sequence++;
+ }
+}
ocsd_err_t TrcMemAccCache::readBytesFromCache(TrcMemAccessorBase *p_accessor, const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t trcID, uint32_t *numBytes, uint8_t *byteBuffer)
{
uint32_t bytesRead = 0, reqBytes = *numBytes;
ocsd_err_t err = OCSD_OK;
+
#ifdef LOG_CACHE_OPS
std::ostringstream oss;
+ std::string memSpaceStr;
#endif
if (m_bCacheEnabled)
{
- if (blockInCache(address, reqBytes))
+ if (blockInCache(address, reqBytes, trcID))
{
bytesRead = reqBytes;
memcpy(byteBuffer, &m_mru[m_mru_idx].data[address - m_mru[m_mru_idx].st_addr], reqBytes);
+ incSequence();
#ifdef LOG_CACHE_OPS
- oss << "TrcMemAccCache:: hit [page: " << std::dec << m_mru_idx << "[addr:0x" << std::hex << address << ", bytes: " << std::dec << reqBytes << "]\n";
+ oss << "TrcMemAccCache:: hit {page: " << std::dec << m_mru_idx << "; seq: " << m_mru[m_mru_idx].use_sequence << " CSID: " << std::hex << (int)m_mru[m_mru_idx].trcID;
+ oss << "} [addr:0x" << std::hex << address << ", bytes: " << std::dec << reqBytes << "]\n";
logMsg(oss.str());
#endif
INC_HITS_RL(m_mru_idx);
}
else
{
- INC_MISS();
#ifdef LOG_CACHE_OPS
oss << "TrcMemAccCache:: miss [addr:0x" << std::hex << address << ", bytes: " << std::dec << reqBytes << "]\n";
logMsg(oss.str());
#endif
/* need a new cache page - check the underlying accessor for the data */
- m_mru_idx = m_mru_next_new;
- m_mru[m_mru_idx].valid_len = p_accessor->readBytes(address, mem_space, trcID, MEM_ACC_CACHE_PAGE_SIZE, &m_mru[m_mru_idx].data[0]);
+ m_mru_idx = findNewPage();
+ m_mru[m_mru_idx].valid_len = p_accessor->readBytes(address, mem_space, trcID, m_mru_page_size, &m_mru[m_mru_idx].data[0]);
/* check return length valid - v bad if return length more than request */
- if (m_mru[m_mru_idx].valid_len > MEM_ACC_CACHE_PAGE_SIZE)
+ if (m_mru[m_mru_idx].valid_len > m_mru_page_size)
{
m_mru[m_mru_idx].valid_len = 0; // set to nothing returned.
err = OCSD_ERR_MEM_ACC_BAD_LEN;
@@ -102,25 +297,24 @@ ocsd_err_t TrcMemAccCache::readBytesFromCache(TrcMemAccessorBase *p_accessor, co
if (m_mru[m_mru_idx].valid_len > 0)
{
- // got some data - so save the
+ // got some data - so save the details
m_mru[m_mru_idx].st_addr = address;
+ m_mru[m_mru_idx].trcID = trcID;
+ incSequence();
// log the run length hit counts
SET_MAX_RL(m_mru_idx);
#ifdef LOG_CACHE_OPS
+ TrcMemAccessorBase::getMemAccSpaceString(memSpaceStr, mem_space);
oss.str("");
- oss << "TrcMemAccCache:: load [page: " << std::dec << m_mru_idx << "[addr:0x" << std::hex << address << ", bytes: " << std::dec << m_mru[m_mru_idx].valid_len << "]\n";
+ oss << "TrcMemAccCache:: ALI-load {page: " << std::dec << m_mru_idx << "; seq: " << m_mru[m_mru_idx].use_sequence << " CSID: " << std::hex << (int)m_mru[m_mru_idx].trcID;
+ oss << "} [mem space: " << memSpaceStr << ", addr:0x" << std::hex << address << ", bytes: " << std::dec << m_mru[m_mru_idx].valid_len << "]\n";
logMsg(oss.str());
#endif
- INC_PAGES();
-
- // increment the next new page counter.
- m_mru_next_new++;
- if (m_mru_next_new == MEM_ACC_CACHE_MRU_SIZE)
- m_mru_next_new = 0;
+ INC_PAGES();
- if (blockInPage(address, reqBytes)) /* check we got the data we needed */
+ if (blockInPage(address, reqBytes, trcID)) /* check we got the data we needed */
{
bytesRead = reqBytes;
memcpy(byteBuffer, &m_mru[m_mru_idx].data[address - m_mru[m_mru_idx].st_addr], reqBytes);
@@ -130,7 +324,7 @@ ocsd_err_t TrcMemAccCache::readBytesFromCache(TrcMemAccessorBase *p_accessor, co
{
#ifdef LOG_CACHE_OPS
oss.str("");
- oss << "TrcMemAccCache:: miss-after-load [page: " << std::dec << m_mru_idx << "[addr:0x" << std::hex << address << ", bytes: " << std::dec << m_mru[m_mru_idx].valid_len << "]\n";
+ oss << "TrcMemAccCache:: miss-after-load {page: " << std::dec << m_mru_idx << " } [addr:0x" << std::hex << address << ", bytes: " << std::dec << m_mru[m_mru_idx].valid_len << "]\n";
logMsg(oss.str());
#endif
INC_MISS();
@@ -142,6 +336,42 @@ ocsd_err_t TrcMemAccCache::readBytesFromCache(TrcMemAccessorBase *p_accessor, co
return err;
}
+void TrcMemAccCache::invalidateAll()
+{
+#ifdef LOG_CACHE_OPS
+ std::ostringstream oss;
+ oss << "TrcMemAccCache:: ALI-invalidate All\n";
+ logMsg(oss.str());
+#endif
+
+ for (int i = 0; i < m_mru_num_pages; i++)
+ clearPage(&m_mru[i]);
+ m_mru_idx = 0;
+}
+
+void TrcMemAccCache::invalidateByTraceID(int8_t trcID)
+{
+#ifdef LOG_CACHE_OPS
+ std::ostringstream oss;
+ oss << "TrcMemAccCache:: ALI-invalidate by ID request {CSID: " << std::hex << (int)trcID << "}\n";
+ logMsg(oss.str());
+#endif
+
+ for (int i = 0; i < m_mru_num_pages; i++)
+ {
+ if (m_mru[i].trcID == trcID)
+ {
+#ifdef LOG_CACHE_OPS
+ oss.str("");
+ oss << "TrcMemAccCache:: ALI-invalidate page {page: " << std::dec << i << "; seq: " << m_mru[i].use_sequence << " CSID: " << std::hex << (int)m_mru[i].trcID;
+ oss << "} [addr:0x" << std::hex << m_mru[i].st_addr << ", bytes: " << std::dec << m_mru[i].valid_len << "]\n";
+ logMsg(oss.str());
+#endif
+ clearPage(&m_mru[i]);
+ }
+ }
+}
+
void TrcMemAccCache::logMsg(const std::string &szMsg)
{
if (m_err_log)
@@ -158,9 +388,10 @@ void TrcMemAccCache::logAndClearCounts()
#ifdef LOG_CACHE_STATS
std::ostringstream oss;
- oss << "TrcMemAccCache:: cache performance: hits(" << std::dec << m_hits << "), miss(" << m_misses << "), pages(" << m_pages << ")\n";
+ oss << "TrcMemAccCache:: cache performance: Page Size: 0x" << std::hex << m_mru_page_size << "; Number of Pages: " << std::dec << m_mru_num_pages << "\n";
+ oss << "Cache hits(" << std::dec << m_hits << "), misses(" << m_misses << "), new pages(" << m_pages << ")\n";
logMsg(oss.str());
- for (int i = 0; i < MEM_ACC_CACHE_MRU_SIZE; i++)
+ for (int i = 0; i < m_mru_num_pages; i++)
{
if (m_hit_rl_max[i] < m_hit_rl[i])
m_hit_rl_max[i] = m_hit_rl[i];
@@ -172,5 +403,4 @@ void TrcMemAccCache::logAndClearCounts()
#endif
}
-
/* End of File trc_mem_acc_cache.cpp */
diff --git a/decoder/source/mem_acc/trc_mem_acc_cb.cpp b/decoder/source/mem_acc/trc_mem_acc_cb.cpp
index 1a1565b..6435415 100644
--- a/decoder/source/mem_acc/trc_mem_acc_cb.cpp
+++ b/decoder/source/mem_acc/trc_mem_acc_cb.cpp
@@ -18,6 +18,19 @@ TrcMemAccCB::TrcMemAccCB(const ocsd_vaddr_t s_address,
setMemSpace(mem_space);
}
+TrcMemAccCB::TrcMemAccCB() :
+ TrcMemAccessorBase(MEMACC_CB_IF),
+ m_p_CBclass(0),
+ m_p_CBfn(0),
+ m_p_cbfn_context(0)
+{};
+
+void TrcMemAccCB::initAccessor(const ocsd_vaddr_t s_address, const ocsd_vaddr_t e_address, const ocsd_mem_space_acc_t mem_space)
+{
+ setRange(s_address, e_address);
+ setMemSpace(mem_space);
+}
+
/** Memory access override - allow decoder to read bytes from the buffer. */
const uint32_t TrcMemAccCB::readBytes(const ocsd_vaddr_t address, const ocsd_mem_space_acc_t memSpace, const uint8_t trcID, const uint32_t reqBytes, uint8_t *byteBuffer)
{
diff --git a/decoder/source/mem_acc/trc_mem_acc_mapper.cpp b/decoder/source/mem_acc/trc_mem_acc_mapper.cpp
index dc07a1e..9327f56 100644
--- a/decoder/source/mem_acc/trc_mem_acc_mapper.cpp
+++ b/decoder/source/mem_acc/trc_mem_acc_mapper.cpp
@@ -40,17 +40,12 @@
/* mappers base class */
/************************************************************************************/
-#define USING_MEM_ACC_CACHE
-
TrcMemAccMapper::TrcMemAccMapper() :
m_acc_curr(0),
m_trace_id_curr(0),
m_using_trace_id(false),
m_err_log(0)
{
-#ifdef USING_MEM_ACC_CACHE
- m_cache.enableCaching(true);
-#endif
}
TrcMemAccMapper::TrcMemAccMapper(bool using_trace_id) :
@@ -59,9 +54,6 @@ TrcMemAccMapper::TrcMemAccMapper(bool using_trace_id) :
m_using_trace_id(using_trace_id),
m_err_log(0)
{
-#ifdef USING_MEM_ACC_CACHE
- m_cache.enableCaching(true);
-#endif
}
TrcMemAccMapper::~TrcMemAccMapper()
@@ -74,6 +66,17 @@ void TrcMemAccMapper::setErrorLog(ITraceErrorLog *err_log_i)
m_cache.setErrorLog(err_log_i);
}
+ocsd_err_t TrcMemAccMapper::enableCaching(bool bEnable)
+{
+ return m_cache.enableCaching(bEnable);
+}
+
+// set cache page size and number of pages (max 4096 size, 256 pages)
+ocsd_err_t TrcMemAccMapper::setCacheSizes(uint16_t page_size, int num_pages)
+{
+ return m_cache.setCacheSizes(page_size, num_pages);
+}
+
// memory access interface
ocsd_err_t TrcMemAccMapper::ReadTargetMemory(const ocsd_vaddr_t address, const uint8_t cs_trace_id, const ocsd_mem_space_acc_t mem_space, uint32_t *num_bytes, uint8_t *p_buffer)
{
@@ -88,7 +91,7 @@ ocsd_err_t TrcMemAccMapper::ReadTargetMemory(const ocsd_vaddr_t address, const u
// found a new accessor - invalidate any cache entries used by the previous one.
if (m_cache.enabled() && bReadFromCurr)
- m_cache.invalidateAll();
+ m_cache.invalidateByTraceID(cs_trace_id);
}
/* if bReadFromCurr then we know m_acc_curr is set */
@@ -119,28 +122,20 @@ ocsd_err_t TrcMemAccMapper::ReadTargetMemory(const ocsd_vaddr_t address, const u
return err;
}
-void TrcMemAccMapper::InvalidateMemAccCache(const uint8_t /* cs_trace_id */)
-{
- // default mapper does not use cs_trace_id for cache invalidation.
+void TrcMemAccMapper::InvalidateMemAccCache(const uint8_t cs_trace_id)
+{
if (m_cache.enabled())
- m_cache.invalidateAll();
- m_acc_curr = 0;
+ m_cache.invalidateByTraceID(cs_trace_id);
}
void TrcMemAccMapper::RemoveAllAccessors()
{
- TrcMemAccessorBase *pAcc = 0;
- pAcc = getFirstAccessor();
- while(pAcc != 0)
- {
- TrcMemAccFactory::DestroyAccessor(pAcc);
- pAcc = getNextAccessor();
- if (m_cache.enabled())
- m_cache.invalidateAll();
- }
clearAccessorList();
- if (m_cache.enabled())
+ if (m_cache.enabled())
+ {
+ m_cache.invalidateAll();
m_cache.logAndClearCounts();
+ }
}
ocsd_err_t TrcMemAccMapper::RemoveAccessorByAddress(const ocsd_vaddr_t st_address, const ocsd_mem_space_acc_t mem_space, const uint8_t cs_trace_id /* = 0 */)
@@ -151,12 +146,13 @@ ocsd_err_t TrcMemAccMapper::RemoveAccessorByAddress(const ocsd_vaddr_t st_addres
err = RemoveAccessor(m_acc_curr);
m_acc_curr = 0;
if (m_cache.enabled())
+ {
m_cache.invalidateAll();
+ m_cache.logAndClearCounts();
+ }
}
else
- err = OCSD_ERR_INVALID_PARAM_VAL;
- if (m_cache.enabled())
- m_cache.logAndClearCounts();
+ err = OCSD_ERR_INVALID_PARAM_VAL;
return err;
}
@@ -175,7 +171,6 @@ void TrcMemAccMapper::LogWarn(const ocsd_err_t err, const std::string &msg)
}
}
-
/************************************************************************************/
/* mappers global address space class - no differentiation in core trace IDs */
/************************************************************************************/
@@ -267,6 +262,7 @@ TrcMemAccessorBase *TrcMemAccMapGlobalSpace::getNextAccessor()
void TrcMemAccMapGlobalSpace::clearAccessorList()
{
m_acc_global.clear();
+ m_acc_curr = 0;
}
ocsd_err_t TrcMemAccMapGlobalSpace::RemoveAccessor(const TrcMemAccessorBase *p_accessor)
@@ -278,9 +274,15 @@ ocsd_err_t TrcMemAccMapGlobalSpace::RemoveAccessor(const TrcMemAccessorBase *p_a
if(p_acc == p_accessor)
{
m_acc_global.erase(m_acc_it);
- TrcMemAccFactory::DestroyAccessor(p_acc);
p_acc = 0;
bFound = true;
+ if (m_cache.enabled())
+ {
+ m_cache.invalidateAll();
+ m_cache.logAndClearCounts();
+ }
+ if (m_acc_curr == p_accessor)
+ m_acc_curr = 0;
}
else
p_acc = getNextAccessor();
diff --git a/decoder/source/ocsd_dcd_tree.cpp b/decoder/source/ocsd_dcd_tree.cpp
index 49ceb92..d2c5105 100644
--- a/decoder/source/ocsd_dcd_tree.cpp
+++ b/decoder/source/ocsd_dcd_tree.cpp
@@ -51,13 +51,14 @@ DecodeTree *DecodeTree::CreateDecodeTree(const ocsd_dcd_tree_src_t src_type, uin
if(dcd_tree->initialise(src_type, formatterCfgFlags))
{
s_trace_dcd_trees.push_back(dcd_tree);
+ s_instruction_decoder.envSetAA64_errOnBadOpcode();
}
else
{
delete dcd_tree;
dcd_tree = 0;
}
- }
+ }
return dcd_tree;
}
@@ -195,9 +196,17 @@ ocsd_err_t DecodeTree::createMemAccMapper(memacc_mapper_t type /* = MEMACC_MAP_G
// set the access interface
if(m_default_mapper)
{
+ bool enableCaching;
+ int cachePageSize, cachePageNum;
+
+
m_created_mapper = true;
setMemAccessI(m_default_mapper);
m_default_mapper->setErrorLog(s_i_error_logger);
+ TrcMemAccCache::getenvMemaccCacheSizes(enableCaching, cachePageSize, cachePageNum);
+ if ((m_default_mapper->setCacheSizes(cachePageSize, cachePageNum) != OCSD_OK) ||
+ (m_default_mapper->enableCaching(enableCaching) != OCSD_OK))
+ destroyMemAccMapper();
}
return (m_default_mapper != 0) ? OCSD_OK : OCSD_ERR_MEM;
diff --git a/decoder/source/ocsd_error.cpp b/decoder/source/ocsd_error.cpp
index ee01064..3aee372 100644
--- a/decoder/source/ocsd_error.cpp
+++ b/decoder/source/ocsd_error.cpp
@@ -91,8 +91,12 @@ static const char *s_errorCodeDescs[][2] = {
{"OCSD_ERR_DCDREG_NAME_REPEAT","Attempted to register a decoder with the same name as another one."},
{"OCSD_ERR_DCDREG_NAME_UNKNOWN","Attempted to find a decoder with a name that is not known in the library."},
{"OCSD_ERR_DCDREG_TYPE_UNKNOWN","Attempted to find a decoder with a type that is not known in the library."},
+ {"OCSD_ERR_DCDREG_TOOMANY","Attempted to register too many custom decoders"},
/* decoder config */
{"OCSD_ERR_DCD_INTERFACE_UNUSED","Attempt to connect or use and interface not supported by this decoder."},
+ /* additional errors */
+ {"OCSD_ERR_INVALID_OPCODE","Illegal Opode found while decoding program memory."},
+ {"OCSD_ERR_I_RANGE_LIMIT_OVERRUN","An optional limit on consecutive instructions in range during decode has been exceeded."},
/* end marker*/
{"OCSD_ERR_LAST", "No error - error code end marker"}
};
diff --git a/decoder/source/ptm/trc_pkt_decode_ptm.cpp b/decoder/source/ptm/trc_pkt_decode_ptm.cpp
index 7abee84..d986ead 100644
--- a/decoder/source/ptm/trc_pkt_decode_ptm.cpp
+++ b/decoder/source/ptm/trc_pkt_decode_ptm.cpp
@@ -497,6 +497,8 @@ ocsd_datapath_resp_t TrcPktDecodePtm::processAtom()
{
m_output_elem.setType(OCSD_GEN_TRC_ELEM_ADDR_NACC);
m_output_elem.st_addr = m_nacc_addr;
+ // exception number used to NACC mem space.
+ m_output_elem.exception_number = (uint32_t)((m_pe_context.security_level == ocsd_sec_secure) ? OCSD_MEM_SPACE_S : OCSD_MEM_SPACE_N);
resp = outputTraceElementIdx(m_index_curr_pkt,m_output_elem);
m_mem_nacc_pending = false;
}
diff --git a/decoder/source/stm/trc_pkt_decode_stm.cpp b/decoder/source/stm/trc_pkt_decode_stm.cpp
index 1bb8d73..1a99869 100644
--- a/decoder/source/stm/trc_pkt_decode_stm.cpp
+++ b/decoder/source/stm/trc_pkt_decode_stm.cpp
@@ -142,6 +142,8 @@ void TrcPktDecodeStm::resetDecoder()
m_payload_odd_nibble = false;
m_output_elem.init();
m_swt_packet_info.swt_flag_bits = 0; // zero out everything
+ m_swt_packet_info.swt_master_id = 0;
+ m_swt_packet_info.swt_channel_id = 0;
initPayloadBuffer();
}
@@ -174,7 +176,11 @@ ocsd_datapath_resp_t TrcPktDecodeStm::decodePacket(bool &bPktDone)
resetDecoder();
break;
- case STM_PKT_VERSION: /**< Version packet - not relevant to generic (versionless) o/p */
+ case STM_PKT_VERSION: /**< Version packet - no output but forces current IDs to 0 */
+ m_swt_packet_info.swt_master_id = m_curr_packet_in->getMaster();
+ m_swt_packet_info.swt_channel_id = m_curr_packet_in->getChannel();
+ break;
+
case STM_PKT_ASYNC: /**< Alignment synchronisation packet */
case STM_PKT_INCOMPLETE_EOT: /**< Incomplete packet flushed at end of trace. */
// no action required.
@@ -216,7 +222,7 @@ ocsd_datapath_resp_t TrcPktDecodeStm::decodePacket(bool &bPktDone)
m_swt_packet_info.swt_id_valid = 1;
break;
- case STM_PKT_C8: /**< Set lower 8 bits of current channel - packet proc hadnles this */
+ case STM_PKT_C8: /**< Set lower 8 bits of current channel - packet proc handles this */
case STM_PKT_C16: /**< Set current channel */
m_swt_packet_info.swt_channel_id = m_curr_packet_in->getChannel();
break;
diff --git a/decoder/source/stm/trc_pkt_proc_stm.cpp b/decoder/source/stm/trc_pkt_proc_stm.cpp
index b39a053..a464dcb 100644
--- a/decoder/source/stm/trc_pkt_proc_stm.cpp
+++ b/decoder/source/stm/trc_pkt_proc_stm.cpp
@@ -969,10 +969,10 @@ uint64_t TrcPktProcStm::bin_to_gray(uint64_t bin_value)
uint64_t TrcPktProcStm::gray_to_bin(uint64_t gray_value)
{
uint64_t bin_value = 0;
- int bin_bit = 0;
+ uint64_t bin_bit = 0;
for (; bin_bit < 64; bin_bit++) {
- uint8_t bit_tmp = ((1ull << bin_bit) & gray_value) >> bin_bit;
- uint8_t gray_bit = bin_bit + 1;
+ uint64_t bit_tmp = ((1ull << bin_bit) & gray_value) >> bin_bit;
+ uint64_t gray_bit = bin_bit + 1;
for (; gray_bit < 64; gray_bit++)
bit_tmp ^= (((1ull << gray_bit) & gray_value) >> gray_bit);
diff --git a/decoder/source/trc_gen_elem.cpp b/decoder/source/trc_gen_elem.cpp
index c94c5a7..b9894d9 100644
--- a/decoder/source/trc_gen_elem.cpp
+++ b/decoder/source/trc_gen_elem.cpp
@@ -33,6 +33,7 @@
*/
#include "common/trc_gen_elem.h"
+#include "mem_acc/trc_mem_acc_base.h"
#include <string>
#include <sstream>
@@ -125,6 +126,8 @@ void OcsdTraceElement::toString(std::string &str) const
std::ostringstream oss;
int num_str = sizeof(s_elem_descs) / sizeof(s_elem_descs[0]);
int typeIdx = (int)this->elem_type;
+ std::string strEx;
+
if(typeIdx < num_str)
{
oss << s_elem_descs[typeIdx][0] << "(";
@@ -145,7 +148,9 @@ void OcsdTraceElement::toString(std::string &str) const
break;
case OCSD_GEN_TRC_ELEM_ADDR_NACC:
- oss << " 0x" << std::hex << st_addr << " ";
+ // exception number overridden to give mem space associated with NACC result.
+ TrcMemAccessorBase::getMemAccSpaceString(strEx, (ocsd_mem_space_acc_t)exception_number);
+ oss << " 0x" << std::hex << st_addr << "; Memspace [0x" << exception_number << ":" << strEx << "] ";
break;
case OCSD_GEN_TRC_ELEM_I_RANGE_NOPATH:
diff --git a/decoder/source/trc_printable_elem.cpp b/decoder/source/trc_printable_elem.cpp
index 2b60c03..b933981 100644
--- a/decoder/source/trc_printable_elem.cpp
+++ b/decoder/source/trc_printable_elem.cpp
@@ -35,15 +35,7 @@
#include "common/trc_printable_elem.h"
#include <cassert>
#include <cstring>
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
- /** VS2010 does not support inttypes - remove when VS2010 support is dropped */
-#define __PRI64_PREFIX "ll"
-#define PRIX64 __PRI64_PREFIX "X"
-#define PRIu64 __PRI64_PREFIX "u"
-#define PRIu32 "u"
-#else
#include <cinttypes>
-#endif
void trcPrintableElem::getValStr(std::string &valStr, const int valTotalBitSize, const int valValidBits, const uint64_t value, const bool asHex /* = true*/, const int updateBits /* = 0*/)
{
diff --git a/decoder/tests/build/linux/mem_acc_test/makefile b/decoder/tests/build/linux/mem_acc_test/makefile
new file mode 100644
index 0000000..10df021
--- /dev/null
+++ b/decoder/tests/build/linux/mem_acc_test/makefile
@@ -0,0 +1,88 @@
+########################################################
+# Copyright 2022 ARM Limited. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#################################################################################
+
+########
+# opencsd: makefile for the perr error lister
+#
+
+CXX := $(MASTER_CXX)
+LINKER := $(MASTER_LINKER)
+
+PROG = mem-acc-test
+
+BUILD_DIR=./$(PLAT_DIR)
+
+VPATH = $(OCSD_TESTS)/source
+
+CXX_INCLUDES = \
+ -I$(OCSD_TESTS)/source \
+ -I$(OCSD_INCLUDE)
+
+OBJECTS = $(BUILD_DIR)/mem_acc_test.o
+
+LIBS = -L$(LIB_TEST_TARGET_DIR) -L$(LIB_TARGET_DIR) -l$(LIB_BASE_NAME)
+
+all: copy_libs
+
+test_app: $(BIN_TEST_TARGET_DIR)/$(PROG)
+
+
+ $(BIN_TEST_TARGET_DIR)/$(PROG): $(OBJECTS) | build_dir
+ mkdir -p $(BIN_TEST_TARGET_DIR)
+ $(LINKER) $(LDFLAGS) $(OBJECTS) -Wl,--start-group $(LIBS) -Wl,--end-group -o $(BIN_TEST_TARGET_DIR)/$(PROG)
+
+build_dir:
+ mkdir -p $(BUILD_DIR)
+
+.PHONY: copy_libs
+copy_libs: $(BIN_TEST_TARGET_DIR)/$(PROG)
+ cp $(LIB_TARGET_DIR)/*.so* $(BIN_TEST_TARGET_DIR)/.
+
+
+
+#### build rules
+## object dependencies
+DEPS := $(OBJECTS:%.o=%.d)
+
+-include $(DEPS)
+
+## object compile
+$(BUILD_DIR)/%.o : %.cpp | build_dir
+ $(CXX) $(CXXFLAGS) $(CXX_INCLUDES) -MMD $< -o $@
+
+#### clean
+.PHONY: clean
+clean :
+ -rm $(BIN_TEST_TARGET_DIR)/$(PROG) $(OBJECTS)
+ -rm $(DEPS)
+ -rm $(BIN_TEST_TARGET_DIR)/*.so*
+ -rmdir $(BUILD_DIR)
+
+# end of file makefile
diff --git a/decoder/tests/build/linux/perr/makefile b/decoder/tests/build/linux/perr/makefile
new file mode 100644
index 0000000..de6cdf4
--- /dev/null
+++ b/decoder/tests/build/linux/perr/makefile
@@ -0,0 +1,88 @@
+########################################################
+# Copyright 2022 ARM Limited. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#################################################################################
+
+########
+# opencsd: makefile for the perr error lister
+#
+
+CXX := $(MASTER_CXX)
+LINKER := $(MASTER_LINKER)
+
+PROG = ocsd-perr
+
+BUILD_DIR=./$(PLAT_DIR)
+
+VPATH = $(OCSD_TESTS)/source
+
+CXX_INCLUDES = \
+ -I$(OCSD_TESTS)/source \
+ -I$(OCSD_INCLUDE)
+
+OBJECTS = $(BUILD_DIR)/perr.o
+
+LIBS = -L$(LIB_TEST_TARGET_DIR) -L$(LIB_TARGET_DIR) -l$(LIB_BASE_NAME)
+
+all: copy_libs
+
+test_app: $(BIN_TEST_TARGET_DIR)/$(PROG)
+
+
+ $(BIN_TEST_TARGET_DIR)/$(PROG): $(OBJECTS) | build_dir
+ mkdir -p $(BIN_TEST_TARGET_DIR)
+ $(LINKER) $(LDFLAGS) $(OBJECTS) -Wl,--start-group $(LIBS) -Wl,--end-group -o $(BIN_TEST_TARGET_DIR)/$(PROG)
+
+build_dir:
+ mkdir -p $(BUILD_DIR)
+
+.PHONY: copy_libs
+copy_libs: $(BIN_TEST_TARGET_DIR)/$(PROG)
+ cp $(LIB_TARGET_DIR)/*.so* $(BIN_TEST_TARGET_DIR)/.
+
+
+
+#### build rules
+## object dependencies
+DEPS := $(OBJECTS:%.o=%.d)
+
+-include $(DEPS)
+
+## object compile
+$(BUILD_DIR)/%.o : %.cpp | build_dir
+ $(CXX) $(CXXFLAGS) $(CXX_INCLUDES) -MMD $< -o $@
+
+#### clean
+.PHONY: clean
+clean :
+ -rm $(BIN_TEST_TARGET_DIR)/$(PROG) $(OBJECTS)
+ -rm $(DEPS)
+ -rm $(BIN_TEST_TARGET_DIR)/*.so*
+ -rmdir $(BUILD_DIR)
+
+# end of file makefile
diff --git a/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj b/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj
deleted file mode 100644
index 555e6ce..0000000
--- a/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj
+++ /dev/null
@@ -1,333 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug-dll|Win32">
- <Configuration>Debug-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug-dll|x64">
- <Configuration>Debug-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|Win32">
- <Configuration>Release-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|x64">
- <Configuration>Release-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\c_api_pkt_print_test.c" />
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{3AC169DA-E156-4D16-95DF-73D7302A5606}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>c_api_pkt_print_test</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>$(ProjectName)-dl</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- <TargetName>$(ProjectName)-dl</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>$(ProjectName)-dl</TargetName>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- <TargetName>$(ProjectName)-dl</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;OCSD_USE_STATIC_C_API;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- <AdditionalDependencies>lib$(LIB_CAPI_NAME).lib;lib$(LIB_BASE_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <PostBuildEvent>
- <Command>
- </Command>
- </PostBuildEvent>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- <AdditionalDependencies>$(LIB_CAPI_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <PostBuildEvent>
- <Command>copy ..\..\..\..\lib\win32\dbg\*.dll ..\..\..\bin\win32\dbg\.</Command>
- </PostBuildEvent>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;OCSD_USE_STATIC_C_API;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>lib$(LIB_CAPI_NAME).lib;lib$(LIB_BASE_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- <AdditionalDependencies>$(LIB_CAPI_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <PostBuildEvent>
- <Command>copy ..\..\..\..\lib\win64\dbg\*.dll ..\..\..\bin\win64\dbg\.</Command>
- </PostBuildEvent>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;OCSD_USE_STATIC_C_API;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- <AdditionalDependencies>lib$(LIB_CAPI_NAME).lib;lib$(LIB_BASE_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- <AdditionalDependencies>$(LIB_CAPI_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <PostBuildEvent>
- <Command>copy ..\..\..\..\lib\win32\rel\*.dll ..\..\..\bin\win32\rel\.</Command>
- </PostBuildEvent>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;OCSD_USE_STATIC_C_API;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- <AdditionalDependencies>lib$(LIB_CAPI_NAME).lib;lib$(LIB_BASE_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\..\tests\ext_dcd_test_eg\c_api_echo_test</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- <AdditionalDependencies>$(LIB_CAPI_NAME).lib;ext_dcd_echo_test.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <PostBuildEvent>
- <Command>copy ..\..\..\..\lib\win64\rel\*.dll ..\..\..\bin\win64\rel\.</Command>
- </PostBuildEvent>
- </ItemDefinitionGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj.filters b/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj.filters
deleted file mode 100644
index 10fc54c..0000000
--- a/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj.filters
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test_fact.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test_fact.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test.c">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj b/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj
deleted file mode 100644
index 1258680..0000000
--- a/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj
+++ /dev/null
@@ -1,314 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug-dll|Win32">
- <Configuration>Debug-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug-dll|x64">
- <Configuration>Debug-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|Win32">
- <Configuration>Release-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|x64">
- <Configuration>Release-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{DE1F395D-4F53-42FB-8AEF-993A4BF7E411}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>snapshot_parser_lib</RootNamespace>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ShowIncludes>false</ShowIncludes>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ShowIncludes>false</ShowIncludes>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>../../../snapshot_parser_lib/include;../../../../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <ProgramDataBaseFileName>$(OutDir)$(TargetName)_vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="ReadMe.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\device_info.cpp" />
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\device_parser.cpp" />
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_parser.cpp" />
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_parser_util.cpp" />
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_reader.cpp" />
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\ss_to_dcdtree.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\device_info.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\device_parser.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ini_section_names.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_info.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_parser.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_parser_util.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_reader.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ss_key_value_names.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ss_to_dcdtree.h" />
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\trace_snapshots.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj.filters b/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj.filters
deleted file mode 100644
index 86d4067..0000000
--- a/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj.filters
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="ReadMe.txt" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\device_info.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\device_parser.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_parser.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_parser_util.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\snapshot_reader.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\..\..\snapshot_parser_lib\source\ss_to_dcdtree.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\device_info.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\device_parser.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ini_section_names.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_info.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_parser.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_parser_util.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\snapshot_reader.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\trace_snapshots.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ss_to_dcdtree.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\..\..\snapshot_parser_lib\include\ss_key_value_names.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj b/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj
deleted file mode 100644
index 3f90191..0000000
--- a/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj
+++ /dev/null
@@ -1,316 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug-dll|Win32">
- <Configuration>Debug-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug-dll|x64">
- <Configuration>Debug-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|Win32">
- <Configuration>Release-dll</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release-dll|x64">
- <Configuration>Release-dll</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{18ABC652-AB11-4993-9491-1A7FB7117339}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>trc_pkt_lister</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v140</PlatformToolset>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <LinkIncremental>true</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <LinkIncremental>false</LinkIncremental>
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-dll|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-dll|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <SubSystem>Console</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\trc_pkt_lister.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ProjectReference Include="..\snapshot_parser_lib\snapshot_parser_lib.vcxproj">
- <Project>{de1f395d-4f53-42fb-8aef-993a4bf7e411}</Project>
- </ProjectReference>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\..\include\pkt_printers\trc_pkt_printers.h" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj.filters b/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj.filters
deleted file mode 100644
index 9f44406..0000000
--- a/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj.filters
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\source\trc_pkt_lister.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\..\include\pkt_printers\trc_pkt_printers.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj b/decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj
index 08f93d4..1c3e04a 100644
--- a/decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj
+++ b/decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -19,37 +19,39 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\source\mem_buff_demo.cpp" />
+ <ClCompile Include="..\..\..\source\mem_acc_test.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{BC090130-2C53-4CF6-8AD4-37BF72B8D01A}</ProjectGuid>
- <RootNamespace>membuffereg</RootNamespace>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <VCProjectVersion>16.0</VCProjectVersion>
+ <Keyword>Win32Proj</Keyword>
+ <ProjectGuid>{ff4f9135-dd70-4698-9b8f-0451cea3ca44}</ProjectGuid>
+ <RootNamespace>memacctest</RootNamespace>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
@@ -60,92 +62,105 @@
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\..\..\build\win-vs2015\opencsd.props" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <LinkIncremental>true</LinkIncremental>
<OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
- <IntDir>$(Platform)\$(Configuration)\</IntDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
<OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <LinkIncremental>true</LinkIncremental>
<OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
</PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
+ </PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <SDLCheck>
- </SDLCheck>
- <AdditionalIncludeDirectories>..\..\..\..\include</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
- <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>..\..\..\..\include</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>..\..\..\..\include</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
+ <SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
- <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
- <AdditionalIncludeDirectories>..\..\..\..\include</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
+ <SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj.filters b/decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj.filters
index ce99a9e..72f701e 100644
--- a/decoder/tests/build/win-vs2015/mem-buffer-eg/mem-buffer-eg.vcxproj.filters
+++ b/decoder/tests/build/win-vs2022/mem-acc-test/mem-acc-test.vcxproj.filters
@@ -3,11 +3,11 @@
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
@@ -15,7 +15,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\source\mem_buff_demo.cpp">
+ <ClCompile Include="..\..\..\source\mem_acc_test.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
diff --git a/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj b/decoder/tests/build/win-vs2022/perr/perr.vcxproj
index c7fcf24..0cfb25e 100644
--- a/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj
+++ b/decoder/tests/build/win-vs2022/perr/perr.vcxproj
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -18,36 +18,40 @@
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\source\perr.cpp" />
+ </ItemGroup>
<PropertyGroup Label="Globals">
- <ProjectGuid>{46219A32-8178-41C1-B3B1-B5A6E547515F}</ProjectGuid>
+ <VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
- <RootNamespace>ext_dcd_echo_test</RootNamespace>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <ProjectGuid>{3d1e409d-5f4b-4b47-8513-a622639a5399}</ProjectGuid>
+ <RootNamespace>perr</RootNamespace>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
+ <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
+ <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
+ <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>StaticLibrary</ConfigurationType>
+ <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v140</PlatformToolset>
+ <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
@@ -58,102 +62,111 @@
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="..\..\..\..\build\win-vs2022\opencsd.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
+ <TargetName>ocsd-perr</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\rel\</OutDir>
+ <LinkIncremental>false</LinkIncremental>
+ <IntDir>$(Platform)\$(Configuration)\</IntDir>
+ <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
+ <TargetName>ocsd-perr</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <OutDir>..\..\..\lib\win$(PlatformArchitecture)\dbg\</OutDir>
+ <LinkIncremental>true</LinkIncremental>
+ <OutDir>..\..\..\bin\win$(PlatformArchitecture)\dbg\</OutDir>
+ <TargetName>ocsd-perr</TargetName>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <LinkIncremental>false</LinkIncremental>
+ <OutDir>..\..\..\bin\win$(PlatformArchitecture)\rel\</OutDir>
+ <TargetName>ocsd-perr</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ExceptionHandling>false</ExceptionHandling>
- <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
- <SubSystem>Windows</SubSystem>
+ <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
- <Optimization>Disabled</Optimization>
- <PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
- <SubSystem>Windows</SubSystem>
+ <SubSystem>Console</SubSystem>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
- <SubSystem>Windows</SubSystem>
+ <SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\dbg\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\dbg\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
- <PrecompiledHeader>
- </PrecompiledHeader>
- <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\..\..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ConformanceMode>true</ConformanceMode>
+ <AdditionalIncludeDirectories>..\..\..\..\include;..\..\..\snapshot_parser_lib\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <AdditionalDependencies>lib$(LIB_BASE_NAME).lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\..\..\lib\win$(PlatformArchitecture)\rel\;..\..\..\..\tests\lib\win$(PlatformArchitecture)\rel\</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test.h" />
- <ClInclude Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test_fact.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test.c" />
- <ClCompile Include="..\..\..\ext_dcd_test_eg\c_api_echo_test\ext_dcd_echo_test_fact.c" />
- </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
diff --git a/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj.filters b/decoder/tests/build/win-vs2022/perr/perr.vcxproj.filters
index e8fc90b..906c67a 100644
--- a/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj.filters
+++ b/decoder/tests/build/win-vs2022/perr/perr.vcxproj.filters
@@ -3,11 +3,11 @@
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
@@ -15,7 +15,7 @@
</Filter>
</ItemGroup>
<ItemGroup>
- <ClCompile Include="..\..\..\source\c_api_pkt_print_test.c">
+ <ClCompile Include="..\..\..\source\perr.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
diff --git a/decoder/tests/perf-test-scripts/perf-test-script.bash b/decoder/tests/perf-test-scripts/perf-test-script.bash
index 745e8b7..4782f7b 100755
--- a/decoder/tests/perf-test-scripts/perf-test-script.bash
+++ b/decoder/tests/perf-test-scripts/perf-test-script.bash
@@ -8,4 +8,4 @@
# run from directory containing perf.data file.
#
-${PERF_EXEC_PATH}/perf --exec-path=${PERF_EXEC_PATH} script --script=python:${PERF_SCRIPT_PATH}/cs-trace-disasm.py -- -d ${XTOOLS_PATH}/aarch64-linux-gnu-objdump $*
+${PERF_EXEC_PATH}/perf --exec-path=${PERF_EXEC_PATH} script --script=python:${PERF_SCRIPT_PATH}/arm-cs-trace-disasm.py -- -d ${XTOOLS_PATH}/aarch64-linux-gnu-objdump $*
diff --git a/decoder/tests/run_pkt_decode_single_ete.bash b/decoder/tests/run_pkt_decode_single_ete.bash
new file mode 100755
index 0000000..ad3ce60
--- /dev/null
+++ b/decoder/tests/run_pkt_decode_single_ete.bash
@@ -0,0 +1,77 @@
+#!/bin/bash
+#################################################################################
+# Copyright 2018 ARM. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without modification,
+# are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its contributors
+# may be used to endorse or promote products derived from this software without
+# specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#################################################################################
+# OpenCSD library: run single test
+#
+#
+#################################################################################
+# Usage options:-
+# * default: run test on binary + libs in ./bin/linux64/rel
+# run_pkt_decode_tests.bash <test> <options>
+#
+# * use installed opencsd libraries & program
+# run_pkt_decode_tests.bash use-installed <test> <options>
+#
+#
+
+OUT_DIR=./results-ete
+SNAPSHOT_DIR=./snapshots-ete
+BIN_DIR=./bin/linux64/rel/
+
+TEST="001-ack-test"
+
+mkdir -p ${OUT_DIR}
+
+if [ "$1" == "use-installed" ]; then
+ BIN_DIR=""
+ shift
+fi
+
+if [ "$1" != "" ]; then
+ TEST=$1
+ shift
+fi
+
+echo "Running trc_pkt_lister on single snapshot-ete ${TEST}"
+
+
+if [ "${BIN_DIR}" != "" ]; then
+ echo "Tests using BIN_DIR = ${BIN_DIR}"
+ export LD_LIBRARY_PATH=${BIN_DIR}.
+ echo "LD_LIBRARY_PATH set to ${BIN_DIR}"
+else
+ echo "Tests using installed binaries"
+fi
+
+# === test the decode set ===
+${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/${TEST}" $@ -decode -logfilename "${OUT_DIR}/${TEST}.ppl"
+echo "Done : Return $?"
+
+
diff --git a/decoder/tests/run_pkt_decode_tests-ete.bash b/decoder/tests/run_pkt_decode_tests-ete.bash
index a9fe0cc..a82cb68 100755
--- a/decoder/tests/run_pkt_decode_tests-ete.bash
+++ b/decoder/tests/run_pkt_decode_tests-ete.bash
@@ -60,10 +60,16 @@ declare -a test_dirs_decode=( "001-ack_test"
"ete_spec_1"
"ete_spec_2"
"ete_spec_3"
+ "ete_wfet"
"event_test"
"infrastructure"
+ "pauth_lr"
+ "pauth_lr_Rm"
"q_elem"
+ "rme_test"
+ "s_9001"
"src_addr"
+ "ss_ib_el1ns"
"tme_simple"
"tme_tcancel"
"tme_test"
@@ -73,13 +79,21 @@ declare -a test_dirs_decode=( "001-ack_test"
"ts_marker"
)
-
# directories for tests using I_SRC_ADDR_range option
declare -a test_dirs_decode_src_addr_opt=( "002-ack_test_scr"
"ete_ip"
"src_addr"
)
+# directories with multi session snapshots
+declare -a test_dirs_decode_multi_sess=( "ss_ib_el1ns"
+ "ete-ite-instr"
+ "pauth_lr"
+ "pauth_lr_Rm"
+ "q_elem"
+ "rme_test"
+ "s_9001"
+ )
echo "Running trc_pkt_lister on snapshot directories."
@@ -115,3 +129,10 @@ do
${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/$test_dir_n" $@ -decode -src_addr_n -logfilename "${OUT_DIR}/${test_dir_n}_src_addr_N.ppl"
echo "Done : Return $?"
done
+
+for test_dir_ms in "${test_dirs_decode_multi_sess[@]}"
+do
+ echo "Testing with -multi_session $test_dir_ms..."
+ ${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/$test_dir_ms" $@ -decode -multi_session -logfilename "${OUT_DIR}/${test_dir_ms}_multi_sess.ppl"
+ echo "Done : Return $?"
+done
diff --git a/decoder/tests/run_pkt_decode_tests.bash b/decoder/tests/run_pkt_decode_tests.bash
index 27a855e..9b660f2 100755
--- a/decoder/tests/run_pkt_decode_tests.bash
+++ b/decoder/tests/run_pkt_decode_tests.bash
@@ -97,9 +97,29 @@ do
echo "Done : Return $?"
done
+# === test for debugging issues ===
+# juno_r1_1 has fake data that triggers range limit and bad opcode if operating
+echo "Test with run limit on..."
+export OPENCSD_INSTR_RANGE_LIMIT=100
+env | grep OPENCSD
+${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/juno_r1_1" $@ -decode -logfilename "${OUT_DIR}/juno_r1_1_rangelimit.ppl"
+unset OPENCSD_INSTR_RANGE_LIMIT
+echo "Done : Return $?"
+env | grep OPENCSD
+
+echo "Test with bad opcode detect on..."
+export OPENCSD_ERR_ON_AA64_BAD_OPCODE=1
+env | grep OPENCSD
+${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/juno_r1_1" $@ -decode -logfilename "${OUT_DIR}/juno_r1_1_badopcode.ppl"
+unset OPENCSD_ERR_ON_AA64_BAD_OPCODE
+echo "Done : Return $?"
+env | grep OPENCSD
+
+
# === test a packet only example ===
echo "Testing init-short-addr..."
${BIN_DIR}trc_pkt_lister -ss_dir "${SNAPSHOT_DIR}/init-short-addr" $@ -pkt_mon -logfilename "${OUT_DIR}/init-short-addr.ppl"
+echo "Done : Return $?"
# === test the TPIU deformatter ===
echo "Testing a55-test-tpiu..."
diff --git a/decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h b/decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h
index 3c85f9d..0120120 100644
--- a/decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h
+++ b/decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h
@@ -56,6 +56,7 @@ public:
void destroyDecodeTree();
DecodeTree *getDecodeTree() const { return m_pDecodeTree; };
const char *getBufferFileName() const { return m_BufferFileName.c_str(); };
+ std::string getBufferFileNameFromBuffName(const std::string& buff_name);
// TBD: add in filters for ID list, first ID found.
@@ -89,6 +90,7 @@ private:
void LogError(const std::string &msg);
void LogError(const ocsdError &err);
+ ocsd_mem_space_acc_t getMemSpaceFromString(const std::string& memspace);
void processDumpfiles(std::vector<Parser::DumpDef> &dumps);
diff --git a/decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp b/decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp
index 902ce56..dd14aff 100644
--- a/decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp
+++ b/decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp
@@ -64,6 +64,19 @@ void CreateDcdTreeFromSnapShot::initialise(SnapShotReader *pReader, ITraceErrorL
}
}
+std::string CreateDcdTreeFromSnapShot::getBufferFileNameFromBuffName(const std::string& buff_name)
+{
+ Parser::TraceBufferSourceTree tree;
+ std::string buffFileName = "";
+
+ if (m_pReader->getTraceBufferSourceTree(buff_name, tree))
+ {
+ buffFileName = m_pReader->getSnapShotDir() + tree.buffer_info.dataFileName;
+ }
+ return buffFileName;
+}
+
+
bool CreateDcdTreeFromSnapShot::createDecodeTree(const std::string &SourceName, bool bPacketProcOnly, uint32_t add_create_flags)
{
m_add_create_flags = add_create_flags;
@@ -555,10 +568,61 @@ bool CreateDcdTreeFromSnapShot::getCoreProfile(const std::string &coreName, ocsd
return profileOK;
}
+typedef struct mem_space_keys {
+ const char* key_name;
+ ocsd_mem_space_acc_t memspace;
+} mem_space_keys_t;
+
+static mem_space_keys_t space_map[] = {
+ /* single spaces */
+ { "EL1S", OCSD_MEM_SPACE_EL1S },
+ { "EL1N", OCSD_MEM_SPACE_EL1N },
+ { "EL1R", OCSD_MEM_SPACE_EL1R },
+ { "EL2S", OCSD_MEM_SPACE_EL2S },
+ { "EL2" , OCSD_MEM_SPACE_EL2 }, /* old EL2 NS name - prior to EL2S existing */
+ { "EL2N", OCSD_MEM_SPACE_EL2 },
+ { "EL2R", OCSD_MEM_SPACE_EL2R },
+ { "EL3" , OCSD_MEM_SPACE_EL3 },
+ { "ROOT", OCSD_MEM_SPACE_ROOT },
+ /* multiple memory spaces */
+ { "S" , OCSD_MEM_SPACE_S},
+ { "N" , OCSD_MEM_SPACE_N},
+ { "R" , OCSD_MEM_SPACE_R},
+ { "ANY" , OCSD_MEM_SPACE_ANY},
+ /* older names - from spec but not expected to be used in future. */
+ { "H" , OCSD_MEM_SPACE_EL2 }, /* hypervisor - EL2 NS */
+ { "P" , OCSD_MEM_SPACE_EL1N }, /* privileged - EL1 NS */
+ { "NP" , OCSD_MEM_SPACE_EL1N }, /* non secure privileged - EL1 NS */
+ { "SP" , OCSD_MEM_SPACE_EL1S }, /* secure privileged - EL1 S */
+ /* table terminator */
+ { "", OCSD_MEM_SPACE_NONE},
+};
+
+/* get mem space from input string */
+ocsd_mem_space_acc_t CreateDcdTreeFromSnapShot::getMemSpaceFromString(const std::string& memspace)
+{
+
+
+ ocsd_mem_space_acc_t mem_space = OCSD_MEM_SPACE_ANY;
+ if (memspace.length() > 0) {
+ int i = 0;
+
+ while (space_map[i].memspace != OCSD_MEM_SPACE_NONE) {
+ if (space_map[i].key_name == memspace) {
+ mem_space = space_map[i].memspace;
+ break;
+ }
+ i++;
+ }
+ }
+ return mem_space;
+}
+
void CreateDcdTreeFromSnapShot::processDumpfiles(std::vector<Parser::DumpDef> &dumps)
{
std::string dumpFilePathName;
std::vector<Parser::DumpDef>::const_iterator it;
+ ocsd_mem_space_acc_t mem_space;
it = dumps.begin();
while(it != dumps.end())
@@ -570,13 +634,14 @@ void CreateDcdTreeFromSnapShot::processDumpfiles(std::vector<Parser::DumpDef> &d
region.start_address = it->address;
region.file_offset = it->offset;
region.region_size = it->length;
+ mem_space = getMemSpaceFromString(it->space);
// ensure we respect optional length and offset parameter and
// allow multiple dump entries with same file name to define regions
if (!TrcMemAccessorFile::isExistingFileAccessor(dumpFilePathName))
- err = m_pDecodeTree->addBinFileRegionMemAcc(&region, 1, OCSD_MEM_SPACE_ANY, dumpFilePathName);
+ err = m_pDecodeTree->addBinFileRegionMemAcc(&region, 1, mem_space, dumpFilePathName);
else
- err = m_pDecodeTree->updateBinFileRegionMemAcc(&region, 1, OCSD_MEM_SPACE_ANY, dumpFilePathName);
+ err = m_pDecodeTree->updateBinFileRegionMemAcc(&region, 1, mem_space, dumpFilePathName);
if(err != OCSD_OK)
{
std::ostringstream oss;
diff --git a/decoder/tests/snapshots-ete/ete-ite-instr/trace.ini b/decoder/tests/snapshots-ete/ete-ite-instr/trace.ini
index 1880b66..9dc6a45 100644
--- a/decoder/tests/snapshots-ete/ete-ite-instr/trace.ini
+++ b/decoder/tests/snapshots-ete/ete-ite-instr/trace.ini
@@ -1,15 +1,16 @@
[trace_buffers]
-buffers=buffer2
+buffers=buffer1,buffer2
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
[buffer1]
name=ETB_1
file=session1.bin
format=source_data
-[buffer2]
-name=ETB_2
-file=session2.bin
-format=source_data
[source_buffers]
diff --git a/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s1.ini b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s1.ini
new file mode 100755
index 0000000..23947f3
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s1.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s1
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s2.ini b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s2.ini
new file mode 100755
index 0000000..063b076
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s2.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s2
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s3.ini b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s3.ini
new file mode 100755
index 0000000..3bbac32
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/ETE_0_s3.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s3
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr/bindir_64/OTHERS_exec b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/OTHERS_exec
new file mode 100755
index 0000000..e22753b
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/bindir_64/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/TEST_NON_DET_CODE_exec
new file mode 100755
index 0000000..88506e1
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_NON_DET_CODE_exec
new file mode 100755
index 0000000..6c7adbc
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_TEST_CODE_exec
new file mode 100755
index 0000000..91f1822
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/bindir_64/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/cpu_0.ini b/decoder/tests/snapshots-ete/pauth_lr/cpu_0.ini
new file mode 100755
index 0000000..7e05b35
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/cpu_0.ini
@@ -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=0x23170
+
+[dump2]
+file=bindir_64/VAL_TEST_CODE_exec
+address=0x01000000
+length=0x38e20
+
+[dump3]
+file=bindir_64/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x2b3bc
+
+[dump4]
+file=bindir_64/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x234
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr/session1.bin b/decoder/tests/snapshots-ete/pauth_lr/session1.bin
new file mode 100755
index 0000000..e3ab828
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/session1.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/session2.bin b/decoder/tests/snapshots-ete/pauth_lr/session2.bin
new file mode 100755
index 0000000..94d5431
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/session2.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/session3.bin b/decoder/tests/snapshots-ete/pauth_lr/session3.bin
new file mode 100755
index 0000000..5a43ed5
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/session3.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr/snapshot.ini b/decoder/tests/snapshots-ete/pauth_lr/snapshot.ini
new file mode 100755
index 0000000..ef69771
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/snapshot.ini
@@ -0,0 +1,13 @@
+[snapshot]
+version=1.0
+description=checker_metadata.ini
+
+[device_list]
+device0=cpu_0.ini
+device1=ETE_0_s1.ini
+device2=ETE_0_s2.ini
+device3=ETE_0_s3.ini
+
+[trace]
+metadata=trace.ini
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr/trace.ini b/decoder/tests/snapshots-ete/pauth_lr/trace.ini
new file mode 100755
index 0000000..2212620
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr/trace.ini
@@ -0,0 +1,29 @@
+[trace_buffers]
+buffers=buffer1,buffer2,buffer3
+
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
+
+[buffer3]
+name=ETB_3
+file=session3.bin
+format=source_data
+
+
+[source_buffers]
+ETE_0_s1=ETB_1
+ETE_0_s2=ETB_2
+ETE_0_s3=ETB_3
+
+[core_trace_sources]
+cpu_0=ETE_0_s1
+cpu_0=ETE_0_s2
+cpu_0=ETE_0_s3
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s1.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s1.ini
new file mode 100755
index 0000000..23947f3
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s1.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s1
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s2.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s2.ini
new file mode 100755
index 0000000..063b076
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s2.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s2
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s3.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s3.ini
new file mode 100755
index 0000000..3bbac32
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/ETE_0_s3.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s3
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/OTHERS_exec b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/OTHERS_exec
new file mode 100755
index 0000000..8d66260
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/TEST_NON_DET_CODE_exec
new file mode 100755
index 0000000..ee5f3c1
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_NON_DET_CODE_exec
new file mode 100755
index 0000000..b97f64e
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_TEST_CODE_exec
new file mode 100755
index 0000000..5fc3b06
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/bindir_64/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/cpu_0.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/cpu_0.ini
new file mode 100755
index 0000000..29737da
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/cpu_0.ini
@@ -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=0x23170
+
+[dump2]
+file=bindir_64/VAL_TEST_CODE_exec
+address=0x01000000
+length=0x38da0
+
+[dump3]
+file=bindir_64/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x254fc
+
+[dump4]
+file=bindir_64/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x234
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/session1.bin b/decoder/tests/snapshots-ete/pauth_lr_Rm/session1.bin
new file mode 100755
index 0000000..4c66746
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/session1.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/session2.bin b/decoder/tests/snapshots-ete/pauth_lr_Rm/session2.bin
new file mode 100755
index 0000000..165bca1
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/session2.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/session3.bin b/decoder/tests/snapshots-ete/pauth_lr_Rm/session3.bin
new file mode 100755
index 0000000..3170f5a
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/session3.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/snapshot.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/snapshot.ini
new file mode 100755
index 0000000..ef69771
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/snapshot.ini
@@ -0,0 +1,13 @@
+[snapshot]
+version=1.0
+description=checker_metadata.ini
+
+[device_list]
+device0=cpu_0.ini
+device1=ETE_0_s1.ini
+device2=ETE_0_s2.ini
+device3=ETE_0_s3.ini
+
+[trace]
+metadata=trace.ini
+
diff --git a/decoder/tests/snapshots-ete/pauth_lr_Rm/trace.ini b/decoder/tests/snapshots-ete/pauth_lr_Rm/trace.ini
new file mode 100755
index 0000000..2212620
--- /dev/null
+++ b/decoder/tests/snapshots-ete/pauth_lr_Rm/trace.ini
@@ -0,0 +1,29 @@
+[trace_buffers]
+buffers=buffer1,buffer2,buffer3
+
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
+
+[buffer3]
+name=ETB_3
+file=session3.bin
+format=source_data
+
+
+[source_buffers]
+ETE_0_s1=ETB_1
+ETE_0_s2=ETB_2
+ETE_0_s3=ETB_3
+
+[core_trace_sources]
+cpu_0=ETE_0_s1
+cpu_0=ETE_0_s2
+cpu_0=ETE_0_s3
+
diff --git a/decoder/tests/snapshots-ete/q_elem/trace.ini b/decoder/tests/snapshots-ete/q_elem/trace.ini
index 1e22baf..efbdff5 100644
--- a/decoder/tests/snapshots-ete/q_elem/trace.ini
+++ b/decoder/tests/snapshots-ete/q_elem/trace.ini
@@ -1,17 +1,16 @@
[trace_buffers]
-#buffers=buffer2,buffer1
-buffers=buffer2
-
-[buffer1]
-name=ETB_1
-file=session1.bin
-format=source_data
+buffers=buffer2,buffer1
[buffer2]
name=ETB_2
file=session2.bin
format=source_data
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
[source_buffers]
ETE_0_s1=ETB_1
diff --git a/decoder/tests/snapshots-ete/rme_test/ETE_0_s1.ini b/decoder/tests/snapshots-ete/rme_test/ETE_0_s1.ini
new file mode 100644
index 0000000..316a3cb
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/ETE_0_s1.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s1
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x48001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/rme_test/ETE_0_s2.ini b/decoder/tests/snapshots-ete/rme_test/ETE_0_s2.ini
new file mode 100644
index 0000000..80e2f77
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/ETE_0_s2.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s2
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x48001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/rme_test/ETE_0_s3.ini b/decoder/tests/snapshots-ete/rme_test/ETE_0_s3.ini
new file mode 100644
index 0000000..66e166f
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/ETE_0_s3.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s3
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x48001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64ns/OTHERS_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/OTHERS_exec
new file mode 100644
index 0000000..ee72ff8
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64ns/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/TEST_NON_DET_CODE_exec
new file mode 100644
index 0000000..3c84188
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_NON_DET_CODE_exec
new file mode 100644
index 0000000..1857b04
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_TEST_CODE_exec
new file mode 100644
index 0000000..5889617
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64ns/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rl/OTHERS_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/OTHERS_exec
new file mode 100644
index 0000000..ee72ff8
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rl/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/TEST_NON_DET_CODE_exec
new file mode 100644
index 0000000..3c84188
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_NON_DET_CODE_exec
new file mode 100644
index 0000000..2899403
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_TEST_CODE_exec
new file mode 100644
index 0000000..5889617
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rl/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rt/OTHERS_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/OTHERS_exec
new file mode 100644
index 0000000..ee72ff8
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rt/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/TEST_NON_DET_CODE_exec
new file mode 100644
index 0000000..3c84188
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_NON_DET_CODE_exec
new file mode 100644
index 0000000..abccbb7
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_TEST_CODE_exec
new file mode 100644
index 0000000..8ab026a
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/bindir_64rt/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/cpu_0.ini b/decoder/tests/snapshots-ete/rme_test/cpu_0.ini
new file mode 100644
index 0000000..b20b7dd
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/cpu_0.ini
@@ -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_64ns/OTHERS_exec
+address=0x00060000
+length=0x21388
+
+[dump2]
+file=bindir_64ns/VAL_TEST_CODE_exec
+address=0x01000000
+length=0x3d1c0
+
+[dump3]
+file=bindir_64ns/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x24bf4
+
+[dump4]
+file=bindir_64ns/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x26c
+
diff --git a/decoder/tests/snapshots-ete/rme_test/session1.bin b/decoder/tests/snapshots-ete/rme_test/session1.bin
new file mode 100644
index 0000000..cea16ee
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/session1.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/session2.bin b/decoder/tests/snapshots-ete/rme_test/session2.bin
new file mode 100644
index 0000000..4c169c8
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/session2.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/session3.bin b/decoder/tests/snapshots-ete/rme_test/session3.bin
new file mode 100644
index 0000000..28d8d63
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/session3.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/rme_test/snapshot.ini b/decoder/tests/snapshots-ete/rme_test/snapshot.ini
new file mode 100644
index 0000000..ef69771
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/snapshot.ini
@@ -0,0 +1,13 @@
+[snapshot]
+version=1.0
+description=checker_metadata.ini
+
+[device_list]
+device0=cpu_0.ini
+device1=ETE_0_s1.ini
+device2=ETE_0_s2.ini
+device3=ETE_0_s3.ini
+
+[trace]
+metadata=trace.ini
+
diff --git a/decoder/tests/snapshots-ete/rme_test/trace.ini b/decoder/tests/snapshots-ete/rme_test/trace.ini
new file mode 100644
index 0000000..2212620
--- /dev/null
+++ b/decoder/tests/snapshots-ete/rme_test/trace.ini
@@ -0,0 +1,29 @@
+[trace_buffers]
+buffers=buffer1,buffer2,buffer3
+
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
+
+[buffer3]
+name=ETB_3
+file=session3.bin
+format=source_data
+
+
+[source_buffers]
+ETE_0_s1=ETB_1
+ETE_0_s2=ETB_2
+ETE_0_s3=ETB_3
+
+[core_trace_sources]
+cpu_0=ETE_0_s1
+cpu_0=ETE_0_s2
+cpu_0=ETE_0_s3
+
diff --git a/decoder/tests/snapshots-ete/s_9001/ETE_0_s1.ini b/decoder/tests/snapshots-ete/s_9001/ETE_0_s1.ini
new file mode 100644
index 0000000..23947f3
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/ETE_0_s1.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s1
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/s_9001/ETE_0_s2.ini b/decoder/tests/snapshots-ete/s_9001/ETE_0_s2.ini
new file mode 100644
index 0000000..063b076
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/ETE_0_s2.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s2
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/s_9001/bindir_64/OTHERS_exec b/decoder/tests/snapshots-ete/s_9001/bindir_64/OTHERS_exec
new file mode 100644
index 0000000..da5e23b
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/bindir_64/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/bindir_64/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/s_9001/bindir_64/TEST_NON_DET_CODE_exec
new file mode 100644
index 0000000..d153249
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/bindir_64/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_NON_DET_CODE_exec
new file mode 100644
index 0000000..a3cb14f
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_TEST_CODE_exec
new file mode 100644
index 0000000..c7c3b33
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/bindir_64/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/cpu_0.ini b/decoder/tests/snapshots-ete/s_9001/cpu_0.ini
new file mode 100644
index 0000000..c14ad73
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/cpu_0.ini
@@ -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=0x22f80
+
+[dump2]
+file=bindir_64/VAL_TEST_CODE_exec
+address=0x01000000
+length=0x3be80
+
+[dump3]
+file=bindir_64/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x2b498
+
+[dump4]
+file=bindir_64/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x234
+
diff --git a/decoder/tests/snapshots-ete/s_9001/session1.bin b/decoder/tests/snapshots-ete/s_9001/session1.bin
new file mode 100644
index 0000000..679e147
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/session1.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/session2.bin b/decoder/tests/snapshots-ete/s_9001/session2.bin
new file mode 100644
index 0000000..30f9fd4
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/session2.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/s_9001/snapshot.ini b/decoder/tests/snapshots-ete/s_9001/snapshot.ini
new file mode 100644
index 0000000..299b376
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/snapshot.ini
@@ -0,0 +1,12 @@
+[snapshot]
+version=1.0
+description=checker_metadata.ini
+
+[device_list]
+device0=cpu_0.ini
+device1=ETE_0_s1.ini
+device2=ETE_0_s2.ini
+
+[trace]
+metadata=trace.ini
+
diff --git a/decoder/tests/snapshots-ete/s_9001/trace.ini b/decoder/tests/snapshots-ete/s_9001/trace.ini
new file mode 100644
index 0000000..3a31929
--- /dev/null
+++ b/decoder/tests/snapshots-ete/s_9001/trace.ini
@@ -0,0 +1,22 @@
+[trace_buffers]
+buffers=buffer1,buffer2
+
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
+
+
+[source_buffers]
+ETE_0_s1=ETB_1
+ETE_0_s2=ETB_2
+
+[core_trace_sources]
+cpu_0=ETE_0_s1
+cpu_0=ETE_0_s2
+
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s1.ini b/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s1.ini
new file mode 100644
index 0000000..23947f3
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s1.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s1
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s2.ini b/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s2.ini
new file mode 100644
index 0000000..063b076
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/ETE_0_s2.ini
@@ -0,0 +1,15 @@
+[device]
+name=ETE_0_s2
+class=trace_source
+type=ETE
+
+
+[regs]
+TRCCONFIGR=0x8001
+TRCTRACEIDR=0x1
+TRCDEVARCH=0x47735a13
+TRCIDR0=0x28c1cea1
+TRCIDR1=0x4100fff0
+TRCIDR2=0xd0001088
+TRCIDR8=0x0
+
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/OTHERS_exec b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/OTHERS_exec
new file mode 100644
index 0000000..8eaa6b0
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/OTHERS_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/TEST_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/TEST_NON_DET_CODE_exec
new file mode 100644
index 0000000..965319f
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/TEST_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_NON_DET_CODE_exec b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_NON_DET_CODE_exec
new file mode 100644
index 0000000..31303b2
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_NON_DET_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_TEST_CODE_exec b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_TEST_CODE_exec
new file mode 100644
index 0000000..bbbaeb0
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/bindir_64/VAL_TEST_CODE_exec
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/cpu_0.ini b/decoder/tests/snapshots-ete/ss_ib_el1ns/cpu_0.ini
new file mode 100644
index 0000000..e9c296f
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/cpu_0.ini
@@ -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=0x22f80
+
+[dump2]
+file=bindir_64/VAL_TEST_CODE_exec
+address=0x01000000
+length=0x3bb80
+
+[dump3]
+file=bindir_64/VAL_NON_DET_CODE_exec
+address=0x00010000
+length=0x2b598
+
+[dump4]
+file=bindir_64/TEST_NON_DET_CODE_exec
+address=0x00050000
+length=0x234
+
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/session1.bin b/decoder/tests/snapshots-ete/ss_ib_el1ns/session1.bin
new file mode 100644
index 0000000..cb920cc
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/session1.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/session2.bin b/decoder/tests/snapshots-ete/ss_ib_el1ns/session2.bin
new file mode 100644
index 0000000..6f701df
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/session2.bin
Binary files differ
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/snapshot.ini b/decoder/tests/snapshots-ete/ss_ib_el1ns/snapshot.ini
new file mode 100644
index 0000000..299b376
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/snapshot.ini
@@ -0,0 +1,12 @@
+[snapshot]
+version=1.0
+description=checker_metadata.ini
+
+[device_list]
+device0=cpu_0.ini
+device1=ETE_0_s1.ini
+device2=ETE_0_s2.ini
+
+[trace]
+metadata=trace.ini
+
diff --git a/decoder/tests/snapshots-ete/ss_ib_el1ns/trace.ini b/decoder/tests/snapshots-ete/ss_ib_el1ns/trace.ini
new file mode 100644
index 0000000..3a31929
--- /dev/null
+++ b/decoder/tests/snapshots-ete/ss_ib_el1ns/trace.ini
@@ -0,0 +1,22 @@
+[trace_buffers]
+buffers=buffer1,buffer2
+
+[buffer1]
+name=ETB_1
+file=session1.bin
+format=source_data
+
+[buffer2]
+name=ETB_2
+file=session2.bin
+format=source_data
+
+
+[source_buffers]
+ETE_0_s1=ETB_1
+ETE_0_s2=ETB_2
+
+[core_trace_sources]
+cpu_0=ETE_0_s1
+cpu_0=ETE_0_s2
+
diff --git a/decoder/tests/source/mem_acc_test.cpp b/decoder/tests/source/mem_acc_test.cpp
new file mode 100644
index 0000000..80666fb
--- /dev/null
+++ b/decoder/tests/source/mem_acc_test.cpp
@@ -0,0 +1,771 @@
+/*
+ * \file mem_acc_test.cpp
+ * \brief OpenCSD : Component tests for memory accessor and caching
+ *
+ * \copyright Copyright (c) 2023, ARM Limited. All Rights Reserved.
+ */
+
+
+ /*
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its contributors
+ * may be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Test program to validate the memory accessor and caching.
+ *
+ * Checks for memory spaces, overlapping VA, cache sizes
+ */
+
+#include <cstdio>
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <cstring>
+
+#include "opencsd.h"
+
+// logging
+static ocsdMsgLogger logger;
+static ocsdDefaultErrorLogger err_log;
+static ocsd_hndl_err_log_t err_log_handle;
+static int logOpts = ocsdMsgLogger::OUT_STDOUT | ocsdMsgLogger::OUT_FILE;
+static std::string logfileName = "mem_acc_test.ppl";
+
+// test pass fail counts
+static int tests_passed = 0;
+static int tests_failed = 0;
+
+// number of blocks per memory area
+#define NUM_BLOCKS 2
+// number of 32 but words in each block
+#define BLOCK_NUM_WORDS 8192
+// size of block in bytes
+#define BLOCK_SIZE_BYTES (4 * BLOCK_NUM_WORDS)
+
+// some memory areas to use for testing
+static uint32_t el01_ns_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el2_ns_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el01_s_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el2_s_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el3_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el01_r_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el2_r_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+static uint32_t el3_root_blocks[NUM_BLOCKS][BLOCK_NUM_WORDS];
+
+#define BLOCK_VAL(mem_space, block_num, index) (uint32_t)(((uint32_t)mem_space << 24) | ((uint32_t)block_num << 16) | (uint32_t)index)
+
+// memory access mapper - used for tests
+static TrcMemAccMapGlobalSpace mapper;
+
+
+
+void populate_block(const ocsd_mem_space_acc_t mem_space, uint32_t block_array[NUM_BLOCKS][BLOCK_NUM_WORDS])
+{
+ for (int i = 0; i < NUM_BLOCKS; i++) {
+ for (int j = 0; j < BLOCK_NUM_WORDS; j++)
+ block_array[i][j] = BLOCK_VAL(mem_space, i, j);
+ }
+}
+
+void populate_all_blocks()
+{
+ populate_block(OCSD_MEM_SPACE_EL1N, el01_ns_blocks);
+ populate_block(OCSD_MEM_SPACE_EL2, el2_ns_blocks);
+ populate_block(OCSD_MEM_SPACE_EL1S, el01_s_blocks);
+ populate_block(OCSD_MEM_SPACE_EL2S, el2_s_blocks);
+ populate_block(OCSD_MEM_SPACE_EL3, el3_blocks);
+ populate_block(OCSD_MEM_SPACE_EL1R, el01_r_blocks);
+ populate_block(OCSD_MEM_SPACE_EL2R, el2_r_blocks);
+ populate_block(OCSD_MEM_SPACE_ROOT, el3_root_blocks);
+}
+
+bool process_cmd_line_logger_opts(int argc, char* argv[])
+{
+ bool goodLoggerOpts = true;
+ bool bChangingOptFlags = false;
+ int newlogOpts = ocsdMsgLogger::OUT_NONE;
+ std::string opt;
+ if (argc > 1)
+ {
+ int options_to_process = argc - 1;
+ int optIdx = 1;
+ while (options_to_process > 0)
+ {
+ opt = argv[optIdx];
+ if (opt == "-logstdout")
+ {
+ newlogOpts |= ocsdMsgLogger::OUT_STDOUT;
+ bChangingOptFlags = true;
+ }
+ else if (opt == "-logstderr")
+ {
+ newlogOpts |= ocsdMsgLogger::OUT_STDERR;
+ bChangingOptFlags = true;
+ }
+ else if (opt == "-logfile")
+ {
+ newlogOpts |= ocsdMsgLogger::OUT_FILE;
+ bChangingOptFlags = true;
+ }
+ else if (opt == "-logfilename")
+ {
+ options_to_process--;
+ optIdx++;
+ if (options_to_process)
+ {
+ logfileName = argv[optIdx];
+ newlogOpts |= ocsdMsgLogger::OUT_FILE;
+ bChangingOptFlags = true;
+ }
+ else
+ {
+ goodLoggerOpts = false;
+ }
+ }
+ options_to_process--;
+ optIdx++;
+ }
+ }
+ if (bChangingOptFlags)
+ logOpts = newlogOpts;
+ return goodLoggerOpts;
+}
+
+void log_error(const ocsdError& err)
+{
+ err_log.LogError(err_log_handle, &err);
+}
+
+void log_test_start(const char* testname)
+{
+ std::ostringstream oss;
+ oss << "*** Test " << testname << " Starting.\n";
+ logger.LogMsg(oss.str());
+}
+
+void log_test_end(const char* testname, const int pass, const int fail)
+{
+ std::ostringstream oss;
+ oss << "*** Test " << testname << " complete. (Pass: " << pass << "; Fail:" << fail << ")\n";
+ logger.LogMsg(oss.str());
+}
+
+void test_overlap_regions()
+{
+ // test adding regions that overlap
+ // overlap in difference memory spaces is ok, otherwise fail
+ TrcMemAccBufPtr Acc1, Acc2, Acc3, Acc4;
+ ocsd_err_t err;
+ std::ostringstream oss;
+ int passed = 0, failed = 0;
+
+ log_test_start(__FUNCTION__);
+
+ // add single accessor
+ Acc1.initAccessor(0x0000, (const uint8_t*)&el01_ns_blocks[0], BLOCK_SIZE_BYTES);
+ Acc1.setMemSpace(OCSD_MEM_SPACE_EL1N);
+ err = mapper.AddAccessor(&Acc1, 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set memory accessor"));
+ failed++;
+ }
+ else
+ passed++;
+
+ // overlapping region - same memory space.
+ Acc2.initAccessor(0x1000, (const uint8_t*)&el01_ns_blocks[1], BLOCK_SIZE_BYTES);
+ Acc2.setMemSpace(OCSD_MEM_SPACE_EL1N);
+ err = mapper.AddAccessor(&Acc2, 0);
+ if (err != OCSD_ERR_MEM_ACC_OVERLAP) {
+ oss.str("");
+ oss << "Error: expected OCSD_ERR_MEM_ACC_OVERLAP error for overlapping accessor range.\n";
+ logger.LogMsg(oss.str());
+ failed++;
+ }
+ else
+ passed++;
+
+ // non overlapping region - same memory space.
+ Acc2.setRange(0x8000, 0x8000 + BLOCK_SIZE_BYTES - 1);
+ err = mapper.AddAccessor(&Acc2, 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set non overlapping memory accessor"));
+ failed++;
+ }
+ else
+ passed++;
+
+ // overlapping region - different memory space
+ Acc3.initAccessor(0x0000, (const uint8_t*)&el01_s_blocks[0], BLOCK_SIZE_BYTES);
+ Acc3.setMemSpace(OCSD_MEM_SPACE_EL1S);
+ err = mapper.AddAccessor(&Acc3, 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set overlapping memory accessor in other memory space"));
+ failed++;
+ }
+ else
+ passed++;
+
+ // overlapping region - more general memory space.
+ Acc4.initAccessor(0x0000, (const uint8_t*)&el2_s_blocks[0], BLOCK_SIZE_BYTES);
+ Acc4.setMemSpace(OCSD_MEM_SPACE_S);
+ err = mapper.AddAccessor(&Acc4, 0);
+ if (err != OCSD_ERR_MEM_ACC_OVERLAP) {
+ oss.str("");
+ oss << "Error: expected OCSD_ERR_MEM_ACC_OVERLAP error for overlapping general _S accessor range.\n";
+ logger.LogMsg(oss.str());
+ failed++;
+ }
+ else
+ passed++;
+
+ // clean up mapper
+ mapper.RemoveAllAccessors();
+ tests_passed += passed;
+ tests_failed += failed;
+
+ log_test_end(__FUNCTION__, passed, failed);
+}
+/************************************************************************
+ * Test trcID specific memory regions - using callback function.
+ * Emulates clinets such as perf where memory regions change over the
+ * trace run as tasks switched in and out. Tests caching mechanisms in
+ * mapper.
+ */
+typedef struct test_range {
+ ocsd_vaddr_t s_address;
+ uint32_t size;
+ const uint8_t* buffer;
+ ocsd_mem_space_acc_t mem_space;
+ uint8_t trcID;
+} test_range_t;
+
+typedef struct test_range_array {
+ int num_ranges;
+ test_range_t* ranges;
+} test_range_array_t;
+
+#define IN_MEM_SPACE(m1, m2) (bool)(((uint32_t)m1)&((uint32_t)m2))
+
+static int AccCallbackCount = 0;
+
+uint32_t TestMemAccCB(const void* p_context, const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t trcID, const uint32_t reqBytes, uint8_t* byteBuffer)
+{
+ test_range_array_t* ranges = (test_range_array_t*)p_context;
+ uint32_t bytes_read = 0;
+
+ for (int i = 0; i < ranges->num_ranges; i++)
+ {
+ if ( IN_MEM_SPACE(mem_space, ranges->ranges[i].mem_space) &&
+ (trcID == ranges->ranges[i].trcID)
+ )
+ {
+ if ( (address >= ranges->ranges[i].s_address) &&
+ (address < (ranges->ranges[i].s_address + ranges->ranges[i].size))
+ )
+ {
+ // in range - get offset into buffer
+ uint32_t offset = address - ranges->ranges[i].s_address;
+
+ // copy all bytes if enough left in range - otherwise what if left
+ if (ranges->ranges[i].size - offset >= reqBytes)
+ bytes_read = reqBytes;
+ else
+ bytes_read = ranges->ranges[i].size - offset;
+
+ memcpy(byteBuffer, &(ranges->ranges[i].buffer[offset]), bytes_read);
+ break;
+ }
+ }
+ }
+ AccCallbackCount++;
+ return bytes_read;
+}
+
+void set_test_range(test_range_t& range, ocsd_vaddr_t s_address, uint32_t size,
+ const uint8_t* buffer, ocsd_mem_space_acc_t mem_space, uint8_t trcID)
+{
+ range.s_address = s_address;
+ range.size = size;
+ range.buffer = buffer;
+ range.mem_space = mem_space;
+ range.trcID = trcID;
+}
+
+// read value through mapper and direct from range - check value and callback happened
+// allows testing of expected caching and callback events
+bool read_and_check_from_range(const int test_idx, const int range, test_range_array_t& ranges, const ocsd_vaddr_t byte_offset, bool callback)
+{
+ uint32_t read_val, num_bytes_read, expected_val;
+ uint8_t* p_local_buff = (uint8_t*)&read_val;
+ int PrevAccCallbackCount = AccCallbackCount;
+ ocsd_err_t err;
+ ocsd_vaddr_t read_address;
+ bool pass = true, mem_callback_occurred = false;
+ std::ostringstream oss;
+ std::string memSpaceStr;
+ ocsd_mem_space_acc_t mem_space;
+ uint8_t traceID;
+
+
+ mem_space = ranges.ranges[range].mem_space;
+ read_address = ranges.ranges[range].s_address + byte_offset; // set address value
+ num_bytes_read = 4; // request 4 bytes
+ expected_val = *((uint32_t *)(&(ranges.ranges[range].buffer[byte_offset])));
+ traceID = ranges.ranges[range].trcID;
+ TrcMemAccessorBase::getMemAccSpaceString(memSpaceStr, mem_space);
+
+ oss << "Read Test(" << test_idx << "): Address 0x" << std::hex << std::setw(8) << std::setfill('0') << read_address << "; ";
+ oss << memSpaceStr << "; Traced ID 0x" << std::setw(2) << (uint32_t)traceID << "; ";
+ logger.LogMsg(oss.str());
+
+ err = mapper.ReadTargetMemory(read_address, ranges.ranges[range].trcID, OCSD_MEM_SPACE_EL1N, &num_bytes_read, p_local_buff);
+
+ mem_callback_occurred = (bool)(PrevAccCallbackCount != AccCallbackCount);
+ if (mem_callback_occurred)
+ oss.str("MemCB read; ");
+ else
+ oss.str("No MemCB; ");
+ logger.LogMsg(oss.str());
+
+ if (err != OCSD_OK) {
+ oss.str("");
+ oss << "Error reading target memory\n";
+ logger.LogMsg(oss.str());
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, oss.str()));
+ pass = false;
+ goto exit_test;
+ }
+
+ if (num_bytes_read != 4) {
+ oss.str("");
+ oss << "Read Fail: Requested bytes not found (4 != " << num_bytes_read << ")\n";
+ logger.LogMsg(oss.str());
+ pass = false;
+ goto exit_test;
+ }
+
+ if (expected_val != read_val) {
+ oss.str("");
+ oss << "Read Fail: value read mismatch; 0x" << std::hex << read_val << " != 0x" << expected_val << "\n";
+ logger.LogMsg(oss.str());
+ pass = false;
+ goto exit_test;
+ }
+
+ if (callback && !mem_callback_occurred) {
+ oss.str("");
+ oss << "Read Fail: Expected callback to access memory\n";
+ logger.LogMsg(oss.str());
+ pass = false;
+ goto exit_test;
+ }
+
+ if (!callback && mem_callback_occurred) {
+ oss.str("");
+ oss << "Read Fail: Unexpected callback to access memory\n";
+ logger.LogMsg(oss.str());
+ pass = false;
+ goto exit_test;
+ }
+
+ if (pass) {
+ oss.str("\n");
+ logger.LogMsg(oss.str());
+ }
+
+exit_test:
+ return pass;
+}
+
+void test_trcid_cache_mem_cb()
+{
+ TrcMemAccCB CBAcc;
+ test_range_array_t ranges;
+ int passed = 0, failed = 0;
+ std::ostringstream oss;
+ ocsd_err_t err;
+ int read_test_idx = 1;
+
+
+ log_test_start(__FUNCTION__);
+
+ // set up the ranges
+ ranges.num_ranges = 6;
+ ranges.ranges = new test_range_t[6];
+
+ // 1st range 0x0000, EL1N, trcID 0x10 - 1st CPU
+ set_test_range(ranges.ranges[0], 0x0000, BLOCK_SIZE_BYTES, (const uint8_t*)&el01_ns_blocks[0], OCSD_MEM_SPACE_EL1N, 0x10);
+ // 2nd range 0x0000, EL1N, trcID 0x11 - 2nd cpu, same addresses, different data.
+ set_test_range(ranges.ranges[1], 0x0000, BLOCK_SIZE_BYTES, (const uint8_t*)&el01_ns_blocks[1], OCSD_MEM_SPACE_EL1N, 0x11);
+ // 2nd range 0x8000, EL2N, trcID 0x10 - 2nd cpu, same addresses, different data.
+ set_test_range(ranges.ranges[2], 0x8000, BLOCK_SIZE_BYTES, (const uint8_t*)&el2_ns_blocks[0], OCSD_MEM_SPACE_EL2, 0x10);
+ // 2nd range 0x10000, EL2N, trcID 0x11 - 2nd cpu,
+ set_test_range(ranges.ranges[3], 0x10000, BLOCK_SIZE_BYTES, (const uint8_t*)&el2_ns_blocks[1], OCSD_MEM_SPACE_EL2, 0x11);
+ // 2nd range 0x0000, EL1 realm, trcID 0x10 - cpu 1 realm
+ set_test_range(ranges.ranges[4], 0x0000, BLOCK_SIZE_BYTES, (const uint8_t*)&el01_r_blocks[0], OCSD_MEM_SPACE_EL1R, 0x10);
+ // 2nd range 0x0000, EL2 realm, trcID 0x11 - 2nd cpu - realm .
+ set_test_range(ranges.ranges[5], 0x0000, BLOCK_SIZE_BYTES, (const uint8_t*)&el2_r_blocks[0], OCSD_MEM_SPACE_EL2R, 0x11);
+
+ // add the callback to the mapper
+ CBAcc.initAccessor(0, 0xFFFFFFFF, OCSD_MEM_SPACE_ANY);
+ CBAcc.setCBIDIfFn(TestMemAccCB, (void*)&ranges);
+ err = mapper.AddAccessor(&CBAcc, 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set callback memory accessor"));
+ failed++;
+ goto cleanup;
+ }
+
+ // run some tests
+ // initial read - should callback and load cache page
+ read_and_check_from_range(read_test_idx++, 0, ranges, 0, true) ? passed++ : failed++;
+
+ // next read - should not callback but use cache
+ read_and_check_from_range(read_test_idx++, 0, ranges, 0x10, false) ? passed++ : failed++;
+
+ // different cpu - same address - should callback for cache load
+ read_and_check_from_range(read_test_idx++, 1, ranges, 0x10, true) ? passed++ : failed++;
+
+ // different cpu - same address - use cache
+ read_and_check_from_range(read_test_idx++, 1, ranges, 0x10, false) ? passed++ : failed++;
+
+
+ // clean up mapper
+cleanup:
+ mapper.RemoveAllAccessors();
+ tests_passed += passed;
+ tests_failed += failed;
+ delete[] ranges.ranges;
+
+ log_test_end(__FUNCTION__, passed, failed);
+}
+
+/************************************************************************
+ * Test trcID specific memory regions - using callback function.
+ * Emulates clinets such as perf where memory regions change over the
+ * trace run as tasks switched in and out. Tests caching mechanisms in
+ * mapper.
+ */
+
+#define TEST_ADDR_COMMON 0x000000
+#define TEST_ADDR_EL1N 0x008000
+#define TEST_ADDR_EL2 0x010000
+#define TEST_ADDR_EL1S 0x018000
+#define TEST_ADDR_EL2S 0x020000
+#define TEST_ADDR_EL3 0x028000
+#define TEST_ADDR_EL1R 0x030000
+#define TEST_ADDR_EL2R 0x038000
+#define TEST_ADDR_EL3R 0x040000
+
+bool read_and_check_value(ocsd_vaddr_t addr, const uint8_t* p_block_buffer, ocsd_mem_space_acc_t space)
+{
+ ocsd_err_t err;
+ uint32_t read_val, check_val, num_bytes;
+ std::ostringstream oss;
+ std::string memSpaceStr;
+
+
+ TrcMemAccessorBase::getMemAccSpaceString(memSpaceStr, space);
+ oss << "Read Test: Address 0x" << std::hex << std::setw(8) << std::setfill('0') << addr << "; ";
+ oss << std::setw(4) << std::setfill(' ') << memSpaceStr << ";" ;
+ logger.LogMsg(oss.str());
+
+
+ num_bytes = 4;
+ err = mapper.ReadTargetMemory(addr, 0, space, &num_bytes, (uint8_t*)&read_val);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to read from mapper"));
+ return false;
+ }
+
+ check_val = *((uint32_t *)p_block_buffer);
+ if (check_val != read_val)
+ {
+ oss.str("");
+ oss << "Read Fail: value read mismatch; 0x" << std::hex << read_val << " != 0x" << check_val << "\n";
+ logger.LogMsg(oss.str());
+ return false;
+ }
+
+ oss.str("");
+ oss << " [0x" << std::hex << std::setw(8) << std::setfill('0') << read_val << "]\n";
+ logger.LogMsg(oss.str());
+ return true;
+}
+
+void test_mem_spaces()
+{
+ ocsd_err_t err;
+ int passed = 0, failed = 0;
+ std::ostringstream oss;
+
+
+ log_test_start(__FUNCTION__);
+
+ // check each memory space, 8 of them, and a each block.
+ #define NUM_ACCS (NUM_BLOCKS * 8)
+ TrcMemAccBufPtr accs[NUM_ACCS];
+
+ // set-up accessors - block 0 in each space is the same - the next will have no overlap
+ accs[0].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el01_ns_blocks[0], BLOCK_SIZE_BYTES);
+ accs[0].setMemSpace(OCSD_MEM_SPACE_EL1N);
+ accs[1].initAccessor(TEST_ADDR_EL1N, (const uint8_t*)&el01_ns_blocks[1], BLOCK_SIZE_BYTES);
+ accs[1].setMemSpace(OCSD_MEM_SPACE_EL1N);
+
+ accs[2].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el2_ns_blocks[0], BLOCK_SIZE_BYTES);
+ accs[2].setMemSpace(OCSD_MEM_SPACE_EL2);
+ accs[3].initAccessor(TEST_ADDR_EL2, (const uint8_t*)&el2_ns_blocks[1], BLOCK_SIZE_BYTES);
+ accs[3].setMemSpace(OCSD_MEM_SPACE_EL2);
+
+ accs[4].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el01_s_blocks[0], BLOCK_SIZE_BYTES);
+ accs[4].setMemSpace(OCSD_MEM_SPACE_EL1S);
+ accs[5].initAccessor(TEST_ADDR_EL1S, (const uint8_t*)&el01_s_blocks[1], BLOCK_SIZE_BYTES);
+ accs[5].setMemSpace(OCSD_MEM_SPACE_EL1S);
+
+ accs[6].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el2_s_blocks[0], BLOCK_SIZE_BYTES);
+ accs[6].setMemSpace(OCSD_MEM_SPACE_EL2S);
+ accs[7].initAccessor(TEST_ADDR_EL2S, (const uint8_t*)&el2_s_blocks[1], BLOCK_SIZE_BYTES);
+ accs[7].setMemSpace(OCSD_MEM_SPACE_EL2S);
+
+ accs[8].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el3_blocks[0], BLOCK_SIZE_BYTES);
+ accs[8].setMemSpace(OCSD_MEM_SPACE_EL3);
+ accs[9].initAccessor(TEST_ADDR_EL3, (const uint8_t*)&el3_blocks[1], BLOCK_SIZE_BYTES);
+ accs[9].setMemSpace(OCSD_MEM_SPACE_EL3);
+
+ accs[10].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el01_r_blocks[0], BLOCK_SIZE_BYTES);
+ accs[10].setMemSpace(OCSD_MEM_SPACE_EL1R);
+ accs[11].initAccessor(TEST_ADDR_EL1R, (const uint8_t*)&el01_r_blocks[1], BLOCK_SIZE_BYTES);
+ accs[11].setMemSpace(OCSD_MEM_SPACE_EL1R);
+
+ accs[12].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el2_r_blocks[0], BLOCK_SIZE_BYTES);
+ accs[12].setMemSpace(OCSD_MEM_SPACE_EL2R);
+ accs[13].initAccessor(TEST_ADDR_EL2R, (const uint8_t*)&el2_r_blocks[1], BLOCK_SIZE_BYTES);
+ accs[13].setMemSpace(OCSD_MEM_SPACE_EL2R);
+
+ accs[14].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el3_root_blocks[0], BLOCK_SIZE_BYTES);
+ accs[14].setMemSpace(OCSD_MEM_SPACE_ROOT);
+ accs[15].initAccessor(TEST_ADDR_EL3R, (const uint8_t*)&el3_root_blocks[1], BLOCK_SIZE_BYTES);
+ accs[15].setMemSpace(OCSD_MEM_SPACE_ROOT);
+
+ // add accessors to mapper.
+ for (int i = 0; i < NUM_ACCS; i++) {
+ err = mapper.AddAccessor(&accs[i], 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set callback memory accessor"));
+ failed++;
+ }
+ else
+ passed++;
+ }
+
+ // test a bunch of reads - use specific space then check match if more global spaces are used.
+ oss.str("Test EL1N registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el01_ns_blocks[0], OCSD_MEM_SPACE_EL1N) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1N, (const uint8_t*)&el01_ns_blocks[1], OCSD_MEM_SPACE_EL1N) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1N, (const uint8_t*)&el01_ns_blocks[1], OCSD_MEM_SPACE_N) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1N, (const uint8_t*)&el01_ns_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL1N registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el2_ns_blocks[0], OCSD_MEM_SPACE_EL2) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2, (const uint8_t*)&el2_ns_blocks[1], OCSD_MEM_SPACE_EL2) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2, (const uint8_t*)&el2_ns_blocks[1], OCSD_MEM_SPACE_N) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2, (const uint8_t*)&el2_ns_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL1S registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el01_s_blocks[0], OCSD_MEM_SPACE_EL1S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1S, (const uint8_t*)&el01_s_blocks[1], OCSD_MEM_SPACE_EL1S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1S, (const uint8_t*)&el01_s_blocks[1], OCSD_MEM_SPACE_S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1S, (const uint8_t*)&el01_s_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL2S registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el2_s_blocks[0], OCSD_MEM_SPACE_EL2S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2S, (const uint8_t*)&el2_s_blocks[1], OCSD_MEM_SPACE_EL2S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2S, (const uint8_t*)&el2_s_blocks[1], OCSD_MEM_SPACE_S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2S, (const uint8_t*)&el2_s_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL3 registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el3_blocks[0], OCSD_MEM_SPACE_EL3) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL3, (const uint8_t*)&el3_blocks[1], OCSD_MEM_SPACE_EL3) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL3, (const uint8_t*)&el3_blocks[1], OCSD_MEM_SPACE_S) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL3, (const uint8_t*)&el3_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL1R registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el01_r_blocks[0], OCSD_MEM_SPACE_EL1R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1R, (const uint8_t*)&el01_r_blocks[1], OCSD_MEM_SPACE_EL1R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1R, (const uint8_t*)&el01_r_blocks[1], OCSD_MEM_SPACE_R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL1R, (const uint8_t*)&el01_r_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test EL2R registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el2_r_blocks[0], OCSD_MEM_SPACE_EL2R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2R, (const uint8_t*)&el2_r_blocks[1], OCSD_MEM_SPACE_EL2R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2R, (const uint8_t*)&el2_r_blocks[1], OCSD_MEM_SPACE_R) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL2R, (const uint8_t*)&el2_r_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ oss.str("Test ROOT registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON, (const uint8_t*)&el3_root_blocks[0], OCSD_MEM_SPACE_ROOT) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL3R, (const uint8_t*)&el3_root_blocks[1], OCSD_MEM_SPACE_ROOT) ? passed++ : failed++;
+ read_and_check_value(TEST_ADDR_EL3R, (const uint8_t*)&el3_root_blocks[1], OCSD_MEM_SPACE_ANY) ? passed++ : failed++;
+
+ // clear for this test
+ mapper.RemoveAllAccessors();
+
+ // test access more global from specific - set ANY, N S and R spaces
+ accs[0].initAccessor(TEST_ADDR_COMMON, (const uint8_t*)&el01_ns_blocks[0], BLOCK_SIZE_BYTES);
+ accs[0].setMemSpace(OCSD_MEM_SPACE_ANY);
+ accs[1].initAccessor(TEST_ADDR_EL1N, (const uint8_t*)&el01_ns_blocks[1], BLOCK_SIZE_BYTES);
+ accs[1].setMemSpace(OCSD_MEM_SPACE_N);
+ accs[2].initAccessor(TEST_ADDR_EL2, (const uint8_t*)&el2_ns_blocks[0], BLOCK_SIZE_BYTES);
+ accs[2].setMemSpace(OCSD_MEM_SPACE_S);
+ accs[3].initAccessor(TEST_ADDR_EL3, (const uint8_t*)&el2_ns_blocks[1], BLOCK_SIZE_BYTES);
+ accs[3].setMemSpace(OCSD_MEM_SPACE_R);
+
+ for (int i = 0; i < 4; i++) {
+ err = mapper.AddAccessor(&accs[i], 0);
+ if (err != OCSD_OK) {
+ log_error(ocsdError(OCSD_ERR_SEV_ERROR, err, "Failed to set callback memory accessor"));
+ failed++;
+ }
+ else
+ passed++;
+ }
+
+ // for ANY space should match all other spaces
+ uint32_t offset = 0;
+ oss.str("Test ANY registered block\n");
+ logger.LogMsg(oss.str());
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) +offset, OCSD_MEM_SPACE_EL1N) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL2) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL1S) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL2S) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL3) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL1R) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL2R) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_S) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_N) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_R) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_COMMON + offset, ((const uint8_t*)&el01_ns_blocks[0]) + offset, OCSD_MEM_SPACE_ROOT) ? passed++ : failed++;
+
+ oss.str("Test Any N registered block\n");
+ logger.LogMsg(oss.str());
+ offset = 0;
+ read_and_check_value(TEST_ADDR_EL1N + offset, ((const uint8_t*)&el01_ns_blocks[1]) + offset, OCSD_MEM_SPACE_EL1N) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL1N + offset, ((const uint8_t*)&el01_ns_blocks[1]) + offset, OCSD_MEM_SPACE_EL2) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL1N + offset, ((const uint8_t*)&el01_ns_blocks[1]) + offset, OCSD_MEM_SPACE_N) ? passed++ : failed++;
+
+ oss.str("Test Any S registered block\n");
+ logger.LogMsg(oss.str());
+ offset = 0;
+ read_and_check_value(TEST_ADDR_EL2 + offset, ((const uint8_t*)&el2_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL1S) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL2 + offset, ((const uint8_t*)&el2_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL2S) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL2 + offset, ((const uint8_t*)&el2_ns_blocks[0]) + offset, OCSD_MEM_SPACE_EL3) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL2 + offset, ((const uint8_t*)&el2_ns_blocks[0]) + offset, OCSD_MEM_SPACE_S) ? passed++ : failed++;
+
+ oss.str("Test Any R registered block\n");
+ logger.LogMsg(oss.str());
+ offset = 0;
+ read_and_check_value(TEST_ADDR_EL3 + offset, ((const uint8_t*)&el2_ns_blocks[1]) + offset, OCSD_MEM_SPACE_EL1R) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL3 + offset, ((const uint8_t*)&el2_ns_blocks[1]) + offset, OCSD_MEM_SPACE_EL2R) ? passed++ : failed++;
+ offset += 4;
+ read_and_check_value(TEST_ADDR_EL3 + offset, ((const uint8_t*)&el2_ns_blocks[1]) + offset, OCSD_MEM_SPACE_R) ? passed++ : failed++;
+ offset += 4;
+
+ // clean up
+ mapper.RemoveAllAccessors();
+ tests_passed += passed;
+ tests_failed += failed;
+ log_test_end(__FUNCTION__, passed, failed);
+ }
+
+/************************************************************************
+ * main program
+ */
+int main(int argc, char* argv[])
+{
+ std::ostringstream oss;
+
+ if (!process_cmd_line_logger_opts(argc, argv))
+ {
+ std::cout << "Bad logger command line options\nProgram Exiting\n";
+ return -1;
+ }
+
+ // init the loggers.
+ logger.setLogOpts(logOpts);
+ logger.setLogFileName(logfileName.c_str());
+ err_log.initErrorLogger(OCSD_ERR_SEV_INFO);
+ err_log_handle = err_log.RegisterErrorSource("MEMACCTEST");
+ err_log.setOutputLogger(&logger);
+
+ oss << "OpenCSD memory access tests.\n";
+ oss << "----------------------------\n\n";
+ oss << "Library Version : " << ocsdVersion::vers_str() << "\n\n";
+ logger.LogMsg(oss.str());
+
+ // set up test data
+ populate_all_blocks();
+
+ // init the mapper
+ mapper.setErrorLog(&err_log);
+ mapper.enableCaching(true);
+
+ // call the test routines
+ test_overlap_regions();
+
+ test_trcid_cache_mem_cb();
+
+ test_mem_spaces();
+
+
+ oss.str("");
+ oss << "\n*** Memory access tests complete.***\nPassed: " << tests_passed << "; Failed: " << tests_failed << "\n";
+ logger.LogMsg(oss.str());
+ return (tests_failed == 0) ? 0 : -2;
+}
diff --git a/decoder/tests/source/perr.cpp b/decoder/tests/source/perr.cpp
new file mode 100644
index 0000000..827713e
--- /dev/null
+++ b/decoder/tests/source/perr.cpp
@@ -0,0 +1,64 @@
+/*
+* \file perr.cpp
+* \brief OpenCSD: list ocsd error codes and strings.
+*
+* \copyright Copyright (c) 2023, ARM Limited. All Rights Reserved.
+*/
+
+/*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+*
+* 1. Redistributions of source code must retain the above copyright notice,
+* this list of conditions and the following disclaimer.
+*
+* 2. Redistributions in binary form must reproduce the above copyright notice,
+* this list of conditions and the following disclaimer in the documentation
+* and/or other materials provided with the distribution.
+*
+* 3. Neither the name of the copyright holder nor the names of its contributors
+* may be used to endorse or promote products derived from this software without
+* specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/* list OCSD error codes and strings */
+
+#include <cstdio>
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <cstring>
+
+#include "opencsd.h" // the library
+
+
+int main(int argc, char* argv[])
+{
+ std::string errStr;
+
+ std::cout << "OCSD_ERR_??? Error code list\n\n";
+
+
+ for (int err = OCSD_OK; err < OCSD_ERR_LAST; err++)
+ {
+ errStr = ocsdError::getErrorString(ocsdError(OCSD_ERR_SEV_ERROR, (ocsd_err_t)err));
+ std::cout << err << ": ";
+ std::cout << errStr;
+ std::cout << "\n";
+ std::cout.flush();
+ }
+
+
+ return 0;
+}
diff --git a/decoder/tests/source/trc_pkt_lister.cpp b/decoder/tests/source/trc_pkt_lister.cpp
index 83f8b85..a207605 100644
--- a/decoder/tests/source/trc_pkt_lister.cpp
+++ b/decoder/tests/source/trc_pkt_lister.cpp
@@ -76,6 +76,13 @@ static bool has_hsync = false;
static bool src_addr_n = false;
static bool stats = false;
static bool profile = false;
+static bool multi_session = false; // decode all buffers in snapshot as same config.
+
+static bool macc_cache_disable = false;
+static uint32_t macc_cache_page_size = 0;
+static uint32_t macc_cache_page_num = 0;
+
+static SnapShotReader ss_reader;
int main(int argc, char* argv[])
{
@@ -107,8 +114,7 @@ int main(int argc, char* argv[])
moss.str("");
moss << "Trace Packet Lister : reading snapshot from path " << ss_path << "\n";
logger.LogMsg(moss.str());
-
- SnapShotReader ss_reader;
+
ss_reader.setSnapshotDir(ss_path);
ss_reader.setErrorLogger(&err_log);
ss_reader.setVerboseOutput(ss_verbose);
@@ -188,17 +194,22 @@ void print_help()
oss << "\nDecode:\n\n";
oss << "-id <n> Set an ID to list (may be used multiple times) - default if no id set is for all IDs to be printed\n";
oss << "-src_name <name> List packets from a given snapshot source name (defaults to first source found)\n";
+ oss << "-multi_session List packets from all sources - assumes same config for all (ignored if -src_name used)\n";
oss << "-dstream_format Input is DSTREAM framed.\n";
oss << "-tpiu Input from TPIU - sync by FSYNC.\n";
oss << "-tpiu_hsync Input from TPIU - sync by FSYNC and HSYNC.\n";
- oss << "-decode Full decode of the packets from the trace snapshot (default is to list undecoded packets only\n";
+ oss << "-decode Full decode of the packets from the trace snapshot (default is to list undecoded packets only)\n";
oss << "-decode_only Does not list the undecoded packets, just the trace decode.\n";
oss << "-o_raw_packed Output raw packed trace frames\n";
oss << "-o_raw_unpacked Output raw unpacked trace data per ID\n";
- oss << "-test_waits <N> Force wait from packet printer for N packets - test the wait/flush mechanisms for the decoder\n";
oss << "-src_addr_n ETE protocol: Split source address ranges on N atoms\n";
oss << "-stats Output packet processing statistics (if available).\n";
+ oss << "\nDevelopment:\nOptions used during develop and test of the library\n\n";
oss << "-profile Mute logging output while profiling library performance\n";
+ oss << "-test_waits <N> Force wait from packet printer for N packets - test the wait/flush mechanisms for the decoder\n";
+ oss << "-macc_cache_disable Switch off caching on memory accessor\n";
+ oss << "-macc_cache_p_size Set size of caching pages\n";
+ oss << "-macc_cache_p_num Set number of caching pages\n";
oss << "\nOutput:\n";
oss << " Setting any of these options cancels the default output to file & stdout,\n using _only_ the options supplied.\n\n";
oss << "-logstdout Output to stdout -> console.\n";
@@ -347,14 +358,21 @@ bool process_cmd_line_opts(int argc, char* argv[])
{
options_to_process--;
optIdx++;
- if(options_to_process)
+ if (options_to_process) {
source_buffer_name = argv[optIdx];
+ multi_session = false;
+ }
else
{
logger.LogMsg("Trace Packet Lister : Error: Missing source name string on -src_name option\n");
bOptsOK = false;
}
}
+ else if (strcmp(argv[optIdx], "-multi_session") == 0)
+ {
+ if (source_buffer_name.length() == 0)
+ multi_session = true;
+ }
else if(strcmp(argv[optIdx], "-test_waits") == 0)
{
options_to_process--;
@@ -438,6 +456,24 @@ bool process_cmd_line_opts(int argc, char* argv[])
{
profile = true;
}
+ else if (strcmp(argv[optIdx], "-macc_cache_disable") == 0)
+ {
+ macc_cache_disable = true;
+ }
+ else if (strcmp(argv[optIdx], "-macc_cache_p_size") == 0)
+ {
+ options_to_process--;
+ optIdx++;
+ if (options_to_process)
+ macc_cache_page_size = (uint32_t)strtoul(argv[optIdx], 0, 0);
+ }
+ else if (strcmp(argv[optIdx], "-macc_cache_p_num") == 0)
+ {
+ options_to_process--;
+ optIdx++;
+ if (options_to_process)
+ macc_cache_page_num = (uint32_t)strtoul(argv[optIdx], 0, 0);
+ }
else
{
std::ostringstream errstr;
@@ -604,6 +640,131 @@ void PrintDecodeStats(DecodeTree *dcd_tree)
}
}
+bool ProcessInputFile(DecodeTree *dcd_tree, std::string &in_filename,
+ TrcGenericElementPrinter* genElemPrinter, ocsdDefaultErrorLogger& err_logger)
+{
+ bool bOK = true;
+
+ // need to push the data through the decode tree.
+ std::ifstream in;
+ in.open(in_filename, std::ifstream::in | std::ifstream::binary);
+ if (in.is_open())
+ {
+ ocsd_datapath_resp_t dataPathResp = OCSD_RESP_CONT;
+ static const int bufferSize = 1024;
+ uint8_t trace_buffer[bufferSize]; // temporary buffer to load blocks of data from the file
+ uint32_t trace_index = 0; // index into the overall trace buffer (file).
+
+ // process the file, a buffer load at a time
+ while (!in.eof() && !OCSD_DATA_RESP_IS_FATAL(dataPathResp))
+ {
+ if (dstream_format)
+ {
+ in.read((char*)&trace_buffer[0], 512 - 8);
+ }
+ else
+ in.read((char*)&trace_buffer[0], bufferSize); // load a block of data into the buffer
+
+ std::streamsize nBuffRead = in.gcount(); // get count of data loaded.
+ std::streamsize nBuffProcessed = 0; // amount processed in this buffer.
+ uint32_t nUsedThisTime = 0;
+
+ // process the current buffer load until buffer done, or fatal error occurs
+ while ((nBuffProcessed < nBuffRead) && !OCSD_DATA_RESP_IS_FATAL(dataPathResp))
+ {
+ if (OCSD_DATA_RESP_IS_CONT(dataPathResp))
+ {
+ dataPathResp = dcd_tree->TraceDataIn(
+ OCSD_OP_DATA,
+ trace_index,
+ (uint32_t)(nBuffRead - nBuffProcessed),
+ &(trace_buffer[0]) + nBuffProcessed,
+ &nUsedThisTime);
+
+ nBuffProcessed += nUsedThisTime;
+ trace_index += nUsedThisTime;
+
+ // test printers can inject _WAIT responses - see if we are expecting one...
+ if (ExpectingPPrintWaitResp(dcd_tree, *genElemPrinter))
+ {
+ if (OCSD_DATA_RESP_IS_CONT(dataPathResp))
+ {
+ // not wait or fatal - log a warning here.
+ std::ostringstream oss;
+ oss << "Trace Packet Lister : WARNING : Data in; data Path expected WAIT response\n";
+ logger.LogMsg(oss.str());
+ }
+ }
+ }
+ else // last response was _WAIT
+ {
+ // may need to acknowledge a wait from the gen elem printer
+ if (genElemPrinter->needAckWait())
+ genElemPrinter->ackWait();
+
+ // dataPathResp not continue or fatal so must be wait...
+ dataPathResp = dcd_tree->TraceDataIn(OCSD_OP_FLUSH, 0, 0, 0, 0);
+ }
+ }
+
+ /* dump dstream footers */
+ if (dstream_format) {
+ in.read((char*)&trace_buffer[0], 8);
+ if (outRawPacked)
+ {
+ std::ostringstream oss;
+ oss << "DSTREAM footer [";
+ for (int i = 0; i < 8; i++)
+ {
+ oss << "0x" << std::hex << (int)trace_buffer[i] << " ";
+ }
+ oss << "]\n";
+ logger.LogMsg(oss.str());
+ }
+ }
+ }
+
+ // fatal error - no futher processing
+ if (OCSD_DATA_RESP_IS_FATAL(dataPathResp))
+ {
+ std::ostringstream oss;
+ oss << "Trace Packet Lister : Data Path fatal error\n";
+ logger.LogMsg(oss.str());
+ ocsdError* perr = err_logger.GetLastError();
+ if (perr != 0)
+ logger.LogMsg(ocsdError::getErrorString(perr));
+ bOK = false;
+ }
+ else
+ {
+ // mark end of trace into the data path
+ dcd_tree->TraceDataIn(OCSD_OP_EOT, 0, 0, 0, 0);
+ }
+
+ // close the input file.
+ in.close();
+
+ std::ostringstream oss;
+ oss << "Trace Packet Lister : Trace buffer done, processed " << trace_index << " bytes.\n";
+ logger.LogMsg(oss.str());
+ if (stats)
+ PrintDecodeStats(dcd_tree);
+ if (profile)
+ genElemPrinter->printStats();
+
+ // multi-session - reset the decoder for the next pass.
+ if (multi_session)
+ dcd_tree->TraceDataIn(OCSD_OP_RESET, 0, 0, 0, 0);
+ }
+ else
+ {
+ std::ostringstream oss;
+ oss << "Trace Packet Lister : Error : Unable to open trace buffer.\n";
+ logger.LogMsg(oss.str());
+ }
+ return bOK;
+}
+
void ListTracePackets(ocsdDefaultErrorLogger &err_logger, SnapShotReader &reader, const std::string &trace_buffer_name)
{
CreateDcdTreeFromSnapShot tree_creator;
@@ -638,6 +799,22 @@ void ListTracePackets(ocsdDefaultErrorLogger &err_logger, SnapShotReader &reader
genElemPrinter->setMute(true);
genElemPrinter->set_collect_stats();
}
+ if (macc_cache_disable || macc_cache_page_size || macc_cache_page_num)
+ {
+ TrcMemAccMapper* pMapper = dcd_tree->getMemAccMapper();
+
+ if (macc_cache_disable)
+ pMapper->enableCaching(false);
+ else
+ {
+ // one value set - set the other to default
+ if (!macc_cache_page_size)
+ macc_cache_page_size = MEM_ACC_CACHE_DEFAULT_PAGE_SIZE;
+ if (!macc_cache_page_num)
+ macc_cache_page_num = MEM_ACC_CACHE_DEFAULT_MRU_SIZE;
+ pMapper->setCacheSizes(macc_cache_page_size, macc_cache_page_num);
+ }
+ }
}
if(decode)
@@ -652,120 +829,45 @@ void ListTracePackets(ocsdDefaultErrorLogger &err_logger, SnapShotReader &reader
else
dcd_tree->clearIDFilter();
- // need to push the data through the decode tree.
- std::ifstream in;
- in.open(tree_creator.getBufferFileName(),std::ifstream::in | std::ifstream::binary);
- if(in.is_open())
+ std::string binFileName;
+ if (!multi_session)
+ {
+ binFileName = tree_creator.getBufferFileName();
+ ProcessInputFile(dcd_tree, binFileName, genElemPrinter, err_logger);
+ }
+ else
{
- ocsd_datapath_resp_t dataPathResp = OCSD_RESP_CONT;
- static const int bufferSize = 1024;
- uint8_t trace_buffer[bufferSize]; // temporary buffer to load blocks of data from the file
- uint32_t trace_index = 0; // index into the overall trace buffer (file).
+ std::ostringstream oss;
+ std::vector<std::string> sourceBuffList;
+ ss_reader.getSourceBufferNameList(sourceBuffList);
- // process the file, a buffer load at a time
- while(!in.eof() && !OCSD_DATA_RESP_IS_FATAL(dataPathResp))
+ for (size_t i = 0; i < sourceBuffList.size(); i++)
{
- if (dstream_format)
- {
- in.read((char *)&trace_buffer[0], 512 - 8);
- }
- else
- in.read((char *)&trace_buffer[0],bufferSize); // load a block of data into the buffer
-
- std::streamsize nBuffRead = in.gcount(); // get count of data loaded.
- std::streamsize nBuffProcessed = 0; // amount processed in this buffer.
- uint32_t nUsedThisTime = 0;
+ oss.str("");
+ oss << "####### Multi Session decode: Buffer " << (i+1) << " of " << sourceBuffList.size();
+ oss << "; Source name = " << sourceBuffList[i] << ".\n\n";
+ logger.LogMsg(oss.str());
- // process the current buffer load until buffer done, or fatal error occurs
- while((nBuffProcessed < nBuffRead) && !OCSD_DATA_RESP_IS_FATAL(dataPathResp))
+ binFileName = tree_creator.getBufferFileNameFromBuffName(sourceBuffList[i]);
+ if (binFileName.length() <= 0)
{
- if(OCSD_DATA_RESP_IS_CONT(dataPathResp))
- {
- dataPathResp = dcd_tree->TraceDataIn(
- OCSD_OP_DATA,
- trace_index,
- (uint32_t)(nBuffRead - nBuffProcessed),
- &(trace_buffer[0])+nBuffProcessed,
- &nUsedThisTime);
-
- nBuffProcessed += nUsedThisTime;
- trace_index += nUsedThisTime;
-
- // test printers can inject _WAIT responses - see if we are expecting one...
- if(ExpectingPPrintWaitResp(dcd_tree, *genElemPrinter))
- {
- if(OCSD_DATA_RESP_IS_CONT(dataPathResp))
- {
- // not wait or fatal - log a warning here.
- std::ostringstream oss;
- oss << "Trace Packet Lister : WARNING : Data in; data Path expected WAIT response\n";
- logger.LogMsg(oss.str());
- }
- }
- }
- else // last response was _WAIT
- {
- // may need to acknowledge a wait from the gen elem printer
- if(genElemPrinter->needAckWait())
- genElemPrinter->ackWait();
-
- // dataPathResp not continue or fatal so must be wait...
- dataPathResp = dcd_tree->TraceDataIn(OCSD_OP_FLUSH,0,0,0,0);
- }
+ oss.str("");
+ oss << "Trace Packet Lister : ERROR : Multi-session decode for buffer " << sourceBuffList[i] << " - buffer not found. Aborting.\n\n";
+ logger.LogMsg(oss.str());
+ break;
}
- /* dump dstream footers */
- if (dstream_format) {
- in.read((char *)&trace_buffer[0], 8);
- if (outRawPacked)
- {
- std::ostringstream oss;
- oss << "DSTREAM footer [";
- for (int i = 0; i < 8; i++)
- {
- oss << "0x" << std::hex << (int)trace_buffer[i] << " ";
- }
- oss << "]\n";
- logger.LogMsg(oss.str());
- }
+ if (!ProcessInputFile(dcd_tree, binFileName, genElemPrinter, err_logger)) {
+ oss.str("");
+ oss << "Trace Packet Lister : ERROR : Multi-session decode for buffer " << sourceBuffList[i] << " failed. Aborting.\n\n";
+ logger.LogMsg(oss.str());
+ break;
}
- }
-
- // fatal error - no futher processing
- if(OCSD_DATA_RESP_IS_FATAL(dataPathResp))
- {
- std::ostringstream oss;
- oss << "Trace Packet Lister : Data Path fatal error\n";
+ oss.str("");
+ oss << "####### Buffer " << (i + 1) << " : " << sourceBuffList[i] << " Complete\n\n";
logger.LogMsg(oss.str());
- ocsdError *perr = err_logger.GetLastError();
- if(perr != 0)
- logger.LogMsg(ocsdError::getErrorString(perr));
-
- }
- else
- {
- // mark end of trace into the data path
- dcd_tree->TraceDataIn(OCSD_OP_EOT,0,0,0,0);
}
-
- // close the input file.
- in.close();
-
- std::ostringstream oss;
- oss << "Trace Packet Lister : Trace buffer done, processed " << trace_index << " bytes.\n";
- logger.LogMsg(oss.str());
- if (stats)
- PrintDecodeStats(dcd_tree);
- if (profile)
- genElemPrinter->printStats();
}
- else
- {
- std::ostringstream oss;
- oss << "Trace Packet Lister : Error : Unable to open trace buffer.\n";
- logger.LogMsg(oss.str());
- }
-
}
else
{