InitHeaderSearch replacement ?

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 ?

Thanks and Regards,
Parijat

This is my code which I have used to initialize the parser

llvm::raw_ostream *os = NULL;

llvm::raw_ostream *ps = NULL;

const DiagnosticOptions diagop;

bool OwnsOutputStream=false;

TextDiagnosticPrinter diagClient(*os,diagop,OwnsOutputStream);

Diagnostic diags(&diagClient);

LangOptions opts;

TargetOptions to;

const std::string& triple = LLVM_HOSTTRIPLE;

to.ABI=“”;

to.CXXABI=“itanium”;

to.CPU=“”;

to.Features.clear();

to.Triple=triple;

TargetInfo* target = TargetInfo::CreateTargetInfo(diags,to);

SourceManager sm(diags);

FileManager fm;

HeaderSearch headers(fm);

HeaderSearchOptions hso;

hso.ResourceDir=“/u/parijat/llvm2/llvm/Release/lib/clang/2.8”;

hso.AddPath(llvm::StringRef(“/usr/local/include”),clang::frontend::Angled,true,false,false);

hso.AddPath(llvm::StringRef(“/usr/include”),clang::frontend::Angled,true,false,false);

ApplyHeaderSearchOptions(headers,hso,opts,llvm::Triple(llvm::sys::getHostTriple()));

Preprocessor pp(diags,opts,*target,sm,headers);

PreprocessorOptions ppo;

FrontendOptions feo;

InitializePreprocessor(pp,ppo,hso,feo);

const FileEntry* File=fm.getFile(argv_[1]);

if(!File)

{printf(“File doesn’t exist!”);

return 0;

}

sm.createMainFileID(File);

Builtin::Context builtins(*target);

unsigned size;

ASTConsumer ac;

ASTContext acx(opts,sm,*target,pp.getIdentifierTable(),pp.getSelectorTable(),pp.getBuiltinInfo(),10000);

ParseAST(pp,&ac,acx,false);

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 .

Can someone please shed some light on where I might be going wrong .

Thanks a lot in advance
Parijat