Break points with latest SIS

Jiri Gaisler jiri at gaisler.se
Fri Feb 8 08:47:26 UTC 2019


Hello Sebastian,

here is a patch for RSB that improves sis debugging in gdb and on SMP systems:

* Correct break-point handling in gdb

* Detect and break on NULL pointer derefence (call/jump)

* Single stepping (stepi) in gdb/sis keeps focus on debugged cpu

* 'sim cpu' command shows active cpu in gdb, 'sim cpu x' switches gdb focus to cpu x (needs stepi afterwards)

* Trace buffer works in gdb

 I still have more fixes in the pipeline (symbol handling, tab expansion, documentation) but I thought I provide a patch of what I have now to help you in your debugging. I will also be away skiing next week so there will not be much progress in near term.

Below is a debug session of your failing SMP program as an example:


$ ~/src/gdb/sparc/gdb/gdb  ./sparc-rtems5/c/leon3/testsuites/smptests/smpswitchextension01.exe

Reading symbols from ./sparc-rtems5/c/leon3/testsuites/smptests/smpswitchextension01.exe...
(gdb) tar sim -leon3 -m 4
Connected to the simulator.
(gdb) load
(gdb) sim hi 5
trace history length = 5
(gdb) run
Starting program: /home/jiri/src/rtems/leon3mp2/sparc-rtems5/c/leon3/testsuites/smptests/smpswitchextension01.exe
Waking CPU 1


*** BEGIN OF TEST SMPSWITCHEXTENSION 1 ***
*** TEST VERSION: 5.0.0.03fcbb15d24e2eec41bac9f5dee30bbf7dc888b8-modified
*** TEST STATE: EXPECTED-PASS
*** TEST BUILD: RTEMS_DEBUG RTEMS_NETWORKING RTEMS_POSIX_API RTEMS_SMP
*** TEST TOOLS: 7.4.0 20181206 (RTEMS 5, RSB c41b9d0df7e5b4a5056ca50c2534380a44e92769, Newlib 3e24fbf6f)

Program received signal SIGSEGV, Segmentation fault.
0x4000a2e4 in _User_extensions_Thread_switch (heir=0x4
    0027aa8 <_RTEMS_tasks_Objects+3936>, executing
    =<optimized out>) at /home/jiri/ibm/src/rtems/rtems/cpukit
   /include/rtems/score/userextimpl.h:280
280          (*extension->thread_switch)( executing, heir );

(gdb) list
275    
276        while ( node != tail ) {
277          const User_extensions_Switch_control *extension =
278            (const User_extensions_Switch_control *) node;
279    
280          (*extension->thread_switch)( executing, heir );
281    
282          node = _Chain_Immutable_next( node );
283        }
284   

(gdb) sim cpu
active cpu: 1
(gdb) sim hi
   243329  4000a2f0  80a74016  cmp  %i5, %l6
   243331  4000a2f4  32bffffb  bne,a   0x000000004000a2e0
   243332  4000a2f8  c2076008  ld  [ %i5 + 8 ], %g1
   243334  4000a2e0  9210001c  mov  %i4, %o1
   243335  4000a2e4  9fc04000  call  %g1

(gdb) sim reg

      INS       LOCALS      OUTS     GLOBALS
   0:  40029740   F3000FC7   40027FC8   00000000
   1:  F34000E6   40029850   40027AA8   00000000
   2:  F30000E6   40006F04   40028238   00000013
   3:  40029740   40027FC8   0000000B   40029854
   4:  40027AA8   4002985C   80000000   80000000
   5:  00000000   40029858   40029010   00000000
   6:  40031240   400264B8   400311A8   40029740
   7:  40006FC8   40026400   4000A2E4   00000000

 psr: F3900FE7   wim: 00000004   tbr: 40000890   y: 00000A6A

  pc: 4000A2E4 = 9FC04000    call  %g1
 npc: 4000A2E8 = 90100013    mov  %l3, %o0
 IU in error mode

Run again

(gdb) load

(gdb) bre switcher
Breakpoint 1 at 0x40001794: file /home/jiri/ibm/src/rtems/rtems/c/src/../../testsuites/smptests/smpswitchextension01/init.c, line 109.

(gdb) run
Starting program: /home/jiri/src/rtems/leon3mp2/sparc-rtems5/c/leon3/testsuites/smptests/smpswitchextension01.exe
Waking CPU 1


*** BEGIN OF TEST SMPSWITCHEXTENSION 1 ***
*** TEST VERSION: 5.0.0.03fcbb15d24e2eec41bac9f5dee30bbf7dc888b8-modified
*** TEST STATE: EXPECTED-PASS
*** TEST BUILD: RTEMS_DEBUG RTEMS_NETWORKING RTEMS_POSIX_API RTEMS_SMP
*** TEST TOOLS: 7.4.0 20181206 (RTEMS 5, RSB c41b9d0df7e5b4a5056ca50c2534380a44e92769, Newlib 3e24fbf6f)

Breakpoint 1, switcher (self=0) at /home/jiri/ibm/src/rtems/rt
   ems/c/src/../../testsuites/smptests/smpswitchextension01/init.c:109
109    {
(gdb) sim cpu
active cpu: 0
(gdb) sim hi
   180980  40001794  9de3bfa0  save  %sp, -96, %sp
   180972  4000bb18  9de3bfa0  save  %sp, -96, %sp
   180973  4000bb1c  c206216c  ld  [ %i0 + 0x16c ], %g1
   180975  4000bb20  9fc04000  call  %g1
   180978  4000bb24  d0062170  ld  [ %i0 + 0x170 ], %o0
(gdb) sim cpu 1
active cpu: 1
(gdb) sim hi
   180992  400139fc  9207bff8  add  %fp, -8, %o1
   180993  40013a00  40001c79  call  0x000000004001abe4
   180994  40013a04  9010001b  mov  %i3, %o0
   180995  4001abe4  d0226004  st  %o0, [ %o1 + 4 ]
   180998  4001abe8  c2020000  ld  [ %o0 ], %g1
(gdb) stepi
0x4001abf0    274      return atomic_fetch_add_explicit( obj, arg, order );
(gdb)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: rsb-gdb-8.2.1-sis-2.12.patch
Type: text/x-patch
Size: 779 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/devel/attachments/20190208/66ee8102/attachment-0002.bin>


More information about the devel mailing list