* [PATCH] perf annotate: Add config option for additional objdump arguments
@ 2011-04-16 6:40 Anton Blanchard
2011-04-16 7:54 ` Ingo Molnar
0 siblings, 1 reply; 3+ messages in thread
From: Anton Blanchard @ 2011-04-16 6:40 UTC (permalink / raw)
To: Peter Zijlstra, Paul Mackerras, Ingo Molnar,
Arnaldo Carvalho de Melo
Cc: linux-kernel
We sometimes need to pass arguments to objdump, for example to
specify a particular machine type. In the case below I am profiling
on POWER7 and perf annotate is unable to decode a POWER7 specific
instruction:
c000000000008ff0: 7f 45 26 98 .long 0x7f452698
With the patch below and the following in ~/.perfconfig:
[objdump]
options = -Mpower7
perf annotate successfully decodes the instruction:
c000000000008ff0: 7f 45 26 98 lxvd2x vs26,r5,r4
Signed-off-by: Anton Blanchard <anton@samba.org>
---
What do people think of objdump.options? Would annotate.objdump_options be
better?
Also we only look at the first occurance of the option, do we want to
parse everything found and concatenate them together?
Index: linux.trees.git/tools/perf/util/annotate.c
===================================================================
--- linux.trees.git.orig/tools/perf/util/annotate.c 2011-04-16 16:00:31.000000000 +1000
+++ linux.trees.git/tools/perf/util/annotate.c 2011-04-16 16:26:46.000000000 +1000
@@ -16,10 +16,33 @@
#include "annotate.h"
#include <pthread.h>
+static char *objdump_options;
+
+static int perf_objdump_config(const char *var, const char *value, void *cb)
+{
+ if (objdump_options == NULL && !strcmp(var, "objdump.options")) {
+ size_t len = strlen(value);
+
+ objdump_options = zalloc(len + 1);
+ strncpy(objdump_options, value, len);
+
+ return 0;
+ }
+
+ return perf_default_config(var, value, cb);
+}
+
int symbol__annotate_init(struct map *map __used, struct symbol *sym)
{
struct annotation *notes = symbol__annotation(sym);
pthread_mutex_init(¬es->lock, NULL);
+
+ if (objdump_options == NULL) {
+ perf_config(perf_objdump_config, NULL);
+ if (objdump_options == NULL)
+ objdump_options = zalloc(1);
+ }
+
return 0;
}
@@ -324,9 +347,11 @@ fallback:
snprintf(command, sizeof(command),
"objdump --start-address=0x%016" PRIx64
- " --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand",
+ " --stop-address=0x%016" PRIx64 " %s -dS -C %s|"
+ "grep -v %s|expand",
map__rip_2objdump(map, sym->start),
map__rip_2objdump(map, sym->end),
+ objdump_options,
symfs_filename, filename);
pr_debug("Executing: %s\n", command);
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] perf annotate: Add config option for additional objdump arguments
2011-04-16 6:40 [PATCH] perf annotate: Add config option for additional objdump arguments Anton Blanchard
@ 2011-04-16 7:54 ` Ingo Molnar
2011-04-24 1:49 ` Anton Blanchard
0 siblings, 1 reply; 3+ messages in thread
From: Ingo Molnar @ 2011-04-16 7:54 UTC (permalink / raw)
To: Anton Blanchard
Cc: Peter Zijlstra, Paul Mackerras, Arnaldo Carvalho de Melo,
linux-kernel
* Anton Blanchard <anton@samba.org> wrote:
>
> We sometimes need to pass arguments to objdump, for example to
> specify a particular machine type. In the case below I am profiling
> on POWER7 and perf annotate is unable to decode a POWER7 specific
> instruction:
>
> c000000000008ff0: 7f 45 26 98 .long 0x7f452698
>
> With the patch below and the following in ~/.perfconfig:
>
> [objdump]
> options = -Mpower7
Hm, could we please detect the required flags automatically and pass them along
without forcing people into twiddling their ~/.perfconfig?
I don't mind the options patch either - but please first automate it, *then*
add this as a quick fix for similar future problems.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] perf annotate: Add config option for additional objdump arguments
2011-04-16 7:54 ` Ingo Molnar
@ 2011-04-24 1:49 ` Anton Blanchard
0 siblings, 0 replies; 3+ messages in thread
From: Anton Blanchard @ 2011-04-24 1:49 UTC (permalink / raw)
To: Ingo Molnar
Cc: Peter Zijlstra, Paul Mackerras, Arnaldo Carvalho de Melo,
linux-kernel, amodra
Hi Ingo,
> Hm, could we please detect the required flags automatically and pass
> them along without forcing people into twiddling their ~/.perfconfig?
>
> I don't mind the options patch either - but please first automate it,
> *then* add this as a quick fix for similar future problems.
Good point. Unfortunately there are some overlapping opcodes between
the ppc embedded and server chips but we could get most of the way
there by specifying using objdump -Many.
Anton
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-04-24 1:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-16 6:40 [PATCH] perf annotate: Add config option for additional objdump arguments Anton Blanchard
2011-04-16 7:54 ` Ingo Molnar
2011-04-24 1:49 ` Anton Blanchard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox