Compare commits

..

No commits in common. "c9s" and "c8" have entirely different histories.
c9s ... c8

23 changed files with 932 additions and 1311 deletions

11
.gitignore vendored
View File

@ -1,10 +1 @@
/trace-cmd-1.2.20120606git8266dff.tar.gz SOURCES/trace-cmd-v2.7.tar.gz
/trace-cmd-2.1.0.tar.gz
/trace-cmd-2.2.1.tar.gz
/trace-cmd-2.6.tar.gz
/trace-cmd-2.6.1.tar.gz
/trace-cmd-v2.6.2.tar.gz
/trace-cmd-v2.7.tar.gz
/trace-cmd-v2.8.3.tar.gz
/trace-cmd-v2.9.1.tar.gz
/trace-cmd-v2.9.2.tar.gz

1
.trace-cmd.metadata Normal file
View File

@ -0,0 +1 @@
f95c34b6d9090b81f5c91e97ef71e6b6d835147b SOURCES/trace-cmd-v2.7.tar.gz

View File

@ -1 +0,0 @@
SUBSYSTEM=="module", ACTION=="add", PROGRAM="/usr/bin/systemctl is-active trace-cmd.service", PROGRAM="/usr/bin/systemctl reload trace-cmd.service"

View File

@ -0,0 +1,33 @@
From 7e8a6e3d03c0a6a7a5014ce488be1e16f99db006 Mon Sep 17 00:00:00 2001
From: Zamir SUN <sztsian@gmail.com>
Date: Sat, 11 Nov 2017 10:28:32 +0800
Subject: [PATCH] trace-cmd: Figure out the arch and install library to the
right place
Signed-off-by: Zamir SUN <sztsian@gmail.com>
---
Makefile | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 5c35143..d10e547 100644
--- a/Makefile
+++ b/Makefile
@@ -47,7 +47,13 @@ html_install = $(prefix)/share/kernelshark/html
html_install_SQ = '$(subst ','\'',$(html_install))'
img_install = $(prefix)/share/kernelshark/html/images
img_install_SQ = '$(subst ','\'',$(img_install))'
-libdir ?= $(prefix)/lib
+
+# figure out what arch we are on and install to the right place
+ARCH = $(shell getconf LONG_BIT)
+LIBDIR_32 = /lib
+LIBDIR_64 = /lib64
+
+libdir ?= $(prefix)/$(LIBDIR_$(ARCH))
libdir_SQ = '$(subst ','\'',$(libdir))'
includedir = $(prefix)/include/trace-cmd
includedir_SQ = '$(subst ','\'',$(includedir))'
--
2.13.4

View File

@ -0,0 +1,53 @@
From a57b906f58c8d293a1a353dbc5dabea237875759 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Thu, 4 Jun 2015 21:02:13 +0200
Subject: [PATCH] Add trace-cmd flightrecorder service
Make it possible to start and stop trace-cmd commands at start-up time.
Signed-off-by: John Kacur <jkacur@redhat.com>
---
98-trace-cmd.rules | 1 +
trace-cmd.conf | 4 ++++
trace-cmd.service | 10 ++++++++++
3 files changed, 15 insertions(+)
create mode 100644 98-trace-cmd.rules
create mode 100644 trace-cmd.conf
create mode 100644 trace-cmd.service
diff --git a/98-trace-cmd.rules b/98-trace-cmd.rules
new file mode 100644
index 000000000000..7c073692a0ab
--- /dev/null
+++ b/98-trace-cmd.rules
@@ -0,0 +1 @@
+SUBSYSTEM=="module", ACTION=="add", PROGRAM="/usr/bin/systemctl try-restart trace-cmd.service"
diff --git a/trace-cmd.conf b/trace-cmd.conf
new file mode 100644
index 000000000000..22896d961d64
--- /dev/null
+++ b/trace-cmd.conf
@@ -0,0 +1,4 @@
+# ftrace based flightrecorder configuration file.
+
+# trace-cmd options
+OPTS="-b 2048 -i -e block -e irq -e mce -e module -e power -e sched -e signal -e sys_enter -e sys_exit -e timer -e workqueue -e kvm -e net"
diff --git a/trace-cmd.service b/trace-cmd.service
new file mode 100644
index 000000000000..6439b490f8f4
--- /dev/null
+++ b/trace-cmd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=trace-cmd Flightrecorder
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+EnvironmentFile=/etc/sysconfig/trace-cmd.conf
+ExecStart=/usr/bin/trace-cmd start $OPTS
+ExecStop=/usr/bin/trace-cmd reset
+ExecReload=/usr/bin/trace-cmd reset; /usr/bin/trace-cmd start $OPTS
--
1.8.3.1

View File

