[lldb-dev] [Bug 40189] New: LLDB expressions always error if a C++ local variable is named after a keyword
via lldb-dev
lldb-dev at lists.llvm.org
Sun Dec 30 16:38:47 PST 2018
https://bugs.llvm.org/show_bug.cgi?id=40189
Bug ID: 40189
Summary: LLDB expressions always error if a C++ local variable
is named after a keyword
Product: lldb
Version: 7.0
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: lldb-dev at lists.llvm.org
Reporter: jacobly.alt at gmail.com
CC: llvm-bugs at lists.llvm.org
This is only triggered by the debug info produced by gcc, not by clang. It
seems that uses of e.g. __func__ and __PRETTY_FUNCTION__ cause gcc to emit
debug info for a local variable named after the corresponding keyword, where
clang does not emit anything. I have confirmed this happens with g++ 8.2.0 and
lldb 7.0.0, 7.0.1, and trunk.
Quick repro:
$ echo 'int main(int argc){__func__;}' | g++ -g -x c++ - && lldb -o 'br s -n
main' -o 'pr la' -o 'expr argc' a.out
which produces
error: expected unqualified-id
which occurs because of a syntax error on the line
using $__lldb_local_vars::__func__;
Note that C programs don't generate such using lines, and therefore don't
exhibit this bug. I encountered this bug while debugging llvm (accidentally
compiled with gcc) in any function that uses assert, e.g. compileModule in
tools/llc/llc.cpp.
I confirmed that a workaround is to add hardcoded exceptions to
AddLocalVariableDecls in tools/lldb/source/Expression/ExpressionSourceCode.cpp,
but I'm not sure if that is the correct way to fix this.
--
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/20181231/dcf78b98/attachment.html>
More information about the lldb-dev
mailing list