Re: [PATCH] markup_oops.pl: fix get "No matching code found" whenfirst line of range is the faulting instruction

From: Sam Ravnborg
Date: Thu Jan 28 2010 - 13:14:54 EST


On Thu, Jan 28, 2010 at 02:58:02PM +0800, Hui Zhu wrote:
> Sorry guys, the prev mail for this patch is ugly.
> I make a new mail for it.

Random updates to scripts/* historically often go
in via the kbuild tree, so Michal added.

Sam

[Kept rest of mail so Michal can see it]

>
> I got a "No matching code found" when I use markup_oops.pl parse a error in a x8664 module.
>
> cat e.c
> #include <linux/version.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
>
>
> int init_module(void)
> {
> char *buf = 0;
>
> buf[0] = 3;
>
> return 0;
> }
>
> void cleanup_module(void)
> {
> //char *buf = 0;
>
> //buf[0] = 3;
> }
>
> MODULE_AUTHOR("Hui Zhu");
> MODULE_LICENSE("GPL");
>
>
> 0000000000000000 <init_module>:
> init_module():
> /home/teawater/study/kernel/stack2core/example/e.c:10
> 0: c6 04 25 00 00 00 00 movb $0x3,0x0
> 7: 03 /home/teawater/study/kernel/stack2core/example/e.c:13
> 8: 31 c0 xor %eax,%eax
> a: c3 retq b: 0f 1f 44 00 00 nopl
> 0x0(%rax,%rax,1)
>
> 0000000000000010 <cleanup_module>:
> cleanup_module():
> /home/teawater/study/kernel/stack2core/example/e.c:20
> 10: f3 c3 repz retq 12: 90 nop
> 13: 90 nop Disassembly of section .modinfo:
>
> This is because the faulting instruction "movb $0x3,0x0" is the first line of the range.
>
> In the markup_oops.pl:
> main::(./scripts/markup_oops.pl:245):
> 245: if (InRange($1, $target)) {
> DB<2> p $line
> ffffffffa001b000: c6 04 25 00 00 00 00 movb $0x3,0x0
> DB<3> p $counter
> 0
>
> It just set $center in next loop.
> So it cannot get the $center.
>
> And even if $center is set to the right value 0.
> if ($center == 0) {
> print "No matching code found \n";
> exit;
> }
>
> So I make a patch change this part to:
> }
> if ($state == 1) {
> And this is another part is not OK too:
> if ($center == 0) {
> The first line $center will be 0, so I change the default value and decide to:
> my $center = -1;
> if ($center == -1) {
>
> Thanks,
> Hui
>
> Signed-off-by: Hui Zhu <teawater@xxxxxxxxx>
>
> ---
> scripts/markup_oops.pl | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> --- a/scripts/markup_oops.pl
> +++ b/scripts/markup_oops.pl
> @@ -214,7 +214,7 @@ if ($module ne "") {
>
> my $counter = 0;
> my $state = 0;
> -my $center = 0;
> +my $center = -1;
> my @lines;
> my @reglines;
>
> @@ -246,7 +246,8 @@ while (<FILE>) {
> $state = 1;
> }
> }
> - } else {
> + }
> + if ($state == 1) {
> if ($line =~ /^([a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]+)\:/) {
> my $val = $1;
> if (!InRange($val, $target)) {
> @@ -269,7 +270,7 @@ if ($counter == 0) {
> exit;
> }
>
> -if ($center == 0) {
> +if ($center == -1) {
> print "No matching code found \n";
> exit;
> }
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/