@ -0,0 +1,170 @@
From 1132270594314acb2eed250f1690d5b10d0fb47c Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Tue, 30 Jun 2015 14:30:47 +0200
Subject: [PATCH] Various fixes for trace-cmd flightrecorder - systemd files
1) Allow systemctl enable trace-cmd.service to start trace-cmd.service automatically at system boot
2) Don't stop trace-cmd.service at system shutdown
3) Don't stop trace-cmd.service at each kernel module loading
4) Start trace-cmd.service before any normal services
1) Allow systemctl enable trace-cmd.service to start trace-cmd.service automatically at system boot
I added [Install] section in trace-cmd.service. This is necessary to
make trace-cmd.service automatically get started at system
boot. Without the [Install] section, systemctl enable
trace-cmd.service fails as below:
~]# systemctl enable trace-cmd.service
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
WantedBy=multi-user.target in trace-cmd.service means that
trace-cmd.service is started if multi-user.target, traditional
runlevel 3, is active.
2) Don't stop trace-cmd.service at system shutdown
In the current configuration, trace-cmd reset is executed when
trace-cmd.service is stopped at system shutdown. Then, trace buffer is
cleared. This could become a problem if system crash happens at system
shutdown. Even if we get a crash dump at the crash during system
shutdown, the crash dump doesn't contain useful trace data.
To fix the issue, it's necessary to make trace-cmd.service not stop at
system shutdown.
To achieve this, I added DefaultDependencies=no into trace-cmd.service.
To understand this, first you need to understand how systemd achieves
system shutdown. Look at the description of shutdown.target in man 7
systemd.special.
shutdown.target
A special target unit that terminates the services on
system shutdown.
Services that shall be terminated on system shutdown
shall add Conflicts= dependencies to this unit for their
service unit, which is implicitly done when
DefaultDependencies=yes is set (the default).
As this explains, systemd adds Conflicts=shutdown.target dependency to
all the unit files by default. By this, if we shutdown system for
example by systemctl poweroff, then all the currently active services
with the default dependency get stopped when shutdown.target is pulled
in.
Thus, in order not to stop trace-cmd.service at system shutdown, it's
necessary to remove the default Conflicts=shutdown.target
dependency. This is achieved by DefaultDependencies=no.
Also, we need to consider a default dependency around basic.target
that is explained in man 7 systemd.special as follows:
basic.target
A special target unit covering basic boot-up.
systemd automatically adds dependencies of the types
Requires= and After= for this target unit to all
services (except for those with DefaultDependencies=no).
Usually this should pull-in all mount points, swap
devices, sockets, timers, and path units and other basic
initialization necessary for general purpose daemons.
As this explains, Requires=basic.target is assigned to each service by
default.
Requires=basic.target means that the service tries to pull in the
basic.target when it's pulled in and gets stopped if the basic.target
gets stopped.
This means that trace-cmd.service gets stopped at system shutdown via
Requires=basic.target when basic.target is stopped.
Thus, not to stop trace-cmd.service at system shutdown, it's necessary
to remove the default Requires=basic.target dependency. This is again
achieved by DefaultDependencies=no.
3) Don't stop trace-cmd.service at each kernel module loading
We have now udev configuration that restarts trace-cmd.service each
time some kernel module is loaded. However, systemctl restart
trace-cmd.service means that systemctl stop trace-cmd.service and then
systemctl start trace-cmd.service. trace data gets lost when the
systemctl stop trace-cmd.service is executed as I explained above.
To fix the issue, we remove trace-cmd reset from ExecReload= in
trace-cmd.service and use systemctl reload trace-cmd.service in the
udev script instead of systemctl try-restart trace-cmd.service.
Note that it's enough to trace-cmd start to enable trace events of
newly loaded kernel modules.
Also note that systemctl is-active trace-cmd.service in the udev
script is needed to avoid executing systemctl reload trace-cmd.service
when trace-cmd.service is inactive. Without systemctl is-active
trace-cmd.service, systemctl reload trace-cmd.service is executed even
when trace-cmd.service is inactive and then logs the following
message:
Jun 12 20:24:25 localhost systemd: Unit trace-cmd.service cannot be reloaded because it is inactive.
4) Start trace-cmd.service before any normal services
trace-cmd.service needs to start early enough to collect useful kernel
event information. It's too late if any of the normal services has
started.
To achieve this, DefaultDependencies=no is again needed to remove
After=basic.target dependency assigned by default that is explained in
man 7 systemd.special.
Also, we need Before=basic.target to start trace-cmd.service *before*
any normal services, i.e. any services with the default
After=basic.target dependency.
Signed-off-by: John Kacur <jkacur@redhat.com>
---
98-trace-cmd.rules | 2 +-
trace-cmd.service | 7 ++++++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/98-trace-cmd.rules b/98-trace-cmd.rules
index 7c073692a0ab..9575bd819a8e 100644
--- a/98-trace-cmd.rules
+++ b/98-trace-cmd.rules
@@ -1 +1 @@
-SUBSYSTEM=="module", ACTION=="add", PROGRAM="/usr/bin/systemctl try-restart trace-cmd.service"
+SUBSYSTEM=="module", ACTION=="add", PROGRAM="/usr/bin/systemctl is-active trace-cmd.service", PROGRAM="/usr/bin/systemctl reload trace-cmd.service"
diff --git a/trace-cmd.service b/trace-cmd.service
index 6439b490f8f4..a5cdd046ca0c 100644
--- a/trace-cmd.service
+++ b/trace-cmd.service
@@ -1,5 +1,7 @@
[Unit]
Description=trace-cmd Flightrecorder
+DefaultDependencies=no
+Before=basic.target
[Service]
Type=oneshot
@@ -7,4 +9,7 @@ RemainAfterExit=yes
EnvironmentFile=/etc/sysconfig/trace-cmd.conf
ExecStart=/usr/bin/trace-cmd start $OPTS
ExecStop=/usr/bin/trace-cmd reset
-ExecReload=/usr/bin/trace-cmd reset; /usr/bin/trace-cmd start $OPTS
+ExecReload=/usr/bin/trace-cmd start $OPTS
+
+[Install]
+WantedBy=multi-user.target
--
1.8.3.1

View File

@ -0,0 +1,65 @@
From 8e8f12df7500f501447a2926a9e1db9ff42d882c Mon Sep 17 00:00:00 2001
From: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Date: Fri, 12 Apr 2019 11:22:49 -0300
Subject: [PATCH] tools lib traceevent: Fix missing equality check for strcmp
There was a missing comparison with 0 when checking if type is "s64" or
"u64". Therefore, the body of the if-statement was entered if "type" was
"u64" or not "s64", which made the first strcmp() redundant since if
type is "u64", it's not "s64".
If type is "s64", the body of the if-statement is not entered but since
the remainder of the function consists of if-statements which will not
be entered if type is "s64", we will just return "val", which is
correct, albeit at the cost of a few more calls to strcmp(), i.e., it
will behave just as if the if-statement was entered.
If type is neither "s64" or "u64", the body of the if-statement will be
entered incorrectly and "val" returned. This means that any type that is
checked after "s64" and "u64" is handled the same way as "s64" and
"u64", i.e., the limiting of "val" to fit in for example "s8" is never
reached.
This was introduced in the kernel tree when the sources were copied from
trace-cmd in commit f7d82350e597 ("tools/events: Add files to create
libtraceevent.a"), and in the trace-cmd repo in 1cdbae6035cei
("Implement typecasting in parser") when the function was introduced,
i.e., it has always behaved the wrong way.
Detected by cppcheck.
Link: http://lkml.kernel.org/r/20190412142250.20595-7-acme@kernel.org
Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Clark Williams <williams@redhat.com>
Cc: Tzvetomir Stoyanov <tstoyanov@vmware.com>
Fixes: f7d82350e597 ("tools/events: Add files to create libtraceevent.a")
Link: http://lkml.kernel.org/r/20190409091529.2686-1-rikard.falkeborn@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: John Kacur <jkacur@redhat.com>
---
event-parse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/event-parse.c b/event-parse.c
index e5f2acbb70cc..7dba02bd19fe 100644
--- a/event-parse.c
+++ b/event-parse.c
@@ -2206,7 +2206,7 @@ eval_type_str(unsigned long long val, const char *type, int pointer)
return val & 0xffffffff;
if (strcmp(type, "u64") == 0 ||
- strcmp(type, "s64"))
+ strcmp(type, "s64") == 0)
return val;
if (strcmp(type, "s8") == 0)
--
2.20.1

