Skip to contentSkip to conversation

perf/core improvements and fixes

GIT PULL New Arnaldo Carvalho de Melo 2 participants 10 messages Oct 13, 2015 – Oct 14, 2015

Subsystems (2)
lore
Share & tools
lore

Arnaldo Carvalho de Melo

author maintainer
#0 lore raw

Hi Ingo,

Please consider pulling.

- Arnaldo

BTW.: There are several outstanding patchkits needing review and processing, I'll be out this week for a conference, will try and speed up processing next week.

The following changes since commit 0e537fef24d64f7bf3ef61a27edf64a8d9a5424c:

Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-08 10:52:44 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to 3a70fcd3a4db56731f67f0189514953c74257944:

tools build: Fix cross compile build (2015-10-13 11:59:43 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Use the alternative with the most descriptive filename containing a vmlinux file for a given build-id, providing a better title line for tools such as 'annotate' (Arnaldo Carvalho de Melo)

- Remove help messages about previous right and left arrow keybidings, that were repurposed for horizontal scrolling (Arnaldo Carvalho de Melo)

- Inform how to reset the symbol filter in the hists browser (top & report) (Arnaldo Carvalho de Melo)

- Add 'm' key for context menu display in the hists browser, that became inacessible with the repurposing of the right arrow key for horizontal scrolling (Namhyung Kim)

- Use debug_frame for callchains if eh_frame is unusable (Rabin Vicent)

Build fixes:

- Fix strict-aliasing breakage with gcc 4.4 in the READ_ONCE/WRITE_ONCE code adopted from the kernel tree, that builds with -fno-strict-aliasing while tools/perf/ uses -Wstrict-aliasing=3 (Jiri Olsa)

- Fix unw_word_t pointer casts in code using libunwind for callchains, fixing the build in at least 32-bit MIPS systems (Rabin Vicent)

- Workaround cross compile build problems related to fixdep (Jiri Olsa)

----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
perf symbols: Try the .debug/ DSO cache as a last resort perf ui browsers: Remove help messages about use of right and arrow keys perf hists browser: Inform how to reset the symbol filter

Jiri Olsa (2):
tools include: Fix strict-aliasing rules breakage tools build: Fix cross compile build

Namhyung Kim (1):
perf hists browser: Add 'm' key for context menu display

Rabin Vincent (2):
perf callchain: Use debug_frame if eh_frame is unusable perf callchains: Fix unw_word_t pointer casts

 tools/build/Makefile.include       |  4 ++++
 tools/include/linux/compiler.h     | 32 ++++++++++++++++++++++++--------
 tools/perf/ui/browsers/annotate.c  |  6 +++---
 tools/perf/ui/browsers/hists.c     | 13 ++++++++-----
 tools/perf/ui/browsers/map.c       |  2 +-
 tools/perf/ui/browsers/scripts.c   |  2 +-
 tools/perf/util/symbol.c           | 18 +++++++++---------
 tools/perf/util/unwind-libunwind.c | 14 ++++++++------
 8 files changed, 58 insertions(+), 33 deletions(-)
author maintainer
#1 lore raw

PATCH 1/8 perf symbols: Try the .debug/ DSO cache as a last resort

From: Arnaldo Carvalho de Melo <[email protected]>

Not as the first attempt at finding a vmlinux for the running kernel, this way we get a more informative filename to present in tools, it will check that the build-id is the same as the one previously loaded in the DSO in dso->build_id, reading from /sys/kernel/notes, for instance.

E.g. in the annotation TUI, going from 'perf top', for the scsi_sg_alloc kernel function, in the first line:

Before:

scsi_sg_alloc /root/.debug/.build-id/28/2777c262e6b3c0451375163c9a81c893218ab1

After:

scsi_sg_alloc /lib/modules/4.3.0-rc1+/build/vmlinux

And:

  # ls -la /root/.debug/.build-id/28/2777c262e6b3c0451375163c9a81c893218ab1
lrwxrwxrwx. 1 root root 81 Sep 22 16:11 /root/.debug/.build-id/28/2777c262e6b3c0451375163c9a81c893218ab1 -> ../../home/git/build/v4.3.0-rc1+/vmlinux/282777c262e6b3c0451375163c9a81c893218ab1
  # file ~/.debug/home/git/build/v4.3.0-rc1+/vmlinux/282777c262e6b3c0451375163c9a81c893218ab1
/root/.debug/home/git/build/v4.3.0-rc1+/vmlinux/282777c262e6b3c0451375163c9a81c893218ab1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=282777c262e6b3c0451375163c9a81c893218ab1, not stripped
  #

The same as:

  # file /lib/modules/4.3.0-rc1+/build/vmlinux
/lib/modules/4.3.0-rc1+/build/vmlinux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=282777c262e6b3c0451375163c9a81c893218ab1, not stripped

Furthermore:

  # sha256sum /lib/modules/4.3.0-rc1+/build/vmlinux
  e7a789bbdc61029ec09140c228e1dd651271f38ef0b8416c0b7d5ff727b98be2  /lib/modules/4.3.0-rc1+/build/vmlinux
  # sha256sum ~/.debug/home/git/build/v4.3.0-rc1+/vmlinux/282777c262e6b3c0451375163c9a81c893218ab1
  e7a789bbdc61029ec09140c228e1dd651271f38ef0b8416c0b7d5ff727b98be2  /root/.debug/home/git/build/v4.3.0-rc1+/vmlinux/282777c262e6b3c0451375163c9a81c893218ab1
  [root@zoo new]#
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Wang Nan <[email protected]>
---
 tools/perf/util/symbol.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
tools/perf/util/symbol.c +9 -9
index bcda43bee4d4..e7bf0c46918d 100644
@@ -1607,6 +1607,15 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
 	int i, err = 0;
 	char *filename = NULL;
 
+	pr_debug("Looking at the vmlinux_path (%d entries long)\n",
+		 vmlinux_path__nr_entries + 1);
+
+	for (i = 0; i < vmlinux_path__nr_entries; ++i) {
+		err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter);
+		if (err > 0)
+			goto out;
+	}
+
 	if (!symbol_conf.ignore_vmlinux_buildid)
 		filename = dso__build_id_filename(dso, NULL, 0);
 	if (filename != NULL) {
@@ -1615,15 +1624,6 @@ int dso__load_vmlinux_path(struct dso *dso, struct map *map,
 			goto out;
 		free(filename);
 	}
-
-	pr_debug("Looking at the vmlinux_path (%d entries long)\n",
-		 vmlinux_path__nr_entries + 1);
-
-	for (i = 0; i < vmlinux_path__nr_entries; ++i) {
-		err = dso__load_vmlinux(dso, map, vmlinux_path[i], false, filter);
-		if (err > 0)
-			break;
-	}
 out:
 	return err;
 }
