scripts: improve the decodecode script
PATCH 1/1 scripts: improve the decodecode script
Quoted 1 line
From
80bf813c2bdc3538d823bb59c2611b40673e395aMon Sep 17 00:00:00 2001
From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode script
kerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx)
this patch updates the kernel copy to also have this functionality.
--- scripts/decodecode | 32 ++++++++++++++++++++++---------- 1 files changed, 22 insertions(+), 10 deletions(-)
scripts/decodecode +22 -10
@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }
@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("` fi +touch $T.oo if [ $marker -ne 0 ]; then - beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"` echo -n " .byte 0x" > $T.s - echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' | sed -e 's/>//g' >> $T.s + as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" | grep -v "\.text" | grep -v "^$" &> $T.ooo + cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo # and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fi - +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aa code=`echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'` echo -n " .byte 0x" > $T.s echo $code >> $T.s -as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o +as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v "\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa + +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trapping instruction/g" +echo +cat $T.aa +rm -f $T.o $T.s $T $T.oo $T.aa $T.aaa[5~
Signature · 8 lines
1.5.5.1 -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
Quoted 73 lines · Arjan van de Ven
From
80bf813c2bdc3538d823bb59c2611b40673e395aMon Sep 17 00:00:00 2001
From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode scriptkerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx)this patch updates the kernel copy to also have this functionality.
Signed-off-by Arjan van de Ven <[email protected]>---
scripts/decodecode| 32 ++++++++++++++++++++++----------1 files changed, 22 insertions(+), 10 deletions(-)scripts/decodecode +1
-1@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("`fi
+touch $T.oo
if [ $marker -ne 0 ]; thenscripts/decodecode +3
-1- beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"`echo -n " .byte 0x" > $T.sscripts/decodecode +5
-4- echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' | sed -e 's/>//g' >> $T.s + as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" | grep -v "\.text" | grep -v "^$" &> $T.ooo + cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo# and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fiscripts/decodecode +2
-1- +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aacode=
echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'
echo -n " .byte 0x" > $T.s
echo $code >> $T.sscripts/decodecode +0
-3-as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o
scripts/decodecode if [ $marker -eq 0 ]; then · line 76
Quoted 10 lines
scripts/decodecode +10
-0+as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v "\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa + +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trapping instruction/g" +echo +cat $T.aa +rm -f $T.o $T.s $T $T.oo $T.aa $T.aaa[5~
what is $T.aaa[5~ ? :-)
And why not call cleanup() here?
Signature · 1 line
"Sometimes the only way to stay sane is to go a little crazy."
Quoted 89 lines · On Wed, 29 Oct 2008 17:22:26 +0000 Américo Wang <[email protected]>…
Quoted 83 lines · Arjan van de Ven
From
80bf813c2bdc3538d823bb59c2611b40673e395aMon Sep 17 00:00:00 2001 From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode scriptkerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a2b:* 3b 73 04 cmp 0x4(%ebx),%esi
<-- trapping instruction 2e: 75 05
jne0x3530: 89 53 04 mov
%edx,0x4(%ebx) 33: eb 07 jmp0x3c
35: 89 53 08 mov %edx,0x8(%ebx)this patch updates the kernel copy to also have this functionality.
Signed-off-by Arjan van de Ven <[email protected]>---
scripts/decodecode| 32 ++++++++++++++++++++++----------1 files changed, 22 insertions(+), 10 deletions(-)scripts/decodecode +1
-1@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("`fi
+touch $T.oo
if [ $marker -ne 0 ]; thenscripts/decodecode +3
-1- beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"`echo -n " .byte 0x" > $T.sscripts/decodecode +1
-4- echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' |sed -e 's/>//g' >> $T.s
scripts/decodecode +2
-0+ as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" |grep -v "\.text" | grep -v "^$" &> $T.ooo
scripts/decodecode +2
-0+ cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo# and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fiscripts/decodecode +2
-1- +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aacode=
echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'
echo -n " .byte 0x" > $T.s
echo $code >> $T.sscripts/decodecode +2
-3-as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o +as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v"\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa
scripts/decodecode +4
-0+ +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trappinginstruction/g" +echo
scripts/decodecode
Quoted 2 lines
scripts/decodecode +2
-0+cat $T.aa +rm -f $T.o $T.s $T $T.oo $T.aa $T.aaa[5~what is $T.aaa[5~ ? :-)
Quoted 1 line
And why not call
cleanup()here?
good point
update below
Quoted 1 line
From
232b53efebc0bdba0be17dd0a695494faf3fdb60Mon Sep 17 00:00:00 2001
From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode script
kerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx)
this patch updates the kernel copy to also have this functionality.
--- scripts/decodecode | 32 ++++++++++++++++++++++---------- 1 files changed, 22 insertions(+), 10 deletions(-)
scripts/decodecode +22 -10
@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }
@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("` fi +touch $T.oo if [ $marker -ne 0 ]; then - beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"` echo -n " .byte 0x" > $T.s - echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' | sed -e 's/>//g' >> $T.s + as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" | grep -v "\.text" | grep -v "^$" &> $T.ooo + cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo # and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fi - +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aa code=`echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'` echo -n " .byte 0x" > $T.s echo $code >> $T.s -as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o +as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v "\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa + +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trapping instruction/g" +echo +cat $T.aa +cleanup
Signature · 7 lines
1.5.5.1 -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org
Américo Wang
Reviewed-by WANG CongQuoted 92 lines · Arjan van de Ven
Quoted 89 lines · On Wed, 29 Oct 2008 17:22:26 +0000 Américo Wang <[email protected]>…
Quoted 83 lines · Arjan van de Ven
From
80bf813c2bdc3538d823bb59c2611b40673e395aMon Sep 17 00:00:00 2001 From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode scriptkerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a2b:* 3b 73 04 cmp 0x4(%ebx),%esi
<-- trapping instruction 2e: 75 05
jne0x3530: 89 53 04 mov
%edx,0x4(%ebx) 33: eb 07 jmp0x3c
35: 89 53 08 mov %edx,0x8(%ebx)this patch updates the kernel copy to also have this functionality.
Signed-off-by Arjan van de Ven <[email protected]>---
scripts/decodecode| 32 ++++++++++++++++++++++----------1 files changed, 22 insertions(+), 10 deletions(-)scripts/decodecode +1
-1@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("`fi
+touch $T.oo
if [ $marker -ne 0 ]; thenscripts/decodecode +3
-1- beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"`echo -n " .byte 0x" > $T.sscripts/decodecode +1
-4- echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' |sed -e 's/>//g' >> $T.s
scripts/decodecode +2
-0+ as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" |grep -v "\.text" | grep -v "^$" &> $T.ooo
scripts/decodecode +2
-0+ cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo# and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fiscripts/decodecode +2
-1- +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aacode=
echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'
echo -n " .byte 0x" > $T.s
echo $code >> $T.sscripts/decodecode +2
-3-as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o +as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v"\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa
scripts/decodecode +4
-0+ +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trappinginstruction/g" +echo
scripts/decodecode
Quoted 2 lines
scripts/decodecode +2
-0+cat $T.aa +rm -f $T.o $T.s $T $T.oo $T.aa $T.aaa[5~what is $T.aaa[5~ ? :-)
Quoted 6 lines
Quoted 1 line
And why not call
cleanup()here?good point
update below
Looks good, thanks!
If you need, add:
Signature · 1 line
"Sometimes the only way to stay sane is to go a little crazy."
Quoted 74 lines · On Wed, 29 Oct 2008 10:00:45 -0700 Arjan van de Ven wrote:
From
80bf813c2bdc3538d823bb59c2611b40673e395aMon Sep 17 00:00:00 2001
From: Arjan van de Ven <[email protected]>
Date: Wed, 29 Oct 2008 09:57:07 -0700
Subject: [PATCH] scripts: improve the decodecode scriptkerneloops.org has been using an improved "decodecode" script, specifically it has a special marker that shows which line in the assembly the oops happened at, like this:
20: 83 e0 03 and $0x3,%eax 23: 09 d8 or %ebx,%eax 25: 85 db test %ebx,%ebx 27: 89 02 mov %eax,(%edx) 29: 74 0f je 0x3a 2b:* 3b 73 04 cmp 0x4(%ebx),%esi <-- trapping instruction 2e: 75 05 jne 0x35 30: 89 53 04 mov %edx,0x4(%ebx) 33: eb 07 jmp 0x3c 35: 89 53 08 mov %edx,0x8(%ebx)this patch updates the kernel copy to also have this functionality.
Signed-off-by Arjan van de Ven <[email protected]>--- scripts/decodecode | 32 ++++++++++++++++++++++---------- 1 files changed, 22 insertions(+), 10 deletions(-)scripts/decodecode +12
-10@@ -7,7 +7,7 @@ # AFLAGS=--32 decodecode < 386.oops cleanup() { - rm -f $T $T.s $T.o + rm -f $T $T.s $T.o $T.oo $T.aa $T.aaa exit 1 }@@ -44,21 +44,33 @@ if [ $marker -eq 0 ]; then marker=`expr index "$code" "\("` fi +touch $T.oo if [ $marker -ne 0 ]; then - beforemark=`echo "$code" | cut -c-$((${marker} - 1))` + echo All code >> $T.oo + echo ======== >> $T.oo + beforemark=`echo "$code"` echo -n " .byte 0x" > $T.s - echo $beforemark | sed -e 's/ /,0x/g' >> $T.s - as $AFLAGS -o $T.o $T.s - objdump -S $T.o - rm $T.o $T.s + echo $beforemark | sed -e 's/ /,0x/g' | sed -e 's/<//g' | sed -e 's/>//g' >> $T.s + as $AFLAGS -o $T.o $T.s &> /dev/null + objdump -S $T.o | grep -v "/tmp" | grep -v "Disassembly" | grep -v "\.text" | grep -v "^$" &> $T.ooo + cat $T.ooo >> $T.oo + rm -f $T.o $T.s $T.ooo # and fix code at-and-after marker code=`echo "$code" | cut -c$((${marker} + 1))-` fi - +echo Code starting with the faulting instruction > $T.aa +echo =========================================== >> $T.aa code=`echo $code | sed -e 's/ [<(]/ /;s/[>)] / /;s/ /,0x/g'` echo -n " .byte 0x" > $T.s echo $code >> $T.s -as $AFLAGS -o $T.o $T.s -objdump -S $T.o -rm $T $T.s $T.o
scripts/decodecode if [ $marker -eq 0 ]; then · line 76
Quoted 10 lines
scripts/decodecode +10
-0+as $AFLAGS -o $T.o $T.s &> /dev/null +objdump -S $T.o | grep -v "Disassembly" | grep -v "/tmp" | grep -v "\.text" | grep -v "^$" &> $T.aaa +cat $T.aaa >> $T.aa + +faultline=`cat $T.aaa | head -1 | cut -d":" -f2` + +cat $T.oo | sed -e "s/\($faultline\)/\*\1 <-- trapping instruction/g" +echo +cat $T.aa +rm -f $T.o $T.s $T $T.oo $T.aa $T.aaa[5~
Looks good with the exception of Américo's comments.
Thanks.
---
~Randy