parent
1c94760fe4
commit
ba45cda0cd
@ -1 +1 @@
|
|||||||
SOURCES/libtraceevent-1.1.1.tar.gz
|
SOURCES/libtraceevent-1.5.3.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
07d940c014adcc4c15bb7333845b8e2c21328dc7 SOURCES/libtraceevent-1.1.1.tar.gz
|
72d2ca781728169d9b17679b890f496d4c303040 SOURCES/libtraceevent-1.5.3.tar.gz
|
||||||
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
Loading…
Reference in new issue