<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hello William,<br>
<br>
I've landed a fix in r193685 to diagnose this instead of crashing:<br>
<br>
<code>clang/test/Index/ms-asm-no-target.cpp:8:3: error: MS-style
inline assembly is not available: Unable to find target for this
triple (no targets are registered)</code><br>
<br>
It's up to the embedder to decide what targets are linked in, so how
the API exposes that is still an open question.<br>
<br>
Alp.<br>
<br>
<br>
<div class="moz-cite-prefix">On 30/10/2013 11:50, William Ledoux
wrote:<br>
</div>
<blockquote cite="mid:1383133828679-4035432.post@n3.nabble.com"
type="cite">
<pre wrap="">Hello,
The following minimal code that contain MS-style inline assembly will
compile fine with clang, but libclang fails to parse it
(clang_parseTranslationUnit will return NULL).
void Break(){ __asm { int 3 } }
In yesterday's llvm and clang sources, the problem occurs in
ParseMicrosoftAsmStatement.
In the code below, because no target have been registered, the first line
will set TheTarget to NULL, and the second line will dereference TheTarget,
thus causing the problem.
const llvm::Target *TheTarget = llvm::TargetRegistry::lookupTarget(TT,
Error);
OwningPtr<llvm::MCRegisterInfo> MRI(TheTarget->createMCRegInfo(TT));
For what I understood, clang, in cc1_main, will initialize targets and
targets' functions with the following 4 lines, whereas libclang won't.
llvm::InitializeAllTargets();
llvm::InitializeAllTargetMCs();
llvm::InitializeAllAsmPrinters();
llvm::InitializeAllAsmParsers();
Just for testing purpose, adding those 4 lines somewhere in
clang_createIndex fixes the problem. I know this is probably wrong, but did
it just to see if more problems were hiding behind.
So my questions are:
1] Is it wanted that libclang doesn't initialize any target ?
2] if yes, how shloud it behave with MS inline assembly ?
3] if no, what is the proper way to make it initialize targets ?
Many thanks for you work !
William
--
View this message in context: <a class="moz-txt-link-freetext" href="http://clang-developers.42468.n3.nabble.com/libclang-crash-when-parsing-MS-style-inline-assembly-tp4035432.html">http://clang-developers.42468.n3.nabble.com/libclang-crash-when-parsing-MS-style-inline-assembly-tp4035432.html</a>
Sent from the Clang Developers mailing list archive at Nabble.com.
_______________________________________________
cfe-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
<a class="moz-txt-link-freetext" href="http://www.nuanti.com">http://www.nuanti.com</a>
the browser experts
</pre>
</body>
</html>