読者です 読者をやめる 読者になる 読者になる

linuxカーネルデバッグめも decodecodeでoopsの機械語列を逆アセンブル

linux kernel

φ(..)メモメモ
LinuxカーネルのDocumentation/oops-tracing.txtに書いてあったんですが、oopsの":Code"に表示される機械語列はscripts/decodecodeってスクリプトで逆アセンブルしてくれるんですね。
ちなみにoopsはfedoraのbugzillaから適当に探したもので試しました。

こんな風に実行すると

$ ./scripts/decodecode < oops.txt

こんな風に出力されると( ..)φメモメモ

:Code: 55 89 e5 3e 8d 74 26 00 8b 02 2b 01 75 0e 8b 42 04 2b 41 04 75 06 8b 42 08 2b 41 08 5d c3 66 90 55 89 e5 53 3e 8d 74 26 00 8b 02 <2b> 01 75 14 8b 42 04 2b 41 04 75 0c 0f b7 42 08 0f b7 59 08 29
All code
========
   0:	55                   	push   %ebp
   1:	89 e5                	mov    %esp,%ebp
   3:	3e 8d 74 26 00       	lea    %ds:0x0(%esi,%eiz,1),%esi
   8:	8b 02                	mov    (%edx),%eax
   a:*	2b 01                	sub    (%ecx),%eax     <-- trapping instruction
   e:	8b 42 04             	mov    0x4(%edx),%eax
  11:	2b 41 04             	sub    0x4(%ecx),%eax
  16:	8b 42 08             	mov    0x8(%edx),%eax
  19:	2b 41 08             	sub    0x8(%ecx),%eax
  1c:	5d                   	pop    %ebp
  1d:	c3                   	ret    
  1e:	66 90                	xchg   %ax,%ax
  20:	55                   	push   %ebp
  21:	89 e5                	mov    %esp,%ebp
  23:	53                   	push   %ebx
  24:	3e 8d 74 26 00       	lea    %ds:0x0(%esi,%eiz,1),%esi
  29:	8b 02                	mov    (%edx),%eax
  2b:*	2b 01                	sub    (%ecx),%eax     <-- trapping instruction
  2f:	8b 42 04             	mov    0x4(%edx),%eax
  32:	2b 41 04             	sub    0x4(%ecx),%eax
  37:	0f b7 42 08          	movzwl 0x8(%edx),%eax
  3b:	0f b7 59 08          	movzwl 0x8(%ecx),%ebx
  3f:	29                   	.byte 0x29

Code starting with the faulting instruction
===========================================
   0:	2b 01                	sub    (%ecx),%eax
   4:	8b 42 04             	mov    0x4(%edx),%eax
   7:	2b 41 04             	sub    0x4(%ecx),%eax
   c:	0f b7 42 08          	movzwl 0x8(%edx),%eax
  10:	0f b7 59 08          	movzwl 0x8(%ecx),%ebx
  14:	29                   	.byte 0x29
  15:	90                   	nop
  16:	90                   	nop
  17:	90                   	nop