<div dir="ltr">I agree that LinkingContext should be the right place to have a function for demangling. Such feature is needed. It'd be useful in many situations such as printing an error message or logging. But I'd want to keep the number of API's each LinkingContext needs to support minimum, at least for now, as we can add more as we need it.<div class="gmail_extra">


<br><div class="gmail_quote">On Tue, Apr 1, 2014 at 9:19 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


Hi Nick, Bigcheese,<br>
<br>
When lld is used to link C++ code, it would be required to demangle symbol names by default/user driven option.<br>
<br>
The Gnu linker has the following options :-<br>
<br>
--demangle=[style]<br>
--no-demangle<br>
<br>
I found that clang/llvm-symbolizer use __cxx_demangle function.<br>
<br>
I would think that lld also need to call the same function, and I think the way we want to demangle is to have the function in LinkingContext as various flavors may choose to use different API's to demangle symbol names.<br>



<br>
The API's that would be in LinkingContext would be :-<br>
<br>
        * virtual bool canDemangle()  = 0; // Does the flavor provide a way to demangle symbol names ?<br>
        * virtual std::string demangle(StringRef symbolName) = 0; // demangle the symbol name<br></blockquote><div><br></div><div>I wouldn't add canDemangle, but instead add "virtual std::string demangle(StringRef symbolName)" with the default implementation that returns a given string as is. Override the function if you want to support demangling. Do nothing if you don't.</div>


<div> </div><div>With this approach you can simply call demangle() unconditionally. If you are lucky you'll get a demangled symbol name, and if not, you'll get a fallback string.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



Thoughts / Suggestions ?<br>
<br>
Thanks<span><font color="#888888"><br>
<br>
Shankar Easwaran<br>
<br>
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation<br>
<br>
</font></span></blockquote></div><br></div></div>