markup_oops.pl: fix get "No matching code found" when first line of range is the faulting instruction
PATCH 1/1 markup_oops.pl: fix get "No matching code found" when first line of range is the faulting instruction
Sorry guys, the prev mail for this patch is ugly.
I make a new mail for 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 $lineffffffffa001b000: 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
---scripts/markup_oops.pl | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
scripts/markup_oops.pl +0 -0
@@ -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;
}Quoted 2 lines · Hui Zhu
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]
Quoted 112 lines
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 $lineffffffffa001b000: c6 04 25 00 00 00 00 movb $0x3,0x0
DB<3> p $counter
0It 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,
HuiSigned-off-by Hui Zhu <[email protected]>---
scripts/markup_oops.pl| 7 ++++---1 file changed, 4 insertions(+), 3 deletions(-)scripts/markup_oops.pl +4
-3@@ -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; }
Quoted 4 lines · Sam Ravnborg
Quoted 2 lines · Hui Zhu
Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.
Quoted 8 lines
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]
Quoted 1 line
Thanks Sam. And I make a small patch to make get_script.pl can output Michal Marek.
Hui
--- MAINTAINERS | 4 ++++ 1 file changed, 4 insertions(+)
MAINTAINERS +4 -0
@@ -3086,6 +3086,10 @@ L: [email protected] S: Maintained F: fs/autofs4/ +KERNEL SCRIPT +M: Michal Marek <[email protected]> +F: scripts/* + KERNEL BUILD M: Michal Marek <[email protected]> T: git git://repo.or.cz/linux-kbuild.git for-next
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 38 lines · Joe Perches
Quoted 30 lines · Hui Zhu
Quoted 4 lines · Sam Ravnborg
Quoted 2 lines · Hui Zhu
Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.Quoted 8 lines
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]
Quoted 1 line
Thanks Sam. And I make a small patch to make get_script.pl can output Michal Marek.
Hui
Signed-off-by Hui Zhu <[email protected]>---
MAINTAINERS | 4 ++++1 file changed, 4 insertions(+)MAINTAINERS +0
-0@@ -3086,6 +3086,10 @@ L: [email protected]S: Maintained
F:fs/autofs4/MAINTAINERS
Quoted 4 lines
MAINTAINERS +4
-0+KERNEL SCRIPT +M: Michal Marek <[email protected]> +F: scripts/* +probably not a good idea.
Quoted 9 lines
Maybe add
F: scripts/markup_oops.pl
F: scripts/mk*to KERNEL BUILD
What about this?
--- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+)
MAINTAINERS +2 -0
@@ -3095,6 +3095,8 @@ S: Maintained F: Documentation/kbuild/ F: Makefile F: scripts/Makefile.* +F: scripts/markup_oops.pl +F: scripts/mk* KERNEL JANITORS L: [email protected]
Hui Zhu napsal(a):
Quoted 11 lines
What about this?
Signed-off-by Hui Zhu <[email protected]>--- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+)
MAINTAINERS S: Maintained · line 3102
Quoted 8 lines
MAINTAINERS +2
-0@@ -3095,6 +3095,8 @@ S: Maintained F: Documentation/kbuild/ F: Makefile F: scripts/Makefile.* +F: scripts/markup_oops.pl +F: scripts/mk* KERNEL JANITORS L: [email protected]
(somehow I was un-CCed again)
I don't know if we really need to mention every single script that has no "real" maintainer in the kbuild section. As noted by Joe, adding scripts/* is also not a good idea. scripts/get_maintainer.pl parses
Signed-off-by: lines, so after the first commit, my email should appear in the output anyway. For people reading the MAINTAINERS file themselves, what about this one?
Subject: [PATCH] MAINTAINERS: add a few more patterns to kbuild
Also, add a note that "unmaintained" files below scripts/ should go via the kbuild tree (best current practice).
MAINTAINERS +4 -1
@@ -3088,7 +3088,7 @@ L: [email protected] S: Maintained F: fs/autofs4/ -KERNEL BUILD +KERNEL BUILD + files below scripts/ (unless maintained elsewhere) M: Michal Marek <[email protected]> T: git git://repo.or.cz/linux-kbuild.git for-next T: git git://repo.or.cz/linux-kbuild.git for-linus
@@ -3097,6 +3097,9 @@ S: Maintained F: Documentation/kbuild/ F: Makefile F: scripts/Makefile.* +F: scripts/basic/ +F: scripts/mk* +F: scripts/package/ KERNEL JANITORS L: [email protected]
Michal Marek
AppliedSam Ravnborg napsal(a):
Quoted 6 lines · Hui Zhu
Quoted 2 lines
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.
Thanks. I need to improve my filter :).
Quoted 8 lines
Quoted 8 lines
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, applied with a slightly shortened changelog.
Michal