View File

@ -0,0 +1,105 @@
From c4936880059251b28b7049f01bbfddb1882bda0e Mon Sep 17 00:00:00 2001
From: Slavomir Kaslev <kaslevs@vmware.com>
Date: Wed, 17 Apr 2019 21:31:57 +0300
Subject: [PATCH 2/2] trace-cmd: Add --no-filter option to not filter out
recording processes
Add trace-cmd --no-filter option that disables filtering out of trace-cmd
recording processes from the trace.
Link: http://lore.kernel.org/linux-trace-devel/20190417183157.8776-2-kaslevs@vmware.com
Tested-by: Phil Auld <pauld@redhat.com>
Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
Documentation/trace-cmd-record.1.txt | 5 +++++
trace-record.c | 14 +++++++++++---
trace-usage.c | 1 +
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/Documentation/trace-cmd-record.1.txt b/Documentation/trace-cmd-record.1.txt
index 68afa161ac32..26a8299cd860 100644
--- a/Documentation/trace-cmd-record.1.txt
+++ b/Documentation/trace-cmd-record.1.txt
@@ -83,6 +83,11 @@ OPTIONS
The above are usually safe to use to compare fields.
+*--no-filter*::
+ Do not filter out the trace-cmd threads. By default, the threads are
+ filtered out to not be traced by events. This option will have the trace-cmd
+ threads also be traced.
+
*-R* 'trigger'::
Specify a trigger for the previous event. This must come after a *-e*.
This will add a given trigger to the given event. To only enable the trigger
diff --git a/trace-record.c b/trace-record.c
index e636c97d701d..ef4c4c873fd4 100644
--- a/trace-record.c
+++ b/trace-record.c
@@ -99,6 +99,7 @@ static int do_ptrace;
static int filter_task;
static int filter_pid = -1;
+static bool no_filter = false;
static int local_cpu_count;
@@ -1018,6 +1019,9 @@ static void update_task_filter(void)
struct buffer_instance *instance;
int pid = getpid();
+ if (no_filter)
+ return;
+
if (filter_task)
add_filter_pid(pid, 0);
@@ -4343,9 +4347,9 @@ void update_first_instance(struct buffer_instance *instance, int topt)
}
enum {
-
- OPT_quiet = 246,
- OPT_debug = 247,
+ OPT_quiet = 245,
+ OPT_debug = 246,
+ OPT_no_filter = 247,
OPT_max_graph_depth = 248,
OPT_tsoffset = 249,
OPT_bycomm = 250,
@@ -4592,6 +4596,7 @@ static void parse_record_options(int argc,
{"by-comm", no_argument, NULL, OPT_bycomm},
{"ts-offset", required_argument, NULL, OPT_tsoffset},
{"max-graph-depth", required_argument, NULL, OPT_max_graph_depth},
+ {"no-filter", no_argument, NULL, OPT_no_filter},
{"debug", no_argument, NULL, OPT_debug},
{"quiet", no_argument, NULL, OPT_quiet},
{"help", no_argument, NULL, '?'},
@@ -4866,6 +4871,9 @@ static void parse_record_options(int argc,
if (!ctx->max_graph_depth)
die("Could not allocate option");
break;
+ case OPT_no_filter:
+ no_filter = true;
+ break;
case OPT_debug:
debug = 1;
break;
diff --git a/trace-usage.c b/trace-usage.c
index 10f737b340df..dc73d4d90688 100644
--- a/trace-usage.c
+++ b/trace-usage.c
@@ -56,6 +56,7 @@ static struct usage_help usage_help[] = {
" --func-stack perform a stack trace for function tracer\n"
" (use with caution)\n"
" --max-graph-depth limit function_graph depth\n"
+ " --no-filter include trace-cmd threads in the trace\n"
},
{
"start",
--
2.20.1

View File

@ -0,0 +1,174 @@
From b206acf0f4bb4a8aff22b14139b6d5fdcb110b77 Mon Sep 17 00:00:00 2001
From: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Date: Wed, 2 Jun 2021 11:08:03 +0200
Subject: [PATCH] trace-cmd: Add option to poll trace buffers
Waiting for data to be available on the trace ring-buffers may trigger
IPIs. This might generate unacceptable trace noise when debugging low
latency or real time systems. So introduce the poll option. When
enabled, it forces trace-cmd to use O_NONBLOCK. The drawback to using it
is that traces will be extracted by busy waiting, which will
unnecessarily hog the CPUs, so only use when really needed.
Link: https://lore.kernel.org/linux-trace-devel/20210602090803.12233-1-nsaenzju@redhat.com
Signed-off-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
Documentation/trace-cmd-record.1.txt | 7 +++++++
trace-cmd.h | 4 +++-
trace-record.c | 9 ++++++++-
trace-recorder.c | 29 +++++++++++++++-------------
trace-usage.c | 1 +
5 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/Documentation/trace-cmd-record.1.txt b/Documentation/trace-cmd-record.1.txt
index 26a8299c..2b3ce636 100644
--- a/Documentation/trace-cmd-record.1.txt
+++ b/Documentation/trace-cmd-record.1.txt
@@ -331,6 +331,13 @@ OPTIONS
executed will not be changed. This is useful if you want to monitor the
output of the command being executed, but not see the output from trace-cmd.
+*--poll*::
+ Waiting for data to be available on the trace ring-buffers may trigger
+ IPIs. This might generate unacceptable trace noise when tracing low latency
+ or real time systems. The poll option forces trace-cmd to use O_NONBLOCK.
+ Traces are extracted by busy waiting, which will hog the CPUs, so only use
+ when really needed.
+
EXAMPLES
--------
diff --git a/trace-cmd.h b/trace-cmd.h
index 75951b5e..4cc9db2a 100644
--- a/trace-cmd.h
+++ b/trace-cmd.h
@@ -279,7 +279,9 @@ int tracecmd_attach_cpu_data_fd(int fd, int cpus, char * const *cpu_data_files);
enum {
TRACECMD_RECORD_NOSPLICE = (1 << 0), /* Use read instead of splice */
TRACECMD_RECORD_SNAPSHOT = (1 << 1), /* extract from snapshot */
- TRACECMD_RECORD_BLOCK = (1 << 2), /* Block on splice write */
+ TRACECMD_RECORD_BLOCK_SPLICE = (1 << 2), /* Block on splice write */
+ TRACECMD_RECORD_NOBRASS = (1 << 3), /* Splice directly without a brass pipe */
+ TRACECMD_RECORD_POLL = (1 << 4), /* Use O_NONBLOCK, poll trace buffers */
};
void tracecmd_free_recorder(struct tracecmd_recorder *recorder);
diff --git a/trace-record.c b/trace-record.c
index ef4c4c87..1872e3c4 100644
--- a/trace-record.c
+++ b/trace-record.c
@@ -2622,7 +2622,7 @@ create_recorder_instance_pipe(struct buffer_instance *instance,
int cpu, int *brass)
{
struct tracecmd_recorder *recorder;
- unsigned flags = recorder_flags | TRACECMD_RECORD_BLOCK;
+ unsigned flags = recorder_flags | TRACECMD_RECORD_BLOCK_SPLICE;
char *path;
if (instance->name)
@@ -4359,6 +4359,9 @@ enum {
OPT_funcstack = 254,
OPT_date = 255,
OPT_module = 256,
+ OPT_nofifos = 257,
+ OPT_cmdlines_size = 258,
+ OPT_poll = 259,
};
void trace_stop(int argc, char **argv)
@@ -4601,6 +4604,7 @@ static void parse_record_options(int argc,
{"quiet", no_argument, NULL, OPT_quiet},
{"help", no_argument, NULL, '?'},
{"module", required_argument, NULL, OPT_module},
+ {"poll", no_argument, NULL, OPT_poll},
{NULL, 0, NULL, 0}
};
@@ -4884,6 +4888,9 @@ static void parse_record_options(int argc,
ctx->instance->filter_mod = optarg;
ctx->filtered = 0;
break;
+ case OPT_poll:
+ recorder_flags |= TRACECMD_RECORD_POLL;
+ break;
case OPT_quiet:
case 'q':
quiet = 1;
diff --git a/trace-recorder.c b/trace-recorder.c
index 75290285..97dceccf 100644
--- a/trace-recorder.c
+++ b/trace-recorder.c
@@ -115,6 +115,18 @@ void tracecmd_free_recorder(struct tracecmd_recorder *recorder)
free(recorder);
}
+static void set_nonblock(struct tracecmd_recorder *recorder)
+{
+ long flags;
+
+ /* Do not block on reads for flushing */
+ flags = fcntl(recorder->trace_fd, F_GETFL);
+ fcntl(recorder->trace_fd, F_SETFL, flags | O_NONBLOCK);
+
+ /* Do not block on streams for write */
+ recorder->fd_flags |= 2; /* NON_BLOCK */
+}
+
struct tracecmd_recorder *
tracecmd_create_buffer_recorder_fd2(int fd, int fd2, int cpu, unsigned flags,
const char *buffer, int maxkb)
@@ -133,7 +145,7 @@ tracecmd_create_buffer_recorder_fd2(int fd, int fd2, int cpu, unsigned flags,
recorder->fd_flags = 1; /* SPLICE_F_MOVE */
- if (!(recorder->flags & TRACECMD_RECORD_BLOCK))
+ if (!(recorder->flags & TRACECMD_RECORD_BLOCK_SPLICE))
recorder->fd_flags |= 2; /* and NON_BLOCK */
/* Init to know what to free and release */
@@ -192,6 +204,9 @@ tracecmd_create_buffer_recorder_fd2(int fd, int fd2, int cpu, unsigned flags,
recorder->pipe_size = pipe_size;
}
+ if (recorder->flags & TRACECMD_RECORD_POLL)
+ set_nonblock(recorder);
+
free(path);
return recorder;
@@ -421,18 +436,6 @@ static long read_data(struct tracecmd_recorder *recorder)
return r;
}
-static void set_nonblock(struct tracecmd_recorder *recorder)
-{
- long flags;
-
- /* Do not block on reads for flushing */
- flags = fcntl(recorder->trace_fd, F_GETFL);
- fcntl(recorder->trace_fd, F_SETFL, flags | O_NONBLOCK);
-
- /* Do not block on streams for write */
- recorder->fd_flags |= 2; /* NON_BLOCK */
-}
-
long tracecmd_flush_recording(struct tracecmd_recorder *recorder)
{
char buf[recorder->page_size];
diff --git a/trace-usage.c b/trace-usage.c
index dc73d4d9..a9474ad3 100644
--- a/trace-usage.c
+++ b/trace-usage.c
@@ -57,6 +57,7 @@ static struct usage_help usage_help[] = {
" (use with caution)\n"
" --max-graph-depth limit function_graph depth\n"
" --no-filter include trace-cmd threads in the trace\n"
+ " --poll don't block while reading from the trace buffer\n"
},
{
"start",
--
2.31.1

View File

@ -0,0 +1,35 @@
From 34762bbe9ecd4913bd4a8d04a3ef24cfac6c3d54 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Mon, 11 Jun 2018 14:41:22 +0200
Subject: [PATCH] trace-cmd: Force no build of python2 plugin
Force no build of python2 plugin
Signed-off-by: John Kacur <jkacur@redhat.com>
---
Makefile | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index a5d2c384415b..62c469393a76 100644
--- a/Makefile
+++ b/Makefile
@@ -92,11 +92,12 @@ ifndef VERBOSE
VERBOSE = 0
endif
-SWIG_DEFINED := $(shell if swig -help &> /dev/null; then echo 1; else echo 0; fi)
-ifeq ($(SWIG_DEFINED), 0)
+# SWIG_DEFINED := $(shell if swig -help &> /dev/null; then echo 1; else echo 0; fi)
+# Don't build python2 plugin
+#ifeq ($(SWIG_DEFINED), 0)
BUILD_PYTHON := report_noswig
NO_PYTHON = 1
-endif
+#endif
ifndef NO_PYTHON
PYTHON := ctracecmd.so
--
2.14.4

View File

@ -0,0 +1,32 @@
From a7f654a1fa9087312e77be82574abc1fe10c2ab6 Mon Sep 17 00:00:00 2001
From: John Kacur <jkacur@redhat.com>
Date: Tue, 31 Jul 2018 14:53:31 +0200
Subject: [PATCH] trace-cmd: Makefile: Consistent ELF application hardening
build flags
These are the recommend build changes for Redhat
Signed-off-by: John Kacur <jkacur@redhat.com>
---
Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 62c469393a76..17eacc114450 100644
--- a/Makefile
+++ b/Makefile
@@ -243,9 +243,9 @@ INCLUDES = -I. -I ./include -I $(srctree)/../../include $(CONFIG_INCLUDES)
include $(src)/features.mk
# Set compile option CFLAGS if not set elsewhere
-CFLAGS ?= -g -Wall
+CFLAGS ?= -g -Wall -fPIE -fstack-protector-strong --param=ssp-buffer-size=4 -fstack-clash-protection -fexceptions
CPPFLAGS ?=
-LDFLAGS ?=
+LDFLAGS ?= -pie -Wl,-z,now
# Required CFLAGS
override CFLAGS += -D_GNU_SOURCE
--
2.14.4

View File

@ -0,0 +1,182 @@
From db8893838433972feafe545117b60dca8c7318df Mon Sep 17 00:00:00 2001
From: Slavomir Kaslev <kaslevs@vmware.com>
Date: Wed, 17 Apr 2019 16:09:58 +0300
Subject: [PATCH 1/2] trace-cmd: Optimize how pid filters are expressed
Express pid filters as allowed/disallowed filter ranges
(pid>=100&&pid<=103)
instead of specifying them per pid
(pid==100||pid==101||pid==102||pid==103)
This makes the size of the resulting filter smaller (and faster) and avoids
overflowing the filter size limit of one page which we can hit on bigger
machines (say >160 CPUs).
Link: http://lore.kernel.org/linux-trace-devel/20190417130959.10064-2-kaslevs@vmware.com
Reported-by: Phil Auld <pauld@redhat.com>
Tested-by: Phil Auld <pauld@redhat.com>
Suggested-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Slavomir Kaslev <kaslevs@vmware.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
trace-record.c | 117 ++++++++++++++++++++++++++++++++++---------------
1 file changed, 81 insertions(+), 36 deletions(-)
diff --git a/trace-record.c b/trace-record.c
index 9479f5f8073c..e636c97d701d 100644
--- a/trace-record.c
+++ b/trace-record.c
@@ -903,10 +903,63 @@ static void update_ftrace_pids(int reset)
static void update_event_filters(struct buffer_instance *instance);
static void update_pid_event_filters(struct buffer_instance *instance);
+static void append_filter_pid_range(char **filter, int *curr_len,
+ const char *field,
+ int start_pid, int end_pid, bool exclude)
+{
+ const char *op = "", *op1, *op2, *op3;
+ int len;
+
+ if (*filter && **filter)
+ op = exclude ? "&&" : "||";
+
+ /* Handle thus case explicitly so that we get `pid==3` instead of
+ * `pid>=3&&pid<=3` for singleton ranges
+ */
+ if (start_pid == end_pid) {
+#define FMT "%s(%s%s%d)"
+ len = snprintf(NULL, 0, FMT, op,
+ field, exclude ? "!=" : "==", start_pid);
+ *filter = realloc(*filter, *curr_len + len + 1);
+ if (!*filter)
+ die("realloc");
+
+ len = snprintf(*filter + *curr_len, len + 1, FMT, op,
+ field, exclude ? "!=" : "==", start_pid);
+ *curr_len += len;
+
+ return;
+#undef FMT
+ }
+
+ if (exclude) {
+ op1 = "<";
+ op2 = "||";
+ op3 = ">";
+ } else {
+ op1 = ">=";
+ op2 = "&&";
+ op3 = "<=";
+ }
+
+#define FMT "%s(%s%s%d%s%s%s%d)"
+ len = snprintf(NULL, 0, FMT, op,
+ field, op1, start_pid, op2,
+ field, op3, end_pid);
+ *filter = realloc(*filter, *curr_len + len + 1);
+ if (!*filter)
+ die("realloc");
+
+ len = snprintf(*filter + *curr_len, len + 1, FMT, op,
+ field, op1, start_pid, op2,
+ field, op3, end_pid);
+ *curr_len += len;
+}
+
/**
* make_pid_filter - create a filter string to all pids against @field
* @curr_filter: Append to a previous filter (may realloc). Can be NULL
- * @field: The fild to compare the pids against
+ * @field: The field to compare the pids against
*
* Creates a new string or appends to an existing one if @curr_filter
* is not NULL. The new string will contain a filter with all pids
@@ -916,54 +969,46 @@ static void update_pid_event_filters(struct buffer_instance *instance);
*/
static char *make_pid_filter(char *curr_filter, const char *field)
{
+ int start_pid = -1, last_pid = -1;
+ int last_exclude = -1;
struct filter_pids *p;
- char *filter;
- char *orit;
- char *match;
- char *str;
+ char *filter = NULL;
int curr_len = 0;
- int len;
/* Use the new method if possible */
if (have_set_event_pid)
return NULL;
- len = len_filter_pids + (strlen(field) + strlen("(==)||")) * nr_filter_pids;
-
- if (curr_filter) {
- curr_len = strlen(curr_filter);
- filter = realloc(curr_filter, curr_len + len + strlen("(&&())"));
- if (!filter)
- die("realloc");
- memmove(filter+1, curr_filter, curr_len);
- filter[0] = '(';
- strcat(filter, ")&&(");
- curr_len = strlen(filter);
- } else
- filter = malloc(len);
- if (!filter)
- die("Failed to allocate pid filter");
-
- /* Last '||' that is not used will cover the \0 */
- str = filter + curr_len;
+ if (!filter_pids)
+ return curr_filter;
for (p = filter_pids; p; p = p->next) {
- if (p->exclude) {
- match = "!=";
- orit = "&&";
- } else {
- match = "==";
- orit = "||";
+ /*
+ * PIDs are inserted in `filter_pids` from the front and that's
+ * why we expect them in descending order here.
+ */
+ if (p->pid == last_pid - 1 && p->exclude == last_exclude) {
+ last_pid = p->pid;
+ continue;
}
- if (p == filter_pids)
- orit = "";
- len = sprintf(str, "%s(%s%s%d)", orit, field, match, p->pid);
- str += len;
+ if (start_pid != -1)
+ append_filter_pid_range(&filter, &curr_len, field,
+ last_pid, start_pid,
+ last_exclude);
+
+ start_pid = last_pid = p->pid;
+ last_exclude = p->exclude;
+
}
+ append_filter_pid_range(&filter, &curr_len, field,
+ last_pid, start_pid, last_exclude);
- if (curr_len)
- sprintf(str, ")");
+ if (curr_filter) {
+ char *save = filter;
+ asprintf(&filter, "(%s)&&(%s)", curr_filter, filter);
+ free(save);
+ }
return filter;
}
--
2.20.1

View File

@ -2,230 +2,140 @@
#%%global git_commit trace-cmd-v2.6.2 #%%global git_commit trace-cmd-v2.6.2
#%%global git_commit 57371aaa2f469d0ba15fd85276deca7bfdd7ce36 #%%global git_commit 57371aaa2f469d0ba15fd85276deca7bfdd7ce36
%global srcversion 2.9.2
Name: trace-cmd Name: trace-cmd
Version: %{srcversion} Version: 2.7
Release: 10%{?dist} Release: 10%{?dist}
License: GPLv2 and LGPLv2 License: GPLv2 and LGPLv2
Summary: A user interface to Ftrace Summary: A user interface to Ftrace
Requires: libtracecmd
Requires: libtracefs
Requires: libtraceevent
URL: http://git.kernel.org/?p=linux/kernel/git/rostedt/trace-cmd.git;a=summary URL: http://git.kernel.org/?p=linux/kernel/git/rostedt/trace-cmd.git;a=summary
# If upstream does not provide tarballs, to generate: # If upstream does not provide tarballs, to generate:
# git clone https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git # git clone git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
# cd trace-cmd # cd trace-cmd
# git archive --prefix=trace-cmd-%%{version}/ -o trace-cmd-v%%{version}.tar.gz %%{git_commit} # git archive --prefix=trace-cmd-%%{version}/ -o trace-cmd-v%%{version}.tar.gz %%{git_commit}
Source0: https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git/snapshot/trace-cmd-v%{srcversion}.tar.gz Source0: https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git/snapshot/%{name}-v%{version}.tar.gz
Source1: trace-cmd.conf Source1: kernelshark.desktop
Source2: trace-cmd.service Patch1: 0001-trace-cmd-Figure-out-the-arch-and-install-library-to.patch
Source3: 98-trace-cmd.rules Patch2: trace-cmd-Force-no-build-of-python2-plugin.patch
Patch0: trace-cmd-Fix-broken-profile-command.patch Patch3: Add-trace-cmd-flightrecorder-service.patch
Patch1: trace-cmd-utils.mk-don-t-ignore-LDFLAGS-when-linking-the-share.patch Patch4: Various-fixes-for-trace-cmd-flightrecorder-systemd.patch
Patch2: trace-cmd-Remove-last-elements-of-local-libtracefs-a.patch Patch5: trace-cmd-Makefile-Consistent-ELF-application-harden.patch
Patch6: trace-cmd-Optimize-how-pid-filters-are-expressed.patch
Patch7: trace-cmd-Add-no-filter-option-to-not-filter-out-rec.patch
Patch8: tools-lib-traceevent-Fix-missing-equality-check.patch
Patch9: trace-cmd-Add-option-to-poll-trace-buffers.patch
BuildRequires: make
BuildRequires: gcc
BuildRequires: xmlto BuildRequires: xmlto
BuildRequires: asciidoc BuildRequires: asciidoc
BuildRequires: mlocate BuildRequires: mlocate
BuildRequires: graphviz doxygen BuildRequires: systemd
# needed for the GUI parts
BuildRequires: libxml2-devel BuildRequires: libxml2-devel
BuildRequires: gcc-c++ BuildRequires: gtk2-devel
BuildRequires: glib2-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: cmake
BuildRequires: qt5-qtbase-devel
BuildRequires: freeglut-devel
BuildRequires: json-c-devel
BuildRequires: libtraceevent-devel
BuildRequires: libtracefs-devel
BuildRequires: chrpath
BuildRequires: systemd-rpm-macros
%description %description
trace-cmd is a user interface to Ftrace. Instead of needing to use the trace-cmd is a user interface to Ftrace. Instead of needing to use the
debugfs directly, trace-cmd will handle of setting of options and debugfs directly, trace-cmd will handle of setting of options and
tracers and will record into a data file. tracers and will record into a data file.
%package python3 %package -n kernelshark
Summary: Python plugin support for trace-cmd Summary: GUI analysis for Ftrace data captured by trace-cmd
Requires: trace-cmd%{_isa} = %{version}-%{release} Requires: trace-cmd%{_isa} = %{version}-%{release}
BuildRequires: swig
BuildRequires: python3-devel
%description python3 %description -n kernelshark
Python plugin support for trace-cmd Kernelshark is the GUI frontend for analyzing data produced by
'trace-cmd extract'
%package -n libtracecmd
Summary: Libraries of trace-cmd
Version: 0
%description -n libtracecmd
The libtracecmd library
%package -n libtracecmd-devel
Summary: Development files for libtracecmd
Version: 0
Requires: libtracecmd%{_isa} = %{version}-%{release}
%description -n libtracecmd-devel
Development files of the libtracecmd library
%prep %prep
%autosetup -p1 -n %{name}-v%{srcversion} %autosetup -p1 -n %{name}-v%{version}
cp %{SOURCE1} .
cp %{SOURCE2} .
cp %{SOURCE3} .
%build %build
%set_build_flags
export CFLAGS="%{optflags} -D_GNU_SOURCE"
export BUILD_TYPE="Release"
# MANPAGE_DOCBOOK_XSL define is hack to avoid using locate # MANPAGE_DOCBOOK_XSL define is hack to avoid using locate
MANPAGE_DOCBOOK_XSL=`rpm -ql docbook-style-xsl | grep manpages/docbook.xsl` MANPAGE_DOCBOOK_XSL=`rpm -ql docbook-style-xsl | grep manpages/docbook.xsl`
make V=1 MANPAGE_DOCBOOK_XSL=$MANPAGE_DOCBOOK_XSL \ make V=1 CFLAGS="%{optflags} -D_GNU_SOURCE -g -Wall -fPIE -fstack-protector-strong --param=ssp-buffer-size=4 -fstack-clash-protection -fexceptions" LDFLAGS="%{build_ldflags} -pie -Wl,-z,now" \
prefix=%{_prefix} libdir=%{_libdir} \ MANPAGE_DOCBOOK_XSL=$MANPAGE_DOCBOOK_XSL prefix=%{_prefix} all doc gui
PYTHON_VERS=python3 all_cmd doc libs
for i in python/*.py ; do
sed -i 's/env python2/python3/g' $i
done
chrpath --delete tracecmd/trace-cmd lib/trace-cmd/libtracecmd.so.0.0.1
%install %install
make V=1 libdir=%{_libdir} prefix=%{_prefix} DESTDIR=%{buildroot}/ \ make V=1 DESTDIR=%{buildroot}/ prefix=%{_prefix} install install_doc install_gui
install install_doc install_python install_libs
find %{buildroot}%{_mandir} -type f | xargs chmod u-x,g-x,o-x find %{buildroot}%{_mandir} -type f | xargs chmod u-x,g-x,o-x
find %{buildroot}%{_datadir} -type f | xargs chmod u-x,g-x,o-x find %{buildroot}%{_datadir} -type f | xargs chmod u-x,g-x,o-x
find %{buildroot}%{_libdir} -type f -iname "*.so" | xargs chmod 0755 find %{buildroot}%{_libdir} -type f -iname "*.so" | xargs chmod 0755
mkdir -p -m755 %{buildroot}/%{_sysconfdir}/sysconfig/ install -dm 755 %{buildroot}/%{_datadir}/applications
mkdir -p -m755 %{buildroot}/%{_unitdir}/ install -pm 644 %{SOURCE1} %{buildroot}/%{_datadir}/applications/kernelshark.desktop
mkdir -p -m755 %{buildroot}/%{_udevrulesdir}/ mkdir -p %{buildroot}/%{_unitdir}/
install -p -m 644 trace-cmd.conf %{buildroot}/%{_sysconfdir}/sysconfig/ mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig/
mkdir -p %{buildroot}/%{_udevrulesdir}
install -p -m 644 trace-cmd.service %{buildroot}/%{_unitdir}/ install -p -m 644 trace-cmd.service %{buildroot}/%{_unitdir}/
install -p -m 644 trace-cmd.conf %{buildroot}/%{_sysconfdir}/sysconfig/
install -p -m 644 98-trace-cmd.rules %{buildroot}/%{_udevrulesdir}/ install -p -m 644 98-trace-cmd.rules %{buildroot}/%{_udevrulesdir}/
desktop-file-validate %{buildroot}/%{_datadir}/applications/kernelshark.desktop
%preun
%systemd_preun %{name}.service
%files %files
%doc COPYING COPYING.LIB README %doc COPYING COPYING.LIB README
%{_bindir}/trace-cmd %{_bindir}/trace-cmd
%{_mandir}/man1/%{name}* %dir %{_libdir}/%{name}
%{_mandir}/man5/%{name}* %dir %{_libdir}/%{name}/plugins
%{_sysconfdir}/bash_completion.d/trace-cmd.bash %{_libdir}/%{name}/plugins/plugin_blk.so
%{_sysconfdir}/sysconfig/trace-cmd.conf %{_libdir}/%{name}/plugins/plugin_cfg80211.so
%{_libdir}/%{name}/plugins/plugin_function.so
%{_libdir}/%{name}/plugins/plugin_hrtimer.so
%{_libdir}/%{name}/plugins/plugin_jbd2.so
%{_libdir}/%{name}/plugins/plugin_kmem.so
%{_libdir}/%{name}/plugins/plugin_kvm.so
%{_libdir}/%{name}/plugins/plugin_mac80211.so
%{_libdir}/%{name}/plugins/plugin_sched_switch.so
%{_libdir}/%{name}/plugins/plugin_scsi.so
%{_libdir}/%{name}/plugins/plugin_tlb.so
%{_libdir}/%{name}/plugins/plugin_xen.so
%{_mandir}/man1/trace-cmd*
%{_mandir}/man5/*
%{_unitdir}/trace-cmd.service %{_unitdir}/trace-cmd.service
%{_sysconfdir}/sysconfig/trace-cmd.conf
%{_udevrulesdir}/98-trace-cmd.rules %{_udevrulesdir}/98-trace-cmd.rules
%files python3 %files -n kernelshark
%doc Documentation/README.PythonPlugin %{_bindir}/trace-view
%{_libdir}/%{name}/python/ %{_bindir}/trace-graph
%{_bindir}/kernelshark
%{_datadir}/kernelshark
%{_datadir}/applications/kernelshark.desktop
%{_sysconfdir}/bash_completion.d/trace-cmd.bash
%{_mandir}/man1/kernelshark.1.gz
%files -n libtracecmd
%doc COPYING COPYING.LIB README
%{_libdir}/libtracecmd.so.0
%{_libdir}/libtracecmd.so.0.0.1
%{_docdir}/libtracecmd-doc
%{_mandir}/man3/libtracecmd*
%{_mandir}/man3/tracecmd*
%files -n libtracecmd-devel
%{_libdir}/pkgconfig/libtracecmd.pc
%{_libdir}/libtracecmd.so
%{_includedir}/trace-cmd
%changelog %changelog
* Fri Jul 21 2023 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-10 * Fri Oct 08 2021 Jerome Marchand <jmarchan@redhat.com> - 2.7-10
- Remove remaining trace of libtracefs and libtraceevent - Add poll option
* Thu Mar 31 2022 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-9 * Wed Feb 03 2021 Jerome Marchand <jmarchan@redhat.com> - 2.7-9
- Add flight recorder service - Filter fixes.
* Fri Nov 12 2021 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-8 * Fri Apr 26 2019 John Kacur <jkacur@redhat.com> - 2.7-8
- Fix remaining gating runpath failure - Install kernelshark manpage with kernelshark subpackage, not with trace-cmd
Resolves: rhbz#1678252
* Thu Nov 11 2021 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-7 * Tue Apr 02 2019 Clark Williams <williams@redhat.com> - 2.7-7
- Fix rpminspect gating failures (runpath and annocheck) - added OSCI gating framework
- Specfile cleanups Resolves: rhbz#1682420
* Thu Nov 11 2021 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-6 * Thu Nov 15 2018 John Kacur <jkacur@redhat.com> - 2.7-6
- Fix trace-cmd profile - The changes to the Makefile need to be applied from the specfile too.
Resolves: rhbz#1601040
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 2.9.2-5 * Tue Jul 31 2018 John Kacur <jkacur@redhat.com> - 2.7-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags - trace-cmd-Makefile-Consistent-ELF-application-harden.patch
Related: rhbz#1991688 Resolves: rhbz#1601040
* Thu Apr 22 2021 Jerome Marchand <jmarchan@redhat.com> - 2.9.2-4 * Mon Jun 11 2018 John Kacur <jkacur@redhat.com> - 2.7-4
- Kernelshark rebuild - Remove the unsupported python2 plugin
Resolves: rhbz#1589786
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2.9.2-3 * Tue May 29 2018 John Kacur <jkacur@redhat.com> - 2.7-3
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Add trace-cmd flightrecorder services
Resolves: rhbz#1574544
* Mon Mar 29 2021 Zamir SUN <sztsian@gmail.com> - 2.9.2-2
- Fix dependency of libtracecmd
- Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1943919
* Fri Mar 26 2021 Zamir SUN <sztsian@gmail.com> - 2.9.2-1
- Update to 2.9.2
* Wed Mar 24 2021 Jerome Marchand <jmarchan@redhat.com> - 2.9.1-6
- Build with external libtraceevent and libtracefs
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Dec 02 2020 Zamir SUN <sztsian@gmail.com> - 2.9.1-4
- Move %{_libdir}/trace-cmd/python/ to trace-cmd-python3
* Mon Oct 12 2020 Zamir SUN <sztsian@gmail.com> - 2.9.1-3
- Temporary move libtraceevent back to trace-cmd/plugins to mitigate the conflicts
* Tue Sep 29 2020 Zamir SUN <sztsian@gmail.com> - 2.9.1-2
- Remove kernelsharl as it's now separate package
* Fri Aug 07 2020 Zamir SUN <sztsian@gmail.com> - 2.9.1-1
- Update to 2.9.1
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.8.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue May 26 2020 Jeff Law <law@redhat.com> - 2.8.3-3
- TRACECMD_LIBRARY can reference things in TRACEEVENT_LIBRARY, so
link TRACEEVENT_LIBRARY after TRACECMD_LIBRARY.
* Tue Apr 21 2020 Björn Esser <besser82@fedoraproject.org> - 2.8.3-2
- Rebuild (json-c)
* Sat Feb 08 2020 Zamir SUN <sztsian@gmail.com> - 2.8.3-1
- Update to 2.8
- Add workaround to resolve gcc 10 multiple definition of `common_type_field' problem
- Resolves 1794296
- Resolves 1727368
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 2.7-8
- Rebuilt for Python 3.8
* Wed Aug 07 2019 Zamir SUN <sztsian@gmail.com> - 2.7-7
- Fix more python2 residuals.
- Fixes 1738158
* Sat Aug 03 2019 Zamir SUN <sztsian@gmail.com> - 2.7-6
- Switch the python plugin to python3
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Fri Mar 02 2018 Zamir SUN <sztsian@gmail.com> - 2.7-2 * Fri Mar 02 2018 Zamir SUN <sztsian@gmail.com> - 2.7-2
- Add python plugins - Add python plugins

View File

@ -1,6 +0,0 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -1 +0,0 @@
SHA512 (trace-cmd-v2.9.2.tar.gz) = ddb32446a5185ee6414f297de1d48fe39a7141c833a608fd3977dd0efd496bf18b59ea5d064316e7deb86c1cd82f33dcea4c0c145bb31b2473e85593f4d0d461

View File

@ -1,17 +0,0 @@
#!/usr/bin/bash
# make sure we have trace-cmd installed
if rpm -q --quiet trace-cmd; then
:
else
sudo dnf install -y trace-cmd
if [[ $? != 0 ]]; then
echo "install of trace-cmd failed!"
exit 1
fi
fi
# run a simple command to list available tracers
trace-cmd list || exit 2
exit 0

View File

@ -1,11 +0,0 @@
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- simple:
dir: scripts
run: ./run_tests.sh
required_packages:
- trace-cmd

View File

@ -1,35 +0,0 @@
From 7e12e8ba4001f51869f28770246f0ac3dbfb9999 Mon Sep 17 00:00:00 2001
From: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
Date: Fri, 14 May 2021 10:52:41 +0300
Subject: [PATCH] trace-cmd: Fix broken profile command
Recent changes in creating trace.dat files broke the streams, used
internaly by the trace-cmd profile command.
Link: https://lore.kernel.org/linux-trace-devel/20210514075241.65418-1-tz.stoyanov@gmail.com
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=213045
Reported-by: Jerome Marchand <jmarchan@redhat.com>
Fixes: 1762536da ("trace-cmd: Have tracecmd_read_headers() specify the state to read up to")
Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---
tracecmd/trace-stream.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tracecmd/trace-stream.c b/tracecmd/trace-stream.c
index f503bf7..b47b208 100644
--- a/tracecmd/trace-stream.c
+++ b/tracecmd/trace-stream.c
@@ -59,7 +59,7 @@ trace_stream_init(struct buffer_instance *instance, int cpu, int fd, int cpus,
goto fail;
}
- if (tracecmd_read_headers(trace_input, 0) < 0)
+ if (tracecmd_read_headers(trace_input, TRACECMD_FILE_PRINTK) < 0)
goto fail_free_input;
if (handle_init)
--
2.31.1

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +0,0 @@
From 31385f8933f00ddecfd4a00a578d7936186f75da Mon Sep 17 00:00:00 2001
From: Jerome Marchand <jmarchan@redhat.com>
Date: Thu, 11 Nov 2021 18:22:09 +0100
Subject: [PATCH] utils.mk: don't ignore LDFLAGS when linking the shared libs
do_compile_shared_library should't ignore LDFLAGS. That makes it
difficult for packager to follow their distribution packaging
guidelines.
---
scripts/utils.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/utils.mk b/scripts/utils.mk
index ae8c9e77..4a594a9c 100644
--- a/scripts/utils.mk
+++ b/scripts/utils.mk
@@ -72,7 +72,7 @@ do_build_static_lib = \
do_compile_shared_library = \
($(print_shared_lib_compile) \
- $(CC) --shared $^ '-Wl,-soname,$(@F),-rpath=$$ORIGIN' -o $@ $(LIBS))
+ $(CC) --shared $^ '-Wl,-soname,$(@F),-rpath=$$ORIGIN' -o $@ $(LDFLAGS) $(LIBS))
do_compile_plugin_obj = \
($(print_plugin_obj_compile) \
--
2.31.1

View File

@ -1,4 +0,0 @@
# ftrace based flightrecorder configuration file.
# trace-cmd options
OPTS="-b 2048 -i -e block -e irq -e mce -e module -e power -e sched -e signal -e timer -e workqueue -e kvm -e net"

View File

@ -1,15 +0,0 @@
[Unit]
Description=trace-cmd Flightrecorder
DefaultDependencies=no
Before=sysinit.target
[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/sysconfig/trace-cmd.conf
ExecStart=/usr/bin/trace-cmd start $OPTS
ExecStop=/usr/bin/trace-cmd reset
ExecReload=/usr/bin/trace-cmd start $OPTS
[Install]
WantedBy=multi-user.target