Signature · 1 line
2.1.0
author maintainer
#2 lore raw

PATCH 2/8 perf ui browsers: Remove help messages about use of right and arrow keys

In reply to Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <[email protected]>

They were repurposed for horizontal scrolling, so use just ENTER/ESC in the help messages.

Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Wang Nan <[email protected]>
Fixes c6c3c02dea40 ("perf hists browser: Implement horizontal scrolling")
---
 tools/perf/ui/browsers/annotate.c | 6 +++---
 tools/perf/ui/browsers/hists.c    | 8 ++++----
 tools/perf/ui/browsers/map.c      | 2 +-
 tools/perf/ui/browsers/scripts.c  | 2 +-
 4 files changed, 9 insertions(+), 9 deletions(-)
tools/perf/ui/browsers/annotate.c +3 -3
index 29739b347599..bec0b62d8e38 100644
@@ -768,8 +768,8 @@ static int annotate_browser__run(struct annotate_browser *browser,
 		"UP/DOWN/PGUP\n"
 		"PGDN/SPACE    Navigate\n"
 		"q/ESC/CTRL+C  Exit\n\n"
-		"->            Go to target\n"
-		"<-            Exit\n"
+		"ENTER         Go to target\n"
+		"ESC           Exit\n"
 		"H             Cycle thru hottest instructions\n"
 		"j             Toggle showing jump to target arrows\n"
 		"J             Toggle showing number of jump sources on targets\n"
@@ -1056,7 +1056,7 @@ int symbol__tui_annotate(struct symbol *sym, struct map *map,
 		goto out_free_offsets;
 	}
 
-	ui_helpline__push("Press <- or ESC to exit");
+	ui_helpline__push("Press ESC to exit");
 
 	notes = symbol__annotation(sym);
 	browser.start = map__rip_2objdump(map, sym->start);
tools/perf/ui/browsers/hists.c +4 -4
index 9b7346a881cf..eea16278d038 100644
@@ -1496,7 +1496,7 @@ do_zoom_thread(struct hist_browser *browser, struct popup_action *act)
 		thread__zput(browser->hists->thread_filter);
 		ui_helpline__pop();
 	} else {
-		ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s(%d) thread\"",
+		ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s(%d) thread\"",
 				   thread->comm_set ? thread__comm_str(thread) : "",
 				   thread->tid);
 		browser->hists->thread_filter = thread__get(thread);
