[PATCH 6/9] perf symbols: Ignore mapping symbols on ARM

Previous thread: [PATCH 1/9] perf ui: Shorten ui_browser member names by Arnaldo Carvalho de Melo on Tuesday, August 10, 2010 - 1:15 pm. (1 message)

Next thread: Low cache usage, lots of free mem :-( by Maciej Sołtysiak on Tuesday, August 10, 2010 - 1:31 pm. (1 message)
From: Arnaldo Carvalho de Melo
Date: Tuesday, August 10, 2010 - 1:15 pm

Hi Ingo,

        Please pull from:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core

Regards,

- Arnaldo

Arnaldo Carvalho de Melo (8):
  perf ui: Shorten ui_browser member names
  perf ui: Move ui_helpline routines to separate file in util/ui/
  perf ui: Move ui_progress routines to separate file in util/ui/
  perf ui: Move annotate browser to util/ui/browsers/
  perf ui: Move map browser to util/ui/browsers/
  perf ui: Move hists browser to util/ui/browsers/
  perf ui: Complete the breakdown of util/newt.c
  perf annotate: Sort by hottest lines in the TUI

Dave Martin (1):
  perf symbols: Ignore mapping symbols on ARM

 tools/perf/Makefile                    |   25 +-
 tools/perf/builtin-annotate.c          |    2 +-
 tools/perf/util/debug.c                |    2 +-
 tools/perf/util/debug.h                |    9 +-
 tools/perf/util/hist.c                 |   13 +-
 tools/perf/util/hist.h                 |    3 +-
 tools/perf/util/newt.c                 | 1487 --------------------------------
 tools/perf/util/pstack.h               |    2 +
 tools/perf/util/symbol.c               |   10 +
 tools/perf/util/ui/browser.c           |   57 +-
 tools/perf/util/ui/browser.h           |    7 +-
 tools/perf/util/ui/browsers/annotate.c |  191 ++++
 tools/perf/util/ui/browsers/hists.c    |  946 ++++++++++++++++++++
 tools/perf/util/ui/browsers/map.c      |  163 ++++
 tools/perf/util/ui/browsers/map.h      |    6 +
 tools/perf/util/ui/helpline.c          |   69 ++
 tools/perf/util/ui/helpline.h          |   10 +
 tools/perf/util/ui/libslang.h          |   27 +
 tools/perf/util/ui/progress.c          |   60 ++
 tools/perf/util/ui/progress.h          |   11 +
 tools/perf/util/ui/setup.c             |   42 +
 tools/perf/util/ui/util.c              |  114 +++
 tools/perf/util/ui/util.h              |   10 +
 23 files changed, 1729 insertions(+), 1537 deletions(-)
 delete mode 100644 tools/perf/util/newt.c
 create mode 100644 ...
From: Arnaldo Carvalho de Melo
Date: Tuesday, August 10, 2010 - 1:15 pm

From: Dave Martin <dave.martin@linaro.org>

ARM ELF files use symbols with special names $a, $t, $d to identify regions of
ARM code, Thumb code and data within code sections.  This can cause confusing
output from the perf tools, especially for partially stripped binaries, or
binaries containing user-added zero-sized symbols (which may occur in
hand-written assembler which hasn't been fully annotated with .size
directives).

This patch filters out these symbols at load time.

LKML-Reference: <1281352878-8735-2-git-send-email-dave.martin@linaro.org>
Signed-off-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/symbol.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index b6f5970..1a36773 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1079,6 +1079,16 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name,
 		if (!is_label && !elf_sym__is_a(&sym, map->type))
 			continue;
 
+		/* Reject ARM ELF "mapping symbols": these aren't unique and
+		 * don't identify functions, so will confuse the profile
+		 * output: */
+		if (ehdr.e_machine == EM_ARM) {
+			if (!strcmp(elf_name, "$a") ||
+			    !strcmp(elf_name, "$d") ||
+			    !strcmp(elf_name, "$t"))
+				continue;
+		}
+
 		if (opdsec && sym.st_shndx == opdidx) {
 			u32 offset = sym.st_value - opdshdr.sh_addr;
 			u64 *opd = opddata->d_buf + offset;
-- 
1.6.2.5

--

From: Arnaldo Carvalho de Melo
Date: Tuesday, August 10, 2010 - 1:15 pm

From: Arnaldo Carvalho de Melo <acme@redhat.com>

LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile               |    5 +
 tools/perf/util/newt.c            |  156 +-----------------------------------
 tools/perf/util/ui/browsers/map.c |  163 +++++++++++++++++++++++++++++++++++++
 tools/perf/util/ui/browsers/map.h |    6 ++
 4 files changed, 175 insertions(+), 155 deletions(-)
 create mode 100644 tools/perf/util/ui/browsers/map.c
 create mode 100644 tools/perf/util/ui/browsers/map.h

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index ae443b6..d118020 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -570,9 +570,11 @@ else
 		LIB_OBJS += $(OUTPUT)util/newt.o
 		LIB_OBJS += $(OUTPUT)util/ui/browser.o
 		LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o
+		LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o
 		LIB_OBJS += $(OUTPUT)util/ui/helpline.o
 		LIB_OBJS += $(OUTPUT)util/ui/progress.o
 		LIB_H += util/ui/browser.h
+		LIB_H += util/ui/browsers/map.h
 		LIB_H += util/ui/helpline.h
 		LIB_H += util/ui/libslang.h
 		LIB_H += util/ui/progress.h
@@ -982,6 +984,9 @@ $(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS
 $(OUTPUT)util/ui/browsers/annotate.o: util/ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
 
+$(OUTPUT)util/ui/browsers/map.o: util/ui/browsers/map.c $(OUTPUT)PERF-CFLAGS
+	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
+
 $(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS
 	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
 
diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c
index f188258..b596926 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/newt.c
@@ -16,42 +16,10 @@
 #include "symbol.h"
 #include "ui/browser.h"
 #include "ui/helpline.h"
+#include "ui/browsers/map.h"
 
 newtComponent ...
From: Arnaldo Carvalho de Melo
Date: Tuesday, August 10, 2010 - 1:15 pm

From: Arnaldo Carvalho de Melo <acme@redhat.com>

LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile           |    2 +
 tools/perf/util/newt.c        |   38 +-----------------------------------
 tools/perf/util/ui/helpline.c |   43 +++++++++++++++++++++++++++++++++++++++++
 tools/perf/util/ui/helpline.h |    9 ++++++++
 4 files changed, 55 insertions(+), 37 deletions(-)
 create mode 100644 tools/perf/util/ui/helpline.c
 create mode 100644 tools/perf/util/ui/helpline.h

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index d5bce76..d77a101 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -569,7 +569,9 @@ else
 		EXTLIBS += -lnewt -lslang
 		LIB_OBJS += $(OUTPUT)util/newt.o
 		LIB_OBJS += $(OUTPUT)util/ui/browser.o
+		LIB_OBJS += $(OUTPUT)util/ui/helpline.o
 		LIB_H += util/ui/browser.h
+		LIB_H += util/ui/helpline.h
 	endif
 endif
 
diff --git a/tools/perf/util/newt.c b/tools/perf/util/newt.c
index 9768be3..23f3b7d 100644
--- a/tools/perf/util/newt.c
+++ b/tools/perf/util/newt.c
@@ -24,6 +24,7 @@
 #include "sort.h"
 #include "symbol.h"
 #include "ui/browser.h"
+#include "ui/helpline.h"
 
 #if SLANG_VERSION < 20104
 #define slsmg_printf(msg, args...) SLsmg_printf((char *)msg, ##args)
@@ -94,43 +95,6 @@ void ui_progress__delete(struct ui_progress *self)
 	free(self);
 }
 
-static void ui_helpline__pop(void)
-{
-	newtPopHelpLine();
-}
-
-static void ui_helpline__push(const char *msg)
-{
-	newtPushHelpLine(msg);
-}
-
-static void ui_helpline__vpush(const char *fmt, va_list ap)
-{
-	char *s;
-
-	if (vasprintf(&s, fmt, ap) < 0)
-		vfprintf(stderr, fmt, ap);
-	else {
-		ui_helpline__push(s);
-		free(s);
-	}
-}
-
-static void ui_helpline__fpush(const char *fmt, ...)
-{
-	va_list ap;
-
-	va_start(ap, fmt);
-	ui_helpline__vpush(fmt, ap);
-	va_end(ap);
-}
-
-static void ui_helpline__puts(const char ...
Previous thread: [PATCH 1/9] perf ui: Shorten ui_browser member names by Arnaldo Carvalho de Melo on Tuesday, August 10, 2010 - 1:15 pm. (1 message)

Next thread: Low cache usage, lots of free mem :-( by Maciej Sołtysiak on Tuesday, August 10, 2010 - 1:31 pm. (1 message)