Messages in this thread | | | Date | Tue, 26 Jan 2010 15:53:32 +0800 | Subject | Re: [PATCH] markup_oops.pl: add options to improve cross-sompilation environments | From | Américo Wang <> |
| |
On Tue, Jan 26, 2010 at 3:38 PM, Hui Zhu <hui.zhu@windriver.com> wrote: > Américo Wang: >> >> On Tue, Jan 26, 2010 at 11:11 AM, Hui Zhu <hui.zhu@windriver.com> wrote: >>> >>> Sorry guys, the prev mail still have some format trouble. I send a new >>> mail >>> for it. >>> +} >>> + >>> +if ($vmlinux_name ne "") { >>> + $vmlinux_name = $ARGV[$#ARGV]; >>> +} >> >> Why not using the Perl module 'Getopt' to do this? >> > Hi Américo, > > Thanks for remind me about it. The following patch use Getopt. > > The markup_oops.pl have 3 troubles to support cross-compiler environment: > 1. It use objdump directly. > 2. It use modinfo to get the message of module. > 3. It use hex function that cannot support 64-bit number in 32-bit arch. > > This patch add 3 options to markup_oops.pl: > 1. -c CROSS_COMPILE Specify the prefix used for toolchain. > 2. -m MODULE_DIRNAME Specify the module directory name. > 3. Change hex function to Math::BigInt->from_hex. > > 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@pardus.org.tr > Cc: Matthew Wilcox <willy@linux.intel.com> > > --- > scripts/markup_oops.pl | 45 +++++++++++++++++++++++++++++++++++---------- > 1 file changed, 35 insertions(+), 10 deletions(-) > > --- a/scripts/markup_oops.pl > +++ b/scripts/markup_oops.pl > @@ -2,6 +2,7 @@ > > use File::Basename; > use Math::BigInt; > +use Getopt::Long; > > # Copyright 2008, Intel Corporation > # > @@ -15,7 +16,17 @@ use Math::BigInt; > # Arjan van de Ven <arjan@linux.intel.com> > > > -my $vmlinux_name = $ARGV[0]; > +my $cross_compile = ""; > +my $vmlinux_name = ""; > +my $modulefile = ""; > + > +# Get options > +Getopt::Long::GetOptions( > + 'cross_compile|c=s' => \$cross_compile,
Please make it "cross-compile", because underline is not common in command line, so "--cross_compile" is worse than "--cross-compile".
> + 'modulefile|m=s' => \$modulefile,
"module" should be enough to express the meaning, I think.
> + 'help|h' => \&usage, > +); > +my $vmlinux_name = $ARGV[$#ARGV]; > if (!defined($vmlinux_name)) { > my $kerver = `uname -r`; > chomp($kerver); > @@ -23,6 +34,7 @@ if (!defined($vmlinux_name)) { > print "No vmlinux specified, assuming $vmlinux_name\n"; > } > my $filename = $vmlinux_name; > +
Adding this empty line probably is not what you really want.
> # > # Step 1: Parse the oops to find the EIP value > #
{snip}
> > +sub usage { > + print <<EOT; > +Usage: > + dmesg | perl $0 [OPTION] [VMLINUX] > + > +OPTION: > + -c, -cross_compile CROSS_COMPILE Specify the prefix used for > toolchain. > + -m, -modulefile MODULE_DIRNAME Specify the module directory name. > + -h, -help Help. > +EOT > + exit; > +} > +
GNU style is preferred here, please use "--foo" instead of "-foo".
Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |