Disallow redirecting to stdout based on config keys
[platform/core/system/dlog.git] / Makefile.am
index 7887832..94a02cf 100644 (file)
@@ -1,32 +1,35 @@
 AUTOMAKE_OPTIONS = subdir-objects foreign
 
-BUILT_SOURCES = include/dlog.h
-
 AM_CFLAGS = -I$(srcdir)/include \
-        -DSD_DAEMON_DISABLE_MQ \
+       -DSD_DAEMON_DISABLE_MQ \
        -DDLOG_CONFIG_PATH=\"$(sysconfdir)/dlog.conf\" \
        -DDEBUGMODE_FILE=\"$(sysconfdir)/.debugmode\" \
        -I$(srcdir)/external/sd-daemon \
+       -I$(srcdir)/external/fastlz \
+       -I$(srcdir)/external/miniz \
        $(DEBUG_CFLAGS) \
+       -Wall \
        -Werror \
        $(CAPI_BASE_COMMON_CFLAGS) \
-       -D_GNU_SOURCE \
-       -DLIBDLOGUTIL_EXPORT_API=
+       -D_GNU_SOURCE
 
-AM_LDFLAGS = -Wl,--as-needed
+AM_LDFLAGS = -Wl,--as-needed,-z,noexecstack
 
 dlog_includedir = $(includedir)/dlog
 
 dlog_include_HEADERS = \
        include/dlog.h \
        include/dlogutil.h \
+       include/dlog-redirect-stdout.h \
        include/dlog-internal.h
 
 lib_LTLIBRARIES = libdlog.la
 
-libdlog_la_SOURCES =  \
+libdlog_la_SOURCES = \
        src/libdlog/log.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
+       src/shared/connect_pipe.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c \
@@ -34,12 +37,18 @@ libdlog_la_SOURCES =  \
        src/shared/queued_entry.c \
        src/shared/translate_syslog.c \
        src/libdlog/deduplicate.c \
+       src/libdlog/container_warning.c \
        src/shared/hash.c \
        src/libdlog/dynamic_config.c \
        src/shared/loglimiter.c \
+       src/libdlog/log_zero_copy.c \
        src/libdlog/log_pipe.c \
        src/libdlog/log_android.c
 
+libdlog_la_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fvisibility=hidden
+
 libdlog_la_LDFLAGS = \
        $(AM_LDFLAGS)
 
@@ -50,42 +59,39 @@ lib_LTLIBRARIES += libdlogutil.la
 
 libdlogutil_la_CFLAGS = \
        $(AM_CFLAGS) \
-       -ULIBDLOGUTIL_EXPORT_API \
-       -DLIBDLOGUTIL_EXPORT_API=EXPORT_API \
+       -DLIBDLOGUTIL_BUILD \
        -fvisibility=hidden
 
 libdlogutil_la_LDFLAGS = \
-       $(AM_LDFLAGS) \
-       -lcap
+       $(AM_LDFLAGS)
 
 libdlogutil_la_SOURCES = \
        src/libdlogutil/lib.c \
-       src/libdlogutil/privilege.c \
        src/libdlogutil/sort_vector.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
        src/shared/translate_syslog.c \
-       src/shared/log_file.c \
        src/shared/ptrs_list.c \
        src/shared/logconfig.c \
        src/libdlogutil/logretrieve.c
 
 bin_PROGRAMS = dlogutil
 
-dlogutil_CFLAGS =  \
+dlogutil_CFLAGS = \
        $(AM_CFLAGS) \
        -fPIE
 
 dlogutil_LDFLAGS = \
        $(AM_LDFLAGS) \
-       -lcap \
        -pie
 
 dlogutil_DEPENDENCIES = \
@@ -96,10 +102,14 @@ dlogutil_LDADD = \
 
 dlogutil_SOURCES = \
        src/logutil/logutil.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
+       src/shared/logconfig.c \
        src/shared/logprint.c \
        src/shared/log_file.c \
-       src/shared/ptrs_list.c
+       src/shared/parsers.c \
+       src/shared/ptrs_list.c \
+       src/shared/util_parser.c
 
 libexec_PROGRAMS = dlog-log-critical
 
@@ -114,8 +124,9 @@ dlog_log_critical_SOURCES = src/log-critical/log-critical.cpp
 
 bin_PROGRAMS += dlog_logger
 
-dlog_logger_CFLAGS =  \
+dlog_logger_CFLAGS = \
        $(AM_CFLAGS) \
+       -pthread \
        -fPIE
 
 dlog_logger_LDFLAGS = \
@@ -124,14 +135,32 @@ dlog_logger_LDFLAGS = \
 
 dlog_logger_SOURCES = \
        external/sd-daemon/sd-daemon.c \
+       external/fastlz/fastlz.c \
+       external/miniz/miniz.c \
        src/logger/logger.c \
+       src/logger/logger_internal.c \
+       src/logger/logger_privileges.c \
+       src/logger/compression_fastlz.c \
+       src/logger/compression_miniz.c \
+       src/logger/dlogutil_line.c \
        src/logger/fd_entity.c \
+       src/logger/log_buffer.c \
        src/logger/log_storage.c \
+       src/logger/log_compressed_storage.c \
        src/logger/qos.c \
        src/logger/qos_distributions.c \
        src/logger/reader_common.c \
