[cfe-dev] libclang crash when parsing MS-style inline assembly

Kim Gräsman kim.grasman at gmail.com
Wed Oct 30 05:19:00 PDT 2013


Hi William,

On Wed, Oct 30, 2013 at 12:50 PM, William Ledoux
<william.ledoux at gmail.com> wrote:
>
> 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.

We added a similar workaround in a clang-based tool, first thing in main():

  llvm::InitializeNativeTarget();
  llvm::InitializeNativeTargetAsmParser();

This fixed a crash I saw when some Windows header with inline assembly
was parsed.

I can't vouch for its goodness, just wanted to add a data point.

- Kim



More information about the cfe-dev mailing list