[cfe-dev] argv[0] in libclang

Benjamin Kramer via cfe-dev cfe-dev at lists.llvm.org
Thu Oct 15 01:30:54 PDT 2015


Hi,

currently all libclang APIs that get passed a command line expect that
there is no argv[0] in the list, i. e. no binary name at the beginning
of the command line. We later fake one
(clang::createInvocationFromCommandLine) as the invocation gets passed
down into the proper clang machinery.

This is nasty because it changes the behavior if the original clang
invocation would've used a relative path to the standard library:

cmdline: /foo/bar/bin/clang -c test.cc
std lib in: /foo/bar/include/c++
libclang sees: -c test.cc

and the stdlib is lost. This comes up if we're using a compile
database, for example ycm is using it like this.

The only sane solution I see at the moment is to add a new libclang
API that expects a full argv. Any other ideas?

- Ben



More information about the cfe-dev mailing list