+       src/logger/reader_logger.c \
        src/logger/reader_pipe.c \
+       src/logger/reader_memory.c \
+       src/logger/subreader_dlogutil.c \
+       src/logger/subreader_file.c \
+       src/logger/subreader_memory.c \
+       src/logger/subreader_metrics.c \
+       src/logger/socket.c \
+       src/logger/writer.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/ptrs_list.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
@@ -141,8 +170,25 @@ dlog_logger_SOURCES = \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
        src/shared/translate_syslog.c \
+       src/shared/util_parser.c \
        src/shared/log_file.c
 
+systemgeneratordir = /usr/lib/systemd/system-generators
+
+systemgenerator_PROGRAMS = dlog-unit-generator
+
+dlog_unit_generator_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+dlog_unit_generator_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+dlog_unit_generator_SOURCES = \
+       src/logger-unit-generator/logger-unit-generator.c
+
+
 bin_PROGRAMS += dlogsend
 dlogsend_CFLAGS = \
        $(AM_CFLAGS) \
@@ -159,10 +205,8 @@ dlogsend_LDADD = \
        libdlog.la
 
 dlogsend_SOURCES = \
-       src/shared/ptrs_list.c \
-       src/shared/queued_entry_timestamp.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
-       src/shared/hash.c \
        src/logsend/logsend.c
 
 
@@ -176,10 +220,13 @@ dlogctl_LDFLAGS = \
        -pie
 
 dlogctl_SOURCES = \
+       src/shared/buffer_config.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c \
        src/shared/ptrs_list.c \
+       src/shared/hash.c \
        src/shared/loglimiter.c \
        src/logctl/logctl.c
 
@@ -217,6 +264,43 @@ dlogmetrics_SOURCES = \
        src/shared/logcommon.c \
        src/shared/metrics.c
 
+lib_LTLIBRARIES += libdlog_redirect_stdout.la
+
+libdlog_redirect_stdout_la_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fvisibility=hidden
+
+libdlog_redirect_stdout_la_LDFLAGS = \
+       $(AM_LDFLAGS)
+
+libdlog_redirect_stdout_la_SOURCES = \
+       src/log-redirect-stdout/lib.c \
+       src/log-redirect-stdout/internal.c \
+       src/shared/backend_androidlogger.c \
+       src/shared/buffer_config.c \
+       src/shared/buffer_traits.c \
+       src/shared/connect_pipe.c \
+       src/shared/logcommon.c \
+       src/shared/logconfig.c \
+       src/shared/parsers.c
+
+bin_PROGRAMS += dlog_redirect_stdout
+dlog_redirect_stdout_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+dlog_redirect_stdout_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+dlog_redirect_stdout_LDADD = \
+       libdlog_redirect_stdout.la
+
+dlog_redirect_stdout_SOURCES = \
+       src/shared/buffer_traits.c \
+       src/shared/logcommon.c \
+       src/log-redirect-stdout/main.c
+
 usrlibexeclibdlogdir = /usr/libexec/libdlog
 
 usrlibexeclibdlog_PROGRAMS = test_libdlog
@@ -235,7 +319,6 @@ test_libdlog_LDADD = \
        libdlog.la
 
 test_libdlog_SOURCES = \
-       src/shared/hash.c \
        tests/test_libdlog.c
 
 usrlibexeclibdlog_PROGRAMS += test_filters
@@ -255,7 +338,6 @@ test_filters_LDADD = \
        libdlog.la
 
 test_filters_SOURCES = \
-       src/shared/hash.c \
        tests/test_filters.c
 
 usrlibexeclibdlog_PROGRAMS += perf_libdlog
@@ -274,9 +356,34 @@ perf_libdlog_LDADD = \
        libdlog.la
 
 perf_libdlog_SOURCES = \
-       src/shared/hash.c \
        tests/performance_test.c
 
+
+usrlibexeclibdlog_PROGRAMS += dlog_stdout_benchmark
+dlog_stdout_benchmark_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+dlog_stdout_benchmark_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+dlog_stdout_benchmark_DEPENDENCIES = \
+       libdlog.la
+
+dlog_stdout_benchmark_LDADD = \
+       libdlog.la
+
+dlog_stdout_benchmark_SOURCES = \
+       tests/stdout_benchmark.c
+
+usrlibexeclibdlog_PROGRAMS += dlog_compression_benchmark
+dlog_compression_benchmark_SOURCES = src/tests/test_compression_common.c \
+       src/tests/fastlz_test.c external/fastlz/fastlz.c \
+       src/tests/miniz_test.c  external/miniz/miniz.c
+dlog_compression_benchmark_CFLAGS = $(check_CFLAGS)
+dlog_compression_benchmark_LDFLAGS = $(AM_LDFLAGS)
+
 usrlibexeclibdlog_PROGRAMS += test_libdlogutil
 test_libdlogutil_CFLAGS = \
        $(AM_CFLAGS) \
@@ -295,8 +402,91 @@ test_libdlogutil_LDADD = \
 test_libdlogutil_SOURCES = \
        tests/test_libdlogutil.c
 
