<div dir="ltr">just in case, <div>I'm wondering if your compilation commands explicitly contain <div><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">--sysroot or </span>-isysroot, i.e. see </div><div><a href="https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html">https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html</a><br></div></div><div>(these are gcc docs, but clang supports these options (since clang tries to be a drop-in replacement for gcc).</div><div>Kind regards,</div><div>Alexander Shaposhnikov</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 23, 2018 at 12:52 AM, Иванов Игорь via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello everyone! It seems that my previous email got tumbled away as a html attachment, so I've removed all the formating in hope that helps.<br>
<br>
I am writing a tool using clang's  tooling::RefactoringTool  and want to apply it to ARM targeted sources. Those rely on their own sysroot to compile, which is incomplete and basically contains only lib and usr directories with proprietary stuff. Its  /usr/include  headers also differ from my system ones - so when parsing my sources with clang tool I get a lot of parsing errors related to header ordering, etc. And of course, with vendor-provided gcc4.8 everything is fine, which led me to a conclusion there's something wrong with how I use clang.<br>
<br>
I've tried to surpass the problem by copying my  /lib/clang/5.0.1/include  to this sysroot (so clang builtin headers would work correctly with new include & lib) and changing my  compile_commands.json  to use  -nostdinc++ -isystem /arm-hisiv300-linux/target/<wbr>usr/include -isystem /arm-hisiv300-linux/gcc/<wbr>include  - so clang wouldn't rely on system headers.<br>
<br>
Unforntunately it doesn't fool clang - it still tries to search for some headers in my host system:<br>
<br>
$ arm-hisiv300-linux/bin/my-tool src/grabcommon/rtp_assemblers.<wbr>cpp<br>
In file included from src/grabcommon/rtp_assemblers.<wbr>cpp:1:<br>
...<br>
In file included from /arm-hisiv300-linux/target/<wbr>usr/include/limits.h:125: <- here #include_next is used to access compiler-specific <limits.h><br>
In file included from /arm-hisiv300-linux/bin/../<wbr>lib/clang/5.0.1/include/<wbr>limits.h:37: <- here clang #include_next <limits.h><br>
>>> /usr/include/limits.h:145:5 <<< error: function-like macro '__GLIBC_USE' is not defined <- here I'd expect /arm-hisiv300-linux/target/<wbr>usr/include/limits.h, but get system one<br>
#if __GLIBC_USE (IEC_60559_BFP_EXT)<br>
<br>
I believe I have to pass "sysroot" directory as an argument to my tool and somehow construct RefactoringTool / CompilationDatabase instance so it take advantage of needed include directory, but how? Or am I entirely wrong and this calls for drastic measures like recompiling clang/LLVM for my needs? I am aware that I can  mount --bind my/usr/include /usr/include  (it works!), or put everything to some arm-based distro and use qemu, so instead of cross-compiling I just compile in place. However my intention is that the tool could be used as simple as  $ my-tool --sysroot /dir file.cpp . So what are my options?<br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>