Commit 0139f1d9539395ca341e17060ae26f44f5f31434
Committed by
Michal Marek
1 parent
94a4708352
Exists in
master
and in
20 other branches
markup_oops.pl: fix for faulting instruction in the first line of a range
I got a "No matching code found" when I use markup_oops.pl parse a error in a x86_64 module. cat e.c 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; } The first line $center will be 0, so I change the default value to -1. Signed-off-by: Hui Zhu <teawater@gmail.com> Signed-off-by: Michal Marek <mmarek@suse.cz>
Showing 1 changed file with 4 additions and 3 deletions Side-by-side Diff
scripts/markup_oops.pl
... | ... | @@ -204,7 +204,7 @@ |
204 | 204 | |
205 | 205 | my $counter = 0; |
206 | 206 | my $state = 0; |
207 | -my $center = 0; | |
207 | +my $center = -1; | |
208 | 208 | my @lines; |
209 | 209 | my @reglines; |
210 | 210 | |
... | ... | @@ -236,7 +236,8 @@ |
236 | 236 | $state = 1; |
237 | 237 | } |
238 | 238 | } |
239 | - } else { | |
239 | + } | |
240 | + if ($state == 1) { | |
240 | 241 | if ($line =~ /^([a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]+)\:/) { |
241 | 242 | my $val = $1; |
242 | 243 | if (!InRange($val, $target)) { |
... | ... | @@ -259,7 +260,7 @@ |
259 | 260 | exit; |
260 | 261 | } |
261 | 262 | |
262 | -if ($center == 0) { | |
263 | +if ($center == -1) { | |
263 | 264 | print "No matching code found \n"; |
264 | 265 | exit; |
265 | 266 | } |