@@ -1540,7 +1540,7 @@ do_zoom_dso(struct hist_browser *browser, struct popup_action *act)
 	} else {
 		if (map == NULL)
 			return 0;
-		ui_helpline__fpush("To zoom out press <- or -> + \"Zoom out of %s DSO\"",
+		ui_helpline__fpush("To zoom out press ESC or ENTER + \"Zoom out of %s DSO\"",
 				   __map__is_kernel(map) ? "the Kernel" : map->dso->short_name);
 		browser->hists->dso_filter = map->dso;
 		perf_hpp__set_elide(HISTC_DSO, true);
@@ -1761,8 +1761,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 	"For multiple event sessions:\n\n"				\
 	"TAB/UNTAB     Switch events\n\n"				\
 	"For symbolic views (--sort has sym):\n\n"			\
-	"->            Zoom into DSO/Threads & Annotate current symbol\n" \
-	"<-            Zoom out\n"					\
+	"ENTER         Zoom into DSO/Threads & Annotate current symbol\n" \
+	"ESC           Zoom out\n"					\
 	"a             Annotate current symbol\n"			\
 	"C             Collapse all callchains\n"			\
 	"d             Zoom into current DSO\n"				\
tools/perf/ui/browsers/map.c +1 -1
index 8c154c7d4669..80912778bb6d 100644
@@ -72,7 +72,7 @@ static int map_browser__run(struct map_browser *browser)
 	int key;
 
 	if (ui_browser__show(&browser->b, browser->map->dso->long_name,
-			     "Press <- or ESC to exit, %s / to search",
+			     "Press ESC to exit, %s / to search",
 			     verbose ? "" : "restart with -v to use") < 0)
 		return -1;
 
tools/perf/ui/browsers/scripts.c +1 -1
index e13b48d705ef..ad6b6ee3770e 100644
@@ -89,7 +89,7 @@ static int script_browser__run(struct perf_script_browser *browser)
 	int key;
 
 	if (ui_browser__show(&browser->b, browser->script_name,
-			     "Press <- or ESC to exit") < 0)
+			     "Press ESC to exit") < 0)
 		return -1;
 
 	while (1) {
Signature · 1 line
2.1.0
author maintainer
#3 lore raw

PATCH 3/8 perf hists browser: Inform how to reset the symbol filter

In reply to Arnaldo Carvalho de Melo

From: Arnaldo Carvalho de Melo <[email protected]>

When in the hists browser, i.e. in 'perf report' or in 'perf top', it is possible to press '/' and specify a substring to filter by symbol name.

Clarify how to remove a filter by making the prompt be:

Please enter the name of symbol you want to see. To remove the filter later, press / + ENTER

Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Cc Wang Nan <[email protected]>
---
 tools/perf/ui/browsers/hists.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
tools/perf/ui/browsers/hists.c +2 -1
index eea16278d038..772834912c7c 100644
@@ -1889,7 +1889,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 			continue;
 		case '/':
 			if (ui_browser__input_window("Symbol to show",
-					"Please enter the name of symbol you want to see",
+					"Please enter the name of symbol you want to see.\n"
+					"To remove the filter later, press / + ENTER.",
 					buf, "ENTER: OK, ESC: Cancel",
 					delay_secs * 2) == K_ENTER) {
 				hists->symbol_filter_str = *buf ? buf : NULL;
Signature · 1 line
2.1.0
author maintainer
#4 lore raw

PATCH 4/8 perf callchain: Use debug_frame if eh_frame is unusable

In reply to Arnaldo Carvalho de Melo

From: Rabin Vincent <[email protected]>

When NO_LIBUNWIND_DEBUG_FRAME=0, use the .debug_frame if the .eh_frame doesn't contain the approprate unwind tables.

---
 tools/perf/util/unwind-libunwind.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
tools/perf/util/unwind-libunwind.c +6 -4
index 4c00507ee3fd..ea993f6c7e0c 100644
@@ -330,6 +330,7 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
 	struct map *map;
 	unw_dyn_info_t di;
 	u64 table_data, segbase, fde_count;
+	int ret = -EINVAL;
 
 	map = find_map(ip, ui);
 	if (!map || !map->dso)
@@ -348,13 +349,14 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
 		di.u.rti.table_data = map->start + table_data;
 		di.u.rti.table_len  = fde_count * sizeof(struct table_entry)
 				      / sizeof(unw_word_t);
-		return dwarf_search_unwind_table(as, ip, &di, pi,
-						 need_unwind_info, arg);
+		ret = dwarf_search_unwind_table(as, ip, &di, pi,
+						need_unwind_info, arg);
 	}
 
 #ifndef NO_LIBUNWIND_DEBUG_FRAME
 	/* Check the .debug_frame section for unwinding info */
-	if (!read_unwind_spec_debug_frame(map->dso, ui->machine, &segbase)) {
+	if (ret < 0 &&
+	    !read_unwind_spec_debug_frame(map->dso, ui->machine, &segbase)) {
 		int fd = dso__data_get_fd(map->dso, ui->machine);
 		int is_exec = elf_is_exec(fd, map->dso->name);
 		unw_word_t base = is_exec ? 0 : map->start;
@@ -370,7 +372,7 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
 	}
 #endif
 
-	return -EINVAL;
+	return ret;
 }
 
 static int access_fpreg(unw_addr_space_t __maybe_unused as,
Signature · 1 line
2.1.0
author maintainer
#5 lore raw

PATCH 5/8 perf callchains: Fix unw_word_t pointer casts

In reply to Arnaldo Carvalho de Melo

From: Rabin Vincent <[email protected]>

unw_word_t is uint64_t even on 32-bit MIPS. Cast it to uintptr_t before the cast to void *p to get rid of the following errors:

util/unwind-libunwind.c: In function 'access_mem':
util/unwind-libunwind.c:464:4: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] util/unwind-libunwind.c:475:2: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
cc1: all warnings being treated as errors
make[3]: *** [util/unwind-libunwind.o] Error 1

---
 tools/perf/util/unwind-libunwind.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
tools/perf/util/unwind-libunwind.c +2 -2
index ea993f6c7e0c..f729f9e99f99 100644
@@ -463,7 +463,7 @@ static int access_mem(unw_addr_space_t __maybe_unused as,
 		if (ret) {
 			pr_debug("unwind: access_mem %p not inside range"
 				 " 0x%" PRIx64 "-0x%" PRIx64 "\n",
-				 (void *) addr, start, end);
+				 (void *) (uintptr_t) addr, start, end);
 			*valp = 0;
 			return ret;
 		}
@@ -473,7 +473,7 @@ static int access_mem(unw_addr_space_t __maybe_unused as,
 	offset = addr - start;
 	*valp  = *(unw_word_t *)&stack->data[offset];
 	pr_debug("unwind: access_mem addr %p val %lx, offset %d\n",
-		 (void *) addr, (unsigned long)*valp, offset);
+		 (void *) (uintptr_t) addr, (unsigned long)*valp, offset);
 	return 0;
 }
 
