[lldb-dev] [Bug 16191] New: LLDB fails to evaluate expressions that dereference a struct when inferior is built with recent Clang

Malea, Daniel daniel.malea at intel.com
Mon Jun 3 09:02:41 PDT 2013


Hi Greg, indeed I checked the DWARF and it looks like the definition for that struct is missing from the binary built with newer clang. In the non-working case, the DWARF contains only a declaration:

< 1><0x00000026>    DW_TAG_structure_type
                      DW_AT_name                  "Summarize"
                      DW_AT_declaration           yes(1)

As opposed to the full definition in the working case (clang 3.3.1):

< 1><0x0000002d>    DW_TAG_structure_type
                      DW_AT_name                  "Summarize"
                      DW_AT_byte_size             0x00000008
                      DW_AT_decl_file             0x00000001 /home/daniel/dev/llvm/tools/lldb/test/functionalities/data-formatter/rdar-9973865/main.cpp
                      DW_AT_decl_line             0x0000000b
< 2><0x00000035>      DW_TAG_member
                        DW_AT_name                  "first"
                        DW_AT_type                  <0x00000026>
                        DW_AT_decl_file             0x00000001 /home/daniel/dev/llvm/tools/lldb/test/functionalities/data-formatter/rdar-9973865/main.cpp
                        DW_AT_decl_line             0x0000000d
                        DW_AT_data_member_location  DW_OP_plus_uconst 0
                        DW_AT_accessibility         DW_ACCESS_public
< 2><0x00000044>      DW_TAG_member
                        DW_AT_name                  "second"
                        DW_AT_type                  <0x00000026>
                        DW_AT_decl_file             0x00000001 /home/daniel/dev/llvm/tools/lldb/test/functionalities/data-formatter/rdar-9973865/main.cpp
                        DW_AT_decl_line             0x0000000e
                        DW_AT_data_member_location  DW_OP_plus_uconst 4
                        DW_AT_accessibility         DW_ACCESS_public


So it definitely looks like a clang bug.. Do you know if there's a PR open that I can cross-reference?


Thanks,
Dan

From: Greg Clayton <gclayton at apple.com<mailto:gclayton at apple.com>>
Date: Friday, 31 May, 2013 5:40 PM
To: Daniel Malea <daniel.malea at intel.com<mailto:daniel.malea at intel.com>>
Subject: Fwd: [lldb-dev] [Bug 16191] New: LLDB fails to evaluate expressions that dereference a struct when inferior is built with recent Clang

Check the debug info and see if "summarize_t" or "Summarize" has a full definition available in the debug info. Feel free to send me the elf file and I will take a look.

Greg


Begin forwarded message:

From: bugzilla-daemon at llvm.org<mailto:bugzilla-daemon at llvm.org>
Subject: [lldb-dev] [Bug 16191] New: LLDB fails to evaluate expressions that dereference a struct when inferior is built with recent Clang
Date: May 31, 2013 1:59:32 PM PDT
To: lldb-dev at cs.uiuc.edu<mailto:lldb-dev at cs.uiuc.edu>

Bug ID  16191<http://llvm.org/bugs/show_bug.cgi?id=16191>
Summary LLDB fails to evaluate expressions that dereference a struct when inferior is built with recent Clang
Product lldb
Version unspecified
Hardware        PC
OS      All
Status  NEW
Severity        normal
Priority        P
Component       All Bugs
Assignee        lldb-dev at cs.uiuc.edu<mailto:lldb-dev at cs.uiuc.edu>
Reporter        daniel.malea at intel.com<mailto:daniel.malea at intel.com>
Classification  Unclassified


Created attachment 10606<x-msg://153/attachment.cgi?id=10606> [details]<x-msg://153/attachment.cgi?id=10606&action=edit>
expression evaluation log (failing) missing struct declaration

This issue appears when using ToT Clang to build the LLDB test suite. The
failure is reproducible in Test-rdar-9973865, either with the harness or
manually. To reproduce with the test, do:

python dotest --executable <path-to-lldb> -p Test-rdar-9973865

To reproduce manually:

cd <lldb-dir>/test/functionalities/data-formatter/rdar-9973865
make CC=/path/to/recent/clang
lldb ./a.out
(lldb) b 27
(lldb) run
(lldb) print *mine_ptr

Expected result: lldb prints contents of the struct.

Actual result:

error: incomplete type 'summarize_t' (aka 'Summarize') where a complete type is
required
note: forward declaration of 'Summarize'
error: 1 errors parsing expression


However, the 'summarize_t' type is declared in the main.cpp file, but LLDB
doesn't seem to pass this declaration on to Clang. Not sure if this is really
an LLDB bug, or an Clang bug.

________________________________
You are receiving this mail because:

  *   You are the assignee for the bug.

_______________________________________________
lldb-dev mailing list
lldb-dev at cs.uiuc.edu<mailto:lldb-dev at cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev





More information about the lldb-dev mailing list