+
+usrlibexeclibdlog_PROGRAMS += test_verifytime
+test_verifytime_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+test_verifytime_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+test_verifytime_DEPENDENCIES = \
+       libdlogutil.la
+
+test_verifytime_LDADD = \
+       libdlogutil.la
+
+test_verifytime_SOURCES = \
+       tests/test_verifytime.c
+
+
+usrlibexeclibdlog_PROGRAMS += test_libredirect
+test_libredirect_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+test_libredirect_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+test_libredirect_DEPENDENCIES = \
+       libdlog_redirect_stdout.la
+
+test_libredirect_LDADD = \
+       libdlog_redirect_stdout.la
+
+test_libredirect_SOURCES = \
+       tests/test_libredirect.c
+
+
+usrlibexeclibdlog_PROGRAMS += test_libredirect_multi
+test_libredirect_multi_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+test_libredirect_multi_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+test_libredirect_multi_DEPENDENCIES = \
+       libdlog_redirect_stdout.la
+
+test_libredirect_multi_LDADD = \
+       libdlog_redirect_stdout.la
+
+test_libredirect_multi_SOURCES = \
+       tests/test_libredirect_multi.c
+
+usrlibexeclibdlog_PROGRAMS += test_config_redirect
+test_config_redirect_CFLAGS = \
+       $(AM_CFLAGS) \
+       -fPIE
+
+test_config_redirect_LDFLAGS = \
+       $(AM_LDFLAGS) \
+       -pie
+
+test_config_redirect_DEPENDENCIES = \
+       libdlog_redirect_stdout.la
+
+test_config_redirect_LDADD = \
+       libdlog_redirect_stdout.la
+
+test_config_redirect_SOURCES = \
+       tests/test_config_redirect.c
+
+
 check_PROGRAMS = \
+       src/tests/test_ptrs_list_foreach_pos \
+       src/tests/test_compression_common \
+       src/tests/test_fastlz_neg \
+       src/tests/fuzz_logprint \
+       src/tests/test_libdlog_container_warning \
+       src/tests/test_log_storage_peek \
        src/tests/test_logger_log_storage \
+       src/tests/test_logger_compressed_storage \
        src/tests/test_ptrs_list_pos \
        src/tests/test_ptrs_list_neg \
        src/tests/config \
@@ -343,7 +533,9 @@ check_PROGRAMS = \
        src/tests/deduplicate_test \
        src/tests/pid_limiter \
        src/tests/qos_distributions \
-       src/tests/filters
+       src/tests/filters \
+       src/tests/libdlogutil_neg \
+       src/tests/libdlogutil_pos
 
 check_CFLAGS = $(AM_CFLAGS) -O0 -fprofile-arcs -DUNIT_TEST \
        -DEXIT_SKIP=77 -DEXIT_HARD_ERROR=99 # autotools convention exit codes
@@ -351,35 +543,72 @@ check_CFLAGS = $(AM_CFLAGS) -O0 -fprofile-arcs -DUNIT_TEST \
 TESTS = $(check_PROGRAMS) \
        src/tests/lcov.sh # doesn't test anything, but generates a test summary
 
+src_tests_test_compression_common_SOURCES = src/tests/test_compression_common.c \
+       src/tests/fastlz_test.c external/fastlz/fastlz.c \
+       src/tests/miniz_test.c  external/miniz/miniz.c
+src_tests_test_compression_common_CFLAGS = $(check_CFLAGS)
+src_tests_test_compression_common_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_test_fastlz_neg_SOURCES = external/fastlz/fastlz.c src/tests/test_fastlz_neg.c
+src_tests_test_fastlz_neg_CFLAGS = $(check_CFLAGS)
+src_tests_test_fastlz_neg_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_fuzz_logprint_SOURCES = src/tests/fuzz_logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
+src_tests_fuzz_logprint_CFLAGS = $(check_CFLAGS)
+src_tests_fuzz_logprint_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_test_libdlog_container_warning_SOURCES = src/tests/test_libdlog_container_warning.c src/libdlog/container_warning.c
+src_tests_test_libdlog_container_warning_CFLAGS = $(check_CFLAGS)
+src_tests_test_libdlog_container_warning_LDFLAGS = $(AM_LDFLAGS)  -Wl,--wrap=access,--wrap=getpid,--wrap=gettid
+
 src_tests_test_logger_log_storage_SOURCES = src/tests/test_logger_log_storage.c src/logger/log_storage.c src/shared/ptrs_list.c src/shared/queued_entry_timestamp.c
 src_tests_test_logger_log_storage_CFLAGS = $(check_CFLAGS)
 src_tests_test_logger_log_storage_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=malloc
 
+src_tests_test_log_storage_peek_SOURCES = src/tests/test_log_storage_peek.c src/logger/log_storage.c src/shared/ptrs_list.c src/shared/queued_entry_timestamp.c
+src_tests_test_log_storage_peek_CFLAGS = $(check_CFLAGS)
+src_tests_test_log_storage_peek_LDFLAGS = $(AM_LDFLAGS)
+
+src_tests_test_logger_compressed_storage_SOURCES = src/tests/test_logger_compressed_storage.c \
+       src/logger/compression_fastlz.c \
+       src/logger/compression_miniz.c \
+       src/logger/log_compressed_storage.c \
+       src/shared/ptrs_list.c \
+       src/shared/queued_entry_timestamp.c \
+       external/miniz/miniz.c \
+       external/fastlz/fastlz.c
+src_tests_test_logger_compressed_storage_CFLAGS = $(check_CFLAGS)
+src_tests_test_logger_compressed_storage_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=malloc
+
 src_tests_test_ptrs_list_pos_SOURCES = src/tests/test_ptrs_list_pos.c src/shared/ptrs_list.c
 src_tests_test_ptrs_list_pos_CFLAGS = $(check_CFLAGS)
 src_tests_test_ptrs_list_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=free,--wrap=calloc
 
