<div dir="ltr">Note that $ is a valid character in a MSVC-mangled symbol name.  So, I don't think it will work for that reason alone.  FWIW, I also don't like the {,,} syntax very much, but if you read on there's a simpler ! syntax that is pretty nice.<div><br></div><div>libfoo!symbolname</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Oct 26, 2017 at 9:30 AM Greg Clayton <<a href="mailto:clayborg@gmail.com">clayborg@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On Oct 25, 2017, at 6:05 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:</div><br class="m_-4296231386631588951Apple-interchange-newline"><div><div><div dir="auto"><br></div><br><div class="gmail_quote"><div dir="auto">On Wed, Oct 25, 2017 at 4:59 PM Jim Ingham via Phabricator <<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">jingham added a comment.<br>
<br>
Note, BTW, we absolutely need some way to say "this symbol from this library".  But first of all, if we're going to do this you need to be able to mix & match within an expression which you can't do with a flag to expr.   Instead you need something like:<br>
<br>
(lldb) expr $$MyDylib$my_symbol + $$MyOtherDylib$my_other_symbol<br>
<br>
That syntax is ugly, we should try to think of something better.  But the main point is this should only be necessary when lldb can't find a unique symbol.  When we can no intervention should be required.<br>
</blockquote><div dir="auto"><br></div><div dir="auto"><div dir="auto">+1, this is very useful.  The Microsoft syntax for this is here:</div><div dir="auto"><br></div><div dir="auto"><a href="https://docs.microsoft.com/en-us/visualstudio/debugger/context-operator-cpp" target="_blank">https://docs.microsoft.com/en-us/visualstudio/debugger/context-operator-cpp</a></div></div><div dir="auto"><br></div><div dir="auto">Which is pretty nice imo</div></div></div>
</div></blockquote></div><br></div><div style="word-wrap:break-word"><div>The main reason for using $ decorated names is because clang will accept them as identifiers and ask us about them. So "$$MyOtherDylib$my_other_symbol" is just a valid identifier and would result in a find external lexical decl call that we can fill in with whatever we want. </div><div><br></div><div>We don't really want to muck with clang by overloading stuff with symbols that would hose up clang (like the MSVC examples "{,,EXAMPLE.dll}SomeFunction", "EXAMPLE.dll!SomeFunction", and "{,,"a long, long, library name.dll"}g_Var". The { } and , characters would hose up the expression parser. So I would vote to use the $ decoration as Jim suggested.</div></div><div style="word-wrap:break-word"><div><br></div><div>Greg</div></div></blockquote></div>