Signature · 1 line
2.1.0
author maintainer
#6 lore raw

PATCH 6/8 perf hists browser: Add 'm' key for context menu display

In reply to Arnaldo Carvalho de Melo

From: Namhyung Kim <[email protected]>

With horizontal scrolling, the left/right arrow keys are used to scroll columns and ENTER/ESC keys are used to enter/exit menu. However if callchain is recorded, the ENTER key is used to toggle callchain expansion so there's no way to display menu. Use 'm' key to display the menu for this case.

---
 tools/perf/ui/browsers/hists.c | 2 ++
 1 file changed, 2 insertions(+)
tools/perf/ui/browsers/hists.c +2 -0
index 772834912c7c..e5afb8936040 100644
@@ -1769,6 +1769,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 	"E             Expand all callchains\n"				\
 	"F             Toggle percentage of filtered entries\n"		\
 	"H             Display column headers\n"			\
+	"m             Display context menu\n"				\
 	"S             Zoom into current Processor Socket\n"		\
 
 	/* help messages are sorted by lexical order of the hotkey */
@@ -1935,6 +1936,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
 			continue;
 		case K_ENTER:
 		case K_RIGHT:
+		case 'm':
 			/* menu */
 			break;
 		case K_ESC:
Signature · 1 line
2.1.0
author maintainer
#7 lore raw