+src_tests_test_ptrs_list_foreach_pos_SOURCES = src/tests/test_ptrs_list_foreach_pos.c src/shared/ptrs_list.c
+src_tests_test_ptrs_list_foreach_pos_CFLAGS = $(check_CFLAGS)
+src_tests_test_ptrs_list_foreach_pos_LDFLAGS = $(AM_LDFLAGS)
+
 src_tests_test_ptrs_list_neg_SOURCES = src/tests/test_ptrs_list_neg.c src/shared/ptrs_list.c
 src_tests_test_ptrs_list_neg_CFLAGS = $(check_CFLAGS)
 src_tests_test_ptrs_list_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=free,--wrap=calloc
 
-src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
+src_tests_test_common_SOURCES = src/tests/test_common.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
 src_tests_test_common_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
-src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
+src_tests_test_common_neg_SOURCES = src/tests/test_common_neg.c src/shared/logcommon.c src/shared/buffer_traits.c
 src_tests_test_common_neg_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
-src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/backend_androidlogger.c
+src_tests_test_common_pos_SOURCES = src/tests/test_common_pos.c src/shared/logcommon.c src/shared/buffer_traits.c
 src_tests_test_common_pos_CFLAGS = $(check_CFLAGS)
 src_tests_test_common_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sendmsg,--wrap=recvmsg,--wrap=writev,--wrap=read,--wrap=poll,--wrap=fcntl,--wrap=fcntl64,--wrap=malloc,--wrap=calloc,--wrap=connect,--wrap=socket,--wrap=open,--wrap=open64,--wrap=ioctl
 
-src_tests_limiter_pos_SOURCES = src/tests/limiter_pos.c src/shared/loglimiter.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c src/shared/ptrs_list.c
+src_tests_limiter_pos_SOURCES = src/tests/limiter_pos.c src/shared/hash.c src/shared/loglimiter.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c src/shared/ptrs_list.c
 src_tests_limiter_pos_CFLAGS = $(check_CFLAGS)
 src_tests_limiter_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=snprintf,--wrap=malloc,--wrap=time
 
-src_tests_limiter_neg_SOURCES = src/tests/limiter_neg.c src/shared/loglimiter.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c src/shared/ptrs_list.c
+src_tests_limiter_neg_SOURCES = src/tests/limiter_neg.c src/shared/hash.c src/shared/loglimiter.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c src/shared/ptrs_list.c
 src_tests_limiter_neg_CFLAGS = $(check_CFLAGS)
 src_tests_limiter_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=snprintf,--wrap=malloc,--wrap=time
 
@@ -415,55 +644,55 @@ src_tests_fd_info_neg_SOURCES = src/tests/fd_info_neg.c \
 src_tests_fd_info_neg_CFLAGS = $(check_CFLAGS)
 src_tests_fd_info_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=sort_vector_push,--wrap=malloc,--wrap=free,--wrap=close,--wrap=dlogutil_entry_get_timestamp,--wrap=log_should_print_line
 
-src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_pos_SOURCES = src/tests/fdi_logger_pos.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_fdi_logger_pos_CFLAGS = $(check_CFLAGS)
-src_tests_fdi_logger_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=dlogutil_filter_options_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
+src_tests_fdi_logger_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
 
-src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_fdi_logger_neg_SOURCES = src/tests/fdi_logger_neg.c src/libdlogutil/fdi_logger.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/backend_androidlogger.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_fdi_logger_neg_CFLAGS = $(check_CFLAGS)
-src_tests_fdi_logger_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=dlogutil_filter_options_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
+src_tests_fdi_logger_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config_get_path,--wrap=log_filter_set_filterspec,--wrap=parse_androidlogger_message,--wrap=copy_recv_timestamp,--wrap=malloc,--wrap=read,--wrap=close,--wrap=ioctl,--wrap=calloc
 
-src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_pos_SOURCES = src/tests/fdi_pipe_pos.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
 src_tests_fdi_pipe_pos_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_pipe_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
 
-src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/queued_entry_timestamp.c
+src_tests_fdi_pipe_neg_SOURCES = src/tests/fdi_pipe_neg.c src/libdlogutil/fdi_pipe.c src/shared/logconfig.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/parsers.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/queued_entry_timestamp.c
 src_tests_fdi_pipe_neg_CFLAGS = $(check_CFLAGS)
 src_tests_fdi_pipe_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=connect_sock,--wrap=close,--wrap=malloc,--wrap=free,--wrap=send_dlog_request,--wrap=recv_dlog_reply,--wrap=read,--wrap=recv_pipe
 
