* [PATCH] Add options to markup_oops.pl to make it support cross-compiler environment better
@ 2010-01-17 13:38 Hui Zhu
2010-01-23 1:26 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: Hui Zhu @ 2010-01-17 13:38 UTC (permalink / raw)
To: Andrew Morton, Arjan van de Ven, Sam Ravnborg,
Ozan Çaglayan, Matthew Wilcox, linux-kernel
Hello,
The markup_oops.pl have 2 troubles to support cross-compiler environment:
1. It use objdump directly.
2. It use modinfo to get the message of module.
This patch add 2 options to markup_oops.pl:
1. -c CROSS_COMPILE Specify the prefix used for toolchain.
2. -m MODULE_DIRNAME Specify the module directory name.
After this patch, parse the x8664 oops in x86, we can:
cat amd64m | perl ~/kernel/tmp/m.pl -c
/home/teawater/kernel/bin/x8664- -m ./e.ko vmlinux
Thanks,
Hui
Signed-off-by: Hui Zhu <teawater@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Ozan Çaglayan <ozan@pardus.org.tr>
Cc: Matthew Wilcox <willy@linux.intel.com>
---
scripts/markup_oops.pl | 67 +++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 59 insertions(+), 8 deletions(-)
--- a/scripts/markup_oops.pl
+++ b/scripts/markup_oops.pl
@@ -15,8 +15,46 @@ use Math::BigInt;
# Arjan van de Ven <arjan@linux.intel.com>
-my $vmlinux_name = $ARGV[0];
-if (!defined($vmlinux_name)) {
+my $cross_compile = "";
+my $vmlinux_name = "";
+my $modulefile = "";
+
+# Get options
+my $option = 0;
+for (my $i = 0; $i <= $#ARGV; $i++) {
+ if ($option == 0) {
+ if ($ARGV[$i] eq "-c") {
+ $option = 1;
+ }
+ elsif ($ARGV[$i] eq "-m") {
+ $option = 2;
+ }
+ elsif ($ARGV[$i] eq "-h") {
+ usage();
+ exit;
+ }
+ elsif ($i == $#ARGV) {
+ $vmlinux_name = $ARGV[$i];
+ }
+ else {
+ usage();
+ exit;
+ }
+ }
+ elsif ($option == 1) {
+ $cross_compile = $ARGV[$i];
+ $option = 0;
+ }
+ elsif ($option == 2) {
+ $modulefile = $ARGV[$i];
+ $option = 0;
+ }
+}
+
+if ($vmlinux_name ne "") {
+ $vmlinux_name = $ARGV[$#ARGV];
+}
+else {
my $kerver = `uname -r`;
chomp($kerver);
$vmlinux_name = "/lib/modules/$kerver/build/vmlinux";
@@ -177,22 +215,23 @@ my $decodestart = Math::BigInt->from_hex
my $decodestop = Math::BigInt->from_hex("0x$target") + 8192;
if ($target eq "0") {
print "No oops found!\n";
- print "Usage: \n";
- print " dmesg | perl scripts/markup_oops.pl vmlinux\n";
+ usage();
exit;
}
# if it's a module, we need to find the .ko file and calculate a load offset
if ($module ne "") {
- my $modulefile = `modinfo $module | grep '^filename:' | awk '{ print \$2 }'`;
- chomp($modulefile);
+ if ($modulefile eq "") {
+ my $modulefile = `modinfo $module | grep '^filename:' | awk '{ print \$2 }'`;
+ chomp($modulefile);
+ }
$filename = $modulefile;
if ($filename eq "") {
print "Module .ko file for $module not found. Aborting\n";
exit;
}
# ok so we found the module, now we need to calculate the vma offset
- open(FILE, "objdump -dS $filename |") || die "Cannot start objdump";
+ open(FILE, $cross_compile."objdump -dS $filename |") || die "Cannot
start objdump";
while (<FILE>) {
if ($_ =~ /^([0-9a-f]+) \<$function\>\:/) {
my $fu = $1;
@@ -225,7 +264,7 @@ sub InRange {
# first, parse the input into the lines array, but to keep size down,
# we only do this for 4Kb around the sweet spot
-open(FILE, "objdump -dS --adjust-vma=$vmaoffset
--start-address=$decodestart --stop-address=$decodestop $filename |")
|| die "Cannot start objdump";
+open(FILE, $cross_compile."objdump -dS --adjust-vma=$vmaoffset
--start-address=$decodestart --stop-address=$decodestop $filename |")
|| die "Cannot start objdump";
while (<FILE>) {
my $line = $_;
@@ -345,3 +384,15 @@ while ($i < $finish) {
$i = $i +1;
}
+sub usage {
+ print <<EOT;
+Usage:
+ dmesg | perl $0 [OPTION] [VMLINUX]
+
+OPTION:
+ -c CROSS_COMPILE Specify the prefix used for toolchain.
+ -m MODULE_DIRNAME Specify the module directory name.
+ -h Help
+EOT
+}
+
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Add options to markup_oops.pl to make it support cross-compiler environment better
2010-01-17 13:38 [PATCH] Add options to markup_oops.pl to make it support cross-compiler environment better Hui Zhu
@ 2010-01-23 1:26 ` Andrew Morton
2010-01-25 7:39 ` Hui Zhu
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2010-01-23 1:26 UTC (permalink / raw)
To: Hui Zhu
Cc: Arjan van de Ven, Sam Ravnborg, Ozan Çaglayan,
Matthew Wilcox, linux-kernel
On Sun, 17 Jan 2010 21:38:28 +0800
Hui Zhu <teawater@gmail.com> wrote:
> Hello,
>
> The markup_oops.pl have 2 troubles to support cross-compiler environment:
> 1. It use objdump directly.
> 2. It use modinfo to get the message of module.
>
> This patch add 2 options to markup_oops.pl:
> 1. -c CROSS_COMPILE Specify the prefix used for toolchain.
> 2. -m MODULE_DIRNAME Specify the module directory name.
>
> After this patch, parse the x8664 oops in x86, we can:
> cat amd64m | perl ~/kernel/tmp/m.pl -c
> /home/teawater/kernel/bin/x8664- -m ./e.ko vmlinux
>
The other patches are wordwrapped and one still didn't apply after
fixing that, so please just redo and resend everything. Send them to
yourself first and check that the result still applies OK.
Also, we prefer patch titles to be of the form
subsystem-identifier: what was changed
so a good title for this patch would have been
markup_oops.pl: add options to improve cross-sompilation environments
Thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Add options to markup_oops.pl to make it support cross-compiler environment better
2010-01-23 1:26 ` Andrew Morton
@ 2010-01-25 7:39 ` Hui Zhu
0 siblings, 0 replies; 3+ messages in thread
From: Hui Zhu @ 2010-01-25 7:39 UTC (permalink / raw)
To: Andrew Morton
Cc: Arjan van de Ven, Sam Ravnborg, Ozan Çaglayan,
Matthew Wilcox, linux-kernel
On Sat, Jan 23, 2010 at 09:26, Andrew Morton <akpm@linux-foundation.org> wrote:
> On Sun, 17 Jan 2010 21:38:28 +0800
> Hui Zhu <teawater@gmail.com> wrote:
>
>> Hello,
>>
>> The markup_oops.pl have 2 troubles to support cross-compiler environment:
>> 1. It use objdump directly.
>> 2. It use modinfo to get the message of module.
>>
>> This patch add 2 options to markup_oops.pl:
>> 1. -c CROSS_COMPILE Specify the prefix used for toolchain.
>> 2. -m MODULE_DIRNAME Specify the module directory name.
>>
>> After this patch, parse the x8664 oops in x86, we can:
>> cat amd64m | perl ~/kernel/tmp/m.pl -c
>> /home/teawater/kernel/bin/x8664- -m ./e.ko vmlinux
>>
>
> The other patches are wordwrapped and one still didn't apply after
> fixing that, so please just redo and resend everything. Send them to
> yourself first and check that the result still applies OK.
>
>
> Also, we prefer patch titles to be of the form
>
> subsystem-identifier: what was changed
>
> so a good title for this patch would have been
>
> markup_oops.pl: add options to improve cross-sompilation environments
>
Thanks Andrew. I will post a new mail according to your mail.
Best regards,
Hui
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-01-25 7:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-17 13:38 [PATCH] Add options to markup_oops.pl to make it support cross-compiler environment better Hui Zhu
2010-01-23 1:26 ` Andrew Morton
2010-01-25 7:39 ` Hui Zhu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).