You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2021/11/23 03:58:18 UTC

[incubator-nuttx] 01/02: tools/gdbinit: add sim:x86-m32 support

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 6268fbd208d6e67ff2f06f83f3579f9e8dc9c469
Author: chao.an <an...@xiaomi.com>
AuthorDate: Fri Nov 5 23:56:06 2021 +0800

    tools/gdbinit: add sim:x86-m32 support
    
    Signed-off-by: chao.an <an...@xiaomi.com>
---
 tools/nuttx-gdbinit | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/tools/nuttx-gdbinit b/tools/nuttx-gdbinit
index 89bb04e..742b6c3 100644
--- a/tools/nuttx-gdbinit
+++ b/tools/nuttx-gdbinit
@@ -46,7 +46,12 @@ define _examine_arch
   gdb.execute("set $_target_arch = \"i386:x86-64\"")
 
   # NOTE: we assume that sim has sim_bringup function
-  python if (type(gdb.lookup_global_symbol("sim_bringup")) is gdb.Symbol) : \
+  python if (type(gdb.lookup_global_symbol("sim_bringup")) is gdb.Symbol \
+             and _target_arch.name() == 'i386') : \
+  gdb.execute("set $_target_arch=\"sim:x86\"")
+
+  python if (type(gdb.lookup_global_symbol("sim_bringup")) is gdb.Symbol \
+             and _target_arch.name() == 'i386:x86-64') : \
   gdb.execute("set $_target_arch=\"sim:x86-64\"")
 end
 
@@ -133,6 +138,9 @@ define _save_tcb
   if ($_streq($_target_arch, "sim:x86-64") == 1)
     _save_tcb_simx86-64 $tcb
   end
+  if ($_streq($_target_arch, "sim:x86") == 1)
+    _save_tcb_simx86 $tcb
+  end
 end
 
 define _save_current_tcb
@@ -177,6 +185,9 @@ define _switch_tcb
   if ($_streq($_target_arch, "sim:x86-64") == 1)
     _switch_tcb_simx86-64 $tcb
   end
+  if ($_streq($_target_arch, "sim:x86") == 1)
+    _switch_tcb_simx86 $tcb
+  end
 
   # update _current_tcb
   set $_current_tcb = $tcb
@@ -381,6 +392,29 @@ define _switch_tcb_simx86-64
   set $rip = $tcb.xcp.regs[7]
 end
 
+# see nuttx/arch/sim/src/sim/up_internal.h
+define _save_tcb_simx86
+  set $tcb = (struct tcb_s *)$arg0
+  set $tcb.xcp.regs[0] = $ebx
+  set $tcb.xcp.regs[1] = $esi
+  set $tcb.xcp.regs[2] = $edi
+  set $tcb.xcp.regs[3] = $ebp
+  set $tcb.xcp.regs[4] = $sp
+  set $tcb.xcp.regs[5] = $pc
+
+  set $_pc_reg_idx = 5
+end
+
+define _switch_tcb_simx86
+  set $tcb = (struct tcb_s *)$arg0
+  set $ebx = $tcb.xcp.regs[0]
+  set $esi = $tcb.xcp.regs[1]
+  set $edi = $tcb.xcp.regs[2]
+  set $ebp = $tcb.xcp.regs[3]
+  set $sp  = $tcb.xcp.regs[4]
+  set $pc  = $tcb.xcp.regs[5]
+end
+
 define nxthread
   _examine_target
   _save_current_tcb