<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - lldb incorrectly reports multiple symbols when evaluating expressions (on Linux)"
   href="https://bugs.llvm.org/show_bug.cgi?id=35043">35043</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>lldb incorrectly reports multiple symbols when evaluating expressions (on Linux)
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lldb
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>All Bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>lldb-dev@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>davide@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>I think this is a bug in the expression parser/symtab handling, but I can't say
for sure.

given the test in lambdas/main.cpp, after we set a breakpoint on the printf()
and we try to evaluate the lambda, we get:

(lldb) target create "made"
Current executable set to 'made' (x86_64).
(lldb) b main.cpp:14
Breakpoint 1: where = made`main + 32 at main.cpp:14, address =
0x00000000004005f0
(lldb) r
Process 32489 launched:
'/home/davide/work/llvm-lldb/tools/lldb/packages/Python/lldbsuite/test/lang/cpp/lambdas/made'
(x86_64)
Process 32489 stopped
* thread #1, name = 'made', stop reason = breakpoint 1.1
    frame #0: 0x00000000004005f0 made`main(argc=1, argv=0x00007fffffffe128) at
main.cpp:14
   11
   12   int main (int argc, char const *argv[])
   13   {
-> 14       printf("Stop here\n"); //% self.runCmd("expression auto $add =
[](int a, int b) { return a + b; }")
   15                              //% self.expect("expression $add(2,3)",
substrs = ['= 5'])
   16       return 0;
   17   }
(lldb) expression auto $add = [](int a, int b) { return a + b; }
error: Multiple internal symbols found for 'a'
id = {0x000003cf}, range = [0x00007ffff77ec290-0x00007ffff77ec298), name="a"
id = {0x0000051b}, range = [0x00007ffff77ec290-0x00007ffff77ec298), name="a"
id = {0x000000fe}, range = [0x00007ffff77ec290-0x00007ffff77ec298), name="a"

error: Multiple internal symbols found for 'b'
id = {0x0000051a}, range = [0x00007ffff77cfe70-0x00007ffff77cfe78), name="b"
id = {0x000003ce}, range = [0x00007ffff77cfe70-0x00007ffff77cfe78), name="b"
id = {0x000000fd}, range = [0x00007ffff77cfe70-0x00007ffff77cfe78), name="b"


I don't think that's quite right, as `b` is not really redefined, it's just a
temporary binding that we use for the lambda argument.
This requires a little more knowledge of the internals than I currently have,
so hints on where to look would be appreciated.
I can attach the ELF object, if it's helpful</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>