svn commit: r290193 - head/gnu/usr.bin/gdb/kgdb
Zbigniew Bodek
zbb at FreeBSD.org
Fri Oct 30 12:37:41 UTC 2015
Author: zbb
Date: Fri Oct 30 12:37:40 2015
New Revision: 290193
URL: https://svnweb.freebsd.org/changeset/base/290193
Log:
Use PCB/LR from PCB rather from stack on armv7-gdb
The kernel dump does not store these values on the stack.
Use PCB structure to resolve PC and LR properly.
Submitted by: Wojciech Macek <wma at semihalf.com>
Reviewed by: jhb, kib
Obtained from: Semihalf
Sponsored by: Juniper Networks Inc.
Differential Revision: https://reviews.freebsd.org/D4013
Modified:
head/gnu/usr.bin/gdb/kgdb/trgt_arm.c
Modified: head/gnu/usr.bin/gdb/kgdb/trgt_arm.c
==============================================================================
--- head/gnu/usr.bin/gdb/kgdb/trgt_arm.c Fri Oct 30 12:21:37 2015 (r290192)
+++ head/gnu/usr.bin/gdb/kgdb/trgt_arm.c Fri Oct 30 12:37:40 2015 (r290193)
@@ -63,7 +63,7 @@ kgdb_trgt_fetch_registers(int regno __un
#ifndef CROSS_DEBUGGER
struct kthr *kt;
struct pcb pcb;
- int i, reg;
+ int i;
kt = kgdb_thr_lookup_tid(ptid_get_pid(inferior_ptid));
if (kt == NULL)
@@ -76,12 +76,8 @@ kgdb_trgt_fetch_registers(int regno __un
supply_register(i, (char *)&pcb.pcb_regs.sf_r4 +
(i - (ARM_A1_REGNUM + 4 )) * 4);
}
- if (pcb.pcb_regs.sf_sp != 0) {
- if (kvm_read(kvm, pcb.pcb_regs.sf_sp + 4 * 4, ®, 4) != 4)
- warnx("kvm_read :%s", kvm_geterr(kvm));
- else
- supply_register(ARM_PC_REGNUM, (char *)®);
- }
+ supply_register(ARM_PC_REGNUM, (char *)&pcb.pcb_regs.sf_pc);
+ supply_register(ARM_LR_REGNUM, (char *)&pcb.pcb_regs.sf_lr);
#endif
}
More information about the svn-src-all
mailing list