Date: Wed, 4 Apr 2018 12:33:47 +0000 (UTC) From: Ruslan Bukin <br@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r332012 - in vendor/opencsd: . dist dist/decoder dist/decoder/build dist/decoder/build/linux dist/decoder/build/linux/rctdl_c_api_lib dist/decoder/build/linux/ref_trace_decode_lib dist/... Message-ID: <201804041233.w34CXleW015734@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: br Date: Wed Apr 4 12:33:46 2018 New Revision: 332012 URL: https://svnweb.freebsd.org/changeset/base/332012 Log: Import OpenCSD -- an ARM CoreSight Trace Decode library. Git ID 900407e9d6400f6541138d6c2e483a9fc2d699a4 Sponsored by: DARPA, AFRL Added: vendor/opencsd/ vendor/opencsd/dist/ vendor/opencsd/dist/.gitignore vendor/opencsd/dist/HOWTO.md vendor/opencsd/dist/LICENSE vendor/opencsd/dist/README.md vendor/opencsd/dist/TODO vendor/opencsd/dist/decoder/ vendor/opencsd/dist/decoder/build/ vendor/opencsd/dist/decoder/build/linux/ vendor/opencsd/dist/decoder/build/linux/makefile (contents, props changed) vendor/opencsd/dist/decoder/build/linux/rctdl_c_api_lib/ vendor/opencsd/dist/decoder/build/linux/rctdl_c_api_lib/makefile (contents, props changed) vendor/opencsd/dist/decoder/build/linux/ref_trace_decode_lib/ vendor/opencsd/dist/decoder/build/linux/ref_trace_decode_lib/makefile (contents, props changed) vendor/opencsd/dist/decoder/build/win-vs2015/ vendor/opencsd/dist/decoder/build/win-vs2015/opencsd.props vendor/opencsd/dist/decoder/build/win-vs2015/rctdl_c_api_lib/ vendor/opencsd/dist/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj vendor/opencsd/dist/decoder/build/win-vs2015/rctdl_c_api_lib/rctdl_c_api_lib.vcxproj.filters vendor/opencsd/dist/decoder/build/win-vs2015/ref_trace_decode_lib/ vendor/opencsd/dist/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.sln vendor/opencsd/dist/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj vendor/opencsd/dist/decoder/build/win-vs2015/ref_trace_decode_lib/ref_trace_decode_lib.vcxproj.filters vendor/opencsd/dist/decoder/docs/ vendor/opencsd/dist/decoder/docs/build_libs.md vendor/opencsd/dist/decoder/docs/doxygen_config.dox vendor/opencsd/dist/decoder/docs/external_custom.md vendor/opencsd/dist/decoder/docs/specs/ vendor/opencsd/dist/decoder/docs/specs/ARM Trace and Debug Snapshot file format 0v2.pdf (contents, props changed) vendor/opencsd/dist/decoder/docs/test_progs.md vendor/opencsd/dist/decoder/include/ vendor/opencsd/dist/decoder/include/common/ vendor/opencsd/dist/decoder/include/common/comp_attach_notifier_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/comp_attach_pt_t.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_code_follower.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_dcd_mngr.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_dcd_mngr_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_dcd_tree.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_dcd_tree_elem.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_error.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_error_logger.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_gen_elem_list.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_lib_dcd_register.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_msg_logger.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_pe_context.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/ocsd_version.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_component.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_core_arch_map.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_cs_config.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_frame_deformatter.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_gen_elem.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_pkt_decode_base.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_pkt_elem_base.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_pkt_proc_base.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_printable_elem.h (contents, props changed) vendor/opencsd/dist/decoder/include/common/trc_ret_stack.h (contents, props changed) vendor/opencsd/dist/decoder/include/i_dec/ vendor/opencsd/dist/decoder/include/i_dec/trc_i_decode.h (contents, props changed) vendor/opencsd/dist/decoder/include/i_dec/trc_idec_arminst.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/ vendor/opencsd/dist/decoder/include/interfaces/trc_abs_typed_base_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_data_raw_in_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_data_rawframe_in_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_error_log_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_gen_elem_in_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_indexer_pkt_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_indexer_src_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_instr_decode_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_pkt_in_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_pkt_raw_in_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/interfaces/trc_tgt_mem_access_i.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/ vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_base.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_bufptr.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_cb.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_cb_if.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_file.h (contents, props changed) vendor/opencsd/dist/decoder/include/mem_acc/trc_mem_acc_mapper.h (contents, props changed) vendor/opencsd/dist/decoder/include/ocsd_if_version.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ vendor/opencsd/dist/decoder/include/opencsd.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/c_api/ vendor/opencsd/dist/decoder/include/opencsd/c_api/ocsd_c_api_cust_fact.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/c_api/ocsd_c_api_cust_impl.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/c_api/ocsd_c_api_custom.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/c_api/ocsd_c_api_types.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/c_api/opencsd_c_api.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/ vendor/opencsd/dist/decoder/include/opencsd/etmv3/etmv3_decoder.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_cmp_cfg_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_dcd_mngr_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_pkt_decode_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_pkt_elem_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_pkt_proc_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv3/trc_pkt_types_etmv3.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/ vendor/opencsd/dist/decoder/include/opencsd/etmv4/etmv4_decoder.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_cmp_cfg_etmv4.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_dcd_mngr_etmv4i.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_etmv4_stack_elem.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4d.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_pkt_proc_etmv4.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/etmv4/trc_pkt_types_etmv4.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ocsd_if_types.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/ vendor/opencsd/dist/decoder/include/opencsd/ptm/ptm_decoder.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_cmp_cfg_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_dcd_mngr_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_pkt_decode_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_pkt_elem_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_pkt_proc_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/ptm/trc_pkt_types_ptm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/ vendor/opencsd/dist/decoder/include/opencsd/stm/stm_decoder.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_cmp_cfg_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_dcd_mngr_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_pkt_decode_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_pkt_elem_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_pkt_proc_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/stm/trc_pkt_types_stm.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/trc_gen_elem_types.h (contents, props changed) vendor/opencsd/dist/decoder/include/opencsd/trc_pkt_types.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/ vendor/opencsd/dist/decoder/include/pkt_printers/gen_elem_printer.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/item_printer.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/pkt_printer_t.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/raw_frame_printer.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/trc_pkt_printers.h (contents, props changed) vendor/opencsd/dist/decoder/include/pkt_printers/trc_print_fact.h (contents, props changed) vendor/opencsd/dist/decoder/source/ vendor/opencsd/dist/decoder/source/c_api/ vendor/opencsd/dist/decoder/source/c_api/ocsd_c_api.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/c_api/ocsd_c_api_custom_obj.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/c_api/ocsd_c_api_custom_obj.h (contents, props changed) vendor/opencsd/dist/decoder/source/c_api/ocsd_c_api_obj.h (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/ vendor/opencsd/dist/decoder/source/etmv3/trc_cmp_cfg_etmv3.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/trc_pkt_decode_etmv3.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/trc_pkt_elem_etmv3.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/trc_pkt_proc_etmv3.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/trc_pkt_proc_etmv3_impl.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv3/trc_pkt_proc_etmv3_impl.h (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/ vendor/opencsd/dist/decoder/source/etmv4/trc_cmp_cfg_etmv4.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_etmv4_stack_elem.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_decode_etmv4i.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_elem_etmv4d.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_elem_etmv4i.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_proc_etmv4.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_proc_etmv4d_impl.h (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_proc_etmv4i_impl.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/etmv4/trc_pkt_proc_etmv4i_impl.h (contents, props changed) vendor/opencsd/dist/decoder/source/i_dec/ vendor/opencsd/dist/decoder/source/i_dec/trc_i_decode.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/i_dec/trc_idec_arminst.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/mem_acc/ vendor/opencsd/dist/decoder/source/mem_acc/trc_mem_acc_base.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/mem_acc/trc_mem_acc_bufptr.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/mem_acc/trc_mem_acc_cb.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/mem_acc/trc_mem_acc_file.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/mem_acc/trc_mem_acc_mapper.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_code_follower.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_dcd_tree.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_error.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_error_logger.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_gen_elem_list.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_lib_dcd_register.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_msg_logger.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ocsd_version.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/pkt_printers/ vendor/opencsd/dist/decoder/source/pkt_printers/raw_frame_printer.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/pkt_printers/trc_print_fact.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ptm/ vendor/opencsd/dist/decoder/source/ptm/trc_cmp_cfg_ptm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ptm/trc_pkt_decode_ptm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ptm/trc_pkt_elem_ptm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/ptm/trc_pkt_proc_ptm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/stm/ vendor/opencsd/dist/decoder/source/stm/trc_pkt_decode_stm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/stm/trc_pkt_elem_stm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/stm/trc_pkt_proc_stm.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_component.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_core_arch_map.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_frame_deformatter.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_frame_deformatter_impl.h (contents, props changed) vendor/opencsd/dist/decoder/source/trc_gen_elem.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_printable_elem.cpp (contents, props changed) vendor/opencsd/dist/decoder/source/trc_ret_stack.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/ vendor/opencsd/dist/decoder/tests/build/ vendor/opencsd/dist/decoder/tests/build/linux/ vendor/opencsd/dist/decoder/tests/build/linux/c_api_pkt_print_test/ vendor/opencsd/dist/decoder/tests/build/linux/c_api_pkt_print_test/makefile (contents, props changed) vendor/opencsd/dist/decoder/tests/build/linux/echo_test_dcd_lib/ vendor/opencsd/dist/decoder/tests/build/linux/echo_test_dcd_lib/makefile (contents, props changed) vendor/opencsd/dist/decoder/tests/build/linux/snapshot_parser_lib/ vendor/opencsd/dist/decoder/tests/build/linux/snapshot_parser_lib/makefile (contents, props changed) vendor/opencsd/dist/decoder/tests/build/linux/trc_pkt_lister/ vendor/opencsd/dist/decoder/tests/build/linux/trc_pkt_lister/makefile (contents, props changed) vendor/opencsd/dist/decoder/tests/build/win-vs2015/ vendor/opencsd/dist/decoder/tests/build/win-vs2015/c_api_pkt_print_test/ vendor/opencsd/dist/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj vendor/opencsd/dist/decoder/tests/build/win-vs2015/c_api_pkt_print_test/c_api_pkt_print_test.vcxproj.filters vendor/opencsd/dist/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ vendor/opencsd/dist/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj vendor/opencsd/dist/decoder/tests/build/win-vs2015/ext_dcd_echo_test/ext_dcd_echo_test.vcxproj.filters vendor/opencsd/dist/decoder/tests/build/win-vs2015/snapshot_parser_lib/ vendor/opencsd/dist/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj vendor/opencsd/dist/decoder/tests/build/win-vs2015/snapshot_parser_lib/snapshot_parser_lib.vcxproj.filters vendor/opencsd/dist/decoder/tests/build/win-vs2015/trc_pkt_lister/ vendor/opencsd/dist/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj vendor/opencsd/dist/decoder/tests/build/win-vs2015/trc_pkt_lister/trc_pkt_lister.vcxproj.filters vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/ vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/c_api_echo_test/ vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/c_api_echo_test/ext_dcd_echo_test.c (contents, props changed) vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/c_api_echo_test/ext_dcd_echo_test.h (contents, props changed) vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/c_api_echo_test/ext_dcd_echo_test_fact.c (contents, props changed) vendor/opencsd/dist/decoder/tests/ext_dcd_test_eg/c_api_echo_test/ext_dcd_echo_test_fact.h (contents, props changed) vendor/opencsd/dist/decoder/tests/perf-test-scripts/ vendor/opencsd/dist/decoder/tests/perf-test-scripts/perf-setup-env.bash (contents, props changed) vendor/opencsd/dist/decoder/tests/perf-test-scripts/perf-test-report.bash (contents, props changed) vendor/opencsd/dist/decoder/tests/perf-test-scripts/perf-test-script.bash (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/ vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/ vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/device_info.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/device_parser.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/ini_section_names.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/snapshot_info.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/snapshot_parser.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/snapshot_parser_util.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/snapshot_reader.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/ss_key_value_names.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/ss_to_dcdtree.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/include/trace_snapshots.h (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/ vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/device_info.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/device_parser.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/snapshot_parser.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/snapshot_parser_util.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/snapshot_reader.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/snapshot_parser_lib/source/ss_to_dcdtree.cpp (contents, props changed) vendor/opencsd/dist/decoder/tests/source/ vendor/opencsd/dist/decoder/tests/source/c_api_pkt_print_test.c (contents, props changed) vendor/opencsd/dist/decoder/tests/source/trc_pkt_lister.cpp (contents, props changed) Added: vendor/opencsd/dist/.gitignore ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/.gitignore Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,76 @@ +# Object files +*.o +*.ko +*.obj +*.elf + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ + +# Vc++ build files +*tlog +Debug/ +ipch/ +*.opensdf +*.sdf +*.suo +*.user +*.idb +*.pdb +*.exp +*.ilk + +# ignore emacs backup saves +*~ + +# ignore bin test directory +bin/ +*.log +ref_trace_decoder/build/win/rctdl_c_api_lib/Release/* +ref_trace_decoder/build/win/rctdl_c_api_lib/x64/Release/* +ref_trace_decoder/build/win/ref_trace_decode_lib/Release/* +ref_trace_decoder/build/win/ref_trace_decode_lib/x64/Release/* +ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/Release/* +ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/x64/Release/* +*.lastbuildstate +*.manifest +*.cache +ref_trace_decoder/docs/html/* +ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/Debug-dll/* +ref_trace_decoder/tests/build/win/simple_pkt_print_c_api/x64/Debug-dll/* +ref_trace_decoder/tests/build/win/trc_pkt_lister/Debug-dll/* +ref_trace_decoder/tests/build/win/trc_pkt_lister/Release-dll/* +ref_trace_decoder/tests/build/win/trc_pkt_lister/x64/Debug-dll/* +ref_trace_decoder/tests/build/win/trc_pkt_lister/x64/Release-dll/* +*.bak +*.orig +decoder/docs/html/* +*.orig +*.VC.db +*.VC.VC.opendb +*.iobj +*.ipdb Added: vendor/opencsd/dist/HOWTO.md ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/HOWTO.md Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,661 @@ +HOWTO - using the library with perf {#howto_perf} +=================================== + +@brief Using command line perf and OpenCSD to collect and decode trace. + +This HOWTO explains how to use the perf cmd line tools and the openCSD +library to collect and extract program flow traces generated by the +CoreSight IP blocks on a Linux system. The examples have been generated using +an aarch64 Juno-r0 platform. All information is considered accurate and tested +using the latest version of the library and the `master` branch on the +[perf-opencsd github repository][1]. + + +On Target Trace Acquisition - Perf Record +----------------------------------------- +All the enhancement to the Perf tools that support the new `cs_etm` pmu have +not been upstreamed yet. To get the required functionality branch +`perf-opencsd-master` needs to be downloaded to the target system where +traces are to be collected. This branch is a vanilla upstream kernel +supplemented with modifications to the CoreSight framework and drivers to be +usable by the Perf core. The remaining out of tree patches are being +upstreamed incrementally. + +From there compiling the perf tools with `make -C tools/perf` will yield a +`perf` executable that will support CoreSight trace collection. Note that if +traces are to be decompressed *off* target, there is no need to download and +compile the openCSD library (on the target). + +Before launching a trace run a sink that will collect trace data needs to be +identified. All CoreSight blocks identified by the framework are registed in +sysFS: + + + linaro@linaro-nano:~$ ls /sys/bus/coresight/devices/ + 20010000.etf 20040000.main_funnel 22040000.etm 22140000.etm + 230c0000.A53_funnel 23240000.etm replicator@20020000 20030000.tpiu + 20070000.etr 220c0000.A57_funnel 23040000.etm 23140000.etm 23340000.etm + + +CoreSight blocks are listed in the device tree for a specific system and +discovered at boot time. Since tracers can be linked to more than one sink, +the sink that will recieve trace data needs to be identified and given as an +option on the perf command line. Once a sink has been identify trace collection +can start. An easy and yet interesting example is the `uname` command: + + linaro@linaro-nano:~/kernel$ ./tools/perf/perf record -e cs_etm/@20070000.etr/ --per-thread uname + +This will generate a `perf.data` file where execution has been traced for both +user and kernel space. To narrow the field to either user or kernel space the +`u` and `k` options can be specified. For example the following will limit +traces to user space: + + + linaro@linaro-nano:~/kernel$ ./tools/perf/perf record -vvv -e cs_etm/@20070000.etr/u --per-thread uname + Problems setting modules path maps, continuing anyway... + ----------------------------------------------------------- + perf_event_attr: + type 8 + size 112 + { sample_period, sample_freq } 1 + sample_type IP|TID|IDENTIFIER + read_format ID + disabled 1 + exclude_kernel 1 + exclude_hv 1 + enable_on_exec 1 + sample_id_all 1 + ------------------------------------------------------------ + sys_perf_event_open: pid 11375 cpu -1 group_fd -1 flags 0x8 + ------------------------------------------------------------ + perf_event_attr: + type 1 + size 112 + config 0x9 + { sample_period, sample_freq } 1 + sample_type IP|TID|IDENTIFIER + read_format ID + disabled 1 + exclude_kernel 1 + exclude_hv 1 + mmap 1 + comm 1 + enable_on_exec 1 + task 1 + sample_id_all 1 + mmap2 1 + comm_exec 1 + ------------------------------------------------------------ + sys_perf_event_open: pid 11375 cpu -1 group_fd -1 flags 0x8 + mmap size 266240B + AUX area mmap length 131072 + perf event ring buffer mmapped per thread + Synthesizing auxtrace information + Linux + auxtrace idx 0 old 0 head 0x11ea0 diff 0x11ea0 + [ perf record: Woken up 1 times to write data ] + overlapping maps: + 7f99daf000-7f99db0000 0 [vdso] + 7f99d84000-7f99db3000 0 /lib/aarch64-linux-gnu/ld-2.21.so + 7f99d84000-7f99daf000 0 /lib/aarch64-linux-gnu/ld-2.21.so + 7f99db0000-7f99db3000 0 /lib/aarch64-linux-gnu/ld-2.21.so + failed to write feature 8 + failed to write feature 9 + failed to write feature 14 + [ perf record: Captured and wrote 0.072 MB perf.data ] + + linaro@linaro-nano:~/kernel$ ls -l ~/.debug/ perf.data + _-rw------- 1 linaro linaro 77888 Mar 2 20:41 perf.data + + /home/linaro/.debug/: + total 16 + drwxr-xr-x 2 linaro linaro 4096 Mar 2 20:40 [kernel.kallsyms] + drwxr-xr-x 2 linaro linaro 4096 Mar 2 20:40 [vdso] + drwxr-xr-x 3 linaro linaro 4096 Mar 2 20:40 bin + drwxr-xr-x 3 linaro linaro 4096 Mar 2 20:40 lib + +Trace data filtering +-------------------- +The amount of traces generated by CoreSight tracers is staggering, event for +the most simple trace scenario. Reducing trace generation to specific areas +of interest is desirable to save trace buffer space and avoid getting lost in +the trace data that isn't relevant. Supplementing the 'k' and 'u' options +described above is the notion of address filters. + +On CoreSight two types of address filter have been implemented - address range +and start/stop filter: + +**Address range filters:** +With address range filters traces are generated if the instruction pointer +falls within the specified range. Any work done by the CPU outside of that +range will not be traced. Address range filters can be specified for both +user and kernel space session: + + perf record -e cs_etm/@20070000.etr/k --filter 'filter 0xffffff8008562d0c/0x48' --per-thread uname + + perf record -e cs_etm/@20070000.etr/u --filter 'filter 0x72c/0x40@/opt/lib/libcstest.so.1.0' --per-thread ./main + +When dealing with kernel space trace addresses are typically taken in the +'System.map' file. In user space addresses are relocatable and can be +extracted from an objdump output: + + $ aarch64-linux-gnu-objdump -d libcstest.so.1.0 + ... + ... + 000000000000072c <coresight_test1>: <------------ Beginning of traces + 72c: d10083ff sub sp, sp, #0x20 + 730: b9000fe0 str w0, [sp,#12] + 734: b9001fff str wzr, [sp,#28] + 738: 14000007 b 754 <coresight_test1+0x28> + 73c: b9400fe0 ldr w0, [sp,#12] + 740: 11000800 add w0, w0, #0x2 + 744: b9000fe0 str w0, [sp,#12] + 748: b9401fe0 ldr w0, [sp,#28] + 74c: 11000400 add w0, w0, #0x1 + 750: b9001fe0 str w0, [sp,#28] + 754: b9401fe0 ldr w0, [sp,#28] + 758: 7100101f cmp w0, #0x4 + 75c: 54ffff0d b.le 73c <coresight_test1+0x10> + 760: b9400fe0 ldr w0, [sp,#12] + 764: 910083ff add sp, sp, #0x20 + 768: d65f03c0 ret + ... + ... + +Following the address the amount of byte is specified and if tracing in user +space, the full path to the binary (or library) being traced. + +**Start/Stop filters:** +With start/stop filters traces are generated when the instruction pointer is +equal to the start address. Incidentally traces stop being generated when the +insruction pointer is equal to the stop address. Anything that happens between +there to events is traced: + + perf record -e cs_etm/@20070000.etr/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0' --per-thread uname + + perf record -vvv -e cs_etm/@20070000.etr/u --filter 'start 0x72c@/opt/lib/libcstest.so.1.0, \ + stop 0x40082c@/home/linaro/main' \ + --per-thread ./main + +**Limitation on address filters:** +The only limitation on address filters is the amount of address comparator +found on an implementation and the mutual exclusion between range and +start stop filters. As such the following example would _not_ work: + + perf record -e cs_etm/@20070000.etr/k --filter 'start 0xffffff800856bc50,stop 0xffffff800856bcb0, \ // start/stop + filter 0x72c/0x40@/opt/lib/libcstest.so.1.0' \ // address range + --per-thread uname + +Additional Trace Options +------------------------ +Additional options can be used during trace collection that add information to the captured trace. + +- Timestamps: These packets are added to the trace streams to allow correlation of different sources where tools support this. +- Cycle Counts: These packets are added to get a count of cycles for blocks of executed instructions. Adding cycle counts will considerably increase the amount of generated trace. +The relationship between cycle counts and executed instructions differs according to the trace protocol. +For example, the ETMv4 protocol will emit counts for groups of instructions according to a minimum count threshold. +Presently this threshold is fixed at 256 cycles for `perf record`. + +Command line options in `perf record` to use these features are part of the options for the `cs_etm` event: + + perf record -e cs_etm/timestamp,cycacc,@20070000.etr/ --per-thread uname + +At current version, `perf record` and `perf script` do not use this additional information. + +On Target Trace Collection +-------------------------- +The entire program flow will have been recorded in the `perf.data` file. +Information about libraries and executable is stored under `$HOME/.debug`: + + linaro@linaro-nano:~/kernel$ tree ~/.debug + .debug + ├── [kernel.kallsyms] + │ └── 0542921808098d591a7acba5a1163e8991897669 + │ └── kallsyms + ├── [vdso] + │ └── 551fbbe29579eb63be3178a04c16830b8d449769 + │ └── vdso + ├── bin + │ └── uname + │ └── ed95e81f97c4471fb2ccc21e356b780eb0c92676 + │ └── elf + └── lib + └── aarch64-linux-gnu + ├── ld-2.21.so + │ └── 94912dc5a1dc8c7ef2c4e4649d4b1639b6ebc8b7 + │ └── elf + └── libc-2.21.so + └── 169a143e9c40cfd9d09695333e45fd67743cd2d6 + └── elf + + 13 directories, 5 files + linaro@linaro-nano:~/kernel$ + + +All this information needs to be collected in order to successfully decode +traces off target: + + linaro@linaro-nano:~/kernel$ tar czf uname.trace.tgz perf.data ~/.debug + + +Note that file `vmlinux` should also be added to the bundle if kernel traces +have also been collected. + + +Off Target OpenCSD Compilation +------------------------------ +The openCSD library is not part of the perf tools. It is available on +[github][1] and needs to be compiled before the perf tools. Checkout the +required branch/tag version into a local directory. + + linaro@t430:~/linaro/coresight$ git clone -b v0.8 https://github.com/Linaro/OpenCSD.git my-opencsd + Cloning into 'OpenCSD'... + remote: Counting objects: 2063, done. + remote: Total 2063 (delta 0), reused 0 (delta 0), pack-reused 2063 + Receiving objects: 100% (2063/2063), 2.51 MiB | 1.24 MiB/s, done. + Resolving deltas: 100% (1399/1399), done. + Checking connectivity... done. + linaro@t430:~/linaro/coresight$ ls my-opencsd + decoder LICENSE README.md HOWTO.md TODO + +Once the source code has been acquired compilation of the openCSD library can +take place. For Linux two options are available, LINUX and LINUX64, based on +the host's (which has nothing to do with the target) architecture: + + linaro@t430:~/linaro/coresight/$ cd my-opencsd/decoder/build/linux/ + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls + makefile rctdl_c_api_lib ref_trace_decode_lib + + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ make LINUX64=1 DEBUG=1 + ... + ... + + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls ../../lib/linux64/dbg/ + libopencsd.a libopencsd_c_api.a libopencsd_c_api.so libopencsd.so + +From there the header file and libraries need to be installed on the system, +something that requires root privileges. The default installation path is +/usr/include/opencsd for the header files and /usr/lib/ for the libraries: + + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ sudo make install + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls -l /usr/include/opencsd + total 60 + drwxr-xr-x 2 root root 4096 Dec 12 10:19 c_api + drwxr-xr-x 2 root root 4096 Dec 12 10:19 etmv3 + drwxr-xr-x 2 root root 4096 Dec 12 10:19 etmv4 + -rw-r--r-- 1 root root 28049 Dec 12 10:19 ocsd_if_types.h + drwxr-xr-x 2 root root 4096 Dec 12 10:19 ptm + drwxr-xr-x 2 root root 4096 Dec 12 10:19 stm + -rw-r--r-- 1 root root 7264 Dec 12 10:19 trc_gen_elem_types.h + -rw-r--r-- 1 root root 3972 Dec 12 10:19 trc_pkt_types.h + + linaro@t430:~/linaro/coresight/my-opencsd/decoder/build/linux$ ls -l /usr/lib/libopencsd* + -rw-r--r-- 1 root root 598720 Dec 12 10:19 /usr/lib/libopencsd_c_api.so + -rw-r--r-- 1 root root 4692200 Dec 12 10:19 /usr/lib/libopencsd.so + +A "clean_install" target is also available so that openCSD installed files can +be removed from a system. Going forward the goal is to have the openCSD library +packaged as a Debian or RPM archive so that it can be installed from a +distribution without having to be compiled. + + +Off Target Perf Tools Compilation +--------------------------------- +As mentionned above the openCSD library is not part of the perf tools' code base +and needs to be installed on a system prior to compilation. Information about +the status of the openCSD library on a system is given at compile time by the +perf tools build script: + + linaro@t430:~/linaro/linux-kernel$ make VF=1 -C tools/perf + Auto-detecting system features: + ... dwarf: [ on ] + ... dwarf_getlocations: [ on ] + ... glibc: [ on ] + ... gtk2: [ on ] + ... libaudit: [ on ] + ... libbfd: [ OFF ] + ... libelf: [ on ] + ... libnuma: [ OFF ] + ... numa_num_possible_cpus: [ OFF ] + ... libperl: [ on ] + ... libpython: [ on ] + ... libslang: [ on ] + ... libcrypto: [ on ] + ... libunwind: [ OFF ] + ... libdw-dwarf-unwind: [ on ] + ... zlib: [ on ] + ... lzma: [ OFF ] + ... get_cpuid: [ on ] + ... bpf: [ on ] + ... libopencsd: [ on ] <------- + + +At the end of the compilation a new perf binary is available in `tools/perf/`: + + linaro@t430:~/linaro/linux-kernel$ ldd tools/perf/perf + linux-vdso.so.1 => (0x00007fff135db000) + libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f15f9176000) + librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f15f8f6e000) + libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f15f8c64000) + libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f15f8a60000) + libopencsd_c_api.so => /usr/lib/libopencsd_c_api.so (0x00007f15f884e000) <------- + libelf.so.1 => /usr/lib/x86_64-linux-gnu/libelf.so.1 (0x00007f15f8635000) + libdw.so.1 => /usr/lib/x86_64-linux-gnu/libdw.so.1 (0x00007f15f83ec000) + libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007f15f81c5000) + libslang.so.2 => /lib/x86_64-linux-gnu/libslang.so.2 (0x00007f15f7e38000) + libperl.so.5.22 => /usr/lib/x86_64-linux-gnu/libperl.so.5.22 (0x00007f15f7a5d000) + libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f15f7693000) + libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f15f7104000) + libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f15f6eea000) + /lib64/ld-linux-x86-64.so.2 (0x0000559b88038000) + libopencsd.so => /usr/lib/libopencsd.so (0x00007f15f6c62000) <------- + libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f15f68df000) + libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f15f66c9000) + liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f15f64a6000) + libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f15f6296000) + libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f15f605e000) + libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f15f5e5a000) + + +Additional debug output from the decoder can be compiled in by setting the +`CSTRACE_RAW` environment variable. Setting this to `packed` gets trace frame +output as follows:- + + Frame Data; Index 576; RAW_PACKED; d6 d6 d6 d6 d6 d6 d6 d6 fc fb d6 d6 d6 d6 e0 7f + Frame Data; Index 576; ID_DATA[0x14]; d7 d6 d7 d6 d7 d6 d7 d6 fd fb d7 d6 d7 d6 e0 + +Set to any other value will remove the RAW_PACKED lines. + +Working with a debug version of the openCSD library +--------------------------------------------------- +When compiling the perf tools it is possible to reference another version of +the openCSD library than the one installed on the system. This is useful when +working with multiple development trees or having the desire to keep system +libraries intact. Two environment variable are available to tell the perf tools +build script where to get the header file and libraries, namely CSINCLUDES and +CSLIBS: + + linaro@t430:~/linaro/linux-kernel$ export CSINCLUDES=~/linaro/coresight/my-opencsd/decoder/include/ + linaro@t430:~/linaro/linux-kernel$ export CSLIBS=~/linaro/coresight/my-opencsd/decoder/lib/linux64-rel/ + linaro@t430:~/linaro/linux-kernel$ make VF=1 -C tools/perf + +This will have the effect of compiling and linking against the provided library. +Since the system's openCSD library is in the loader's search patch the +LD_LIBRARY_PATH environment variable needs to be set. + + linaro@t430:~/linaro/linux-kernel$ export LD_LIBRARY_PATH=$CSLIBS + + +Trace Decoding with Perf Report +------------------------------- +Before working with custom traces it is suggested to use a trace bundle that +is known to be working properly. A sample bundle has been made available +here [2]. Trace bundles can be extracted anywhere and have no dependencies on +where the perf tools and openCSD library have been compiled. + + linaro@t430:~/linaro/coresight$ mkdir sept20 + linaro@t430:~/linaro/coresight$ cd sept20 + linaro@t430:~/linaro/coresight/sept20$ wget http://people.linaro.org/~mathieu.poirier/openCSD/uname.v4.user.sept20.tgz + linaro@t430:~/linaro/coresight/sept20$ md5sum uname.v4.user.sept20.tgz + f53f11d687ce72bdbe9de2e67e960ec6 uname.v4.user.sept20.tgz + linaro@t430:~/linaro/coresight/sept20$ tar xf uname.v4.user.sept20.tgz + linaro@t430:~/linaro/coresight/sept20$ ls -la + total 1312 + drwxrwxr-x 3 linaro linaro 4096 Mar 3 10:26 . + drwxrwxr-x 5 linaro linaro 4096 Mar 3 10:13 .. + drwxr-xr-x 7 linaro linaro 4096 Feb 24 12:21 .debug + -rw------- 1 linaro linaro 78016 Feb 24 12:21 perf.data + -rw-rw-r-- 1 linaro linaro 1245881 Feb 24 12:25 uname.v4.user.sept20.tgz + +Perf is expecting files related to the trace capture (`perf.data`) to be located +under `~/.debug` [3]. This example will remove the current `~/.debug` directory +to be sure everything is clean. + + linaro@t430:~/linaro/coresight/sept20$ rm -rf ~/.debug + linaro@t430:~/linaro/coresight/sept20$ cp -dpR .debug ~/ + linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf report --stdio + + # To display the perf.data header info, please use --header/--header-only options. + # + # + # Total Lost Samples: 0 + # + # Samples: 0 of event 'cs_etm//u' + # Event count (approx.): 0 + # + # Children Self Command Shared Object Symbol + # ........ ........ ....... ............. ...... + # + + + # Samples: 0 of event 'dummy:u' + # Event count (approx.): 0 + # + # Children Self Command Shared Object Symbol + # ........ ........ ....... ............. ...... + # + + + # Samples: 115K of event 'instructions:u' + # Event count (approx.): 522009 + # + # Children Self Command Shared Object Symbol + # ........ ........ ....... ................ ...................... + # + 4.13% 4.13% uname libc-2.21.so [.] 0x0000000000078758 + 3.81% 3.81% uname libc-2.21.so [.] 0x0000000000078e50 + 2.06% 2.06% uname libc-2.21.so [.] 0x00000000000fcaf4 + 1.65% 1.65% uname libc-2.21.so [.] 0x00000000000fcae4 + 1.59% 1.59% uname ld-2.21.so [.] 0x000000000000a7f4 + 1.50% 1.50% uname libc-2.21.so [.] 0x0000000000078e40 + 1.43% 1.43% uname libc-2.21.so [.] 0x00000000000fcac4 + 1.31% 1.31% uname libc-2.21.so [.] 0x000000000002f0c0 + 1.26% 1.26% uname ld-2.21.so [.] 0x0000000000016888 + 1.24% 1.24% uname libc-2.21.so [.] 0x0000000000078e7c + 1.24% 1.24% uname libc-2.21.so [.] 0x00000000000fcab8 + ... + +Additional data can be obtained, which contains a dump of the trace packets received using the command + + mjl@ubuntu-vbox:./perf-opencsd-master/coresight/tools/perf/perf report --stdio --dump + +resulting a large amount of data, trace looking like:- + + 0x618 [0x30]: PERF_RECORD_AUXTRACE size: 0x11ef0 offset: 0 ref: 0x4d881c1f13216016 idx: 0 tid: 15244 cpu: -1 + + . ... CoreSight ETM Trace data: size 73456 bytes + + 0: I_ASYNC : Alignment Synchronisation. + 12: I_TRACE_INFO : Trace Info. + 17: I_TRACE_ON : Trace On. + 18: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F24D80; Ctxt: AArch64,EL0, NS; + 28: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE + 29: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE + 30: I_ATOM_F6 : Atom format 6.; EEEEEEEEEEEEEEEEEEEEEEEE + 32: I_ATOM_F6 : Atom format 6.; EEEEN + 33: I_ATOM_F1 : Atom format 1.; E + 34: I_EXCEPT : Exception.; Data Fault; Ret Addr Follows; + 36: I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000007F89F2832C; + 45: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0xFFFFFFC000083400; Ctxt: AArch64,EL1, NS; + 56: I_TRACE_ON : Trace On. + 57: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F2832C; Ctxt: AArch64,EL0, NS; + 68: I_ATOM_F3 : Atom format 3.; NEE + 69: I_ATOM_F3 : Atom format 3.; NEN + 70: I_ATOM_F3 : Atom format 3.; NNE + 71: I_ATOM_F5 : Atom format 5.; ENENE + 72: I_ATOM_F5 : Atom format 5.; NENEN + 73: I_ATOM_F5 : Atom format 5.; ENENE + 74: I_ATOM_F5 : Atom format 5.; NENEN + 75: I_ATOM_F5 : Atom format 5.; ENENE + 76: I_ATOM_F3 : Atom format 3.; NNE + 77: I_ATOM_F3 : Atom format 3.; NNE + 78: I_ATOM_F3 : Atom format 3.; NNE + 80: I_ATOM_F3 : Atom format 3.; NNE + 81: I_ATOM_F3 : Atom format 3.; ENN + 82: I_EXCEPT : Exception.; Data Fault; Ret Addr Follows; + 84: I_ADDR_L_64IS0 : Address, Long, 64 bit, IS0.; Addr=0x0000007F89F283F0; + 93: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0xFFFFFFC000083400; Ctxt: AArch64,EL1, NS; + 104: I_TRACE_ON : Trace On. + 105: I_ADDR_CTXT_L_64IS0 : Address & Context, Long, 64 bit, IS0.; Addr=0x0000007F89F283F0; Ctxt: AArch64,EL0, NS; + 116: I_ATOM_F5 : Atom format 5.; NNNNN + 117: I_ATOM_F5 : Atom format 5.; NNNNN + + +Trace Decoding with Perf Script +------------------------------- +Working with perf scripts needs more command line options but yields +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 + + 7f89f24d80: 910003e0 mov x0, sp + 7f89f24d84: 94000d53 bl 7f89f282d0 <free@plt+0x3790> + 7f89f282d0: d11203ff sub sp, sp, #0x480 + 7f89f282d4: a9ba7bfd stp x29, x30, [sp,#-96]! + 7f89f282d8: 910003fd mov x29, sp + 7f89f282dc: a90363f7 stp x23, x24, [sp,#48] + 7f89f282e0: 9101e3b7 add x23, x29, #0x78 + 7f89f282e4: a90573fb stp x27, x28, [sp,#80] + 7f89f282e8: a90153f3 stp x19, x20, [sp,#16] + 7f89f282ec: aa0003fb mov x27, x0 + 7f89f282f0: 910a82e1 add x1, x23, #0x2a0 + 7f89f282f4: a9025bf5 stp x21, x22, [sp,#32] + 7f89f282f8: a9046bf9 stp x25, x26, [sp,#64] + 7f89f282fc: 910102e0 add x0, x23, #0x40 + 7f89f28300: f800841f str xzr, [x0],#8 + 7f89f28304: eb01001f cmp x0, x1 + 7f89f28308: 54ffffc1 b.ne 7f89f28300 <free@plt+0x37c0> + 7f89f28300: f800841f str xzr, [x0],#8 + 7f89f28304: eb01001f cmp x0, x1 + 7f89f28308: 54ffffc1 b.ne 7f89f28300 <free@plt+0x37c0> + 7f89f28300: f800841f str xzr, [x0],#8 + 7f89f28304: eb01001f cmp x0, x1 + 7f89f28308: 54ffffc1 b.ne 7f89f28300 <free@plt+0x37c0> + +Kernel Trace Decoding +--------------------- + +When dealing with kernel space traces the vmlinux file has to be communicated +explicitely to perf using the "--vmlinux" command line option: + + linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf report --stdio --vmlinux=./vmlinux + ... + ... + linaro@t430:~/linaro/coresight/sept20$ ../perf-opencsd-master/tools/perf/perf script --vmlinux=./vmlinux + +When using scripts things get a little more convoluted. Using the same example +an above but for traces but for kernel traces, the command line becomes: + + 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 \ + --vmlinux=./vmlinux \ + --script=python:${SCRIPT_PATH}/cs-trace-disasm.py -- \ + -d ${XTOOLS_PATH}/aarch64-linux-gnu-objdump \ + -k ./vmlinux + ... + ... + +The option "--vmlinux=./vmlinux" is interpreted by the "perf script" command +the same way it if for "perf report". The option "-k ./vmlinux" is dependant +on the script being executed and has no related to the "--vmlinux", though it +is highly advised to keep them synchronized. + + +Perf Test Environment Scripts +----------------------------- + +The decoder library comes with a number of `bash` scripts that ease the setting up of the +offline build and test environment for perf, and executing tests. + +These scripts can be found in + + decoder/tests/perf-test-scripts + +There are three scripts provided: + +- `perf-setup-env.bash` : this sets up all the environment variables mentioned above. +- `perf-test-report.bash` : this runs `perf report` - using the environment setup by `perf-setup-env.bash` +- `perf-test-script.bash` : this runs `perf script` - using the environment setup by `perf-setup-env.bash` + +Use as follows:- + +1. Prior to building perf, edit `perf-setup-env.bash` to conform to your environment. There are four lines at the top of the file that will require editing. + +2. Execute the script using the command + + source perf-setup-env.bash + + This will set up all the environment variables mentioned in the sections on building and running + perf above, and these are used by the `perf-test...` scripts to run the tests. + +3. Build perf as described above. +4. Follow the instructions for downloading the test capture, or create a capture from your target. +5. Copy the `perf-test...` scripts into the capture data directory -> the one that contains `perf.data`. + +6. The scripts can now be run. No options are required for the default operation, but any command line options will be added to the perf report / perf script command line. + +e.g. + + ./perf-test-report.bash --dump + +will add the --dump option to the end of the command line and run + + ${PERF_EXEC_PATH}/perf report --stdio --dump + + +Generating coverage files for Feedback Directed Optimization: AutoFDO +--------------------------------------------------------------------- + +Below is an example of using ARM ETM for autoFDO. The updates to the perf +support for this is experimental and available on the 'autoFDO' branch of +the [perf-opencsd github repository][1]. + +It also requires autofdo (https://github.com/google/autofdo) and gcc version 5. The bubble +sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tutorial). + + $ gcc-5 -O3 sort.c -o sort_optimized + $ taskset -c 2 ./sort_optimized + Bubble sorting array of 30000 elements + 5910 ms + + $ perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort + Bubble sorting array of 30000 elements + 12543 ms + [ perf record: Woken up 35 times to write data ] + [ perf record: Captured and wrote 69.640 MB perf.data ] + + $ perf inject -i perf.data -o inj.data --itrace=il64 --strip + $ create_gcov --binary=./sort --profile=inj.data --gcov=sort.gcov -gcov_version=1 + $ gcc-5 -O3 -fauto-profile=sort.gcov sort.c -o sort_autofdo + $ taskset -c 2 ./sort_autofdo + Bubble sorting array of 30000 elements + 5806 ms + + +The Linaro CoreSight Team +------------------------- +- Mike Leach +- Tor Jeremiassen +- Chunyan Zang +- Mathieu Poirier + + +One Last Thing +-------------- +We welcome help on this project. If you would like to add features or help +improve the way things work, we want to hear from you. + +Best regards, +*The Linaro CoreSight Team* + +-------------------------------------- +[1]: https://github.com/Linaro/perf-opencsd "perf-opencsd Github" + +[2]: http://people.linaro.org/~mathieu.poirier/openCSD/uname.v4.user.sept20.tgz + +[3]: Get in touch with us if you know a way to change this. Added: vendor/opencsd/dist/LICENSE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/LICENSE Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,30 @@ + BSD 3Clause License + http://directory.fsf.org/wiki/License:BSD_3Clause + +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)The name of the author may not be used to + endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. Added: vendor/opencsd/dist/README.md ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/README.md Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,132 @@ +OpenCSD - An open source CoreSight(tm) Trace Decode library {#mainpage} +=========================================================== + +This library provides an API suitable for the decode of ARM(r) CoreSight(tm) trace streams. + +The library will decode formatted trace in three stages: + +1. *Frame Deformatting* : Removal CoreSight frame formatting from individual trace streams. +2. *Packet Processing* : Separate individual trace streams into discrete packets. +3. *Packet Decode* : Convert the packets into fully decoded trace describing the program flow on a core. + +The library is implemented in C++ with an optional "C" API. + +Library Versioning +------------------ + +From version 0.4, library versioning will use a semantic versioning format +(per http://semver.org) of the form _Major.minor.patch_ (M.m.p). + +Internal library version calls, documentation and git repository will use this format moving forwards. +Where a patch version is not quoted, or quoted as .x then comments will apply to the entire release. + +Releases will be at M.m.0, with patch version incremented for bugfixes or documentation updates. + +Releases will appear on the master branch in the git repository with an appropriate version tag. + +CoreSight Trace Component Support. +---------------------------------- + +_Current Version 0.8.2_ + +### Current support: + +- ETMv4 (v4.1) instruction trace - packet processing and packet decode. +- PTM (v1.1) instruction trace - packet processing and packet decode. +- ETMv3 (v3.5) instruction trace - packet processing and packet decode. +- ETMv3 (v3.5) data trace - packet processing. +- STM (v1.1) software trace - packet processing and packet decode. + +- External Decoders - support for addition of external / custom decoders into the library. + +### Support to be added: + +- ITM software trace - packet processing and decode. +- ETMv3 data trace - packet decode. +- ETMv4 data trace - packet processing and decode. + +Note: for ITM and STM, packet decode is combining Master+Channel+Marker+Payload packets into a single generic +output packet. + + +Note on the Git Repository. +--------------------------- + +This git repository for OpenCSD contains only source for the OpenCSD decoder library. +From version 0.4, releases appear as versioned tags on the master branch. + +From version 0.7.4, the required updates to CoreSight drivers and perf, that are not +currently upstream in the linux kernel tree, are now contained in a separate +repository to be found at: + +https://github.com/Linaro/perf-opencsd + + +Documentation +------------- + +API Documentation is provided inline in the source header files, which use the __doxygen__ standard mark-up. +Run `doxygen` on the `./doxygen_config.dox` file located in the `./docs` directory.. + + doxygen ./doxygen_config.dox + +This will produce the documentation in the `./docs/html` directory. The doxygen configuration also includes +the `*.md` files as part of the documentation. + + +Building the Library +-------------------- + +See [build_libs.md](@ref build_lib) in the `./docs` directory for build details. + + +How the Library is used in Linux `perf` +--------------------------------------- +The library and additional infrastructure for programming CoreSight components has been integrated +with the standard linux perfomance analysis tool `perf`. + + +See [HOWTO.md](@ref howto_perf) for details. + + +Version and Modification Information +==================================== + +- _Version 0.001_: Library development - tested with `perf` tools integration - BKK16, 8th March 2016 +- _Version 0.002_: Library development - added in PTM decoder support. Restructure header dir, replaced ARM rctdl prefix with opencsd/ocsd. +- _Version 0.003_: Library development - added in ETMv3 instruction decoder support. +- _Version 0.4_ : Library development - updated decode tree and C-API for generic decoder handling. Switch to semantic versioning. +- _Version 0.4.1_: Minor Update & Bugfixes - fix to PTM decoder, ID checking on test program, adds NULL_TS support in STM packet processor. +- _Version 0.4.2_: Minor Update - Update to documentation for perf usage in 4.8 kernel branch. +- _Version 0.5.0_: Library Development - external decoder support. STM full decode. +- _Version 0.5.1_: Minor Update & Bugfixes - Update HOWTO for kernel 4.9. Build fixes for parallel builds +- _Version 0.5.2_: Minor Update & Bugfixes - Update trace info packet string o/p + Cycle count packet bugfixes. +- _Version 0.5.3_: Doc update for using AutoFDO with ETM and additional timestamp and cycle count options. +- _Version 0.5.4_: Updates: X-compile for arm/arm64. Remove deprecated VS2010 builds. Bugfix: GCC inline semantics in debug build. +- _Version 0.6.0_: Packet printers moved from tests into the main library. C++ and C APIs updated to allow clients to use them. + Update to allow perf to insert barrier packets (4xFSYNC) which the decoder can be made to use to reset the decode state. +- _Version 0.6.1_: Bugfix: instruction follower bug on A32 branch to T32. +- _Version 0.7.0_: Add handling for trace return stack feature to ETMv4 and PTM trace. +- _Version 0.7.1_: Bugfix: ETMv3 packet processor. +- _Version 0.7.2_: Bugfix: ETMv4 decoder - fix exact match packet address follower. +- _Version 0.7.3_: Bugfix: PTM decoder - issues with initialisation and ASYNC detection. +- _Version 0.7.4_: Notification of change of repository for perf extensions. gcc 6.x build fixes. +- _Version 0.7.5_: Bugfix: ETMv4 decoder memory leak. Linux build update - header dependencies force rebuild. +- _Version 0.8.0_: Header restructure and build update to enable linux version to install library and C-API headers in standard locations. + Library output naming changed from 'cstraced' to 'opencsd'. +- _Version 0.8.1_: Minor updates: Use install tool to copy headers. Changes to HOWTO for perf usage. +- _Version 0.8.2_: Bugfix: C++ init errors fixed for CLANG build process. + +Licence Information +=================== + +This library is licensed under the [BSD three clause licence.](http://directory.fsf.org/wiki/License:BSD_3Clause) + +A copy of this license is in the `LICENCE` file included with the source code. + +Contact +======= + +Using the github site: https://github.com/Linaro/OpenCSD + +Mailing list: coresight@lists.linaro.org Added: vendor/opencsd/dist/TODO ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/TODO Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,19 @@ +* ETMv4/PTM - decoder updates to handle advanced configuration. +-> Certain (currently unused by perf / current hardware) configuration settings + can alter the format of the trace output. One example is Return Stack - + settable in the control registers for PTM/ETMv4, and removes some inline + addresses. Decoder must use a follower to correctly trace when this is set. + +* ITM packet processing and decode. +-> ITM is primarily an M class SW trace module. I wouldn't expect to see it on + systems with STM, unless a companion M class was present. + +*Data trace - ETMv4 / ETMv3 +-> Differing solutions to data trace in v4/v3 - v4 is separate trace stream + completely, output at trace ID <instruction_trace_ID>+1. ETMv3 is inline with + the instruction trace. + +Cortex-A cores do not support this architecturally. On R and M profile cores it +is an option. There are scenarios in future that could see linux on R cores, plus +on something like Juno it is possible to switch on trace for the SCP +(M class processor). So at some point data trace may be required. Added: vendor/opencsd/dist/decoder/build/linux/makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/opencsd/dist/decoder/build/linux/makefile Wed Apr 4 12:33:46 2018 (r332012) @@ -0,0 +1,196 @@ +######################################################## +# Copyright 2015 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 - master makefile for libraries and tests +# +# command line options +# DEBUG=1 create a debug build +# + +# Set project root - relative to build directory +ifeq ($(OCSD_ROOT),) +OCSD_ROOT := $(shell pwd | sed 's,/build/linux.*,,') +export OCSD_ROOT +endif + +# library names +LIB_BASE_NAME=opencsd +export LIB_BASE_NAME +LIB_CAPI_NAME=$(LIB_BASE_NAME)_c_api +export LIB_CAPI_NAME + +# determine base architecture, heavily borrowed from the Linux kernel v4.4's +# tools/perf/config/Makefile.arch +# For example, to compile for arm64 on a X86 PC, you can issue the command: +# "export ARCH=arm64" +ifndef ARCH +ARCH := $(shell uname -m 2>/dev/null || echo not) +endif + +# source root directories +export OCSD_LIB_ROOT=$(OCSD_ROOT)/lib + +export OCSD_INCLUDE=$(OCSD_ROOT)/include +export OCSD_SOURCE=$(OCSD_ROOT)/source + +export OCSD_TESTS=$(OCSD_ROOT)/tests + +export LIB_UAPI_INC_DIR=opencsd *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804041233.w34CXleW015734>