<div dir="ltr">Hi,<div><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><p>Right now, I don't understand why I need to convert the builtin headers to strings, but of course I would like to have a look to the script. Any help is very welcomed. You can send it directly to me email if you prefer.</p>
<blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(0,0,131);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex;color:rgb(80,0,80)"><pre></pre></blockquote></div></blockquote><div>By converting them to strings, you can produce a binary that doesn't care about the location of the builtin headers. Static linked binaries will specially benefit from this, as you won't need to ship the builtin headers with your program.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><p>- "esbmc_intrinsics.h" is always that string? is that a real file? <br></p></blockquote><div>Same as the builtin headers, it's a virtual file "represented" by a string.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><p>- What are "path", "instrinsics" and "compiler_string" in your code?</p></div></blockquote><div>So, 'path' is the absolute path to the program under verification (I'm developing a bounded model checker), 'instrinsics' is the content of the virtual file 'esbmc_intrinsics.h' and 'compiler_string' is a vector that contains the arguments given to clang (e.g., -funsigned-char, defines, etc.)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><p>Could you tell me then how to obtain clang 3.8?</p></blockquote><div>You can build llvm+clang 3.8: <a href="http://llvm.org/docs/GettingStarted.html">http://llvm.org/docs/GettingStarted.html</a></div><div><br></div><div>If you use Fedora 24, it has the dynamic libraries available for download (not sure why static ones are not available anymore, though).</div><div><br></div><div>Cheers,</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<p>Thanks again.</p><span class=""><br><br><div><em>El día 26 feb 2016 14:06, Pedro Delgado Perez <<a href="mailto:pedro.delgadoperez@mail.uca.es" target="_blank">pedro.delgadoperez@mail.uca.es</a>> escribió:</em></div></span><blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(0,0,68);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><p><span class=""></span></p><p>Sorry about the format of the previous message. I write it again here.</p>
<br>
<p>Sorry, Jacob, no idea on how to use your solution in my code. Manuel, nothing is written in your message I think...<br>
My code is something like this:</p>
<p>static cl::OptionCategory MyToolCategory("My tool options");<br><br> int main(int argc, const char **argv) {<br>   CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);   <br>   ClangTool Tool(OptionsParser.getCompilations(),                  <br>   OptionsParser.getSourcePathList());   <br>   return Tool.run(newFrontendActionFactory<SyntaxOnlyAction>().get()); <br>}</p>
<p>What I was doing by the moment is to process argv before creating the object OptionsParser and then include internal Clang headers, but I guess I can't do that when using Json compilation database. Could you help me with that? Otherwise, is there a way to ship in the executable all the necessary headers so that the user does not require to have clang installed?</p>
<br>
<span class=""><p>Thanks.</p><br><br><div><em>El día 26 feb 2016 14:03, Pedro Delgado Perez <<a href="mailto:pedro.delgadoperez@mail.uca.es" target="_blank">pedro.delgadoperez@mail.uca.es</a>> escribió:</em></div></span><blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(0,0,68);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><p><span class=""></span></p><p>Sorry, Jacob, no idea on how to use your solution in my code. Manuel, nothing is written in your message I think...</p>
<p>My code is something like this:</p>
<pre><span>static</span> cl::OptionCategory MyToolCategory(<span>"My tool options"</span>);</pre><pre> int main(int argc, const char **argv) {<br>   <a title="A parser for options common to all command-line Clang tools." href="http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1CommonOptionsParser.html" target="_blank">CommonOptionsParser</a> OptionsParser(argc, argv, MyToolCategory);   <a title="Utility to run a FrontendAction over a set of files." href="http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1ClangTool.html" target="_blank">ClangTool</a> Tool(OptionsParser.getCompilations(),                  OptionsParser.getSourcePathList());   return Tool.<a title="Runs an action over all files specified in the command line." href="http://clang.llvm.org/doxygen/classclang_1_1tooling_1_1ClangTool.html#acec91f63b45ac7ee2d6c94cb9c10dab3" target="_blank">run</a>(newFrontendActionFactory<SyntaxOnlyAction>().get()); }</pre><p>What I was doing by the moment is to process argv before creating the object OptionsParser and then include internal Clang headers, but I guess I can't do that when using Json compilation database. Could you help me with that? Otherwise, is there a way to ship in the executable all the necessary headers so that the user does not require to have clang installed?</p>
<p>Thanks.</p><span class=""><br><br><div><em>El día 26 feb 2016 10:37, Pedro Delgado Perez <<a href="mailto:pedro.delgadoperez@mail.uca.es" target="_blank">pedro.delgadoperez@mail.uca.es</a>> escribió:</em></div></span><blockquote style="border-left-width:2px;border-left-style:solid;border-left-color:rgb(0,0,68);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><p><span class=""></span></p><p>Hello,</p>
<p>Perhaps this question has been asked before, but I couldn't find a proper solution for this issue. When I produce an executable and use it in another machine, sometimes Clang is not able to find system header files (for instance "limits.h") because the paths to find these headers are relative to the location of the Clang libraries.</p>
<p>All the same, when I'm using FIXED COMPILATION, I'm able to automatically retrieve the paths to system headers of the machine where the executable is being run. I mean, I retrieve the paths and add them after "--" to the command through the option -isystem. However, when I'm using JSON COMPILATION DATABASE, I can't do that, so in this case I don't know how to solve this issue.</p>
<p>What is the appropriate manner to handle this matter of the paths to system header files?</p>
<p>Thanks.</p><br>
<p></p></blockquote>
<p></p></blockquote>
<p></p></blockquote>
</div>
<br>_______________________________________________<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/mailman/listinfo/cfe-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><br></div><div>Mikhail Ramalho.</div></div></div>
</div></div>