2009-01-28 03:31:05

by Michael Neuling

[permalink] [raw]
Subject: [PATCH] bootgraph: fix for use with dot symbols

powerpc has dot symbols, so the dmesg output looks like:

<4>[ 0.327310] calling .migration_init+0x0/0x9c @ 1
<4>[ 0.327595] initcall .migration_init+0x0/0x9c returned 1 after 0 usecs

The below fixes bootgraph.pl so it handles this correctly.

Signed-off-by: Michael Neuling <[email protected]>
---
scripts/bootgraph.pl | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux-2.6-ozlabs/scripts/bootgraph.pl
===================================================================
--- linux-2.6-ozlabs.orig/scripts/bootgraph.pl
+++ linux-2.6-ozlabs/scripts/bootgraph.pl
@@ -51,7 +51,7 @@ my %pidctr;

while (<>) {
my $line = $_;
- if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_]+)\+/) {
+ if ($line =~ /([0-9\.]+)\] calling ([a-zA-Z0-9\_\.]+)\+/) {
my $func = $2;
if ($done == 0) {
$start{$func} = $1;
@@ -87,7 +87,7 @@ while (<>) {
$count = $count + 1;
}

- if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_]+)\+.*returned/) {
+ if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_\.]+)\+.*returned/) {
if ($done == 0) {
$end{$2} = $1;
$maxtime = $1;


2009-01-28 04:54:26

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [PATCH] bootgraph: fix for use with dot symbols

Michael Neuling wrote:
> powerpc has dot symbols, so the dmesg output looks like:
>
> <4>[ 0.327310] calling .migration_init+0x0/0x9c @ 1
> <4>[ 0.327595] initcall .migration_init+0x0/0x9c returned 1 after 0 usecs
>
> The below fixes bootgraph.pl so it handles this correctly.


question for the ppc folks.... why does the "print symbol" magic format string
thing print a dot symbol and not the real function name?
Should that be fixed instead?

2009-01-28 10:57:55

by Anton Blanchard

[permalink] [raw]
Subject: Re: [PATCH] bootgraph: fix for use with dot symbols


Hi Arjan,

> question for the ppc folks.... why does the "print symbol" magic format string
> thing print a dot symbol and not the real function name?
> Should that be fixed instead?

We have two symbols for each function, foo points to the function
descriptor, and .foo points to the instruction text. If we were to strip
the '.' when we print symbols then it would become harder to diagnose
some failures (eg branching to the function descriptor instead of the
instruction text).

Anton