-src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/logcommon.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c src/shared/queued_entry_timestamp.c
+src_tests_libdlog_pipe_SOURCES = src/tests/libdlog_pipe.c src/libdlog/log_pipe.c src/shared/connect_pipe.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/queued_entry.c src/shared/translate_syslog.c src/shared/parsers.c
 src_tests_libdlog_pipe_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_pipe_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=syslog_critical_failure,--wrap=connect,--wrap=write,--wrap=recv_pipe,--wrap=dup2,--wrap=socket,--wrap=close -lm
 
-src_tests_libdlog_android_pos_SOURCES = src/tests/libdlog_android_pos.c src/libdlog/log_android.c src/shared/logcommon.c src/shared/parsers.c
+src_tests_libdlog_android_pos_SOURCES = src/tests/libdlog_android_pos.c src/libdlog/log_android.c
 src_tests_libdlog_android_pos_CFLAGS = $(check_CFLAGS)
 src_tests_libdlog_android_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev
 
-src_tests_libdlog_android_neg_SOURCES = src/tests/libdlog_android_neg.c src/libdlog/log_android.c src/shared/logcommon.c src/shared/parsers.c
+src_tests_libdlog_android_neg_SOURCES = src/tests/libdlog_android_neg.c src/libdlog/log_android.c
 src_tests_libdlog_android_neg_CFLAGS = $(check_CFLAGS)
 src_tests_libdlog_android_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev
 
-src_tests_libdlog_android_monotonic_pos_SOURCES = src/tests/libdlog_android_pos.c src/libdlog/log_android.c src/shared/logcommon.c src/shared/parsers.c
+src_tests_libdlog_android_monotonic_pos_SOURCES = src/tests/libdlog_android_pos.c src/libdlog/log_android.c
 src_tests_libdlog_android_monotonic_pos_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
 src_tests_libdlog_android_monotonic_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev,--wrap=clock_gettime
 
-src_tests_libdlog_android_monotonic_neg_SOURCES = src/tests/libdlog_android_neg.c src/libdlog/log_android.c src/shared/logcommon.c src/shared/parsers.c
+src_tests_libdlog_android_monotonic_neg_SOURCES = src/tests/libdlog_android_neg.c src/libdlog/log_android.c
 src_tests_libdlog_android_monotonic_neg_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
 src_tests_libdlog_android_monotonic_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=logger_open_buffer_from_config,--wrap=close,--wrap=writev,--wrap=clock_gettime
 
-src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_pos_SOURCES = src/tests/libdlog_base_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_base_pos_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_base_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
 
-src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_base_neg_SOURCES = src/tests/libdlog_base_neg.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_base_neg_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_base_neg_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read,--wrap=snprintf
 
-src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c
+src_tests_libdlog_prio_filter_pos_SOURCES = src/tests/libdlog_prio_filter_pos.c src/libdlog/log.c src/shared/hash.c src/libdlog/deduplicate.c src/shared/logcommon.c src/shared/buffer_traits.c src/shared/logconfig.c src/shared/parsers.c
 src_tests_libdlog_prio_filter_pos_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_libdlog_prio_filter_pos_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=log_config_read
 
-src_tests_log_file_SOURCES = src/tests/log_file.c src/shared/log_file.c
+src_tests_log_file_SOURCES = src/tests/log_file.c src/shared/log_file.c src/shared/logcommon.c
 src_tests_log_file_CFLAGS = $(check_CFLAGS)
 src_tests_log_file_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=strdup,--wrap=free,--wrap=memcpy,--wrap=snprintf,--wrap=open,--wrap=open64,--wrap=fstat,--wrap=fstat64,--wrap=rename,--wrap=dlogutil_entry_get_timestamp,--wrap=log_print_log_line,--wrap=dlogutil_entry_get_tag,--wrap=isatty
 
@@ -471,23 +700,25 @@ src_tests_queued_entry_pos_SOURCES = src/tests/queued_entry_pos.c src/shared/que
 src_tests_queued_entry_pos_CFLAGS = $(check_CFLAGS)
 src_tests_queued_entry_pos_LDFLAGS = $(AM_LDFLAGS)
 
-src_tests_queued_entry_neg_SOURCES = src/tests/queued_entry_neg.c src/shared/queued_entry.c src/shared/queued_entry_timestamp.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/logconfig.c src/shared/logcommon.c
-src_tests_queued_entry_neg_CFLAGS = $(check_CFLAGS)
+src_tests_queued_entry_neg_SOURCES = src/tests/queued_entry_neg.c src/shared/queued_entry_timestamp.c src/shared/parsers.c src/shared/logconfig.c src/shared/logcommon.c
+# The libdlogutil build flag is needed, because otherwise some internal functions assert
+# instead of returning TIZEN_ERROR_INVALID_PARAMETER
+src_tests_queued_entry_neg_CFLAGS = $(check_CFLAGS) -DLIBDLOGUTIL_BUILD
 src_tests_queued_entry_neg_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_queued_entry_monotonic_pos_SOURCES = src/tests/queued_entry_pos.c src/shared/queued_entry.c src/shared/queued_entry_timestamp.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/logconfig.c src/shared/logcommon.c
 src_tests_queued_entry_monotonic_pos_CFLAGS = $(check_CFLAGS) -DUSE_ANDROID_MONOTONIC
 src_tests_queued_entry_monotonic_pos_LDFLAGS = $(AM_LDFLAGS)
 
