mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@infradead.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Adrian Hunter <adrian.hunter@intel.com>,
	David Ahern <dsahern@gmail.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>, Mike Galbraith <efault@gmx.de>,
	Namhyung Kim <namhyung@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Stephane Eranian <eranian@google.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 145/161] perf symbols: Workaround objdump difficulties with kcore
Date: Mon, 14 Oct 2013 17:02:14 -0300	[thread overview]
Message-ID: <1381780950-25642-146-git-send-email-acme@infradead.org> (raw)
In-Reply-To: <1381780950-25642-1-git-send-email-acme@infradead.org>

From: Adrian Hunter <adrian.hunter@intel.com>

The objdump tool fails to annotate module symbols when looking at kcore.

Workaround this by extracting object code from kcore and putting it in a
temporary file for objdump to use instead.

The temporary file is created to look like kcore but contains only the
function being disassembled.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1381320078-16497-3-git-send-email-adrian.hunter@intel.com
[ Renamed 'index' to 'idx' to avoid shadowing string.h's 'index' in Fedora 12,
  Replace local with variable length with malloc/free to fix build in Fedora 12 ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/annotate.c       |  21 ++++
 tools/perf/util/symbol-elf.c     | 229 +++++++++++++++++++++++++++++++++++++++
 tools/perf/util/symbol-minimal.c |   9 ++
 tools/perf/util/symbol.h         |  14 +++
 4 files changed, 273 insertions(+)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index d73e8008aada..882bb864cee0 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -879,6 +879,8 @@ int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)
 	FILE *file;
 	int err = 0;
 	char symfs_filename[PATH_MAX];
