Rebase to upstream v1.5.3

Related: rhbz#2075213

Signed-off-by: Michael Petlan <mpetlan@redhat.com>
This commit is contained in:
Michael Petlan 2022-08-30 15:10:04 +02:00
parent 3b89f9d836
commit ad49eaccff
5 changed files with 8 additions and 189 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/libtraceevent-1.1.1.tar.gz
/libtraceevent-1.5.3.tar.gz

View File

@ -1,86 +0,0 @@
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

View File

@ -1,98 +0,0 @@
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

View File

@ -4,8 +4,8 @@
#%%global shortcommit %%(c=%%{commit}; echo ${c:0:7})
Name: libtraceevent
Version: 1.1.1
Release: 8%{?dist}
Version: 1.5.3
Release: 1%{?dist}
License: LGPLv2+ and GPLv2+
Summary: Library to parse raw trace event formats
@ -16,8 +16,6 @@ URL: https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/
# 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
@ -72,6 +70,10 @@ rm -rf %{buildroot}/%{_libdir}/libtraceevent.a
%{_libdir}/pkgconfig/libtraceevent.pc
%changelog
* Tue Aug 30 2022 Michael Petlan <mpetlan@redhat.com> - 1.5.3-1
- Rebase to v1.5.3
Related: rhbz#2075213
* Fri Jan 14 2022 Michael Petlan <mpetlan@redhat.com> - 1.1.1-8
- Harden linking to meet annocheck requirements
Related: rhbz#2037125

View File

@ -1 +1 @@
SHA512 (libtraceevent-1.1.1.tar.gz) = 659f4666c987514d9b101761203a61fe2d0fc9c7d6d7236e6cb84962bc7a8a0ac80e4b0a2d95c721f453f25327bef5b9e4104b30324b48e459dd1b455550d90e
SHA512 (libtraceevent-1.5.3.tar.gz) = 87cd8dbb51603e6d9f7fbc42f62175b4a1837d26bcfd187ac37afadfd34e7387d24322aaa6ac8e635755e905a4521a8a1b6c099dc983f5b248a1aefcd4a6f261