-src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/parsers.c src/shared/logconfig.c src/shared/loglimiter.c src/shared/logcommon.c src/shared/ptrs_list.c
+src_tests_logctl_SOURCES = src/tests/logctl.c src/logctl/logctl.c src/shared/logcommon.c src/shared/logconfig.c src/shared/parsers.c src/shared/buffer_traits.c
 src_tests_logctl_CFLAGS = $(check_CFLAGS)
 src_tests_logctl_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=calloc,--wrap=asprintf,--wrap=open,--wrap=open64,--wrap=fdopen,--wrap=fdopen64,--wrap=mkstemp,--wrap=mkstemp64,--wrap=fchmod,--wrap=rename
 
 src_tests_config_SOURCES = src/tests/config.c src/shared/logconfig.c src/shared/logcommon.c src/shared/parsers.c
-src_tests_config_CFLAGS = $(check_CFLAGS)
+src_tests_config_CFLAGS = $(check_CFLAGS) -D_FILE_OFFSET_BITS=64
 src_tests_config_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=openat64,--wrap=openat,--wrap=scandirat,--wrap=scandirat64,--wrap=fdopen,--wrap=fdopen64,--wrap=open,--wrap=open64,--wrap=calloc
 
-src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
+src_tests_logprint_SOURCES = src/tests/logprint.c src/shared/ptrs_list.c src/shared/logconfig.c src/shared/buffer_traits.c src/shared/logprint.c src/shared/logcommon.c src/shared/queued_entry.c src/shared/parsers.c src/shared/translate_syslog.c src/shared/queued_entry_timestamp.c
 src_tests_logprint_CFLAGS = $(check_CFLAGS)
 src_tests_logprint_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=write,--wrap=malloc,--wrap=calloc,--wrap=localtime_r,--wrap=strdup,--wrap=strndup,--wrap=list_add
 
@@ -497,86 +728,75 @@ src_tests_qos_distributions_CFLAGS = $(check_CFLAGS)
 src_tests_qos_distributions_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_logger_SOURCES = src/tests/logger.c $(dlog_logger_SOURCES)
-src_tests_logger_CFLAGS = $(check_CFLAGS)
-src_tests_logger_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=getgrnam_r,--wrap=getpwnam_r,--wrap=getegid,--wrap=geteuid,--wrap=setgid,--wrap=setuid,--wrap=socket,--wrap=unlink,--wrap=bind,--wrap=close,--wrap=chmod,--wrap=listen,--wrap=sysconf,--wrap=sd_listen_fds,--wrap=sd_is_socket_unix,--wrap=symlink,--wrap=calloc,--wrap=open,--wrap=open64,--wrap=fcntl,--wrap=fcntl64,--wrap=log_storage_reader_get_ready_bytes,--wrap=free,--wrap=logfile_free,--wrap=log_storage_add_new_entry,--wrap=log_storage_release_reader,--wrap=epoll_ctl,--wrap=log_storage_new_reader
+src_tests_logger_CFLAGS = $(check_CFLAGS) -pthread
+src_tests_logger_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=getgrnam_r,--wrap=getpwnam_r,--wrap=getegid,--wrap=geteuid,--wrap=setgid,--wrap=setuid,--wrap=socket,--wrap=unlink,--wrap=bind,--wrap=close,--wrap=chmod,--wrap=listen,--wrap=sysconf,--wrap=sd_listen_fds,--wrap=sd_is_socket_unix,--wrap=symlink,--wrap=calloc,--wrap=open,--wrap=open64,--wrap=fcntl,--wrap=fcntl64,--wrap=log_storage_reader_get_ready_bytes,--wrap=free,--wrap=log_storage_add_new_entry,--wrap=epoll_ctl
 
 src_tests_logutil_pos_SOURCES = src/tests/logutil_pos.c \
-       src/libdlogutil/privilege.c \
        src/libdlogutil/sort_vector.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
-       src/libdlogutil/lib.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
        src/shared/translate_syslog.c \
-       src/shared/log_file.c \
        src/shared/ptrs_list.c \
        src/shared/logconfig.c \
        src/libdlogutil/logretrieve.c
 src_tests_logutil_pos_CFLAGS = $(check_CFLAGS)
-src_tests_logutil_pos_LDFLAGS = $(AM_LDFLAGS) -lcap -Wl,--wrap=clock_gettime,--wrap=log_should_print_line,--wrap=fdi_push_log
+src_tests_logutil_pos_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=clock_gettime,--wrap=log_should_print_line,--wrap=fdi_push_log
 
 src_tests_logutil_neg_SOURCES = src/tests/logutil_neg.c \
-       src/libdlogutil/privilege.c \
        src/libdlogutil/sort_vector.c \
        src/libdlogutil/fd_info.c \
        src/libdlogutil/fdi_pipe.c \
        src/libdlogutil/fdi_logger.c \
-       src/libdlogutil/lib.c \
+       src/libdlogutil/fdi_zero_copy.c \
        src/shared/backend_androidlogger.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logprint.c \
        src/shared/parsers.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
        src/shared/translate_syslog.c \