PATCH 7/8 tools include: Fix strict-aliasing rules breakage

In reply to Arnaldo Carvalho de Melo

From: Jiri Olsa <[email protected]>

Vinson reported build breakage with gcc 4.4 due to strict-aliasing.

CC util/annotate.o
cc1: warnings being treated as errors
util/annotate.c: In function ‘disasm__purge’:
linux-next/tools/include/linux/compiler.h:66: error: dereferencing pointer ‘res.41’ does break strict-aliasing rules

The reason is READ_ONCE/WRITE_ONCE code we took from kernel sources. They intentionaly break aliasing rules. While this is ok for kernel because it's built with -fno-strict-aliasing, it breaks perf which is build with -Wstrict-aliasing=3.

Using extra __may_alias__ type to allow aliasing in this case.

---
 tools/include/linux/compiler.h | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)
tools/include/linux/compiler.h +24 -8
index 9098083869c8..fa7208a32d76 100644
@@ -43,13 +43,29 @@
 
 #include <linux/types.h>
 
+/*
+ * Following functions are taken from kernel sources and
+ * break aliasing rules in their original form.
+ *
+ * While kernel is compiled with -fno-strict-aliasing,
+ * perf uses -Wstrict-aliasing=3 which makes build fail
+ * under gcc 4.4.
+ *
+ * Using extra __may_alias__ type to allow aliasing
+ * in this case.
+ */
+typedef __u8  __attribute__((__may_alias__))  __u8_alias_t;
+typedef __u16 __attribute__((__may_alias__)) __u16_alias_t;
+typedef __u32 __attribute__((__may_alias__)) __u32_alias_t;
+typedef __u64 __attribute__((__may_alias__)) __u64_alias_t;
+
 static __always_inline void __read_once_size(const volatile void *p, void *res, int size)
 {
 	switch (size) {
-	case 1: *(__u8 *)res = *(volatile __u8 *)p; break;
-	case 2: *(__u16 *)res = *(volatile __u16 *)p; break;
-	case 4: *(__u32 *)res = *(volatile __u32 *)p; break;
-	case 8: *(__u64 *)res = *(volatile __u64 *)p; break;
+	case 1: *(__u8_alias_t  *) res = *(volatile __u8_alias_t  *) p; break;
+	case 2: *(__u16_alias_t *) res = *(volatile __u16_alias_t *) p; break;
+	case 4: *(__u32_alias_t *) res = *(volatile __u32_alias_t *) p; break;
+	case 8: *(__u64_alias_t *) res = *(volatile __u64_alias_t *) p; break;
 	default:
 		barrier();
 		__builtin_memcpy((void *)res, (const void *)p, size);
@@ -60,10 +76,10 @@ static __always_inline void __read_once_size(const volatile void *p, void *res,
 static __always_inline void __write_once_size(volatile void *p, void *res, int size)
 {
 	switch (size) {
-	case 1: *(volatile __u8 *)p = *(__u8 *)res; break;
-	case 2: *(volatile __u16 *)p = *(__u16 *)res; break;
-	case 4: *(volatile __u32 *)p = *(__u32 *)res; break;
-	case 8: *(volatile __u64 *)p = *(__u64 *)res; break;
+	case 1: *(volatile  __u8_alias_t *) p = *(__u8_alias_t  *) res; break;
+	case 2: *(volatile __u16_alias_t *) p = *(__u16_alias_t *) res; break;
+	case 4: *(volatile __u32_alias_t *) p = *(__u32_alias_t *) res; break;
+	case 8: *(volatile __u64_alias_t *) p = *(__u64_alias_t *) res; break;
 	default:
 		barrier();
 		__builtin_memcpy((void *)p, (const void *)res, size);
Signature · 1 line
2.1.0
author maintainer
#8 lore raw

PATCH 8/8 tools build: Fix cross compile build

In reply to Arnaldo Carvalho de Melo

From: Jiri Olsa <[email protected]>

He Kuang the new fixdep tool breaks cross compiling. The reason is it wouldn't get compiled under host arch, but under cross arch and failed to run.

We need to add support for host side tools build, meanwhile disabling fixdep usage for cross arch builds.

---
 tools/build/Makefile.include | 4 ++++
 1 file changed, 4 insertions(+)
tools/build/Makefile.include +4 -0
index 6572bb023543..4e09ad617a60 100644
@@ -1,6 +1,10 @@
 build := -f $(srctree)/tools/build/Makefile.build dir=. obj
 
+ifdef CROSS_COMPILE
+fixdep:
+else
 fixdep:
 	$(Q)$(MAKE) -C $(srctree)/tools/build fixdep
+endif
 
 .PHONY: fixdep
Signature · 1 line
2.1.0
#9 lore raw
In reply to Arnaldo Carvalho de Melo
Quoted 73 lines · Arnaldo Carvalho de Melo

Hi Ingo,

Please consider pulling.

- Arnaldo

BTW.: There are several outstanding patchkits needing review and processing, I'll be out this week for a conference, will try and speed up processing next week.

The following changes since commit 0e537fef24d64f7bf3ef61a27edf64a8d9a5424c:

Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-10-08 10:52:44 +0200)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to 3a70fcd3a4db56731f67f0189514953c74257944:

tools build: Fix cross compile build (2015-10-13 11:59:43 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Use the alternative with the most descriptive filename containing a vmlinux file for a given build-id, providing a better title line for tools such as 'annotate' (Arnaldo Carvalho de Melo)

- Remove help messages about previous right and left arrow keybidings, that were repurposed for horizontal scrolling (Arnaldo Carvalho de Melo)

- Inform how to reset the symbol filter in the hists browser (top & report) (Arnaldo Carvalho de Melo)

- Add 'm' key for context menu display in the hists browser, that became inacessible with the repurposing of the right arrow key for horizontal scrolling (Namhyung Kim)

- Use debug_frame for callchains if eh_frame is unusable (Rabin Vicent)

Build fixes:

- Fix strict-aliasing breakage with gcc 4.4 in the READ_ONCE/WRITE_ONCE code adopted from the kernel tree, that builds with -fno-strict-aliasing while tools/perf/ uses -Wstrict-aliasing=3 (Jiri Olsa)

- Fix unw_word_t pointer casts in code using libunwind for callchains, fixing the build in at least 32-bit MIPS systems (Rabin Vicent)

- Workaround cross compile build problems related to fixdep (Jiri Olsa)

----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
perf symbols: Try the .debug/ DSO cache as a last resort perf ui browsers: Remove help messages about use of right and arrow keys perf hists browser: Inform how to reset the symbol filter

Jiri Olsa (2):
tools include: Fix strict-aliasing rules breakage tools build: Fix cross compile build

Namhyung Kim (1):
perf hists browser: Add 'm' key for context menu display

Rabin Vincent (2):
perf callchain: Use debug_frame if eh_frame is unusable perf callchains: Fix unw_word_t pointer casts

Quoted 9 lines
 tools/build/Makefile.include       |  4 ++++
 tools/include/linux/compiler.h     | 32 ++++++++++++++++++++++++--------
 tools/perf/ui/browsers/annotate.c  |  6 +++---
 tools/perf/ui/browsers/hists.c     | 13 ++++++++-----
 tools/perf/ui/browsers/map.c       |  2 +-
 tools/perf/ui/browsers/scripts.c   |  2 +-
 tools/perf/util/symbol.c           | 18 +++++++++---------
 tools/perf/util/unwind-libunwind.c | 14 ++++++++------
 8 files changed, 58 insertions(+), 33 deletions(-)

Pulled, thanks a lot Arnaldo!

Ingo