This is my code which I have used to initialize the parser <div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<font class="Apple-style-span" face="'arial narrow', sans-serif">llvm::raw_ostream *os = NULL;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> llvm::raw_ostream *ps = NULL;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> </font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> const DiagnosticOptions diagop;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> bool OwnsOutputStream=false;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> TextDiagnosticPrinter diagClient(*os,diagop,OwnsOutputStream);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> Diagnostic diags(&diagClient);</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> LangOptions opts;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> TargetOptions to;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> const std::string& triple = LLVM_HOSTTRIPLE;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> to.ABI="";</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> to.CXXABI="itanium";</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> to.CPU="";</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> to.Features.clear();</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> to.Triple=triple;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> TargetInfo* target = TargetInfo::CreateTargetInfo(diags,to);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> SourceManager sm(diags);</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> FileManager fm;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> HeaderSearch headers(fm);</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"><br>
</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> </font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> HeaderSearchOptions hso;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> hso.ResourceDir="/u/parijat/llvm2/llvm/Release/lib/clang/2.8";</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> hso.AddPath(llvm::StringRef("/usr/local/include"),clang::frontend::Angled,true,false,false);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> hso.AddPath(llvm::StringRef("/usr/include"),clang::frontend::Angled,true,false,false);</font></blockquote></div><div>
<blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> ApplyHeaderSearchOptions(headers,hso,opts,llvm::Triple(llvm::sys::getHostTriple()));</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> Preprocessor pp(diags,opts,*target,sm,headers);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"><br></font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> PreprocessorOptions ppo;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> FrontendOptions feo;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> InitializePreprocessor(pp,ppo,hso,feo);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> </font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">const FileEntry* File=fm.getFile(argv_[1]);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"> if(!File)</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   {printf("File doesn't exist!");</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">    return 0;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">  }</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif"><br></font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   sm.createMainFileID(File);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   Builtin::Context builtins(*target);</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   unsigned size;</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   ASTConsumer ac;</font></blockquote></div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   ASTContext acx(opts,sm,*target,pp.getIdentifierTable(),pp.getSelectorTable(),pp.getBuiltinInfo(),10000);</font></blockquote>
</div><div><blockquote><font class="Apple-style-span" face="'arial narrow', sans-serif">   ParseAST(pp,&ac,acx,false);</font></blockquote></div></blockquote><div><div><br></div>The above program segfaults out at ParseAST when it runs across a #include ( with stdio or anything else) in the test file. It works fine when no headers are included . </div>
<div><br></div><div>Can someone please shed some light on where I might be going wrong . </div><div><br></div><div>Thanks a lot in advance </div><div>Parijat  </div><div><br></div><div><div class="gmail_quote">On Mon, Sep 20, 2010 at 11:48 AM, Parijat Banerjee <span dir="ltr"><<a href="mailto:parijat.pcr@gmail.com">parijat.pcr@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I am having problems parsing programs which include standard header files in my own parser using clang libraries . After v2.6 the InitHeaderSearch and InitPreprocessor header files seem to have been replaced. Can someone tell me how do i initialize the preprocessor and headersearch in the current branch (2.8) so that my parser doesn't segfault out when it runs across a standard header inclusion in a test file ? <div>

<br></div><div>Thanks and Regards, </div><div>Parijat </div>
</blockquote></div><br></div>