----- Original Message -----
Hi Aaron,
I haven't investigated why, but I immediately bumped into a bug
in your patch that needs to be addressed. It will not disassemble
a single instruction (i.e. "dis <address>") unless:
The bug is caused by this part of the 2/2 patch:
@@ -1655,8 +1660,15 @@ cmd_dis(void)
extract_hex(buf2, &curaddr, ':', TRUE);
+ if (forward) {
+ if (curaddr != target)
+ continue;
+ else
+ forward = FALSE;
+ }
+
if (!reverse)
- if ((req->flags & GNU_FUNCTION_ONLY) &&
+ if (!count_entered &&
(curaddr >= req->addr2))
break;
req->addr2 is 0 in this case, so it always breaks/fails.
Dave
(1) it is the first instruction in a function -- in which case
disassembles the whole function as expected, or
(2) unless a count argument is applied.
Here's an example with crash-7.1.2:
crash> dis vfs_read+32
0xffffffff8119d3c0 <vfs_read+32>: testb $0x1,0x44(%rdi)
crash> dis 0xffffffff8119d3c0
0xffffffff8119d3c0 <vfs_read+32>: testb $0x1,0x44(%rdi)
crash>
With your patch applied:
crash> dis vfs_read+32
crash> dis 0xffffffff8119d3c0
crash>
Although it does work with a count argument:
crash> dis vfs_read+32 1
0xffffffff8119d3c0 <vfs_read+32>: testb $0x1,0x44(%rdi)
crash> dis 0xffffffff8119d3c0 1
0xffffffff8119d3c0 <vfs_read+32>: testb $0x1,0x44(%rdi)
crash>
Dave
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility