<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<br>
<blockquote
cite="mid:CEFB4A98-CB18-4BB0-8038-AAF04D91141B@apple.com"
type="cite">
<div><br>
</div>
<div>One immediate problem I see with this symbol is that it is a
mangled name with angle brackets (<>) in it. I don’t
believe this is proper mangling.</div>
<div><br>
</div>
<div>What I think is happening here is that the debug information
is telling you that the type of something is
char_traits<char> but treating that as a normal type
instead of a templated type. Then we’ll report a normal type
with a name containing angle brackets to Clang, and it’ll
produce bogus mangled names as you see.</div>
<div><br>
</div>
</blockquote>
This is what I see happening in the clang mangling code. In the
clang AST parsing when it attempts to do the mangled name
substitution it is failing when checking to see if it is a
basic_string<char,char_traits<char>,allocator<char>>.
It is failing when checking to see if char_traits<char> is a
char specialization of char_traits. In this check if fails the
dyn_cast to ClassTemplateSpecializationDecl which indicates to me
that is doesn't think it is a specialization of a template class. <br>
<br>
<blockquote
cite="mid:CEFB4A98-CB18-4BB0-8038-AAF04D91141B@apple.com"
type="cite">
<div>One way you can see what types are being reported for things
is by enabling the expression log:</div>
<div><br>
</div>
<div>(lldb) log enable -f /tmp/lldb.expr.log.txt lldb expr</div>
<div>(lldb) expr <i>your expression</i></div>
<div><i><br>
</i></div>
</blockquote>
I will take a look at the logs, and thanks for the pointers.<br>
<br>
- Alex<br>
<br>
<br>
</body>
</html>