-       src/shared/log_file.c \
        src/shared/ptrs_list.c \
        src/shared/logconfig.c \
        src/libdlogutil/logretrieve.c
 src_tests_logutil_neg_CFLAGS = $(check_CFLAGS)
-src_tests_logutil_neg_LDFLAGS = $(AM_LDFLAGS) -lcap -Wl,--wrap=clock_gettime,--wrap=log_should_print_line,--wrap=fdi_push_log
+src_tests_logutil_neg_LDFLAGS = $(AM_LDFLAGS) -Wl,--wrap=clock_gettime,--wrap=log_should_print_line,--wrap=fdi_push_log
 
 src_tests_kmsg_parser_pos_SOURCES = src/tests/kmsg_parser_pos.c \
-       src/shared/logcommon.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
-       src/shared/ptrs_list.c \
        src/shared/parsers.c \
        src/shared/translate_syslog.c
 src_tests_kmsg_parser_pos_CFLAGS = $(check_CFLAGS)
 src_tests_kmsg_parser_pos_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_kmsg_parser_neg_SOURCES = src/tests/kmsg_parser_neg.c \
-       src/shared/logcommon.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
-       src/shared/ptrs_list.c \
        src/shared/parsers.c \
        src/shared/translate_syslog.c
 src_tests_kmsg_parser_neg_CFLAGS = $(check_CFLAGS)
 src_tests_kmsg_parser_neg_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_syslog_parser_pos_SOURCES = src/tests/syslog_parser_pos.c \
-       src/shared/logcommon.c \
        src/shared/queued_entry.c \
        src/shared/queued_entry_timestamp.c \
-       src/shared/ptrs_list.c \
        src/shared/parsers.c \
        src/shared/translate_syslog.c
 src_tests_syslog_parser_pos_CFLAGS = $(check_CFLAGS)
 src_tests_syslog_parser_pos_LDFLAGS = $(AM_LDFLAGS)
 
 src_tests_syslog_parser_neg_SOURCES = src/tests/syslog_parser_neg.c \
-       src/shared/logcommon.c \
        src/shared/queued_entry.c \
-       src/shared/queued_entry_timestamp.c \
-       src/shared/ptrs_list.c \
        src/shared/parsers.c \
        src/shared/translate_syslog.c
 src_tests_syslog_parser_neg_CFLAGS = $(check_CFLAGS)
@@ -603,6 +823,7 @@ src_tests_critical_log_SOURCES = src/tests/critical_log.c \
        src/shared/hash.c \
        src/libdlog/dynamic_config.c \
        src/shared/ptrs_list.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c
@@ -610,7 +831,9 @@ src_tests_critical_log_CFLAGS = $(check_CFLAGS) -pthread
 src_tests_critical_log_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=execv,--wrap=clock_gettime
 
 src_tests_pid_limiter_SOURCES = src/tests/pid_limiter.c \
+       src/shared/hash.c \
        src/shared/loglimiter.c \
+       src/shared/buffer_traits.c \
        src/shared/logcommon.c \
        src/shared/logconfig.c \
        src/shared/parsers.c \
@@ -618,7 +841,7 @@ src_tests_pid_limiter_SOURCES = src/tests/pid_limiter.c \
 src_tests_pid_limiter_CFLAGS = $(check_CFLAGS) -Wl,--wrap=getpid,--wrap=time
 src_tests_pid_limiter_LDFLAGS = $(AM_LDFLAGS)
 
-src_tests_filters_SOURCES = src/tests/filters.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/logprint.c src/shared/queued_entry_timestamp.c
+src_tests_filters_SOURCES = src/tests/filters.c src/shared/ptrs_list.c src/shared/logcommon.c src/shared/logconfig.c src/shared/logprint.c src/shared/queued_entry_timestamp.c src/shared/parsers.c
 src_tests_filters_CFLAGS = $(check_CFLAGS)
 src_tests_filters_LDFLAGS = $(AM_LDFLAGS)
 
@@ -626,39 +849,95 @@ src_tests_hash_test_SOURCES = src/tests/hash_test.c src/shared/hash.c
 src_tests_hash_test_CFLAGS = $(check_CFLAGS)
 src_tests_hash_test_LDFLAGS = $(AM_LDFLAGS)
 
