Re: [PATCH 7/8] tools, perf: Make srcline output address with -v

2014-10-20 Thread Jiri Olsa
On Fri, Sep 26, 2014 at 04:37:15PM -0700, Andi Kleen wrote:
> From: Andi Kleen 
> 
> When -v is specified always print the hex address for the srcline.

I wasn't able to trigger this kind of output..

could you please update the changelog with the output change
and state the scenario when this is visible?


> 
> Signed-off-by: Andi Kleen 
> ---
>  tools/perf/util/srcline.c | 18 +++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
> index 36a7aff..a22be7c 100644
> --- a/tools/perf/util/srcline.c
> +++ b/tools/perf/util/srcline.c
> @@ -258,6 +258,12 @@ char *get_srcline(struct dso *dso, unsigned long addr, 
> struct symbol *sym,
>   unsigned line = 0;
>   char *srcline;
>   const char *dso_name;
> + char astr[50];
> +
> + if (verbose)
> + snprintf(astr, sizeof astr, " %#lx", addr);

WARNING: sizeof astr should be sizeof(astr)

thanks,
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 7/8] tools, perf: Make srcline output address with -v

2014-09-26 Thread Andi Kleen
From: Andi Kleen 

When -v is specified always print the hex address for the srcline.

Signed-off-by: Andi Kleen 
---
 tools/perf/util/srcline.c | 18 +++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index 36a7aff..a22be7c 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -258,6 +258,12 @@ char *get_srcline(struct dso *dso, unsigned long addr, 
struct symbol *sym,
unsigned line = 0;
char *srcline;
const char *dso_name;
+   char astr[50];
+
+   if (verbose)
+   snprintf(astr, sizeof astr, " %#lx", addr);
+   else
+   astr[0] = 0;
 
if (!dso->has_srcline)
goto out;
@@ -276,7 +282,12 @@ char *get_srcline(struct dso *dso, unsigned long addr, 
struct symbol *sym,
if (!addr2line(dso_name, addr, &file, &line, dso))
goto out;
 
-   if (asprintf(&srcline, "%s:%u", basename(file), line) < 0) {
+   if (line == 0) {
+   free(file);
+   goto fallback;
+   }
+
+   if (asprintf(&srcline, "%s:%u%s", basename(file), line, astr) < 0) {
free(file);
goto out;
}
@@ -291,9 +302,10 @@ out:
dso->has_srcline = 0;
dso__free_a2l(dso);
}
+fallback:
if (sym) {
-   if (asprintf(&srcline, "%s+%ld", show_sym ? sym->name : "",
-   addr - sym->start) < 0)
+   if (asprintf(&srcline, "%s+%ld%s", show_sym ? sym->name : "",
+   addr - sym->start, astr) < 0)
return SRCLINE_UNKNOWN;
} else if (asprintf(&srcline, "%s[%lx]", dso->short_name, addr) < 0)
return SRCLINE_UNKNOWN;
-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 7/8] tools, perf: Make srcline output address with -v

2014-09-15 Thread Andi Kleen
From: Andi Kleen 

When -v is specified always print the hex address for the srcline.

Signed-off-by: Andi Kleen 
---
 tools/perf/util/srcline.c | 18 +++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
index 36a7aff..a22be7c 100644
--- a/tools/perf/util/srcline.c
+++ b/tools/perf/util/srcline.c
@@ -258,6 +258,12 @@ char *get_srcline(struct dso *dso, unsigned long addr, 
struct symbol *sym,
unsigned line = 0;
char *srcline;
const char *dso_name;
+   char astr[50];
+
+   if (verbose)
+   snprintf(astr, sizeof astr, " %#lx", addr);
+   else
+   astr[0] = 0;
 
if (!dso->has_srcline)
goto out;
@@ -276,7 +282,12 @@ char *get_srcline(struct dso *dso, unsigned long addr, 
struct symbol *sym,
if (!addr2line(dso_name, addr, &file, &line, dso))
goto out;
 
-   if (asprintf(&srcline, "%s:%u", basename(file), line) < 0) {
+   if (line == 0) {
+   free(file);
+   goto fallback;
+   }
+
+   if (asprintf(&srcline, "%s:%u%s", basename(file), line, astr) < 0) {
free(file);
goto out;
}
@@ -291,9 +302,10 @@ out:
dso->has_srcline = 0;
dso__free_a2l(dso);
}
+fallback:
if (sym) {
-   if (asprintf(&srcline, "%s+%ld", show_sym ? sym->name : "",
-   addr - sym->start) < 0)
+   if (asprintf(&srcline, "%s+%ld%s", show_sym ? sym->name : "",
+   addr - sym->start, astr) < 0)
return SRCLINE_UNKNOWN;
} else if (asprintf(&srcline, "%s[%lx]", dso->short_name, addr) < 0)
return SRCLINE_UNKNOWN;
-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/