commit
3c64b8afd1
@ -0,0 +1 @@
|
||||
SOURCES/libtraceevent-1.1.1.tar.gz
|
@ -0,0 +1 @@
|
||||
07d940c014adcc4c15bb7333845b8e2c21328dc7 SOURCES/libtraceevent-1.1.1.tar.gz
|
@ -0,0 +1,86 @@
|
||||
From 62823da1bd46f24e2b498513a809011dfe16cd9b Mon Sep 17 00:00:00 2001
|
||||
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
|
||||
Date: Tue, 8 Jun 2021 17:27:44 -0400
|
||||
Subject: [PATCH] libtraceevent: Handle parsing of "(REC)->" case
|
||||
|
||||
If a trace event wraps the special __entry variable to dereference it with
|
||||
parenthesis, it shows up in the trace event format file wrapping the
|
||||
"(REC)" as well. For example, the "func_repeats" event passed the __entry
|
||||
into a helper macro in the TP_printk() portion, and the macro correctly
|
||||
wrapped its parameter in parenthesis. This caused the output to show:
|
||||
|
||||
"(((u64)(REC)->top_delta_ts << 32) | (REC)->bottom_delta_ts)"
|
||||
|
||||
The parser then failed to parse the "(REC)->" portion, as it expected the
|
||||
"->" to appear directly after the "REC". This is not a requirement, and
|
||||
the parser should be able to handle such cases.
|
||||
|
||||
When this occurred, trace-cmd would error with the following message:
|
||||
|
||||
trace-cmd: No such file or directory
|
||||
Error: expected type 4 but read 5
|
||||
|
||||
Link: https://lore.kernel.org/linux-trace-devel/20210608172744.796e93b7@gandalf.local.home
|
||||
|
||||
Fixes: 6582b0a ("tools/events: Add files to create libtraceevent.a")
|
||||
Reported-by: Julia Lawall <julia.lawall@inria.fr>
|
||||
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||||
---
|
||||
src/event-parse.c | 27 ++++++++++++++++++++++++---
|
||||
1 file changed, 24 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/event-parse.c b/src/event-parse.c
|
||||
index 97c1a97..1217491 100644
|
||||
--- a/src/event-parse.c
|
||||
+++ b/src/event-parse.c
|
||||
@@ -2311,8 +2311,19 @@ process_entry(struct tep_event *event __maybe_unused, struct tep_print_arg *arg,
|
||||
char *field;
|
||||
char *token;
|
||||
|
||||
- if (read_expected(TEP_EVENT_OP, "->") < 0)
|
||||
- goto out_err;
|
||||
+ type = read_token_item(&token);
|
||||
+ /*
|
||||
+ * Check if REC happens to be surrounded by parenthesis, and
|
||||
+ * return if that's the case, as "(REC)->" is valid.
|
||||
+ * but return TEP_EVENT_ITEM.
|
||||
+ */
|
||||
+ if (type == TEP_EVENT_DELIM && strcmp(token, ")") == 0) {
|
||||
+ *tok = token;
|
||||
+ return TEP_EVENT_ITEM;
|
||||
+ }
|
||||
+
|
||||
+ if (test_type_token(type, token, TEP_EVENT_OP, "->"))
|
||||
+ goto out_free;
|
||||
|
||||
if (read_expect_type(TEP_EVENT_ITEM, &token) < 0)
|
||||
goto out_free;
|
||||
@@ -2338,7 +2349,6 @@ process_entry(struct tep_event *event __maybe_unused, struct tep_print_arg *arg,
|
||||
|
||||
out_free:
|
||||
free_token(token);
|
||||
- out_err:
|
||||
*tok = NULL;
|
||||
return TEP_EVENT_ERROR;
|
||||
}
|
||||
@@ -3033,6 +3043,17 @@ process_paren(struct tep_event *event, struct tep_print_arg *arg, char **tok)
|
||||
if (type == TEP_EVENT_ERROR)
|
||||
goto out_free;
|
||||
|
||||
+ /*
|
||||
+ * If REC is surrounded by parenthesis, the process_arg()
|
||||
+ * will return TEP_EVENT_ITEM with token == ")". In
|
||||
+ * this case, we need to continue processing the item
|
||||
+ * and return.
|
||||
+ */
|
||||
+ if (type == TEP_EVENT_ITEM && strcmp(token, ")") == 0) {
|
||||
+ free_token(token);
|
||||
+ return process_entry(event, arg, tok);
|
||||
+ }
|
||||
+
|
||||
if (test_type_token(type, token, TEP_EVENT_DELIM, ")"))
|
||||
goto out_free;
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,98 @@
|
||||
From e9bd314141ee6b4556d9db854bccd34159661ffa Mon Sep 17 00:00:00 2001
|
||||
From: "Steven Rostedt (VMware)" <rostedt@goodmis.org>
|
||||
Date: Thu, 28 Jan 2021 16:31:35 -0500
|
||||
Subject: [PATCH] libtraceevent: Move plugin_dir define logic to top level
|
||||
Makefile
|
||||
|
||||
The installation location of the plugin directory needs to be passed into
|
||||
the C files via the -DPLUGIN_DIR=".." compiler option. But the logic for
|
||||
that was only in the plugin directory, such that the main library did not
|
||||
know where to find the plugins (as the PLUGIN_DIR macro was not set). This
|
||||
caused the library not to load the plugins for the application.
|
||||
|
||||
By moving the logic to the top level Makefile and exporting the variables,
|
||||
this fixes the issue.
|
||||
|
||||
Link: https://lore.kernel.org/linux-trace-devel/20210128163135.27ae85d5@gandalf.local.home
|
||||
|
||||
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
|
||||
---
|
||||
Makefile | 26 ++++++++++++++++++++++++++
|
||||
plugins/Makefile | 24 ------------------------
|
||||
2 files changed, 26 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e4eba74..11bfe54 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -118,6 +118,32 @@ endif
|
||||
|
||||
LIBS = -ldl
|
||||
|
||||
+set_plugin_dir := 1
|
||||
+
|
||||
+# Set plugin_dir to preffered global plugin location
|
||||
+# If we install under $HOME directory we go under
|
||||
+# $(HOME)/.local/lib/traceevent/plugins
|
||||
+#
|
||||
+# We dont set PLUGIN_DIR in case we install under $HOME
|
||||
+# directory, because by default the code looks under:
|
||||
+# $(HOME)/.local/lib/traceevent/plugins by default.
|
||||
+#
|
||||
+ifeq ($(plugin_dir),)
|
||||
+ifeq ($(prefix),$(HOME))
|
||||
+override plugin_dir = $(HOME)/.local/lib/traceevent/plugins
|
||||
+set_plugin_dir := 0
|
||||
+else
|
||||
+override plugin_dir = $(libdir)/traceevent/plugins
|
||||
+endif
|
||||
+export plugin_dir
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(set_plugin_dir),1)
|
||||
+PLUGIN_DIR = -DPLUGIN_DIR="$(plugin_dir)"
|
||||
+PLUGIN_DIR_SQ = '$(subst ','\'',$(PLUGIN_DIR))'
|
||||
+export PLUGIN_DIR PLUGIN_DIR_SQ
|
||||
+endif
|
||||
+
|
||||
# Append required CFLAGS
|
||||
override CFLAGS += -fPIC
|
||||
override CFLAGS += $(CONFIG_FLAGS) $(INCLUDES) $(PLUGIN_DIR_SQ)
|
||||
diff --git a/plugins/Makefile b/plugins/Makefile
|
||||
index e8b8850..b60352d 100644
|
||||
--- a/plugins/Makefile
|
||||
+++ b/plugins/Makefile
|
||||
@@ -41,30 +41,6 @@ libdir_relative ?= $(libdir_relative_tmp)
|
||||
prefix ?= /usr/local
|
||||
libdir = $(prefix)/$(libdir_relative)
|
||||
|
||||
-set_plugin_dir := 1
|
||||
-
|
||||
-# Set plugin_dir to preffered global plugin location
|
||||
-# If we install under $HOME directory we go under
|
||||
-# $(HOME)/.local/lib/traceevent/plugins
|
||||
-#
|
||||
-# We dont set PLUGIN_DIR in case we install under $HOME
|
||||
-# directory, because by default the code looks under:
|
||||
-# $(HOME)/.local/lib/traceevent/plugins by default.
|
||||
-#
|
||||
-ifeq ($(plugin_dir),)
|
||||
-ifeq ($(prefix),$(HOME))
|
||||
-override plugin_dir = $(HOME)/.local/lib/traceevent/plugins
|
||||
-set_plugin_dir := 0
|
||||
-else
|
||||
-override plugin_dir = $(libdir)/traceevent/plugins
|
||||
-endif
|
||||
-endif
|
||||
-
|
||||
-ifeq ($(set_plugin_dir),1)
|
||||
-PLUGIN_DIR = -DPLUGIN_DIR="$(plugin_dir)"
|
||||
-PLUGIN_DIR_SQ = '$(subst ','\'',$(PLUGIN_DIR))'
|
||||
-endif
|
||||
-
|
||||
include ../scripts/Makefile.include
|
||||
|
||||
# copy a bit from Linux kbuild
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,106 @@
|
||||
# git tag
|
||||
#%%global commit 5dd505f3aba255c5fbc2a6dbed57fcba51b400f6
|
||||
#%%global commitdate 20201009
|
||||
#%%global shortcommit %%(c=%%{commit}; echo ${c:0:7})
|
||||
|
||||
Name: libtraceevent
|
||||
Version: 1.1.1
|
||||
Release: 8%{?dist}
|
||||
License: LGPLv2+ and GPLv2+
|
||||
Summary: Library to parse raw trace event formats
|
||||
|
||||
URL: https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/
|
||||
# If upstream does not provide tarballs, to generate:
|
||||
# git clone git://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git
|
||||
# cd libtraceevent
|
||||
# git archive --prefix=libtraceevent-%%{version}/ -o libtraceevent-%%{version}.tar.gz %%{git_commit}
|
||||
#Source0: libtraceevent-%%{version}.tar.gz
|
||||
Source0: https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/snapshot/libtraceevent-%{version}.tar.gz
|
||||
Patch0: libtraceevent-Handle-parsing-of-REC-case.patch
|
||||
Patch1: libtraceevent-Move-plugin_dir-define-logic-to-top-le.patch
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: xmlto
|
||||
BuildRequires: asciidoc
|
||||
|
||||
%global __provides_exclude_from ^%{_libdir}/traceevent/plugins
|
||||
|
||||
|
||||
%description
|
||||
libtraceevent is a library to parse raw trace event formats.
|
||||
|
||||
%package devel
|
||||
Summary: Development headers of %{name}
|
||||
Requires: %{name}%{_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
Development headers of %{name}-libs
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
%build
|
||||
MANPAGE_DOCBOOK_XSL=`rpm -ql docbook-style-xsl | grep manpages/docbook.xsl`
|
||||
%set_build_flags
|
||||
#looks like CFLAGS is ignored when compiling plugins, but not EXTRA_CFLAGS
|
||||
export EXTRA_CFLAGS="%{optflags}"
|
||||
export LDFLAGS="-Wl,-z,now"
|
||||
%make_build prefix=%{_prefix} libdir=%{_libdir} MANPAGE_XSL=%{MANPAGE_DOCBOOK_XSL} all doc
|
||||
|
||||
%install
|
||||
%set_build_flags
|
||||
#looks like CFLAGS is ignored when compiling plugins, but not EXTRA_CFLAGS
|
||||
export EXTRA_CFLAGS="%{optflags}"
|
||||
export LDFLAGS="-Wl,-z,now"
|
||||
%make_install prefix=%{_prefix} libdir=%{_libdir} install doc-install
|
||||
rm -rf %{buildroot}/%{_libdir}/libtraceevent.a
|
||||
|
||||
%files
|
||||
%license LICENSES/LGPL-2.1
|
||||
%license LICENSES/GPL-2.0
|
||||
%{_libdir}/traceevent/
|
||||
%{_libdir}/libtraceevent.so.%{version}
|
||||
%{_libdir}/libtraceevent.so.1
|
||||
%{_mandir}/man3/tep_*.3.*
|
||||
%{_mandir}/man3/libtraceevent.3.*
|
||||
%{_mandir}/man3/trace_seq*.3.*
|
||||
%{_docdir}/%{name}-doc
|
||||
|
||||
%files devel
|
||||
%{_includedir}/traceevent/
|
||||
%{_libdir}/libtraceevent.so
|
||||
%{_libdir}/pkgconfig/libtraceevent.pc
|
||||
|
||||
%changelog
|
||||
* Fri Jan 14 2022 Michael Petlan <mpetlan@redhat.com> - 1.1.1-8
|
||||
- Harden linking to meet annocheck requirements
|
||||
Related: rhbz#2037125
|
||||
|
||||
* Fri Nov 19 2021 Jerome Marchand <jmarchan@redhat.com> - 1.1.1-7
|
||||
- Fix rpminspect annocheck issue.
|
||||
|
||||
* Tue Oct 26 2021 Jerome Marchand <jmarchan@redhat.com> - 1.1.1-6
|
||||
- Handle parsing of "(REC)->" case
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.1.1-5
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
||||
* Thu May 6 2021 Michael Petlan <mpetlan@redhat.com> - 1.1.1-4
|
||||
- Remove conflict to enable perf linking. Resolves: rhbz#1957733
|
||||
|
||||
* Wed Apr 21 2021 Jerome Marchand <jmarchan@redhat.com> - 1.1.1-3
|
||||
- Multi-build with libtracefs, trace-cmd and kernelshark
|
||||
|
||||
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.1.1-2
|
||||
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
|
||||
|
||||
* Mon Feb 08 2021 Zamir SUN <sztsian@gmail.com> - 1.1.1-1
|
||||
- Update to 1.1.1
|
||||
|
||||
* Sat Oct 17 2020 Zamir SUN <sztsian@gmail.com> - 1.1.0-1
|
||||
- Update to 1.1.0
|
||||
|
||||
* Fri Oct 09 2020 Zamir SUN <sztsian@gmail.com> - 0-0.1.20201009git5dd505f
|
||||
- Initial libtraceevent
|
||||
|
Loading…
Reference in new issue