[lldb-dev] [Bug 17385] New: registers unavailable in the TestFrames.py inferior stack frames above frame 0

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Sep 26 15:56:31 PDT 2013


http://llvm.org/bugs/show_bug.cgi?id=17385

            Bug ID: 17385
           Summary: registers unavailable in the TestFrames.py inferior
                    stack frames above frame 0
           Product: lldb
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at cs.uiuc.edu
          Reporter: matt.kopec at intel.com
    Classification: Unclassified

Compile options:

clang -g -O0 -m32     -c -o main.o main.c
clang  main.o -g -O0 -m32     -o "a.out"

Output:

mkopec1 at mkopec1-linux:~/dev/llvm/tools/lldb/test/python_api/frame$ lldb a.out 
Current executable set to 'a.out' (i386).
(lldb) b c
Breakpoint 1: where = a.out`c + 25 at main.c:40, address = 0x08048569
(lldb) r
Process 25392 launched:
'/home/mkopec1/dev/llvm/tools/lldb/test/python_api/frame/a.out' (i386)
a(val=1, ch='A')
b(val=2, ch='B')
Process 25392 stopped
* thread #1: tid = 25392, 0x08048569 a.out`c(val=3, ch='C') + 25 at main.c:40,
name = 'a.out', stop reason = breakpoint 1.1
    frame #0: 0x08048569 a.out`c(val=3, ch='C') + 25 at main.c:40
   37      
   38      int c(int val, char ch)
   39      {
-> 40          int my_val = val;
   41          char my_ch = ch;
   42          printf("c(val=%d, ch='%c')\n", val, ch);
   43          return val + 3 + ch;
(lldb) register read
General Purpose Registers:
       rax = 0x0000000000000043
       rbx = 0x00000000f77ad043
       rcx = 0x0000000000000003
       rdx = 0x0000000008048760
       rdi = 0x0000000000000000
       rsi = 0x0000000000000042
       rbp = 0x00000000ffdc0578
       rsp = 0x00000000ffdc0550
        r8 = 0x0000000000000000
        r9 = 0x0000000000000000
       r10 = 0x0000000000000000
       r11 = 0x0000000000000000
       r12 = 0x0000000000000000
       r13 = 0x0000000000000000
       r14 = 0x0000000000000000
       r15 = 0x0000000000000000
       rip = 0x0000000008048569
    rflags = 0x0000000000000286
        cs = 0x0000000000000023
        fs = 0x0000000000000000
        gs = 0x0000000000000063
        ss = 0x000000000000002b
        ds = 0x000000000000002b
        es = 0x000000000000002b

(lldb) up
frame #1: 0x08048544 a.out`b(val=2, ch='B') + 100 at main.c:35
   32          int my_val = val;
   33          char my_ch = ch;
   34          printf("b(val=%d, ch='%c')\n", val, ch);
-> 35          return c(val+1, ch+1);
   36      }
   37      
   38      int c(int val, char ch)
(lldb) register read
General Purpose Registers:
24 registers were unavailable.

(lldb) up
frame #2: 0x0804847f a.out`a(val=1, ch='A') + 111 at main.c:23
   20          char my_ch = ch;
   21          printf("a(val=%d, ch='%c')\n", val, ch);
   22          if (val <= 1)
-> 23              return b(val+1, ch+1);
   24          else if (val >= 3)
   25              return c(val+1, ch+1);
   26      
(lldb) register read
General Purpose Registers:
24 registers were unavailable.


All the registers are available in the first frame where the breakpoint on
function 'c' gets hit, as expected. However, going up in the call stack, there
are no registers available for these previous frames. At least some registers
should be available in the upper frames, such as the pc, stack pointer, etc.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20130926/0ede8e70/attachment.html>


More information about the lldb-dev mailing list