+src_tests_libdlogutil_neg_SOURCES = src/tests/libdlogutil_neg.c  \
+       src/libdlogutil/lib.c \
+       src/shared/queued_entry_timestamp.c \
+       src/shared/logprint.c \
+       src/shared/ptrs_list.c \
+       src/libdlogutil/logretrieve.c \
+       src/shared/buffer_traits.c \
+       src/shared/logcommon.c \
+       src/libdlogutil/fd_info.c \
+       src/libdlogutil/sort_vector.c \
+       src/shared/logconfig.c \
+       src/shared/parsers.c \
+       src/libdlogutil/fdi_pipe.c \
+       src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
+       src/shared/backend_androidlogger.c \
+       src/shared/queued_entry.c \
+       src/shared/translate_syslog.c
+src_tests_libdlogutil_neg_CFLAGS = $(check_CFLAGS) -DLIBDLOGUTIL_BUILD
+# Use LIBDLOGUTIL_BUILD because we're checking this from a client application PoV, not internal
+src_tests_libdlogutil_neg_LDFLAGS = $(AM_LDFLAGS)
+
+
+src_tests_libdlogutil_pos_SOURCES = src/tests/libdlogutil_pos.c  \
+       src/libdlogutil/lib.c \
+       src/shared/queued_entry_timestamp.c \
+       src/shared/logprint.c \
+       src/shared/ptrs_list.c \
+       src/libdlogutil/logretrieve.c \
+       src/shared/buffer_traits.c \
+       src/shared/logcommon.c \
+       src/libdlogutil/fd_info.c \
+       src/libdlogutil/sort_vector.c \
+       src/shared/logconfig.c \
+       src/shared/parsers.c \
+       src/libdlogutil/fdi_pipe.c \
+       src/libdlogutil/fdi_logger.c \
+       src/libdlogutil/fdi_zero_copy.c \
+       src/shared/backend_androidlogger.c \
+       src/shared/queued_entry.c \
+       src/shared/translate_syslog.c
+src_tests_libdlogutil_pos_CFLAGS = $(check_CFLAGS) -DLIBDLOGUTIL_BUILD
+# Use LIBDLOGUTIL_BUILD because we're checking this from a client application PoV, not internal
+src_tests_libdlogutil_pos_LDFLAGS = $(AM_LDFLAGS)
+
 src_tests_metrics_SOURCES = src/tests/metrics.c \
        src/shared/metrics.c \
-       src/shared/logcommon.c
+       src/shared/hash.c
 src_tests_metrics_DEPENDENCIES = libdlogutil.la
 src_tests_metrics_LDADD = libdlogutil.la
 src_tests_metrics_CFLAGS = $(check_CFLAGS)
 src_tests_metrics_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=dlogutil_entry_get_tag,--wrap=dlogutil_entry_get_pid,--wrap=dlogutil_entry_get_priority,--wrap=free,--wrap=calloc,--wrap=strdup
 
-src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
+src_tests_deduplicate_test_SOURCES = src/tests/deduplicate_test.c src/libdlog/log.c src/libdlog/deduplicate.c src/shared/hash.c src/shared/buffer_traits.c src/shared/logcommon.c src/shared/loglimiter.c src/libdlog/dynamic_config.c src/shared/logconfig.c src/shared/parsers.c src/shared/ptrs_list.c
 src_tests_deduplicate_test_CFLAGS = $(check_CFLAGS) -pthread
-src_tests_deduplicate_test_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=clock_gettime,--wrap=log_config_read
+src_tests_deduplicate_test_LDFLAGS = $(AM_LDFLAGS) -lpthread -Wl,--wrap=clock_gettime,--wrap=log_config_read,--wrap=deduplicate_warn
 
 # conf file
 usrlibtmpfilesddir = /usr/lib/tmpfiles.d
 usrlibtmpfilesd_DATA = configs/dlog-run.conf
 
 pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = dlog.pc dlogutil.pc
+pkgconfig_DATA = dlog.pc dlogutil.pc dlog-redirect-stdout.pc
 
 data_DATA = \
        configs/dlog-pipe.conf.test \
        configs/dlog-logger.conf.test \
+       configs/dlog-zero-copy.conf.test \
        configs/dlog-logger.conf.alias \
        configs/dlog-pipe.conf.cpu \
        configs/dlog-logger.conf.cpu \
        configs/dlog-pipe.conf.qos \
-       configs/dlog-logger.conf.qos
+       configs/dlog-logger.conf.qos \
+       configs/dlog-pipe.conf.plog \
+       configs/dlog-logger.conf.plog \
+       configs/dlog-pipe.conf.autodetect \
+       configs/dlog-logger.conf.autodetect \
+       configs/dlog-logger.conf.stdout_enable.1 \
+       configs/dlog-logger.conf.stdout_enable.2 \
+       configs/dlog-logger.conf.stdout_enable.3 \
+       configs/dlog-pipe.conf.stdout_enable.1 \
+       configs/dlog-pipe.conf.stdout_enable.2 \
+       configs/dlog-pipe.conf.stdout_enable.3
 
 unitdir = $(prefix)/lib/systemd/system
-nodist_unit_DATA = configs/dlog_logger.service \
-                               configs/dlog_cleanup.service
+nodist_unit_DATA = units/dlog_logger.service \
+                               units/dlog_cleanup.service
 unit_DATA = \
-       configs/dlog_dev-log.socket
+       units/dlog_dev-log.socket
 
 sysconf_DATA = configs/dlog.conf
 
@@ -668,9 +947,15 @@ dlogconf_DATA = \
        configs/15-qos.conf \
        configs/20-pipe.conf \
        configs/25-logger.conf \
+       configs/30-zero-copy.conf \
+       configs/86-disable-dlog.conf_inactive \
        configs/99-dlog-logger.disable-platform-logging-for-testsuite.conf
 
-bin_SCRIPTS = dlog_test dlog_cpu
+modulesloadddir = /usr/lib/modules/modules-load.d
+modulesloadd_DATA = \
+       configs/tizen-modules-dlog-zero-copy.conf
+
+bin_SCRIPTS = dlog_test dlog_test_header dlog_cpu
 
 docdir = $(datadir)/doc/dlog
 doc_DATA = \