[PATCH] Fix for "dis" command to correctly display the offset of disassembly code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For gdb-10.2, the disassembly code may start with "=>", which needs to
be stripped when calculating the address. Otherwise, parsing the address
will fail because the current code always assumes that it starts with the
"0x". For example:

  crash> gdb disassemble 0xffffffffa2317add
  Dump of assembler code for function native_queued_spin_lock_slowpath:
     0xffffffffa2317ab0 <+0>:     nopl   0x0(%rax,%rax,1)
     0xffffffffa2317ab5 <+5>:     push   %rbp
     0xffffffffa2317ab6 <+6>:     mov    %rsp,%rbp
     ...
     0xffffffffa2317ad3 <+35>:    mov    %edx,%eax
     0xffffffffa2317ad5 <+37>:    lock cmpxchg %ecx,(%rdi)
  => 0xffffffffa2317ad9 <+41>:    cmp    %eax,%edx
     0xffffffffa2317adb <+43>:    jne    0xffffffffa2317ac0 <native_queued_spin_lock_slowpath+16>
     0xffffffffa2317add <+45>:    pop    %rbp
     0xffffffffa2317ade <+46>:    xchg   %ax,%ax
     ...

Without the patch:
  crash> dis 0xffffffffa2317add -r | tail -5
  0xffffffffa2317ad3 <native_queued_spin_lock_slowpath+35>:	mov    %edx,%eax
  0xffffffffa2317ad5 <native_queued_spin_lock_slowpath+37>:	lock cmpxchg %ecx,(%rdi)
  0xffffffffa2317ad5 <native_queued_spin_lock_slowpath+37>:	cmp    %eax,%edx
                                                       ^^^
  0xffffffffa2317adb <native_queued_spin_lock_slowpath+43>:	jne    0xffffffffa2317ac0 <native_queued_spin_lock_slowpath+16>
  0xffffffffa2317add <native_queued_spin_lock_slowpath+45>:	pop    %rbp

With the patch:
  crash> dis 0xffffffffa2317add -r | tail -5
  0xffffffffa2317ad3 <native_queued_spin_lock_slowpath+35>:	mov    %edx,%eax
  0xffffffffa2317ad5 <native_queued_spin_lock_slowpath+37>:	lock cmpxchg %ecx,(%rdi)
  0xffffffffa2317ad9 <native_queued_spin_lock_slowpath+41>:	cmp    %eax,%edx
  0xffffffffa2317adb <native_queued_spin_lock_slowpath+43>:	jne    0xffffffffa2317ac0 <native_queued_spin_lock_slowpath+16>
  0xffffffffa2317add <native_queued_spin_lock_slowpath+45>:	pop    %rbp

Reported-by: Vernon Lovejoy <vlovejoy@xxxxxxxxxx>
Signed-off-by: Lianbo Jiang <lijiang@xxxxxxxxxx>
---
 kernel.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel.c b/kernel.c
index a42e6ad7d78c..6e98f5f6f6b1 100644
--- a/kernel.c
+++ b/kernel.c
@@ -2112,6 +2112,10 @@ cmd_dis(void)
 			rewind(pc->tmpfile);
 
 		while (fgets(buf2, BUFSIZE, pc->tmpfile)) {
+
+			if (STRNEQ(buf2, "=>"))
+				shift_string_left(buf2, 2);
+
 			strip_beginning_whitespace(buf2);
 
 			if (do_load_module_filter)
-- 
2.37.1

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux