2009-07-13 14:18:21

by Matthew Wilcox

[permalink] [raw]
Subject: [PATCH] Fix markup_oops to work with 32-bit userspace on a 64-bit kernel


A 32-bit perl can't handle 64-bit addresses without using the BigInt package.

Signed-off-by: Matthew Wilcox <[email protected]>

diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl
index 528492b..8977401 100644
--- a/scripts/markup_oops.pl
+++ b/scripts/markup_oops.pl
@@ -1,6 +1,7 @@
#!/usr/bin/perl

use File::Basename;
+use Math::BigInt;

# Copyright 2008, Intel Corporation
#
@@ -172,8 +173,8 @@ while (<STDIN>) {
parse_x86_regs($line);
}

-my $decodestart = hex($target) - hex($func_offset);
-my $decodestop = hex($target) + 8192;
+my $decodestart = Math::BigInt->from_hex("0x$target") - Math::BigInt->from_hex("0x$func_offset");
+my $decodestop = Math::BigInt->from_hex("0x$target") + 8192;
if ($target eq "0") {
print "No oops found!\n";
print "Usage: \n";

--
Matthew Wilcox Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."


2009-07-13 15:06:52

by Arjan van de Ven

[permalink] [raw]
Subject: Re: [PATCH] Fix markup_oops to work with 32-bit userspace on a 64-bit kernel

On Mon, 13 Jul 2009 08:18:19 -0600
Matthew Wilcox <[email protected]> wrote:

>
> A 32-bit perl can't handle 64-bit addresses without using the BigInt
> package.
>
> Signed-off-by: Matthew Wilcox <[email protected]>

looks sane enuogh to me


Acked-by: Arjan van de Ven <[email protected]>


Andrew, can you pull this into -mm patch-logistics wise please?


>
> diff --git a/scripts/markup_oops.pl b/scripts/markup_oops.pl
> index 528492b..8977401 100644
> --- a/scripts/markup_oops.pl
> +++ b/scripts/markup_oops.pl
> @@ -1,6 +1,7 @@
> #!/usr/bin/perl
>
> use File::Basename;
> +use Math::BigInt;
>
> # Copyright 2008, Intel Corporation
> #
> @@ -172,8 +173,8 @@ while (<STDIN>) {
> parse_x86_regs($line);
> }
>
> -my $decodestart = hex($target) - hex($func_offset);
> -my $decodestop = hex($target) + 8192;
> +my $decodestart = Math::BigInt->from_hex("0x$target") -
> Math::BigInt->from_hex("0x$func_offset"); +my $decodestop =
> Math::BigInt->from_hex("0x$target") + 8192; if ($target eq "0") {
> print "No oops found!\n";
> print "Usage: \n";
>


--
Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,
visit http://www.lesswatts.org