From cde6fa285725aa9ec03c030f1fff8101048aed7c Mon Sep 17 00:00:00 2001 From: Ruslan Bukin Date: Wed, 4 Apr 2018 14:31:56 +0000 Subject: [PATCH] Add new shared library -- libopencsd. OpenCSD is an ARM CoreSight(tm) trace packets decoder. - Connect libopencsd to the arm64 build. - Install opencsd headers to /usr/include/opencsd/ Sponsored by: DARPA, AFRL --- etc/mtree/BSD.include.dist | 12 +++ lib/Makefile | 4 + lib/libopencsd/Makefile | 175 +++++++++++++++++++++++++++++++++++++ share/mk/bsd.libnames.mk | 1 + share/mk/src.libnames.mk | 2 + 5 files changed, 194 insertions(+) create mode 100644 lib/libopencsd/Makefile diff --git a/etc/mtree/BSD.include.dist b/etc/mtree/BSD.include.dist index cf184592fbf..fbffe0ece86 100644 --- a/etc/mtree/BSD.include.dist +++ b/etc/mtree/BSD.include.dist @@ -317,6 +317,18 @@ .. nfsserver .. + opencsd + c_api + .. + etmv3 + .. + etmv4 + .. + ptm + .. + stm + .. + .. openssl .. pcap diff --git a/lib/Makefile b/lib/Makefile index a4fc9638df6..b8ccf56df10 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -175,6 +175,10 @@ SUBDIR.${MK_NIS}+= libypclnt _libvgl= libvgl .endif +.if ${MACHINE_CPUARCH} == "aarch64" +SUBDIR.${MK_PMC}+= libopencsd +.endif + .if ${MACHINE_CPUARCH} == "amd64" SUBDIR.${MK_PMC}+= libipt SUBDIR.${MK_BHYVE}+= libvmmapi diff --git a/lib/libopencsd/Makefile b/lib/libopencsd/Makefile new file mode 100644 index 00000000000..b151c53543d --- /dev/null +++ b/lib/libopencsd/Makefile @@ -0,0 +1,175 @@ +# $FreeBSD$ + +PACKAGE=lib${LIB} +SHLIBDIR?= /lib + +.include + +OPENCSDSRC= ${SRCTOP}/contrib/opencsd + +.PATH: ${OPENCSDSRC}/decoder/source/etmv4/ \ + ${OPENCSDSRC}/decoder/source/etmv3/ \ + ${OPENCSDSRC}/decoder/source/pkt_printers/ \ + ${OPENCSDSRC}/decoder/source/mem_acc/ \ + ${OPENCSDSRC}/decoder/source/i_dec/ \ + ${OPENCSDSRC}/decoder/source/c_api/ \ + ${OPENCSDSRC}/decoder/source/ptm/ \ + ${OPENCSDSRC}/decoder/source/stm/ \ + ${OPENCSDSRC}/decoder/source/ \ + ${OPENCSDSRC}/decoder/include/opencsd/etmv4/ \ + ${OPENCSDSRC}/decoder/include/opencsd/etmv3/ \ + ${OPENCSDSRC}/decoder/include/opencsd/stm/ \ + ${OPENCSDSRC}/decoder/include/opencsd/ptm/ \ + ${OPENCSDSRC}/decoder/include/opencsd/c_api/ \ + ${OPENCSDSRC}/decoder/include/opencsd/ \ + ${OPENCSDSRC}/decoder/include + +LIB= opencsd +SHLIB_MAJOR=0 + +# ETMv3 +SRCS= \ + trc_cmp_cfg_etmv3.cpp \ + trc_pkt_decode_etmv3.cpp \ + trc_pkt_elem_etmv3.cpp \ + trc_pkt_proc_etmv3.cpp \ + trc_pkt_proc_etmv3_impl.cpp + +# ETMv4 +SRCS+= \ + trc_cmp_cfg_etmv4.cpp \ + trc_etmv4_stack_elem.cpp \ + trc_pkt_decode_etmv4i.cpp \ + trc_pkt_elem_etmv4d.cpp \ + trc_pkt_elem_etmv4i.cpp \ + trc_pkt_proc_etmv4.cpp \ + trc_pkt_proc_etmv4i_impl.cpp + +# PKT_PRINTERS +SRCS+= \ + raw_frame_printer.cpp \ + trc_print_fact.cpp + +# PTM +SRCS+= \ + trc_cmp_cfg_ptm.cpp \ + trc_pkt_decode_ptm.cpp \ + trc_pkt_elem_ptm.cpp \ + trc_pkt_proc_ptm.cpp + +# STM +SRCS+= \ + trc_pkt_decode_stm.cpp \ + trc_pkt_elem_stm.cpp \ + trc_pkt_proc_stm.cpp + +# C_API +SRCS+= \ + ocsd_c_api_custom_obj.cpp \ + ocsd_c_api.cpp + +# SRC +SRCS+= \ + ocsd_code_follower.cpp \ + ocsd_dcd_tree.cpp \ + ocsd_error.cpp \ + ocsd_error_logger.cpp \ + ocsd_gen_elem_list.cpp \ + ocsd_lib_dcd_register.cpp \ + ocsd_msg_logger.cpp \ + ocsd_version.cpp \ + trc_component.cpp \ + trc_core_arch_map.cpp \ + trc_frame_deformatter.cpp \ + trc_gen_elem.cpp \ + trc_printable_elem.cpp \ + trc_ret_stack.cpp + +# MEM_ACC +SRCS+= \ + trc_mem_acc_base.cpp \ + trc_mem_acc_cb.cpp \ + trc_mem_acc_mapper.cpp \ + trc_mem_acc_bufptr.cpp \ + trc_mem_acc_file.cpp + +# I_DEC +SRCS+= \ + trc_i_decode.cpp \ + trc_idec_arminst.cpp + +CFLAGS+= \ + -I${OPENCSDSRC}/decoder/include/ \ + -I${.CURDIR} + +INCS= \ + ocsd_if_types.h \ + trc_gen_elem_types.h \ + trc_pkt_types.h + +INCSDIR=${INCLUDEDIR}/opencsd + +APIINCS= \ + ocsd_c_api_cust_fact.h \ + ocsd_c_api_cust_impl.h \ + ocsd_c_api_custom.h \ + ocsd_c_api_types.h \ + opencsd_c_api.h + +APIINCSDIR=${INCLUDEDIR}/opencsd/c_api/ + +ETMV4INCS= \ + etmv4_decoder.h \ + trc_cmp_cfg_etmv4.h \ + trc_dcd_mngr_etmv4i.h \ + trc_etmv4_stack_elem.h \ + trc_pkt_decode_etmv4i.h \ + trc_pkt_elem_etmv4d.h \ + trc_pkt_elem_etmv4i.h \ + trc_pkt_proc_etmv4.h \ + trc_pkt_types_etmv4.h + +ETMV4INCSDIR=${INCLUDEDIR}/opencsd/etmv4/ + +ETMV3INCS= \ + etmv3_decoder.h \ + trc_cmp_cfg_etmv3.h \ + trc_dcd_mngr_etmv3.h \ + trc_pkt_decode_etmv3.h \ + trc_pkt_elem_etmv3.h \ + trc_pkt_proc_etmv3.h \ + trc_pkt_types_etmv3.h + +ETMV3INCSDIR=${INCLUDEDIR}/opencsd/etmv3/ + +PTMINCS= \ + ptm_decoder.h \ + trc_cmp_cfg_ptm.h \ + trc_dcd_mngr_ptm.h \ + trc_pkt_decode_ptm.h \ + trc_pkt_elem_ptm.h \ + trc_pkt_proc_ptm.h \ + trc_pkt_types_ptm.h + +PTMINCSDIR=${INCLUDEDIR}/opencsd/ptm/ + +STMINCS= \ + stm_decoder.h \ + trc_cmp_cfg_stm.h \ + trc_dcd_mngr_stm.h \ + trc_pkt_decode_stm.h \ + trc_pkt_elem_stm.h \ + trc_pkt_proc_stm.h \ + trc_pkt_types_stm.h + +STMINCSDIR=${INCLUDEDIR}/opencsd/stm/ + +INCSGROUPS=INCS APIINCS ETMV3INCS ETMV4INCS PTMINCS STMINCS + +LIBADD= cxxrt + +WARNS?= 1 + +HAS_TESTS= + +.include diff --git a/share/mk/bsd.libnames.mk b/share/mk/bsd.libnames.mk index c9072411739..f15ed551f94 100644 --- a/share/mk/bsd.libnames.mk +++ b/share/mk/bsd.libnames.mk @@ -118,6 +118,7 @@ LIBNETGRAPH?= ${LIBDESTDIR}${LIBDIR_BASE}/libnetgraph.a LIBNGATM?= ${LIBDESTDIR}${LIBDIR_BASE}/libngatm.a LIBNV?= ${LIBDESTDIR}${LIBDIR_BASE}/libnv.a LIBNVPAIR?= ${LIBDESTDIR}${LIBDIR_BASE}/libnvpair.a +LIBOPENCSD?= ${LIBDESTDIR}${LIBDIR_BASE}/libopencsd.a LIBOPENSM?= ${LIBDESTDIR}${LIBDIR_BASE}/libopensm.a LIBOPIE?= ${LIBDESTDIR}${LIBDIR_BASE}/libopie.a LIBOSMCOMP?= ${LIBDESTDIR}${LIBDIR_BASE}/libosmcomp.a diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 48d8089b535..c6ee3b5fef3 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -135,6 +135,7 @@ _LIBRARIES= \ ngatm \ nv \ nvpair \ + opencsd \ opie \ pam \ panel \ @@ -307,6 +308,7 @@ _DP_gssapi_krb5+= gssapi krb5 crypto roken asn1 com_err _DP_lzma= pthread _DP_ucl= m _DP_vmmapi= util +_DP_opencsd= cxxrt _DP_ctf= z _DP_dtrace= ctf elf proc pthread rtld_db _DP_xo= util