[PATCH 00/13] perf tools: Use plain debug files for compressed objects

From: Jiri Olsa
Date: Fri Aug 17 2018 - 05:48:20 EST


hi,
currently we don't allow to open plain debug files for
compressed kernel module objects, ending up with following
warning:

$ perf report --stdio
lzma: failed The input is not in the .xz format
lzma: failed The input is not in the .xz format
lzma: failed The input is not in the .xz format
lzma: failed The input is not in the .xz format
# To display the perf.data header info, please use --header/--header-only options.

The reason is behind the logic we open the DSO object files,
when we try all possible 'debug' objects until we find the
data. So even if the DSO is represented by 'krava.xz' module,
we can end up opening ~/.debug/....23432432/debug' file which
is not compressed and we fail with above error.

This patchset adds the code to detect un/compressed files and
return plain debug file when available even for compressed
kernel modules.

Also available in here:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/fixes

thanks,
jirka


---
Jiri Olsa (13):
perf tools: Get rid of dso__needs_decompress call in read_object_code
perf tools: Get rid of dso__needs_decompress call in symbol__disassemble
perf tools: Get rid of dso__needs_decompress call in __open_dso
perf tools: Make decompress_to_file function static
perf tools: Make is_supported_compression function static
perf tools: Add compression id into struct kmod_path
perf tools: Store compression id into struct dso
perf tools: Use compression id in decompress_kmodule function
perf tools: Move the temp file processing into decompress_kmodule
perf tools: Add is_compressed callback to compressions array
perf tools: Add lzma_is_compressed function
perf tools: Add gzip_is_compressed function
perf tools: Remove ext from struct kmod_path

tools/perf/tests/code-reading.c | 4 +++-
tools/perf/tests/kmod-path.c | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------
tools/perf/util/annotate.c | 4 +++-
tools/perf/util/compress.h | 2 ++
tools/perf/util/dso.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------
tools/perf/util/dso.h | 13 +++++--------
tools/perf/util/lzma.c | 20 +++++++++++++++++++
tools/perf/util/machine.c | 4 +++-
tools/perf/util/zlib.c | 18 +++++++++++++++++
9 files changed, 172 insertions(+), 140 deletions(-)