• A
    perf annotate: Use asprintf when formatting objdump command line · 6810158d
    Arnaldo Carvalho de Melo 提交于
    We were using a local buffer with an arbitrary size, that would have to
    get increased to avoid truncation as warned by gcc 8:
    
      util/annotate.c: In function 'symbol__disassemble':
      util/annotate.c:1488:4: error: '%s' directive output may be truncated writing up to 4095 bytes into a region of size between 3966 and 8086 [-Werror=format-truncation=]
          "%s %s%s --start-address=0x%016" PRIx64
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      util/annotate.c:1498:20:
          symfs_filename, symfs_filename);
                          ~~~~~~~~~~~~~~
      util/annotate.c:1490:50: note: format string is defined here
          " -l -d %s %s -C \"%s\" 2>/dev/null|grep -v \"%s:\"|expand",
                                                      ^~
      In file included from /usr/include/stdio.h:861,
                       from util/color.h:5,
                       from util/sort.h:8,
                       from util/annotate.c:14:
      /usr/include/bits/stdio2.h:67:10: note: '__builtin___snprintf_chk' output 116 or more bytes (assuming 8331) into a destination of size 8192
         return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              __bos (__s), __fmt, __va_arg_pack ());
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    So switch to asprintf, that will make sure enough space is available.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-qagoy2dmbjpc9gdnaj0r3mml@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    6810158d
annotate.c 47.0 KB