1.0.2-7 - Evolution of the previous (rhbz#1478089, rhbz#1487787)
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
This commit is contained in:
parent
9bf5b4b1b8
commit
f2f605942d
@ -1,7 +1,7 @@
|
|||||||
From eb3bde0891b71919e758543c8cf715b74db8411f Mon Sep 17 00:00:00 2001
|
From 10cd5db8821e4d313ae5245b33061e02ba8d3ff5 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: Thu, 3 Aug 2017 17:40:09 +0200
|
Date: Thu, 3 Aug 2017 17:40:09 +0200
|
||||||
Subject: [PATCH] WIP 4: Experimental fix for libqb logging not working with
|
Subject: [PATCH] WIP 5: Experimental fix for libqb logging not working with
|
||||||
ld.bfd 2.29
|
ld.bfd 2.29
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
@ -15,6 +15,12 @@ What's missing:
|
|||||||
log handler
|
log handler
|
||||||
- library could/shall attest in qb_log_init that QB_ATTR_SECTION_START
|
- library could/shall attest in qb_log_init that QB_ATTR_SECTION_START
|
||||||
+ STOP symbols belong to other address space than its own (dladdr?)
|
+ STOP symbols belong to other address space than its own (dladdr?)
|
||||||
|
* related to that, we should really enable attribute((__section__)) for
|
||||||
|
powerpc platforms, it seems to work well there -- and related to that,
|
||||||
|
we need to figure out how static and dynamic call sites can live
|
||||||
|
together -- say what will happen to logging programs compiled with
|
||||||
|
libqb w/o attribute sections when the underlying libqb is flipped
|
||||||
|
to the one with them...
|
||||||
|
|
||||||
Version 2:
|
Version 2:
|
||||||
Simplify the compilation against libqb for its users that now no
|
Simplify the compilation against libqb for its users that now no
|
||||||
@ -41,7 +47,16 @@ Overcomes some unintended RPATH occurrences in qb-blackbox binary
|
|||||||
or possibly libqb.so.*. That's definitely not desired:
|
or possibly libqb.so.*. That's definitely not desired:
|
||||||
https://fedoraproject.org/wiki/Packaging:Guidelines#Beware_of_Rpath
|
https://fedoraproject.org/wiki/Packaging:Guidelines#Beware_of_Rpath
|
||||||
|
|
||||||
Deficiencies of version 4 (some carried over, apparently):
|
Version 5:
|
||||||
|
Overcomes issues when HAVE_GCC_ATTRIBUTE_SECTION is not defined, hence
|
||||||
|
qblog_script.ld script used to carry unresolved symbolic references as
|
||||||
|
a consequence: https://bugzilla.redhat.com/show_bug.cgi?id=1487787
|
||||||
|
Now the script is not used at all in that case, and if accidentally was,
|
||||||
|
there is an extra guard conditionalizing the content referring to those
|
||||||
|
values to only the case they are expected to be defined.
|
||||||
|
Plus some more, missing in retrospect, conditionalizing is added.
|
||||||
|
|
||||||
|
Deficiencies of version 5 (some carried over, apparently):
|
||||||
- see What's missing above
|
- see What's missing above
|
||||||
- possibly needs and overhaul regarding documentation of the arrangement
|
- possibly needs and overhaul regarding documentation of the arrangement
|
||||||
(now scattered throughout the files)
|
(now scattered throughout the files)
|
||||||
@ -56,12 +71,12 @@ https://bugzilla.redhat.com/show_bug.cgi?id=1477354#c8
|
|||||||
|
|
||||||
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
|
||||||
---
|
---
|
||||||
configure.ac | 62 ++++++++++++++++++++++++++++++++++++++++----------
|
configure.ac | 62 +++++++++++++++++++++++++++++++++++++---------
|
||||||
lib/Makefile.am | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
lib/Makefile.am | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
lib/log.c | 7 ++++++
|
lib/log.c | 7 ++++++
|
||||||
lib/qblog_script.la.in | 15 ++++++++++++
|
lib/qblog_script.la.in | 15 +++++++++++
|
||||||
lib/qblog_script.ld.in | 15 ++++++++++++
|
lib/qblog_script.ld.in | 17 +++++++++++++
|
||||||
6 files changed, 149 insertions(+), 12 deletions(-)
|
6 files changed, 156 insertions(+), 12 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
|
||||||
|
|
||||||
@ -160,7 +175,7 @@ index fd37466..f94af71 100644
|
|||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
diff --git a/lib/Makefile.am b/lib/Makefile.am
|
diff --git a/lib/Makefile.am b/lib/Makefile.am
|
||||||
index 0bebeb5..b995034 100644
|
index 0bebeb5..85dd434 100644
|
||||||
--- a/lib/Makefile.am
|
--- a/lib/Makefile.am
|
||||||
+++ b/lib/Makefile.am
|
+++ b/lib/Makefile.am
|
||||||
@@ -19,6 +19,7 @@
|
@@ -19,6 +19,7 @@
|
||||||
@ -171,7 +186,7 @@ index 0bebeb5..b995034 100644
|
|||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
noinst_HEADERS = ipc_int.h util_int.h ringbuffer_int.h loop_int.h \
|
noinst_HEADERS = ipc_int.h util_int.h ringbuffer_int.h loop_int.h \
|
||||||
@@ -39,9 +40,46 @@ source_to_lint = util.c hdb.c ringbuffer.c ringbuffer_helper.c \
|
@@ -39,9 +40,48 @@ source_to_lint = util.c hdb.c ringbuffer.c ringbuffer_helper.c \
|
||||||
log_syslog.c log_dcs.c log_format.c \
|
log_syslog.c log_dcs.c log_format.c \
|
||||||
map.c skiplist.c hashtable.c trie.c
|
map.c skiplist.c hashtable.c trie.c
|
||||||
|
|
||||||
@ -214,16 +229,18 @@ index 0bebeb5..b995034 100644
|
|||||||
libqb_la_SOURCES = $(source_to_lint) unix.c
|
libqb_la_SOURCES = $(source_to_lint) unix.c
|
||||||
libqb_la_CFLAGS = $(PTHREAD_CFLAGS)
|
libqb_la_CFLAGS = $(PTHREAD_CFLAGS)
|
||||||
libqb_la_LIBADD = $(LTLIBOBJS) $(dlopen_LIBS) $(PTHREAD_LIBS) $(socket_LIBS)
|
libqb_la_LIBADD = $(LTLIBOBJS) $(dlopen_LIBS) $(PTHREAD_LIBS) $(socket_LIBS)
|
||||||
|
+if NEED_GCC_ATTRIBUTE_SECTION_WORKAROUND
|
||||||
+libqb_la_LIBADD += qblog_script.la
|
+libqb_la_LIBADD += qblog_script.la
|
||||||
|
+endif
|
||||||
|
|
||||||
AM_LDFLAGS = $(LDFLAGS_COPY:-Bsymbolic-functions=)
|
AM_LDFLAGS = $(LDFLAGS_COPY:-Bsymbolic-functions=)
|
||||||
|
|
||||||
@@ -60,6 +98,30 @@ else
|
@@ -60,6 +100,33 @@ else
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
+qblog_script.ld: %.ld: %.ld.in
|
+qblog_script.ld: %.ld: %.ld.in
|
||||||
+ $(CPP) -xc -I$(top_srcdir)/include -C -P $< \
|
+ $(AM_V_GEN)$(CPP) -xc -I$(top_srcdir)/include -C -P $< \
|
||||||
+ | sed -n "/$$(sed -n '/^[^#]/{s/[*\/]/\\\0/g;p;q}' $<)/{:r;p;n;br}" \
|
+ | sed -n "/$$(sed -n '/^[^#]/{s/[*\/]/\\\0/g;p;q}' $<)/{:r;p;n;br}" \
|
||||||
+ > $@
|
+ > $@
|
||||||
+
|
+
|
||||||
@ -233,6 +250,8 @@ index 0bebeb5..b995034 100644
|
|||||||
+# qblog_script.ld as a template, storing result in place of original libqb.so
|
+# qblog_script.ld as a template, storing result in place of original libqb.so
|
||||||
+# (e.g., libqb.so := "INPUT(libqb.so.0) " [...] "SECTIONS { " [...] "}")
|
+# (e.g., libqb.so := "INPUT(libqb.so.0) " [...] "SECTIONS { " [...] "}")
|
||||||
+# NOTE: readlink nor realpath are POSIX; not chained links ready
|
+# NOTE: readlink nor realpath are POSIX; not chained links ready
|
||||||
|
+# NOTE: conservative check, i.e., not per NEED_GCC_ATTRIBUTE_SECTION_WORKAROUND
|
||||||
|
+if HAVE_GCC_ATTRIBUTE_SECTION
|
||||||
+install-exec-hook: qblog_script.ld
|
+install-exec-hook: qblog_script.ld
|
||||||
+ target=$$(ls -l "$(DESTDIR)$(libdir)/libqb.so" || :); \
|
+ target=$$(ls -l "$(DESTDIR)$(libdir)/libqb.so" || :); \
|
||||||
+ target=$${target#* -> }; t1_bn=$$(basename "$${target}" || :); \
|
+ target=$${target#* -> }; t1_bn=$$(basename "$${target}" || :); \
|
||||||
@ -243,9 +262,10 @@ index 0bebeb5..b995034 100644
|
|||||||
+ test "$${t2_target}" = "$${target}" || break; \
|
+ test "$${t2_target}" = "$${target}" || break; \
|
||||||
+ t1_bn=$${t2_bn}; done; test -n "$${t1_bn}" || \
|
+ t1_bn=$${t2_bn}; done; test -n "$${t1_bn}" || \
|
||||||
+ { echo "only applicable to SO symlink scheme"; exit 1; }; \
|
+ { echo "only applicable to SO symlink scheme"; exit 1; }; \
|
||||||
+ echo "INPUT($${t1_bn})" > "$(DESTDIR)$(libdir)/libqb.so-t"; \
|
+ echo "INPUT($${t1_bn})" > "$(DESTDIR)$(libdir)/libqb.so-t"
|
||||||
+ cat $< >> "$(DESTDIR)$(libdir)/libqb.so-t"; \
|
+ cat $< >> "$(DESTDIR)$(libdir)/libqb.so-t"
|
||||||
+ mv -f "$(DESTDIR)$(libdir)/libqb.so-t" "$(DESTDIR)$(libdir)/libqb.so"
|
+ mv -f "$(DESTDIR)$(libdir)/libqb.so-t" "$(DESTDIR)$(libdir)/libqb.so"
|
||||||
|
+endif
|
||||||
|
|
||||||
pkgconfigdir = $(libdir)/pkgconfig
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
pkgconfig_DATA = libqb.pc
|
pkgconfig_DATA = libqb.pc
|
||||||
@ -290,10 +310,10 @@ index 0000000..b475835
|
|||||||
+inherited_linker_flags=-Wl,@abs_builddir@/qblog_script.ld
|
+inherited_linker_flags=-Wl,@abs_builddir@/qblog_script.ld
|
||||||
diff --git a/lib/qblog_script.ld.in b/lib/qblog_script.ld.in
|
diff --git a/lib/qblog_script.ld.in b/lib/qblog_script.ld.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..2d430ab
|
index 0000000..1f37976
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/lib/qblog_script.ld.in
|
+++ b/lib/qblog_script.ld.in
|
||||||
@@ -0,0 +1,15 @@
|
@@ -0,0 +1,17 @@
|
||||||
+#include <qb/qblog.h>
|
+#include <qb/qblog.h>
|
||||||
+/* GNU ld script
|
+/* GNU ld script
|
||||||
+ This atypical arrangement enforces global visibility of boundary symbols
|
+ This atypical arrangement enforces global visibility of boundary symbols
|
||||||
@ -303,11 +323,13 @@ index 0000000..2d430ab
|
|||||||
+ binutils change the visibility as of version 2.29, making the logging
|
+ binutils change the visibility as of version 2.29, making the logging
|
||||||
+ unusable without artificial stimulus: https://bugzilla.redhat.com/1477354 */
|
+ unusable without artificial stimulus: https://bugzilla.redhat.com/1477354 */
|
||||||
+SECTIONS {
|
+SECTIONS {
|
||||||
|
+#ifdef QB_HAVE_ATTRIBUTE_SECTION
|
||||||
+ QB_ATTR_SECTION : {
|
+ QB_ATTR_SECTION : {
|
||||||
+ QB_ATTR_SECTION_START = .;
|
+ QB_ATTR_SECTION_START = .;
|
||||||
+ *(QB_ATTR_SECTION);
|
+ *(QB_ATTR_SECTION);
|
||||||
+ QB_ATTR_SECTION_STOP = .;
|
+ QB_ATTR_SECTION_STOP = .;
|
||||||
+ }
|
+ }
|
||||||
|
+#endif
|
||||||
+}
|
+}
|
||||||
--
|
--
|
||||||
2.14.1
|
2.14.1
|
Loading…
Reference in New Issue
Block a user