<div dir="ltr">We try to find a function based on the mangled symbol name <span style="font-size:12.8000001907349px">and it fails as they do not match (looking for </span>_ZN5myIntC1Ei while the executable contains _ZN5myIntC2Ei)<span style="font-size:12.8000001907349px">. We can do a search based on de-mangled name but if the </span>executable will contain both _ZN5myIntC1Ei and _ZN5myIntC2Ei then we will find both of them as they de-mangle to the same name (<span style="font-size:12.8000001907349px">myInt::myInt(int)</span>) because the only difference between them is that one of them should be called when constructing an object of type myInt (_ZN5myIntC1Ei) and the other one should be called when constructing an object with base class of myInt (_ZN5myIntC2Ei).</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 8, 2015 at 12:46 PM, Azat Khuzhin <span dir="ltr"><<a href="mailto:a3at.mail@gmail.com" target="_blank">a3at.mail@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Apr 08, 2015 at 12:21:23PM +0100, Tamas Berghammer wrote:<br>
> I am compiling the following code with clang TOT (clang version 3.7.0<br>
> (trunk 234376) (llvm/trunk 234392) Target: x86_64-unknown-linux-gnu Thread<br>
> model: posix) with the following command:<br>
><br>
> === source ===<br>
> class myInt {<br>
> public: myInt(int _x) : theValue(_x) {}<br>
> private: int theValue;<br>
> };<br>
><br>
> int main() {<br>
>     myInt x{3};<br>
>     return 0;<br>
> }<br>
><br>
> === compile command ===<br>
> ./bin/clang++ --std=c++11 ~/tmp/C12.cpp<br>
><br>
> After compilation I see a symbol created for the constructor with name<br>
> "_ZN5myIntC2Ei" what is the base object constructor but I don't have a<br>
> symbol for "_ZN5myIntC1Ei" what would be the complete object constructor.<br>
<br>
</span>You need to demangle symbol, since C++ do name mangling to support<br>
functions with identical names and different arguments for example.<br>
<br>
You could use c++filt for this:<br>
$ c++filt _ZN5myIntC2Ei<br>
myInt::myInt(int)<br>
<span class=""><br>
> This issue cause us some problem in LLDB during expression evaluation so I<br>
> am interested if it is a bug (and clang should generate both symbol as gcc<br>
> do) or it is an intended behavior as an optimization. In either case I<br>
> would appreciate if someone can give me an idea about what is the case when<br>
> only one of the symbol is emitted so I can handle that case in LLDB<br>
> properly.<br>
<br>
</span>What problem in lldb?<br>
</blockquote></div><br></div>