• Arnaldo Carvalho de Melo's avatar
    perf jit: Avoid returning garbage for a ret variable · ef2c3e76
    Arnaldo Carvalho de Melo authored
    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.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ef2c3e76
jitdump.c 15.5 KB