1.0.2-13 - Evolution of the previous (rhbz#1478089)
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
This commit is contained in:
parent
e3be0a5f65
commit
18a84f6e3e
@ -1,4 +1,4 @@
|
|||||||
From afb1e96c8b45c520f1e66416167ad943326ae4fe Mon Sep 17 00:00:00 2001
|
From d471da4335c1da2501f2c31ffafc18ae884af389 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
||||||
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
||||||
Subject: [PATCH 3/6] tests: new sort of tests dubbed "functional", cover
|
Subject: [PATCH 3/6] tests: new sort of tests dubbed "functional", cover
|
||||||
@ -160,11 +160,11 @@ Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
|||||||
tests/functional/log_interlib_client.c | 68 ++++++
|
tests/functional/log_interlib_client.c | 68 ++++++
|
||||||
tests/functional/log_internal/Makefile.am | 23 ++
|
tests/functional/log_internal/Makefile.am | 23 ++
|
||||||
tests/functional/log_test_client.err | 2 +
|
tests/functional/log_test_client.err | 2 +
|
||||||
tests/functional/log_test_client.sh | 30 +++
|
tests/functional/log_test_client.sh | 33 +++
|
||||||
tests/functional/log_test_interlib_client.err | 4 +
|
tests/functional/log_test_interlib_client.err | 4 +
|
||||||
tests/functional/log_test_interlib_client.sh | 33 +++
|
tests/functional/log_test_interlib_client.sh | 36 +++
|
||||||
tests/functional/log_test_mock.sh | 310 ++++++++++++++++++++++++++
|
tests/functional/log_test_mock.sh | 310 ++++++++++++++++++++++++++
|
||||||
16 files changed, 754 insertions(+), 2 deletions(-)
|
16 files changed, 760 insertions(+), 2 deletions(-)
|
||||||
create mode 100644 tests/functional/GNUmakefile
|
create mode 100644 tests/functional/GNUmakefile
|
||||||
create mode 100644 tests/functional/Makefile.am
|
create mode 100644 tests/functional/Makefile.am
|
||||||
create mode 100644 tests/functional/log.am
|
create mode 100644 tests/functional/log.am
|
||||||
@ -653,63 +653,17 @@ index 0000000..697cee2
|
|||||||
+liblog_inter_la_LIBADD = $(top_builddir)/lib/libqb.la
|
+liblog_inter_la_LIBADD = $(top_builddir)/lib/libqb.la
|
||||||
diff --git a/tests/functional/log_test_client.err b/tests/functional/log_test_client.err
|
diff --git a/tests/functional/log_test_client.err b/tests/functional/log_test_client.err
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..cb0ff3c
|
index 0000000..19fca2c
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/tests/functional/log_test_client.err
|
+++ b/tests/functional/log_test_client.err
|
||||||
@@ -0,0 +1,2 @@
|
@@ -0,0 +1,2 @@
|
||||||
+[MAIN |debug] ../log_client.c:64:hello
|
+[MAIN |debug] ../log_client.c:64:hello
|
||||||
+[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file: No such file or directory (2)
|
+[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file:
|
||||||
diff --git a/tests/functional/log_test_client.sh b/tests/functional/log_test_client.sh
|
diff --git a/tests/functional/log_test_client.sh b/tests/functional/log_test_client.sh
|
||||||
new file mode 100755
|
new file mode 100755
|
||||||
index 0000000..17e9254
|
index 0000000..9098751
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/tests/functional/log_test_client.sh
|
+++ b/tests/functional/log_test_client.sh
|
||||||
@@ -0,0 +1,30 @@
|
|
||||||
+#!/bin/sh
|
|
||||||
+# Copyright 2017 Red Hat, Inc.
|
|
||||||
+#
|
|
||||||
+# Author: Jan Pokorny <jpokorny@redhat.com>
|
|
||||||
+#
|
|
||||||
+# This file is part of libqb.
|
|
||||||
+#
|
|
||||||
+# libqb is free software: you can redistribute it and/or modify
|
|
||||||
+# it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
+# the Free Software Foundation, either version 2.1 of the License, or
|
|
||||||
+# (at your option) any later version.
|
|
||||||
+#
|
|
||||||
+# libqb is distributed in the hope that it will be useful,
|
|
||||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+# GNU Lesser General Public License for more details.
|
|
||||||
+#
|
|
||||||
+# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
+# along with libqb. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+
|
|
||||||
+./log_client >/dev/null 2>log_test_client.err.real
|
|
||||||
+
|
|
||||||
+_pipeline='cat ../log_test_client.err'
|
|
||||||
+case "${CPPFLAGS}" in
|
|
||||||
+ *-DNLOG*)
|
|
||||||
+ _pipeline="${_pipeline} | \
|
|
||||||
+ grep -Ev '^\[MAIN |info] \.\./log_client\.c'";;
|
|
||||||
+esac
|
|
||||||
+
|
|
||||||
+eval "${_pipeline}" | diff -u - log_test_client.err.real
|
|
||||||
diff --git a/tests/functional/log_test_interlib_client.err b/tests/functional/log_test_interlib_client.err
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..dc0de9c
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/functional/log_test_interlib_client.err
|
|
||||||
@@ -0,0 +1,4 @@
|
|
||||||
+[MAIN |info] ../log_interlib_client.c:61:BEFORE
|
|
||||||
+[MAIN |info] ../log_interlib.c:47:aloha
|
|
||||||
+[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file: No such file or directory (2)
|
|
||||||
+[MAIN |info] ../log_interlib_client.c:65:AFTER
|
|
||||||
diff --git a/tests/functional/log_test_interlib_client.sh b/tests/functional/log_test_interlib_client.sh
|
|
||||||
new file mode 100755
|
|
||||||
index 0000000..e066cae
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tests/functional/log_test_interlib_client.sh
|
|
||||||
@@ -0,0 +1,33 @@
|
@@ -0,0 +1,33 @@
|
||||||
+#!/bin/sh
|
+#!/bin/sh
|
||||||
+# Copyright 2017 Red Hat, Inc.
|
+# Copyright 2017 Red Hat, Inc.
|
||||||
@ -731,7 +685,59 @@ index 0000000..e066cae
|
|||||||
+# You should have received a copy of the GNU Lesser General Public License
|
+# You should have received a copy of the GNU Lesser General Public License
|
||||||
+# along with libqb. If not, see <http://www.gnu.org/licenses/>.
|
+# along with libqb. If not, see <http://www.gnu.org/licenses/>.
|
||||||
+
|
+
|
||||||
+./log_interlib_client >/dev/null 2>log_test_interlib_client.err.real
|
+# error msg can differ per locale, errno code per system (Hurd begs to differ)
|
||||||
|
+./log_client 2>&1 >/dev/null \
|
||||||
|
+ | sed 's/\(qb_log_blackbox_print_from_file:\).*/\1/' \
|
||||||
|
+ >log_test_client.err.real
|
||||||
|
+
|
||||||
|
+_pipeline='cat ../log_test_client.err'
|
||||||
|
+case "${CPPFLAGS}" in
|
||||||
|
+ *-DNLOG*)
|
||||||
|
+ _pipeline="${_pipeline} | \
|
||||||
|
+ grep -Ev '^\[MAIN |info] \.\./log_client\.c'";;
|
||||||
|
+esac
|
||||||
|
+
|
||||||
|
+eval "${_pipeline}" | diff -u - log_test_client.err.real
|
||||||
|
diff --git a/tests/functional/log_test_interlib_client.err b/tests/functional/log_test_interlib_client.err
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..5b42b29
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/functional/log_test_interlib_client.err
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+[MAIN |info] ../log_interlib_client.c:61:BEFORE
|
||||||
|
+[MAIN |info] ../log_interlib.c:47:aloha
|
||||||
|
+[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file:
|
||||||
|
+[MAIN |info] ../log_interlib_client.c:65:AFTER
|
||||||
|
diff --git a/tests/functional/log_test_interlib_client.sh b/tests/functional/log_test_interlib_client.sh
|
||||||
|
new file mode 100755
|
||||||
|
index 0000000..d06ec98
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/tests/functional/log_test_interlib_client.sh
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+#!/bin/sh
|
||||||
|
+# Copyright 2017 Red Hat, Inc.
|
||||||
|
+#
|
||||||
|
+# Author: Jan Pokorny <jpokorny@redhat.com>
|
||||||
|
+#
|
||||||
|
+# This file is part of libqb.
|
||||||
|
+#
|
||||||
|
+# libqb is free software: you can redistribute it and/or modify
|
||||||
|
+# it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
+# the Free Software Foundation, either version 2.1 of the License, or
|
||||||
|
+# (at your option) any later version.
|
||||||
|
+#
|
||||||
|
+# libqb is distributed in the hope that it will be useful,
|
||||||
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+# GNU Lesser General Public License for more details.
|
||||||
|
+#
|
||||||
|
+# You should have received a copy of the GNU Lesser General Public License
|
||||||
|
+# along with libqb. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+# error msg can differ per locale, errno code per system (Hurd begs to differ)
|
||||||
|
+./log_interlib_client 2>&1 >/dev/null \
|
||||||
|
+ | sed 's/\(qb_log_blackbox_print_from_file:\).*/\1/' \
|
||||||
|
+ >log_test_interlib_client.err.real
|
||||||
+
|
+
|
||||||
+_pipeline='cat ../log_test_interlib_client.err'
|
+_pipeline='cat ../log_test_interlib_client.err'
|
||||||
+case "${CPPFLAGS}" in
|
+case "${CPPFLAGS}" in
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From ca5c4425393c462670861a023608d30977a17de7 Mon Sep 17 00:00:00 2001
|
From 06388b7fdf471438a08740791c21ae658c657bd0 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
||||||
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
||||||
Subject: [PATCH 4/6] Med: add extra run-time (client, libqb) checks that
|
Subject: [PATCH 4/6] Med: add extra run-time (client, libqb) checks that
|
||||||
@ -82,18 +82,20 @@ change (and extending log_test_mock.sh so as to capture syslog
|
|||||||
stream within the container), not much changes with the table above,
|
stream within the container), not much changes with the table above,
|
||||||
i.e., X(b) .. ld.bfd = 2.29:
|
i.e., X(b) .. ld.bfd = 2.29:
|
||||||
[*A] in addition, unless QB_LOG_INIT_DATA used on client side,
|
[*A] in addition, unless QB_LOG_INIT_DATA used on client side,
|
||||||
syslog carries this error:
|
syslog carries this warning:
|
||||||
"(LOG@QB) target chain supplied section not observed by libqb,
|
"(LOG@QB) target chain supplied section not observed by libqb,
|
||||||
target's and/or libqb's linkage at fault and logging of the target
|
target's and/or libqb's linkage at fault and logging of the target
|
||||||
will not work reliably (unless qb_log_init function used unexpectedly
|
will not work reliably (unless qb_log_init function used unexpectedly
|
||||||
in no-logging context)"
|
in no-logging context, or target chain built purposefully without
|
||||||
|
callsite section)"
|
||||||
logged by libqb proper
|
logged by libqb proper
|
||||||
[*C] in addition, unless QB_LOG_INIT_DATA used on interlib side,
|
[*C] in addition, unless QB_LOG_INIT_DATA used on interlib side,
|
||||||
syslog carries this error:
|
syslog carries this warning:
|
||||||
"(LOG@QB) target chain supplied section not observed by libqb,
|
"(LOG@QB) target chain supplied section not observed by libqb,
|
||||||
target's and/or libqb's linkage at fault and logging of the target
|
target's and/or libqb's linkage at fault and logging of the target
|
||||||
will not work reliably (unless qb_log_init function used unexpectedly
|
will not work reliably (unless qb_log_init function used unexpectedly
|
||||||
in no-logging context)"
|
in no-logging context, or target chain built purposefully without
|
||||||
|
callsite section)"
|
||||||
logged by libqb proper
|
logged by libqb proper
|
||||||
[*E] in addition, unless QB_LOG_INIT_DATA used on client side,
|
[*E] in addition, unless QB_LOG_INIT_DATA used on client side,
|
||||||
syslog carries this warning:
|
syslog carries this warning:
|
||||||
@ -173,27 +175,30 @@ libqb's linkage at fault and logging would not work reliably"
|
|||||||
which makes it, likely through self-reference keepalive (see
|
which makes it, likely through self-reference keepalive (see
|
||||||
below), work OK
|
below), work OK
|
||||||
[*K] boils down to [*3]
|
[*K] boils down to [*3]
|
||||||
in addition, syslog carries this error:
|
in addition, syslog carries this warning:
|
||||||
"(LOG@QB) target chain supplied section not observed by libqb,
|
"(LOG@QB) target chain supplied section not observed by libqb,
|
||||||
target's and/or libqb's linkage at fault and logging of the target
|
target's and/or libqb's linkage at fault and logging of the target
|
||||||
will not work reliably (unless qb_log_init function used unexpectedly
|
will not work reliably (unless qb_log_init function used unexpectedly
|
||||||
in no-logging context)"
|
in no-logging context, or target chain built purposefully without
|
||||||
|
callsite section)"
|
||||||
logged by libqb proper
|
logged by libqb proper
|
||||||
[*L] boils down to [*3], unless QB_LOG_INIT_DATA used on interlib side
|
[*L] boils down to [*3], unless QB_LOG_INIT_DATA used on interlib side
|
||||||
(sufficient?), which makes it, likely through self-reference
|
(sufficient?), which makes it, likely through self-reference
|
||||||
keepalive (see below), boil down just to [*1];
|
keepalive (see below), boil down just to [*1];
|
||||||
in addition, syslog carries this error:
|
in addition, syslog carries this warning:
|
||||||
"(LOG@QB) target chain supplied section not observed by libqb,
|
"(LOG@QB) target chain supplied section not observed by libqb,
|
||||||
target's and/or libqb's linkage at fault and logging of the target
|
target's and/or libqb's linkage at fault and logging of the target
|
||||||
will not work reliably (unless qb_log_init function used unexpectedly
|
will not work reliably (unless qb_log_init function used unexpectedly
|
||||||
in no-logging context)"
|
in no-logging context, or target chain built purposefully without
|
||||||
|
callsite section)"
|
||||||
logged by libqb proper
|
logged by libqb proper
|
||||||
[*M] boils down to [*1];
|
[*M] boils down to [*1];
|
||||||
in addition, syslog carries this error:
|
in addition, syslog carries this warning:
|
||||||
"(LOG@QB) target chain supplied section not observed by libqb,
|
"(LOG@QB) target chain supplied section not observed by libqb,
|
||||||
target's and/or libqb's linkage at fault and logging of the target
|
target's and/or libqb's linkage at fault and logging of the target
|
||||||
will not work reliably (unless qb_log_init function used unexpectedly
|
will not work reliably (unless qb_log_init function used unexpectedly
|
||||||
in no-logging context)"
|
in no-logging context, or target chain built purposefully without
|
||||||
|
callsite section)"
|
||||||
logged by libqb proper
|
logged by libqb proper
|
||||||
[*N] boils down to [*M], unless QB_LOG_INIT_DATA used on client side,
|
[*N] boils down to [*M], unless QB_LOG_INIT_DATA used on client side,
|
||||||
which makes it, likely through self-reference keepalive (see
|
which makes it, likely through self-reference keepalive (see
|
||||||
@ -230,22 +235,22 @@ which the current build system/code shake is all about.
|
|||||||
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
||||||
---
|
---
|
||||||
configure.ac | 1 +
|
configure.ac | 1 +
|
||||||
include/qb/qblog.h | 110 ++++++++++++++++++++++--------
|
include/qb/qblog.h | 111 ++++++++++++++++++++++--------
|
||||||
lib/libqb.pc.in | 3 +-
|
lib/libqb.pc.in | 3 +-
|
||||||
lib/log.c | 49 +++++++++++++
|
lib/log.c | 53 ++++++++++++++
|
||||||
tests/functional/Makefile.am | 3 +-
|
tests/functional/Makefile.am | 3 +-
|
||||||
tests/functional/log.am | 2 +-
|
tests/functional/log.am | 2 +-
|
||||||
tests/functional/log_external/Makefile.am | 8 ++-
|
tests/functional/log_external/Makefile.am | 8 ++-
|
||||||
tests/functional/log_test_mock.sh | 13 +++-
|
tests/functional/log_test_mock.sh | 13 +++-
|
||||||
tests/functional/syslog-stdout.py | 51 ++++++++++++++
|
tests/functional/syslog-stdout.py | 51 ++++++++++++++
|
||||||
9 files changed, 204 insertions(+), 36 deletions(-)
|
9 files changed, 209 insertions(+), 36 deletions(-)
|
||||||
create mode 100755 tests/functional/syslog-stdout.py
|
create mode 100755 tests/functional/syslog-stdout.py
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 274b49c..5769e60 100644
|
index 027154c..5338352 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -642,6 +642,7 @@ if test "x${GCC}" = xyes; then
|
@@ -644,6 +644,7 @@ if test "x${GCC}" = xyes; then
|
||||||
AC_DEFINE([QB_HAVE_ATTRIBUTE_SECTION], 1,
|
AC_DEFINE([QB_HAVE_ATTRIBUTE_SECTION], 1,
|
||||||
[Enabling code using __attribute__((section))])
|
[Enabling code using __attribute__((section))])
|
||||||
PACKAGE_FEATURES="$PACKAGE_FEATURES attribute-section"
|
PACKAGE_FEATURES="$PACKAGE_FEATURES attribute-section"
|
||||||
@ -254,7 +259,7 @@ index 274b49c..5769e60 100644
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
||||||
index 4954932..766cffe 100644
|
index aba63a0..e71556c 100644
|
||||||
--- a/include/qb/qblog.h
|
--- a/include/qb/qblog.h
|
||||||
+++ b/include/qb/qblog.h
|
+++ b/include/qb/qblog.h
|
||||||
@@ -1,9 +1,10 @@
|
@@ -1,9 +1,10 @@
|
||||||
@ -300,7 +305,7 @@ index 4954932..766cffe 100644
|
|||||||
*
|
*
|
||||||
* @par Configuring log targets.
|
* @par Configuring log targets.
|
||||||
* A log target can be syslog, stderr, the blackbox, stdout, or a text file.
|
* A log target can be syslog, stderr, the blackbox, stdout, or a text file.
|
||||||
@@ -283,35 +285,85 @@ typedef void (*qb_log_filter_fn)(struct qb_log_callsite * cs);
|
@@ -283,35 +285,86 @@ typedef void (*qb_log_filter_fn)(struct qb_log_callsite * cs);
|
||||||
extern struct qb_log_callsite QB_ATTR_SECTION_START[];
|
extern struct qb_log_callsite QB_ATTR_SECTION_START[];
|
||||||
extern struct qb_log_callsite QB_ATTR_SECTION_STOP[];
|
extern struct qb_log_callsite QB_ATTR_SECTION_STOP[];
|
||||||
|
|
||||||
@ -391,7 +396,8 @@ index 4954932..766cffe 100644
|
|||||||
+ assert("implicit callsite section observable, otherwise \
|
+ assert("implicit callsite section observable, otherwise \
|
||||||
+target's and/or libqb's linkage at fault and logging would not work \
|
+target's and/or libqb's linkage at fault and logging would not work \
|
||||||
+reliably" \
|
+reliably" \
|
||||||
+ && work_s1 != NULL && work_s2 != NULL); } \
|
+ && work_s1 != NULL && work_s2 != NULL); \
|
||||||
|
+ dlclose(work_handle); /* perhaps overly eager thing to do */ } \
|
||||||
+ /* better targeted attestations when available */ \
|
+ /* better targeted attestations when available */ \
|
||||||
+ QB_NONAPI_LOG_INIT_DATA_EXTRA_; \
|
+ QB_NONAPI_LOG_INIT_DATA_EXTRA_; \
|
||||||
+ /* finally, original, straightforward check */ \
|
+ /* finally, original, straightforward check */ \
|
||||||
@ -419,7 +425,7 @@ index 8a8d0ba..37d27b7 100644
|
|||||||
+Libs.private: @LIBS@
|
+Libs.private: @LIBS@
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
diff --git a/lib/log.c b/lib/log.c
|
diff --git a/lib/log.c b/lib/log.c
|
||||||
index bfd218f..777f378 100644
|
index bfd218f..eb35d6f 100644
|
||||||
--- a/lib/log.c
|
--- a/lib/log.c
|
||||||
+++ b/lib/log.c
|
+++ b/lib/log.c
|
||||||
@@ -853,6 +853,18 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
@@ -853,6 +853,18 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
||||||
@ -441,7 +447,7 @@ index bfd218f..777f378 100644
|
|||||||
|
|
||||||
l = pthread_rwlock_init(&_listlock, NULL);
|
l = pthread_rwlock_init(&_listlock, NULL);
|
||||||
assert(l == 0);
|
assert(l == 0);
|
||||||
@@ -871,6 +883,25 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
@@ -871,6 +883,26 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
||||||
|
|
||||||
qb_log_dcs_init();
|
qb_log_dcs_init();
|
||||||
#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||||
@ -463,23 +469,27 @@ index bfd218f..777f378 100644
|
|||||||
+ } else if (work_s1 == work_s2) {
|
+ } else if (work_s1 == work_s2) {
|
||||||
+ preinit_err = preinit_err_target_empty;
|
+ preinit_err = preinit_err_target_empty;
|
||||||
+ }
|
+ }
|
||||||
|
+ dlclose(work_handle); /* perhaps overly eager thing to do */
|
||||||
+ }
|
+ }
|
||||||
qb_log_callsites_register(QB_ATTR_SECTION_START, QB_ATTR_SECTION_STOP);
|
qb_log_callsites_register(QB_ATTR_SECTION_START, QB_ATTR_SECTION_STOP);
|
||||||
dl_iterate_phdr(_log_so_walk_callback, NULL);
|
dl_iterate_phdr(_log_so_walk_callback, NULL);
|
||||||
_log_so_walk_dlnames();
|
_log_so_walk_dlnames();
|
||||||
@@ -884,6 +915,24 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
@@ -884,6 +916,27 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
||||||
_log_target_state_set(&conf[QB_LOG_SYSLOG], QB_LOG_STATE_ENABLED);
|
_log_target_state_set(&conf[QB_LOG_SYSLOG], QB_LOG_STATE_ENABLED);
|
||||||
(void)qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD,
|
(void)qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD,
|
||||||
QB_LOG_FILTER_FILE, "*", priority);
|
QB_LOG_FILTER_FILE, "*", priority);
|
||||||
+
|
+
|
||||||
+ if (preinit_err == preinit_err_target_sec)
|
+ if (preinit_err == preinit_err_target_sec)
|
||||||
+ qb_util_log(LOG_ERR, "(LOG@QB) target chain supplied section"
|
+ qb_util_log(LOG_WARNING, "(LOG@QB) target chain supplied"
|
||||||
+ " not observed by libqb, target's and/or"
|
+ " section not observed by libqb,"
|
||||||
+ " libqb's linkage at fault and"
|
+ " target's and/or libqb's linkage"
|
||||||
+ " logging of the target will not"
|
+ " at fault and logging of the target"
|
||||||
+ " work reliably (unless qb_log_init"
|
+ " will not work reliably (unless"
|
||||||
+ " function used unexpectedly in"
|
+ " qb_log_init function used"
|
||||||
+ " no-logging context)");
|
+ " unexpectedly in no-logging"
|
||||||
|
+ " context, or target chain built"
|
||||||
|
+ " purposefully without callsite"
|
||||||
|
+ " sections)");
|
||||||
+ else if (preinit_err == preinit_err_target_empty) {
|
+ else if (preinit_err == preinit_err_target_empty) {
|
||||||
+ qb_util_log(LOG_WARNING, "(LOG@QB) target chain supplied"
|
+ qb_util_log(LOG_WARNING, "(LOG@QB) target chain supplied"
|
||||||
+ " section empty, target's and/or"
|
+ " section empty, target's and/or"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 0de4d2298da9c5880ff8c32ac2e75c3104d44816 Mon Sep 17 00:00:00 2001
|
From ae68f462c4ee6cadcbdbbd31b4c19e19bdd7aab2 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
||||||
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
||||||
Subject: [PATCH 5/6] High: bare fix for libqb logging not working with
|
Subject: [PATCH 5/6] High: bare fix for libqb logging not working with
|
||||||
@ -260,11 +260,12 @@ Deficiencies:
|
|||||||
Open questions:
|
Open questions:
|
||||||
* should we enable attribute((__section__)) for powerpc and other minor
|
* should we enable attribute((__section__)) for powerpc and other minor
|
||||||
platforms if the feature is proved to be working there as well?
|
platforms if the feature is proved to be working there as well?
|
||||||
and related to that, we need to figure out how static and dynamic call
|
and if/when that's going to happen, we need to figure out the
|
||||||
sites can live together -- say what will happen to logging programs
|
transition plan to be spread throughout an extended period to keep
|
||||||
compiled with libqb w/o attribute sections when the underlying libqb is
|
the transition smooth -- notably when now-with-callsite-section
|
||||||
flipped to the one with them ... do we need a transition plan to be
|
clients will get run-time linked with callsite-section-not-a-default
|
||||||
spread across an extended period to keep it smooth?
|
libqb (say upon it's downgrade), and for that, the libqb's support
|
||||||
|
alone should be enabled year(s) ahead of the actual client space...
|
||||||
|
|
||||||
* * *
|
* * *
|
||||||
|
|
||||||
@ -280,7 +281,6 @@ References:
|
|||||||
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
||||||
---
|
---
|
||||||
configure.ac | 147 +++++++++++++++++++++++++++++++++++++++++------
|
configure.ac | 147 +++++++++++++++++++++++++++++++++++++++++------
|
||||||
include/qb/qbconfig.h.in | 2 +
|
|
||||||
include/qb/qblog.h | 32 +++++++++--
|
include/qb/qblog.h | 32 +++++++++--
|
||||||
lib/Makefile.am | 67 +++++++++++++++++++++
|
lib/Makefile.am | 67 +++++++++++++++++++++
|
||||||
lib/libqb.pc.in | 8 +++
|
lib/libqb.pc.in | 8 +++
|
||||||
@ -288,16 +288,16 @@ Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
|||||||
lib/qblog_script.la.in | 15 +++++
|
lib/qblog_script.la.in | 15 +++++
|
||||||
lib/qblog_script.ld.in | 27 +++++++++
|
lib/qblog_script.ld.in | 27 +++++++++
|
||||||
lib/qblog_script_noop.ld | 1 +
|
lib/qblog_script_noop.ld | 1 +
|
||||||
9 files changed, 282 insertions(+), 24 deletions(-)
|
8 files changed, 280 insertions(+), 24 deletions(-)
|
||||||
create mode 100644 lib/qblog_script.la.in
|
create mode 100644 lib/qblog_script.la.in
|
||||||
create mode 100644 lib/qblog_script.ld.in
|
create mode 100644 lib/qblog_script.ld.in
|
||||||
create mode 100644 lib/qblog_script_noop.ld
|
create mode 100644 lib/qblog_script_noop.ld
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 5769e60..2b4ed32 100644
|
index 5338352..ac56c4c 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -501,6 +501,14 @@ AC_ARG_ENABLE([debug],
|
@@ -503,6 +503,14 @@ AC_ARG_ENABLE([debug],
|
||||||
AC_ARG_ENABLE([coverage],
|
AC_ARG_ENABLE([coverage],
|
||||||
[AS_HELP_STRING([--enable-coverage],[coverage analysis of the codebase])])
|
[AS_HELP_STRING([--enable-coverage],[coverage analysis of the codebase])])
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ index 5769e60..2b4ed32 100644
|
|||||||
AC_ARG_ENABLE([slow-tests],
|
AC_ARG_ENABLE([slow-tests],
|
||||||
[AS_HELP_STRING([--enable-slow-tests],[build and run slow tests])])
|
[AS_HELP_STRING([--enable-slow-tests],[build and run slow tests])])
|
||||||
|
|
||||||
@@ -609,6 +617,19 @@ else
|
@@ -611,6 +619,19 @@ else
|
||||||
COVERAGE_LDFLAGS=""
|
COVERAGE_LDFLAGS=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ index 5769e60..2b4ed32 100644
|
|||||||
if test "x${enable_slow_tests}" = xyes ; then
|
if test "x${enable_slow_tests}" = xyes ; then
|
||||||
AC_DEFINE([HAVE_SLOW_TESTS], 1,[have slow tests])
|
AC_DEFINE([HAVE_SLOW_TESTS], 1,[have slow tests])
|
||||||
AC_MSG_NOTICE([Enabling Slow tests])
|
AC_MSG_NOTICE([Enabling Slow tests])
|
||||||
@@ -618,33 +639,121 @@ AC_SUBST(HAVE_SLOW_TESTS)
|
@@ -620,33 +641,121 @@ AC_SUBST(HAVE_SLOW_TESTS)
|
||||||
|
|
||||||
# --- callsite sections ---
|
# --- callsite sections ---
|
||||||
if test "x${GCC}" = xyes; then
|
if test "x${GCC}" = xyes; then
|
||||||
@ -470,7 +470,7 @@ index 5769e60..2b4ed32 100644
|
|||||||
|
|
||||||
# --- ansi ---
|
# --- ansi ---
|
||||||
if test "x${enable_ansi}" = xyes && \
|
if test "x${enable_ansi}" = xyes && \
|
||||||
@@ -726,9 +835,11 @@ AC_CONFIG_FILES([Makefile
|
@@ -728,9 +837,11 @@ AC_CONFIG_FILES([Makefile
|
||||||
docs/Makefile
|
docs/Makefile
|
||||||
docs/common.dox
|
docs/common.dox
|
||||||
docs/html.dox
|
docs/html.dox
|
||||||
@ -484,23 +484,8 @@ index 5769e60..2b4ed32 100644
|
|||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
diff --git a/include/qb/qbconfig.h.in b/include/qb/qbconfig.h.in
|
|
||||||
index c1852e1..b0bf428 100644
|
|
||||||
--- a/include/qb/qbconfig.h.in
|
|
||||||
+++ b/include/qb/qbconfig.h.in
|
|
||||||
@@ -27,8 +27,10 @@
|
|
||||||
/* need atomic memory barrier */
|
|
||||||
#undef QB_ATOMIC_OP_MEMORY_BARRIER_NEEDED
|
|
||||||
|
|
||||||
+#ifndef QB_KILL_ATTRIBUTE_SECTION
|
|
||||||
/* Enabling code using __attribute__((section)) */
|
|
||||||
#undef QB_HAVE_ATTRIBUTE_SECTION
|
|
||||||
+#endif /* QB_KILL_ATTRIBUTE_SECTION */
|
|
||||||
|
|
||||||
/* versioning info: MAJOR, MINOR, MICRO, and REST components */
|
|
||||||
#undef QB_VER_MAJOR
|
|
||||||
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
||||||
index 766cffe..cd7256a 100644
|
index e71556c..e0890a9 100644
|
||||||
--- a/include/qb/qblog.h
|
--- a/include/qb/qblog.h
|
||||||
+++ b/include/qb/qblog.h
|
+++ b/include/qb/qblog.h
|
||||||
@@ -79,7 +79,10 @@ extern "C" {
|
@@ -79,7 +79,10 @@ extern "C" {
|
||||||
@ -556,10 +541,10 @@ index 766cffe..cd7256a 100644
|
|||||||
dlclose(work_handle); } }
|
dlclose(work_handle); } }
|
||||||
#endif /* _GNU_SOURCE */
|
#endif /* _GNU_SOURCE */
|
||||||
|
|
||||||
@@ -354,8 +375,7 @@ linkage at fault and logging would not work reliably" \
|
@@ -355,8 +376,7 @@ target's and/or libqb's linkage at fault and logging would not work \
|
||||||
target's and/or libqb's linkage at fault and logging would not work \
|
|
||||||
reliably" \
|
reliably" \
|
||||||
&& work_s1 != NULL && work_s2 != NULL); } \
|
&& work_s1 != NULL && work_s2 != NULL); \
|
||||||
|
dlclose(work_handle); /* perhaps overly eager thing to do */ } \
|
||||||
- /* better targeted attestations when available */ \
|
- /* better targeted attestations when available */ \
|
||||||
- QB_NONAPI_LOG_INIT_DATA_EXTRA_; \
|
- QB_NONAPI_LOG_INIT_DATA_EXTRA_; \
|
||||||
+ QB_NONAPI_LOG_INIT_DATA_EXTRA_(name); \
|
+ QB_NONAPI_LOG_INIT_DATA_EXTRA_(name); \
|
||||||
@ -680,7 +665,7 @@ index 37d27b7..65d3b8e 100644
|
|||||||
Libs.private: @LIBS@
|
Libs.private: @LIBS@
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
diff --git a/lib/log.c b/lib/log.c
|
diff --git a/lib/log.c b/lib/log.c
|
||||||
index 777f378..b0c8735 100644
|
index eb35d6f..290f29f 100644
|
||||||
--- a/lib/log.c
|
--- a/lib/log.c
|
||||||
+++ b/lib/log.c
|
+++ b/lib/log.c
|
||||||
@@ -40,6 +40,13 @@
|
@@ -40,6 +40,13 @@
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 4cd8bdcd3daca8781b5ee7bd8cdfdbcd5ba9cb92 Mon Sep 17 00:00:00 2001
|
From 93ebd97659c51527b0dc4b98ba3e0a9070a1dfea Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
|
||||||
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
Date: Fri, 6 Oct 2017 17:17:26 +0200
|
||||||
Subject: [PATCH 6/6] Low: fix internal object symbol's leak & expose run-time
|
Subject: [PATCH 6/6] Low: fix internal object symbol's leak & expose run-time
|
||||||
@ -38,12 +38,12 @@ Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
|||||||
9 files changed, 46 insertions(+), 11 deletions(-)
|
9 files changed, 46 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
diff --git a/include/qb/qbconfig.h.in b/include/qb/qbconfig.h.in
|
diff --git a/include/qb/qbconfig.h.in b/include/qb/qbconfig.h.in
|
||||||
index b0bf428..7199b1b 100644
|
index c1852e1..9094dc7 100644
|
||||||
--- a/include/qb/qbconfig.h.in
|
--- a/include/qb/qbconfig.h.in
|
||||||
+++ b/include/qb/qbconfig.h.in
|
+++ b/include/qb/qbconfig.h.in
|
||||||
@@ -32,7 +32,12 @@
|
@@ -30,7 +30,12 @@
|
||||||
|
/* Enabling code using __attribute__((section)) */
|
||||||
#undef QB_HAVE_ATTRIBUTE_SECTION
|
#undef QB_HAVE_ATTRIBUTE_SECTION
|
||||||
#endif /* QB_KILL_ATTRIBUTE_SECTION */
|
|
||||||
|
|
||||||
-/* versioning info: MAJOR, MINOR, MICRO, and REST components */
|
-/* versioning info: MAJOR, MINOR, MICRO, and REST components */
|
||||||
+/* versioning info: MAJOR, MINOR, MICRO, and REST components;
|
+/* versioning info: MAJOR, MINOR, MICRO, and REST components;
|
||||||
@ -56,7 +56,7 @@ index b0bf428..7199b1b 100644
|
|||||||
#undef QB_VER_MINOR
|
#undef QB_VER_MINOR
|
||||||
#undef QB_VER_MICRO
|
#undef QB_VER_MICRO
|
||||||
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
diff --git a/include/qb/qblog.h b/include/qb/qblog.h
|
||||||
index cd7256a..4b18eba 100644
|
index e0890a9..14f2a33 100644
|
||||||
--- a/include/qb/qblog.h
|
--- a/include/qb/qblog.h
|
||||||
+++ b/include/qb/qblog.h
|
+++ b/include/qb/qblog.h
|
||||||
@@ -299,9 +299,11 @@ extern struct qb_log_callsite QB_ATTR_SECTION_STOP[];
|
@@ -299,9 +299,11 @@ extern struct qb_log_callsite QB_ATTR_SECTION_STOP[];
|
||||||
@ -110,7 +110,7 @@ index ff5b3b4..a428975 100644
|
|||||||
source_to_lint = util.c hdb.c ringbuffer.c ringbuffer_helper.c \
|
source_to_lint = util.c hdb.c ringbuffer.c ringbuffer_helper.c \
|
||||||
array.c loop.c loop_poll.c loop_job.c \
|
array.c loop.c loop_poll.c loop_job.c \
|
||||||
diff --git a/lib/log.c b/lib/log.c
|
diff --git a/lib/log.c b/lib/log.c
|
||||||
index b0c8735..32c9315 100644
|
index 290f29f..cbad262 100644
|
||||||
--- a/lib/log.c
|
--- a/lib/log.c
|
||||||
+++ b/lib/log.c
|
+++ b/lib/log.c
|
||||||
@@ -892,10 +892,12 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
@@ -892,10 +892,12 @@ qb_log_init(const char *name, int32_t facility, uint8_t priority)
|
||||||
@ -185,13 +185,13 @@ index c60d657..d5d8089 100644
|
|||||||
printf("--\n");
|
printf("--\n");
|
||||||
qb_log_callsites_dump();
|
qb_log_callsites_dump();
|
||||||
diff --git a/tests/functional/log_test_client.err b/tests/functional/log_test_client.err
|
diff --git a/tests/functional/log_test_client.err b/tests/functional/log_test_client.err
|
||||||
index cb0ff3c..7bc11b0 100644
|
index 19fca2c..98df44c 100644
|
||||||
--- a/tests/functional/log_test_client.err
|
--- a/tests/functional/log_test_client.err
|
||||||
+++ b/tests/functional/log_test_client.err
|
+++ b/tests/functional/log_test_client.err
|
||||||
@@ -1,2 +1,2 @@
|
@@ -1,2 +1,2 @@
|
||||||
-[MAIN |debug] ../log_client.c:64:hello
|
-[MAIN |debug] ../log_client.c:64:hello
|
||||||
+[MAIN |debug] ../log_client.c:69:hello
|
+[MAIN |debug] ../log_client.c:69:hello
|
||||||
[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file: No such file or directory (2)
|
[libqb|error] log_blackbox.c:196:qb_log_blackbox_print_from_file:
|
||||||
--
|
--
|
||||||
2.14.3
|
2.14.3
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Name: libqb
|
Name: libqb
|
||||||
Version: 1.0.2
|
Version: 1.0.2
|
||||||
Release: 12%{?dist}
|
Release: 13%{?dist}
|
||||||
Summary: An IPC library for high performance servers
|
Summary: An IPC library for high performance servers
|
||||||
|
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
@ -77,6 +77,9 @@ developing applications that use %{name}.
|
|||||||
%{_mandir}/man3/qb*3*
|
%{_mandir}/man3/qb*3*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 31 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-13
|
||||||
|
- Evolution of the previous (rhbz#1478089)
|
||||||
|
|
||||||
* Wed Oct 25 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-12
|
* Wed Oct 25 2017 Jan Pokorný <jpokorny+rpm-libqb@redhat.com> - 1.0.2-12
|
||||||
- Evolution of the previous (rhbz#1478089)
|
- Evolution of the previous (rhbz#1478089)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user