+	struct kcore_extract kce;
+	bool delete_extract = false;
 
 	if (filename) {
 		snprintf(symfs_filename, sizeof(symfs_filename), "%s%s",
@@ -940,6 +942,23 @@ fallback:
 	pr_debug("annotating [%p] %30s : [%p] %30s\n",
 		 dso, dso->long_name, sym, sym->name);
 
+	if (dso__is_kcore(dso)) {
+		kce.kcore_filename = symfs_filename;
+		kce.addr = map__rip_2objdump(map, sym->start);
+		kce.offs = sym->start;
+		kce.len = sym->end + 1 - sym->start;
+		if (!kcore_extract__create(&kce)) {
+			delete_extract = true;
+			strlcpy(symfs_filename, kce.extract_filename,
+				sizeof(symfs_filename));
+			if (free_filename) {
+				free(filename);
+				free_filename = false;
+			}
+			filename = symfs_filename;
+		}
+	}
+
 	snprintf(command, sizeof(command),
 		 "%s %s%s --start-address=0x%016" PRIx64
 		 " --stop-address=0x%016" PRIx64
@@ -972,6 +991,8 @@ fallback:
 
 	pclose(file);
 out_free_filename:
+	if (delete_extract)
+		kcore_extract__delete(&kce);
 	if (free_filename)
 		free(filename);
 	return err;
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index c37693052800..499c71d30225 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -1018,6 +1018,235 @@ int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data,
 	return err;
 }
 
+static int copy_bytes(int from, off_t from_offs, int to, off_t to_offs, u64 len)
+{
+	ssize_t r;
+	size_t n;
+	int err = -1;
+	char *buf = malloc(page_size);
+
+	if (buf == NULL)
+		return -1;
+
+	if (lseek(to, to_offs, SEEK_SET) != to_offs)
+		goto out;
+
+	if (lseek(from, from_offs, SEEK_SET) != from_offs)
+		goto out;
+
+	while (len) {
+		n = page_size;
+		if (len < n)
+			n = len;
+		/* Use read because mmap won't work on proc files */
+		r = read(from, buf, n);
+		if (r < 0)
+			goto out;
+		if (!r)
+			break;
+		n = r;
+		r = write(to, buf, n);
+		if (r < 0)
+			goto out;
+		if ((size_t)r != n)
+			goto out;
+		len -= n;
+	}
+
+	err = 0;
+out:
+	free(buf);
+	return err;
+}
+
+struct kcore {
+	int fd;
+	int elfclass;
+	Elf *elf;
+	GElf_Ehdr ehdr;
+};
+
+static int kcore__open(struct kcore *kcore, const char *filename)
+{
+	GElf_Ehdr *ehdr;
+
+	kcore->fd = open(filename, O_RDONLY);
+	if (kcore->fd == -1)
+		return -1;
+
+	kcore->elf = elf_begin(kcore->fd, ELF_C_READ, NULL);
+	if (!kcore->elf)
+		goto out_close;
+
+	kcore->elfclass = gelf_getclass(kcore->elf);
+	if (kcore->elfclass == ELFCLASSNONE)
+		goto out_end;
+
+	ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
+	if (!ehdr)
+		goto out_end;
+
+	return 0;
+
+out_end:
+	elf_end(kcore->elf);
+out_close:
+	close(kcore->fd);
+	return -1;
+}
+
+static int kcore__init(struct kcore *kcore, char *filename, int elfclass,
+		       bool temp)
+{
+	GElf_Ehdr *ehdr;
+
+	kcore->elfclass = elfclass;
+
+	if (temp)
+		kcore->fd = mkstemp(filename);
+	else
+		kcore->fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0400);
+	if (kcore->fd == -1)
+		return -1;
+
+	kcore->elf = elf_begin(kcore->fd, ELF_C_WRITE, NULL);
+	if (!kcore->elf)
+		goto out_close;
+
+	if (!gelf_newehdr(kcore->elf, elfclass))
+		goto out_end;
+
+	ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr);
+	if (!ehdr)
+		goto out_end;
+
+	return 0;
+
+out_end:
+	elf_end(kcore->elf);
+out_close:
+	close(kcore->fd);
+	unlink(filename);
+	return -1;
+}
+
+static void kcore__close(struct kcore *kcore)
+{
+	elf_end(kcore->elf);
+	close(kcore->fd);
+}
+
+static int kcore__copy_hdr(struct kcore *from, struct kcore *to, size_t count)
+{
+	GElf_Ehdr *ehdr = &to->ehdr;
+	GElf_Ehdr *kehdr = &from->ehdr;
+
+	memcpy(ehdr->e_ident, kehdr->e_ident, EI_NIDENT);
+	ehdr->e_type      = kehdr->e_type;
+	ehdr->e_machine   = kehdr->e_machine;
+	ehdr->e_version   = kehdr->e_version;
+	ehdr->e_entry     = 0;
+	ehdr->e_shoff     = 0;
+	ehdr->e_flags     = kehdr->e_flags;
+	ehdr->e_phnum     = count;
+	ehdr->e_shentsize = 0;
+	ehdr->e_shnum     = 0;
+	ehdr->e_shstrndx  = 0;
+
+	if (from->elfclass == ELFCLASS32) {
+		ehdr->e_phoff     = sizeof(Elf32_Ehdr);
+		ehdr->e_ehsize    = sizeof(Elf32_Ehdr);
+		ehdr->e_phentsize = sizeof(Elf32_Phdr);
+	} else {
+		ehdr->e_phoff     = sizeof(Elf64_Ehdr);
+		ehdr->e_ehsize    = sizeof(Elf64_Ehdr);
+		ehdr->e_phentsize = sizeof(Elf64_Phdr);
+	}
+
+	if (!gelf_update_ehdr(to->elf, ehdr))
+		return -1;
+
+	if (!gelf_newphdr(to->elf, count))
+		return -1;
+
+	return 0;
+}
+
+static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset,
+			   u64 addr, u64 len)
+{
+	GElf_Phdr gphdr;
+	GElf_Phdr *phdr;
+
+	phdr = gelf_getphdr(kcore->elf, idx, &gphdr);
+	if (!phdr)
+		return -1;
+
+	phdr->p_type	= PT_LOAD;
+	phdr->p_flags	= PF_R | PF_W | PF_X;
+	phdr->p_offset	= offset;
+	phdr->p_vaddr	= addr;
+	phdr->p_paddr	= 0;
+	phdr->p_filesz	= len;
+	phdr->p_memsz	= len;
+	phdr->p_align	= page_size;
+
+	if (!gelf_update_phdr(kcore->elf, idx, phdr))
+		return -1;
+
+	return 0;
+}
+
+static off_t kcore__write(struct kcore *kcore)
+{
+	return elf_update(kcore->elf, ELF_C_WRITE);
+}
+
+int kcore_extract__create(struct kcore_extract *kce)
+{
+	struct kcore kcore;
+	struct kcore extract;
+	size_t count = 1;
+	int idx = 0, err = -1;
+	off_t offset = page_size, sz;
+
+	if (kcore__open(&kcore, kce->kcore_filename))
+		return -1;
+
+	strcpy(kce->extract_filename, PERF_KCORE_EXTRACT);
+	if (kcore__init(&extract, kce->extract_filename, kcore.elfclass, true))
+		goto out_kcore_close;
+
+	if (kcore__copy_hdr(&kcore, &extract, count))
+		goto out_extract_close;
+
+	if (kcore__add_phdr(&extract, idx, offset, kce->addr, kce->len))
+		goto out_extract_close;
+
+	sz = kcore__write(&extract);
+	if (sz < 0 || sz > offset)
+		goto out_extract_close;
+
+	if (copy_bytes(kcore.fd, kce->offs, extract.fd, offset, kce->len))
+		goto out_extract_close;
+
+	err = 0;
+
+out_extract_close:
+	kcore__close(&extract);
+	if (err)
+		unlink(kce->extract_filename);
+out_kcore_close:
+	kcore__close(&kcore);
+
+	return err;
+}
+
+void kcore_extract__delete(struct kcore_extract *kce)
+{
+	unlink(kce->extract_filename);
+}
+
 void symbol__elf_init(void)
 {
 	elf_version(EV_CURRENT);
diff --git a/tools/perf/util/symbol-minimal.c b/tools/perf/util/symbol-minimal.c
index 3a802c300fc5..928556d2508f 100644
--- a/tools/perf/util/symbol-minimal.c
+++ b/tools/perf/util/symbol-minimal.c
@@ -308,6 +308,15 @@ int file__read_maps(int fd __maybe_unused, bool exe __maybe_unused,
 	return -1;
 }
 
+int kcore_extract__create(struct kcore_extract *kce __maybe_unused)
+{
+	return -1;
+}
+
+void kcore_extract__delete(struct kcore_extract *kce __maybe_unused)
+{
+}
+
 void symbol__elf_init(void)
 {
 }
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index 2d3eb43ab9f9..fb107e13e925 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -256,4 +256,18 @@ typedef int (*mapfn_t)(u64 start, u64 len, u64 pgoff, void *data);
 int file__read_maps(int fd, bool exe, mapfn_t mapfn, void *data,
 		    bool *is_64_bit);
 
+#define PERF_KCORE_EXTRACT "/tmp/perf-kcore-XXXXXX"
+
+struct kcore_extract {
+	char *kcore_filename;
+	u64 addr;
+	u64 offs;
+	u64 len;
+	char extract_filename[sizeof(PERF_KCORE_EXTRACT)];
+	int fd;
+};
+
+int kcore_extract__create(struct kcore_extract *kce);
+void kcore_extract__delete(struct kcore_extract *kce);
+
 #endif /* __PERF_SYMBOL */
-- 
1.8.1.4


  parent reply	other threads:[~2013-10-14 20:05 UTC|newest]

Thread overview: 163+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-14 19:59 [GIT PULL 000/161] perf/core improvements and fixes Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 001/161] tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 002/161] tools/perf/build: Add feature check core code Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 003/161] tools/perf/build: Add 'autodep' functionality, generate feature test dependencies automatically Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 004/161] tools/perf/build: Split out feature check: 'libnuma' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 005/161] tools/perf/build: Split out feature check: 'stackprotector-all' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 006/161] tools/perf/build: Split out feature check: 'stackprotector' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 007/161] tools/perf/build: Split out feature check: 'volatile-register-var' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 008/161] tools/perf/build: Split out feature check: 'fortify-source' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 009/161] tools/perf/build: Split out feature check: 'bionic' Arnaldo Carvalho de Melo
2013-10-14 19:59 ` [PATCH 010/161] tools/perf/build: Clean up the libelf logic in config/Makefile Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 011/161] tools/perf/build: Split out feature check: 'libelf' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 012/161] tools/perf/build: Split out feature check: 'glibc' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 013/161] tools/perf/build: Split out feature check: 'dwarf' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 014/161] tools/perf/build: Clean up the mmap logic in config/Makefile Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 015/161] tools/perf/build: Split out feature check: 'libelf-mmap' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 016/161] tools/perf/build: Split out feature check: 'libelf-getphdrnum' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 017/161] tools/perf/build: Clean up the libunwind logic in config/Makefile Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 018/161] tools/perf/build: Split out feature check: 'libunwind' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 019/161] tools/perf/build: Split out feature check: 'libaudit' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 020/161] tools/perf/build: Split out feature check: 'libslang' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 021/161] tools/perf/build: Split out feature check: 'gtk2' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 022/161] tools/perf/build: Split out feature check: 'gtk2-infobar' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 023/161] tools/perf/build: Split out feature check: 'libperl' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 024/161] tools/perf/build: Split out feature check: 'libpython' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 025/161] tools/perf/build: Split out feature check: 'libpython-version' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 026/161] tools/perf/build: Split out feature check: 'libbfd' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 027/161] tools/perf/build: Split out feature check: 'strlcpy' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 028/161] tools/perf/build: Split out feature check: 'on-exit' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 029/161] tools/perf/build: Split out feature check: 'backtrace' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 030/161] tools/perf: Clean up util/include/linux/compiler.h Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 031/161] tools/perf: Turn strlcpy() into a __weak function Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 032/161] tools/perf/build: Speed up auto-detection of features by adding a 'test-all' target Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 033/161] tools/perf/build: Speed up git-version test on re-make Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 034/161] tools/perf/build: Speed up the final link Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 035/161] tools/perf: Fix double/triple-build of the feature detection logic during 'make install' et al Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 036/161] tools/perf/build: Invoke feature-checks 'clean' target from the main Makefile Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 037/161] tools/perf/build: Speed up auto-detection Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 038/161] tools/perf/build: Improve printout-of auto-detected features Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 039/161] tools/perf/build: Automatically build in parallel, based on number of CPUs in the system Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 040/161] tools/perf/build: Flip Makefile.parallel and Makefile.perf Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 041/161] tools/perf/build: Standardize the various messages output by parallel make Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 042/161] tools/perf/build: Split out feature checks: 'liberty', 'liberty-z', 'cplus-demangle' Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 043/161] tools/perf/build: Remove unused config/feature-tests.mak Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 044/161] tools/perf/build: Clean up various testcases Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 045/161] tools/perf/build: Collapse the test-all.c testcase Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 046/161] tools/perf/build: Pass through all targets to Makefile.perf Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 047/161] tools/perf/build: Make sure autodep feature binaries honor the O= setting Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 048/161] tools/perf/build: Exclude MAKEFLAGS from nested invocation Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 049/161] tools/perf/build: Fix non-canonical directory names in O= Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 050/161] tools/perf/build: Fix O=/some/dir perf.o type of targets Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 051/161] tools/perf/build: Harmonize the style of the feature testcases Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 052/161] tools/perf/build: Pass through LDFLAGS to feature tests Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 053/161] tools/perf/build: Clean up feature_print_code() Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 054/161] perf trace: Put syscall formatter parms into struct Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 055/161] perf trace: Allow passing parms to arg formatters Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 056/161] perf trace: Use strarray for ltrace's whence arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 057/161] perf trace: Beautify fcntl 'cmd' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 058/161] perf trace: Beautify rt_sigprocmask 'how' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 059/161] perf trace: Beautify signal number arg in several syscalls Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 060/161] perf trace: Beautify socket 'family' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 061/161] perf trace: Beautify socket 'type' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 062/161] perf trace: Beautify access 'mode' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 063/161] perf trace: Beautify rlmimit resources Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 064/161] perf trace: Add option to show full timestamp Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 065/161] perf trace: Remove duplicate mmap entry in syscall_fmts array Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 066/161] perf trace: Don't print zeroed args Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 067/161] perf trace: Beautify send/recv syscall 'flags' arg Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 068/161] perf trace: Beautify eventfd2 " Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 069/161] perf trace: Add option to show process COMM Arnaldo Carvalho de Melo
2013-10-14 20:00 ` [PATCH 070/161] perf completion: Don't dictate perf install location Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 071/161] perf completion: Update __ltrim_colon_completions Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 072/161] perf completion: Strip dependency on _filedir Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 073/161] perf completion: Strip function_exists () Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 074/161] perf completion: Strip dependency on bash-completion Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 075/161] perf completion: Use more comp words Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 076/161] perf symbols: Support for Openembedded/Yocto -dbg packages Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 077/161] perf tools: Remove unused trace-event-* code Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 078/161] perf tools: Unify page_size usage Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 079/161] perf lock: Remove dead code Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 080/161] perf lock: Return proper code in report_lock_*_event Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 081/161] perf lock: Plug some memleaks Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 082/161] perf lock: Redo __cmd_report Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 083/161] perf lock: Limit bad rate precision Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 084/161] perf lock: Account for lock average wait time Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 085/161] perf tools: Check mmap pages value early Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 086/161] perf tools: Add possibility to specify mmap size Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 087/161] perf evlist: Introduce perf_evlist__new_default function Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 088/161] perf tools: Adding throttle event data struct support Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 089/161] perf symbols: Add new option --ignore-vmlinux for perf top Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 090/161] perf tools: Separate out GTK codes to libperf-gtk.so Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 091/161] perf sort: Fix a memory leak on srcline Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 092/161] perf annotate: Reuse path from the result of addr2line Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 093/161] perf hists: Free srcline when freeing hist_entry Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 094/161] perf annotate: Factor out get/free_srcline() Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 095/161] perf tools: Do not try to call addr2line on non-binary files Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 096/161] perf annotate: Pass dso instead of dso_name to get_srcline() Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 097/161] perf tools: Save failed result of get_srcline() Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 098/161] perf tools: Implement addr2line directly using libbfd Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 099/161] perf tools: Fix srcline sort key behavior Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 100/161] perf trace: Beautify epoll_ctl 'op' arg Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 101/161] perf trace: Beautify flock 'cmd' arg Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 102/161] perf trace: Add helper for syscalls with a single strarray arg Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 103/161] perf trace: Don't supress zeroed args when there is an strarray entry for it Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 104/161] perf trace: Use socket's beautifiers in socketpair Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 105/161] perf trace: Beautify pipe2 'flags' arg Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 106/161] perf trace: Add beautifier for clock_gettime's clk_id argument Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 107/161] perf trace: Handle MSG_WAITFORONE not defined Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 108/161] perf trace: Beautify mlock & friends 'addr' arg Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 109/161] perf trace: Show path associated with fd in live sessions Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 110/161] perf trace: Add 'trace' alias to 'perf trace' Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 111/161] perf bench sched: Add --threaded option Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 112/161] perf machine: Use snprintf instead of sprintf Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 113/161] perf tools: Add missing -ldl for gtk build Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 114/161] perf tools: Move start conditions to start of the flex file Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 115/161] perf stat: Don't print bogus data on -e cycles Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 116/161] perf stat: Don't print bogus data on -e instructions Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 117/161] perf tools: Ignore 'perf timechart' output file Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 118/161] perf bench: Fix failing assertions in numa bench Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 119/161] perf evlist: Fix perf_evlist__mmap_read event overflow Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 120/161] perf stat: Fix misleading message when specifying cpu list or system wide Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 121/161] perf stat: Don't require a workload when using system wide or CPU options Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 122/161] perf stat: Add units to nanosec-based counters Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 123/161] perf trace: Fix comm resolution when reading events from file Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 124/161] perf trace: Add record option Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 125/161] perf machine: Add method to loop over threads and invoke handler Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 126/161] perf trace: Use new machine method to loop over threads Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 127/161] perf intlist: Add priv member Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 128/161] perf symbols: Make a separate function to parse /proc/modules Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 129/161] perf trace: Allow specifying index offset in strarrays Arnaldo Carvalho de Melo
2013-10-14 20:01 ` [PATCH 130/161] perf trace: Prepare the strarray scnprintf method for reuse Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 131/161] perf trace: Initial beautifier for ioctl's 'cmd' arg Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 132/161] perf tools: Fix redirection printouts Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 133/161] perf tools: Implement summary output for 'make clean' Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 134/161] tools: Harmonize the various build messages in perf, lib-traceevent, lib-lk Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 135/161] perf tools: Align perf version output to other build messages Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 136/161] perf tools: Implement summary output for 'make install' Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 137/161] perf timechart: Add example in the documentation Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 138/161] perf trace: Improve the error messages Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 139/161] perf util: Add findnew method to intlist Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 140/161] perf trace: Add summary option to dump syscall statistics Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 141/161] perf tools: Fix old GCC build error in 'get_srcline' Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 142/161] perf tests: Fix memory leak in dso-data.c Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 143/161] perf tools: Separate lbfd check out of NO_DEMANGLE condition Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 144/161] perf symbols: Validate kcore module addresses Arnaldo Carvalho de Melo
2013-10-14 20:02 ` Arnaldo Carvalho de Melo [this message]
2013-10-14 20:02 ` [PATCH 146/161] perf symbols: Add map_groups__find_ams() Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 147/161] tools/perf/build: Fix non-existent build directory handling Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 148/161] tools/perf/build: Pass through DEBUG parameter Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 149/161] tools/perf/build: Fix DPACKAGE definitions for the libbfd et al testcases Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 150/161] tools/perf/build: Simplify the libelf logic Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 151/161] tools/perf/build: Remove the volatile-register-var feature check Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 152/161] tools/perf/build: Improve the 'stackprotector' feature test Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 153/161] tools/perf/build: Simplify the autodep inclusion rule Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 154/161] perf annotate: Find kcore symbols on other maps Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 155/161] perf tools: Add copyfile_mode() Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 156/161] perf symbols: Add ability to find kcore in build-id cache Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 157/161] perf annotate: Fix annotate_browser__callq() Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 158/161] perf buildid-cache: Add ability to add kcore to the cache Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 159/161] perf annotate: Another fix for annotate_browser__callq() Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 160/161] perf symbols: Fix a memory leak due to symbol__delete not being used Arnaldo Carvalho de Melo
2013-10-14 20:02 ` [PATCH 161/161] perf symbols: Fix a mmap and munmap mismatched bug Arnaldo Carvalho de Melo
2013-10-15  5:08 ` [GIT PULL 000/161] perf/core improvements and fixes Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1381780950-25642-146-git-send-email-acme@infradead.org \
    --to=acme@infradead.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=dsahern@gmail.com \
    --cc=efault@gmx.de \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@gmail.com \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®