Merge pull request #201311 from aaronjheng/perf-cleanup
perf-linux: clean up code
This commit is contained in:
commit
ee19d044d4
|
@ -1,352 +0,0 @@
|
||||||
Fetched as:
|
|
||||||
$ wget 'https://github.com/torvalds/linux/compare/00b32625982e0c796f0abb8effcac9c05ef55bd3...600b7b26c07a070d0153daa76b3806c1e52c9e00.patch'
|
|
||||||
|
|
||||||
Adds support for binutils-2.39 API change around init_disassemble_info().
|
|
||||||
--- a/tools/build/Makefile.feature
|
|
||||||
+++ b/tools/build/Makefile.feature
|
|
||||||
@@ -70,6 +70,7 @@ FEATURE_TESTS_BASIC := \
|
|
||||||
libaio \
|
|
||||||
libzstd \
|
|
||||||
disassembler-four-args \
|
|
||||||
+ disassembler-init-styled \
|
|
||||||
file-handle
|
|
||||||
|
|
||||||
# FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
|
|
||||||
--- a/tools/build/feature/Makefile
|
|
||||||
+++ b/tools/build/feature/Makefile
|
|
||||||
@@ -18,6 +18,7 @@ FILES= \
|
|
||||||
test-libbfd.bin \
|
|
||||||
test-libbfd-buildid.bin \
|
|
||||||
test-disassembler-four-args.bin \
|
|
||||||
+ test-disassembler-init-styled.bin \
|
|
||||||
test-reallocarray.bin \
|
|
||||||
test-libbfd-liberty.bin \
|
|
||||||
test-libbfd-liberty-z.bin \
|
|
||||||
@@ -248,6 +249,9 @@ $(OUTPUT)test-libbfd-buildid.bin:
|
|
||||||
$(OUTPUT)test-disassembler-four-args.bin:
|
|
||||||
$(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
|
|
||||||
|
|
||||||
+$(OUTPUT)test-disassembler-init-styled.bin:
|
|
||||||
+ $(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
|
|
||||||
+
|
|
||||||
$(OUTPUT)test-reallocarray.bin:
|
|
||||||
$(BUILD)
|
|
||||||
|
|
||||||
--- a/tools/build/feature/test-all.c
|
|
||||||
+++ b/tools/build/feature/test-all.c
|
|
||||||
@@ -166,6 +166,10 @@
|
|
||||||
# include "test-disassembler-four-args.c"
|
|
||||||
#undef main
|
|
||||||
|
|
||||||
+#define main main_test_disassembler_init_styled
|
|
||||||
+# include "test-disassembler-init-styled.c"
|
|
||||||
+#undef main
|
|
||||||
+
|
|
||||||
#define main main_test_libzstd
|
|
||||||
# include "test-libzstd.c"
|
|
||||||
#undef main
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tools/build/feature/test-disassembler-init-styled.c
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#include <dis-asm.h>
|
|
||||||
+
|
|
||||||
+int main(void)
|
|
||||||
+{
|
|
||||||
+ struct disassemble_info info;
|
|
||||||
+
|
|
||||||
+ init_disassemble_info(&info, stdout,
|
|
||||||
+ NULL, NULL);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
|
|
||||||
--- a/tools/build/Makefile.feature
|
|
||||||
+++ b/tools/build/Makefile.feature
|
|
||||||
@@ -135,8 +135,7 @@ FEATURE_DISPLAY ?= \
|
|
||||||
get_cpuid \
|
|
||||||
bpf \
|
|
||||||
libaio \
|
|
||||||
- libzstd \
|
|
||||||
- disassembler-four-args
|
|
||||||
+ libzstd
|
|
||||||
|
|
||||||
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
|
|
||||||
# If in the future we need per-feature checks/flags for features not
|
|
||||||
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/tools/include/tools/dis-asm-compat.h
|
|
||||||
@@ -0,0 +1,55 @@
|
|
||||||
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
|
|
||||||
+#ifndef _TOOLS_DIS_ASM_COMPAT_H
|
|
||||||
+#define _TOOLS_DIS_ASM_COMPAT_H
|
|
||||||
+
|
|
||||||
+#include <stdio.h>
|
|
||||||
+#include <dis-asm.h>
|
|
||||||
+
|
|
||||||
+/* define types for older binutils version, to centralize ifdef'ery a bit */
|
|
||||||
+#ifndef DISASM_INIT_STYLED
|
|
||||||
+enum disassembler_style {DISASSEMBLER_STYLE_NOT_EMPTY};
|
|
||||||
+typedef int (*fprintf_styled_ftype) (void *, enum disassembler_style, const char*, ...);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Trivial fprintf wrapper to be used as the fprintf_styled_func argument to
|
|
||||||
+ * init_disassemble_info_compat() when normal fprintf suffices.
|
|
||||||
+ */
|
|
||||||
+static inline int fprintf_styled(void *out,
|
|
||||||
+ enum disassembler_style style,
|
|
||||||
+ const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list args;
|
|
||||||
+ int r;
|
|
||||||
+
|
|
||||||
+ (void)style;
|
|
||||||
+
|
|
||||||
+ va_start(args, fmt);
|
|
||||||
+ r = vfprintf(out, fmt, args);
|
|
||||||
+ va_end(args);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Wrapper for init_disassemble_info() that hides version
|
|
||||||
+ * differences. Depending on binutils version and architecture either
|
|
||||||
+ * fprintf_func or fprintf_styled_func will be called.
|
|
||||||
+ */
|
|
||||||
+static inline void init_disassemble_info_compat(struct disassemble_info *info,
|
|
||||||
+ void *stream,
|
|
||||||
+ fprintf_ftype unstyled_func,
|
|
||||||
+ fprintf_styled_ftype styled_func)
|
|
||||||
+{
|
|
||||||
+#ifdef DISASM_INIT_STYLED
|
|
||||||
+ init_disassemble_info(info, stream,
|
|
||||||
+ unstyled_func,
|
|
||||||
+ styled_func);
|
|
||||||
+#else
|
|
||||||
+ (void)styled_func;
|
|
||||||
+ init_disassemble_info(info, stream,
|
|
||||||
+ unstyled_func);
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#endif /* _TOOLS_DIS_ASM_COMPAT_H */
|
|
||||||
|
|
||||||
--- a/tools/perf/Makefile.config
|
|
||||||
+++ b/tools/perf/Makefile.config
|
|
||||||
@@ -298,6 +298,7 @@ FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
|
|
||||||
FEATURE_CHECK_LDFLAGS-libaio = -lrt
|
|
||||||
|
|
||||||
FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
|
|
||||||
+FEATURE_CHECK_LDFLAGS-disassembler-init-styled = -lbfd -lopcodes -ldl
|
|
||||||
|
|
||||||
CORE_CFLAGS += -fno-omit-frame-pointer
|
|
||||||
CORE_CFLAGS += -ggdb3
|
|
||||||
@@ -924,13 +925,16 @@ ifndef NO_LIBBFD
|
|
||||||
ifeq ($(feature-libbfd-liberty), 1)
|
|
||||||
EXTLIBS += -lbfd -lopcodes -liberty
|
|
||||||
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
|
|
||||||
+ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -ldl
|
|
||||||
else
|
|
||||||
ifeq ($(feature-libbfd-liberty-z), 1)
|
|
||||||
EXTLIBS += -lbfd -lopcodes -liberty -lz
|
|
||||||
FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
|
|
||||||
+ FEATURE_CHECK_LDFLAGS-disassembler-init-styled += -liberty -lz -ldl
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
$(call feature_check,disassembler-four-args)
|
|
||||||
+ $(call feature_check,disassembler-init-styled)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(feature-libbfd-buildid), 1)
|
|
||||||
@@ -1044,6 +1048,10 @@ ifeq ($(feature-disassembler-four-args), 1)
|
|
||||||
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
|
|
||||||
endif
|
|
||||||
|
|
||||||
+ifeq ($(feature-disassembler-init-styled), 1)
|
|
||||||
+ CFLAGS += -DDISASM_INIT_STYLED
|
|
||||||
+endif
|
|
||||||
+
|
|
||||||
ifeq (${IS_64_BIT}, 1)
|
|
||||||
ifndef NO_PERF_READ_VDSO32
|
|
||||||
$(call feature_check,compile-32)
|
|
||||||
--- a/tools/perf/util/annotate.c
|
|
||||||
+++ b/tools/perf/util/annotate.c
|
|
||||||
@@ -1720,6 +1720,7 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
|
|
||||||
#include <bpf/btf.h>
|
|
||||||
#include <bpf/libbpf.h>
|
|
||||||
#include <linux/btf.h>
|
|
||||||
+#include <tools/dis-asm-compat.h>
|
|
||||||
|
|
||||||
static int symbol__disassemble_bpf(struct symbol *sym,
|
|
||||||
struct annotate_args *args)
|
|
||||||
@@ -1762,9 +1763,9 @@ static int symbol__disassemble_bpf(struct symbol *sym,
|
|
||||||
ret = errno;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
- init_disassemble_info(&info, s,
|
|
||||||
- (fprintf_ftype) fprintf);
|
|
||||||
-
|
|
||||||
+ init_disassemble_info_compat(&info, s,
|
|
||||||
+ (fprintf_ftype) fprintf,
|
|
||||||
+ fprintf_styled);
|
|
||||||
info.arch = bfd_get_arch(bfdf);
|
|
||||||
info.mach = bfd_get_mach(bfdf);
|
|
||||||
|
|
||||||
|
|
||||||
--- a/tools/bpf/Makefile
|
|
||||||
+++ b/tools/bpf/Makefile
|
|
||||||
@@ -34,7 +34,7 @@ else
|
|
||||||
endif
|
|
||||||
|
|
||||||
FEATURE_USER = .bpf
|
|
||||||
-FEATURE_TESTS = libbfd disassembler-four-args
|
|
||||||
+FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled
|
|
||||||
FEATURE_DISPLAY = libbfd disassembler-four-args
|
|
||||||
|
|
||||||
check_feat := 1
|
|
||||||
@@ -56,6 +56,9 @@ endif
|
|
||||||
ifeq ($(feature-disassembler-four-args), 1)
|
|
||||||
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
|
|
||||||
endif
|
|
||||||
+ifeq ($(feature-disassembler-init-styled), 1)
|
|
||||||
+CFLAGS += -DDISASM_INIT_STYLED
|
|
||||||
+endif
|
|
||||||
|
|
||||||
$(OUTPUT)%.yacc.c: $(srctree)/tools/bpf/%.y
|
|
||||||
$(QUIET_BISON)$(YACC) -o $@ -d $<
|
|
||||||
--- a/tools/bpf/bpf_jit_disasm.c
|
|
||||||
+++ b/tools/bpf/bpf_jit_disasm.c
|
|
||||||
@@ -28,6 +28,7 @@
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <limits.h>
|
|
||||||
+#include <tools/dis-asm-compat.h>
|
|
||||||
|
|
||||||
#define CMD_ACTION_SIZE_BUFFER 10
|
|
||||||
#define CMD_ACTION_READ_ALL 3
|
|
||||||
@@ -64,7 +65,9 @@ static void get_asm_insns(uint8_t *image, size_t len, int opcodes)
|
|
||||||
assert(bfdf);
|
|
||||||
assert(bfd_check_format(bfdf, bfd_object));
|
|
||||||
|
|
||||||
- init_disassemble_info(&info, stdout, (fprintf_ftype) fprintf);
|
|
||||||
+ init_disassemble_info_compat(&info, stdout,
|
|
||||||
+ (fprintf_ftype) fprintf,
|
|
||||||
+ fprintf_styled);
|
|
||||||
info.arch = bfd_get_arch(bfdf);
|
|
||||||
info.mach = bfd_get_mach(bfdf);
|
|
||||||
info.buffer = image;
|
|
||||||
|
|
||||||
--- a/tools/bpf/Makefile
|
|
||||||
+++ b/tools/bpf/Makefile
|
|
||||||
@@ -35,7 +35,7 @@ endif
|
|
||||||
|
|
||||||
FEATURE_USER = .bpf
|
|
||||||
FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled
|
|
||||||
-FEATURE_DISPLAY = libbfd disassembler-four-args
|
|
||||||
+FEATURE_DISPLAY = libbfd
|
|
||||||
|
|
||||||
check_feat := 1
|
|
||||||
NON_CHECK_FEAT_TARGETS := clean bpftool_clean runqslower_clean resolve_btfids_clean
|
|
||||||
|
|
||||||
--- a/tools/bpf/bpftool/Makefile
|
|
||||||
+++ b/tools/bpf/bpftool/Makefile
|
|
||||||
@@ -93,7 +93,7 @@ INSTALL ?= install
|
|
||||||
RM ?= rm -f
|
|
||||||
|
|
||||||
FEATURE_USER = .bpftool
|
|
||||||
-FEATURE_TESTS = libbfd disassembler-four-args zlib libcap \
|
|
||||||
+FEATURE_TESTS = libbfd disassembler-four-args disassembler-init-styled zlib libcap \
|
|
||||||
clang-bpf-co-re
|
|
||||||
FEATURE_DISPLAY = libbfd disassembler-four-args zlib libcap \
|
|
||||||
clang-bpf-co-re
|
|
||||||
@@ -117,6 +117,9 @@ endif
|
|
||||||
ifeq ($(feature-disassembler-four-args), 1)
|
|
||||||
CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
|
|
||||||
endif
|
|
||||||
+ifeq ($(feature-disassembler-init-styled), 1)
|
|
||||||
+ CFLAGS += -DDISASM_INIT_STYLED
|
|
||||||
+endif
|
|
||||||
|
|
||||||
LIBS = $(LIBBPF) -lelf -lz
|
|
||||||
LIBS_BOOTSTRAP = $(LIBBPF_BOOTSTRAP) -lelf -lz
|
|
||||||
--- a/tools/bpf/bpftool/jit_disasm.c
|
|
||||||
+++ b/tools/bpf/bpftool/jit_disasm.c
|
|
||||||
@@ -24,6 +24,7 @@
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <bpf/libbpf.h>
|
|
||||||
+#include <tools/dis-asm-compat.h>
|
|
||||||
|
|
||||||
#include "json_writer.h"
|
|
||||||
#include "main.h"
|
|
||||||
@@ -39,15 +40,12 @@ static void get_exec_path(char *tpath, size_t size)
|
|
||||||
}
|
|
||||||
|
|
||||||
static int oper_count;
|
|
||||||
-static int fprintf_json(void *out, const char *fmt, ...)
|
|
||||||
+static int printf_json(void *out, const char *fmt, va_list ap)
|
|
||||||
{
|
|
||||||
- va_list ap;
|
|
||||||
char *s;
|
|
||||||
int err;
|
|
||||||
|
|
||||||
- va_start(ap, fmt);
|
|
||||||
err = vasprintf(&s, fmt, ap);
|
|
||||||
- va_end(ap);
|
|
||||||
if (err < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
@@ -73,6 +71,32 @@ static int fprintf_json(void *out, const char *fmt, ...)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int fprintf_json(void *out, const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list ap;
|
|
||||||
+ int r;
|
|
||||||
+
|
|
||||||
+ va_start(ap, fmt);
|
|
||||||
+ r = printf_json(out, fmt, ap);
|
|
||||||
+ va_end(ap);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int fprintf_json_styled(void *out,
|
|
||||||
+ enum disassembler_style style __maybe_unused,
|
|
||||||
+ const char *fmt, ...)
|
|
||||||
+{
|
|
||||||
+ va_list ap;
|
|
||||||
+ int r;
|
|
||||||
+
|
|
||||||
+ va_start(ap, fmt);
|
|
||||||
+ r = printf_json(out, fmt, ap);
|
|
||||||
+ va_end(ap);
|
|
||||||
+
|
|
||||||
+ return r;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes,
|
|
||||||
const char *arch, const char *disassembler_options,
|
|
||||||
const struct btf *btf,
|
|
||||||
@@ -99,11 +123,13 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes,
|
|
||||||
assert(bfd_check_format(bfdf, bfd_object));
|
|
||||||
|
|
||||||
if (json_output)
|
|
||||||
- init_disassemble_info(&info, stdout,
|
|
||||||
- (fprintf_ftype) fprintf_json);
|
|
||||||
+ init_disassemble_info_compat(&info, stdout,
|
|
||||||
+ (fprintf_ftype) fprintf_json,
|
|
||||||
+ fprintf_json_styled);
|
|
||||||
else
|
|
||||||
- init_disassemble_info(&info, stdout,
|
|
||||||
- (fprintf_ftype) fprintf);
|
|
||||||
+ init_disassemble_info_compat(&info, stdout,
|
|
||||||
+ (fprintf_ftype) fprintf,
|
|
||||||
+ fprintf_styled);
|
|
||||||
|
|
||||||
/* Update architecture info for offload. */
|
|
||||||
if (arch) {
|
|
|
@ -4,9 +4,7 @@
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, kernel
|
, kernel
|
||||||
, elfutils
|
, elfutils
|
||||||
, python2
|
|
||||||
, python3
|
, python3
|
||||||
, python3Packages
|
|
||||||
, perl
|
, perl
|
||||||
, newt
|
, newt
|
||||||
, slang
|
, slang
|
||||||
|
@ -61,34 +59,23 @@ stdenv.mkDerivation {
|
||||||
|
|
||||||
inherit (kernel) src;
|
inherit (kernel) src;
|
||||||
|
|
||||||
patches = lib.optionals (lib.versionAtLeast kernel.version "5.19" && lib.versionOlder kernel.version "5.20") [
|
|
||||||
# binutils-2.39 support around init_disassemble_info()
|
|
||||||
# API change.
|
|
||||||
# Will be included in 5.20.
|
|
||||||
./5.19-binutils-2.39-support.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
patchShebangs scripts tools/perf/pmu-events/jevents.py
|
# Linux scripts
|
||||||
'' + lib.optionalString (lib.versionAtLeast kernel.version "5.8") ''
|
patchShebangs scripts
|
||||||
substituteInPlace tools/perf/scripts/python/flamegraph.py \
|
|
||||||
--replace "/usr/share/d3-flame-graph/d3-flamegraph-base.html" \
|
|
||||||
"${d3-flame-graph-templates}/share/d3-flame-graph/d3-flamegraph-base.html"
|
|
||||||
'';
|
|
||||||
|
|
||||||
preConfigure = ''
|
|
||||||
cd tools/perf
|
cd tools/perf
|
||||||
|
|
||||||
substituteInPlace Makefile \
|
|
||||||
--replace /usr/include/elfutils $elfutils/include/elfutils
|
|
||||||
|
|
||||||
for x in util/build-id.c util/dso.c; do
|
for x in util/build-id.c util/dso.c; do
|
||||||
substituteInPlace $x --replace /usr/lib/debug /run/current-system/sw/lib/debug
|
substituteInPlace $x --replace /usr/lib/debug /run/current-system/sw/lib/debug
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -f bash_completion ]; then
|
'' + lib.optionalString (lib.versionAtLeast kernel.version "5.8") ''
|
||||||
sed -i 's,^have perf,_have perf,' bash_completion
|
substituteInPlace scripts/python/flamegraph.py \
|
||||||
fi
|
--replace "/usr/share/d3-flame-graph/d3-flamegraph-base.html" \
|
||||||
|
"${d3-flame-graph-templates}/share/d3-flame-graph/d3-flamegraph-base.html"
|
||||||
|
|
||||||
|
'' + lib.optionalString (lib.versionAtLeast kernel.version "6.0") ''
|
||||||
|
patchShebangs pmu-events/jevents.py
|
||||||
'';
|
'';
|
||||||
|
|
||||||
makeFlags = [ "prefix=$(out)" "WERROR=0" ] ++ kernel.makeFlags;
|
makeFlags = [ "prefix=$(out)" "WERROR=0" ] ++ kernel.makeFlags;
|
||||||
|
@ -127,10 +114,9 @@ stdenv.mkDerivation {
|
||||||
then [ libbfd libopcodes ]
|
then [ libbfd libopcodes ]
|
||||||
else [ libbfd_2_38 libopcodes_2_38 ])
|
else [ libbfd_2_38 libopcodes_2_38 ])
|
||||||
++ lib.optional withGtk gtk2
|
++ lib.optional withGtk gtk2
|
||||||
++ (if (lib.versionAtLeast kernel.version "4.19") then [ python3 ] else [ python2 ])
|
|
||||||
++ lib.optional withZstd zstd
|
++ lib.optional withZstd zstd
|
||||||
++ lib.optional withLibcap libcap
|
++ lib.optional withLibcap libcap
|
||||||
++ lib.optional (lib.versionAtLeast kernel.version "6.0") python3Packages.setuptools;
|
++ lib.optional (lib.versionAtLeast kernel.version "6.0") python3.pkgs.setuptools;
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = toString [
|
NIX_CFLAGS_COMPILE = toString [
|
||||||
"-Wno-error=cpp"
|
"-Wno-error=cpp"
|
||||||
|
@ -140,22 +126,23 @@ stdenv.mkDerivation {
|
||||||
];
|
];
|
||||||
|
|
||||||
doCheck = false; # requires "sparse"
|
doCheck = false; # requires "sparse"
|
||||||
doInstallCheck = false; # same
|
|
||||||
|
|
||||||
separateDebugInfo = true;
|
|
||||||
installFlags = [ "install" "install-man" "ASCIIDOC8=1" "prefix=$(out)" ];
|
installFlags = [ "install" "install-man" "ASCIIDOC8=1" "prefix=$(out)" ];
|
||||||
|
|
||||||
postInstall =''
|
# TODO: Add completions based on perf-completion.sh
|
||||||
|
postInstall = ''
|
||||||
# Same as perf. Remove.
|
# Same as perf. Remove.
|
||||||
rm -f $out/bin/trace
|
rm -f $out/bin/trace
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
separateDebugInfo = true;
|
||||||
|
|
||||||
preFixup = ''
|
preFixup = ''
|
||||||
# Pull in 'objdump' into PATH to make annotations work.
|
# Pull in 'objdump' into PATH to make annotations work.
|
||||||
# The embeded Python interpreter will search PATH to calculate the Python path configuration(Should be fixed by upstream).
|
# The embeded Python interpreter will search PATH to calculate the Python path configuration(Should be fixed by upstream).
|
||||||
# Add python.interpreter to PATH for now.
|
# Add python.interpreter to PATH for now.
|
||||||
wrapProgram $out/bin/perf \
|
wrapProgram $out/bin/perf \
|
||||||
--prefix PATH : ${lib.makeBinPath ([ binutils-unwrapped ] ++ (if (lib.versionAtLeast kernel.version "4.19") then [ python3 ] else [ python2 ]))}
|
--prefix PATH : ${lib.makeBinPath [ binutils-unwrapped python3 ]}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
Loading…
Reference in a new issue