mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-10-12 10:32:24 +00:00
71 lines
2.9 KiB
Diff
71 lines
2.9 KiB
Diff
From c7efc4e60584ee9e6a861ee8fadf060607eba1a6 Mon Sep 17 00:00:00 2001
|
|
From: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Date: Thu, 13 Oct 2016 17:12:35 -0300
|
|
Subject: [PATCH 02/14] perf jit: Avoid returning garbage for a ret variable
|
|
|
|
When the loop body isn't executed at all, then the 'ret' local variable,
|
|
that is uninitialized will be used as the return value.
|
|
|
|
This triggers this error on Alpine Linux:
|
|
|
|
CC /tmp/build/perf/util/demangle-java.o
|
|
CC /tmp/build/perf/util/demangle-rust.o
|
|
CC /tmp/build/perf/util/jitdump.o
|
|
CC /tmp/build/perf/util/genelf.o
|
|
util/jitdump.c: In function 'jit_process':
|
|
util/jitdump.c:622:3: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]
|
|
fprintf(stderr, "injected: %s (%d)\n", path, ret);
|
|
^
|
|
util/jitdump.c:584:6: note: 'ret' was declared here
|
|
int ret;
|
|
^
|
|
FLEX /tmp/build/perf/util/parse-events-flex.c
|
|
|
|
/ $ gcc -v
|
|
Using built-in specs.
|
|
COLLECT_GCC=gcc
|
|
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-alpine-linux-musl/5.3.0/lto-wrapper
|
|
Target: x86_64-alpine-linux-musl
|
|
Configured with: /home/buildozer/aports/main/gcc/src/gcc-5.3.0/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info
|
|
+--build=x86_64-alpine-linux-musl --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --with-pkgversion='Alpine 5.3.0' --enable-checking=release
|
|
+--disable-fixed-point --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-werror --disable-symvers --enable-__cxa_atexit --enable-esp
|
|
+--enable-cloog-backend --enable-languages=c,c++,objc,java,fortran,ada --disable-libssp --disable-libmudflap --disable-libsanitizer --enable-shared
|
|
+--enable-threads --enable-tls --with-system-zlib
|
|
Thread model: posix
|
|
gcc version 5.3.0 (Alpine 5.3.0)
|
|
|
|
But this so far got under the radar, not causing any build problem, till the
|
|
"perf jit: enable jitdump support without dwarf" gets applied, when the above
|
|
problem takes place, some combination of inlining or whatever, the problem
|
|
is real, so fix it by initializing the variable to zero.
|
|
|
|
Cc: Anton Blanchard <anton@ozlabs.org>
|
|
Cc: Jiri Olsa <jolsa@redhat.com>
|
|
Cc: Maciej Debski <maciejd@google.com>
|
|
Cc: Namhyung Kim <namhyung@kernel.org>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Stephane Eranian <eranian@google.com>
|
|
Link: https://lkml.kernel.org/r/20161013200437.GA12815@kernel.org
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
(cherry picked from commit ef2c3e76d98dfb69a46d870b47656e8e5bac6e2b)
|
|
---
|
|
tools/perf/util/jitdump.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/tools/perf/util/jitdump.c b/tools/perf/util/jitdump.c
|
|
index 95f0884aae02..f3ed3c963c71 100644
|
|
--- a/tools/perf/util/jitdump.c
|
|
+++ b/tools/perf/util/jitdump.c
|
|
@@ -581,7 +581,7 @@ static int
|
|
jit_process_dump(struct jit_buf_desc *jd)
|
|
{
|
|
union jr_entry *jr;
|
|
- int ret;
|
|
+ int ret = 0;
|
|
|
|
while ((jr = jit_get_next_entry(jd))) {
|
|
switch(jr->prefix.id) {
|
|
--
|
|
2.22.0
|
|
|