<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 25 July 2015 at 19:05, Iyer,Naveen R <span dir="ltr"><<a href="mailto:niyer@ufl.edu" target="_blank">niyer@ufl.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Thanks for your swift reply.</p>
<p><br>
</p>
<p>All I want is to be able to generate call graphs on this device driver (usbmouse.c).</p>
<p>Do you know of any other easier way to do that?</p></div></div></blockquote><div>Not immediately, no. <br><br><br></div><div>I expect you could try to copy that file out and see what other files you need to compile it with `clang -S` first. It should, probably be sufficient to set `-I/wherever/your/kernel/source/is` [possibly two or more of these]. <br><br></div><div>I would suggest that you do "reply-all" when you reply to someone who has replied to a mailing list, that way OTHER people who may have better (or simply different) ideas can ALSO see your reply and coment. I've added the mailing list back in on my reply.<br></div><div> <br>--<br></div><div>Mats<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif">
<p><br>
</p>
<p>Thanks</p>
<p>Best Regards</p>
<div>
<div name="divtagdefaultwrapper">
<div name="divtagdefaultwrapper">
<b><font face="Times New Roman, Times, serif">Naveen R. Iyer</font></b></div>
<div name="divtagdefaultwrapper" style="margin:0px">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif"><font face="Times New Roman, Times, serif">Graduate Student (Research Division: Computer Engineering)</font></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif"><font face="Times New Roman, Times, serif">Dept. of Electrical & Computer Engineering</font></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif"><font face="Times New Roman, Times, serif">University of Florida</font></div>
</div>
</div>
</div>
<br>
<br>
<div style="color:rgb(0,0,0)">
<hr style="display:inline-block;width:98%">
<div dir="ltr"><font style="font-size:11pt" color="#000000" face="Calibri, sans-serif"><b>From:</b> <a href="mailto:mats.o.petersson@googlemail.com" target="_blank">mats.o.petersson@googlemail.com</a> <<a href="mailto:mats.o.petersson@googlemail.com" target="_blank">mats.o.petersson@googlemail.com</a>> on behalf of mats petersson <<a href="mailto:mats@planetcatfish.com" target="_blank">mats@planetcatfish.com</a>><br>
<b>Sent:</b> Saturday, July 25, 2015 2:02 PM<br>
<b>To:</b> Iyer,Naveen R<br>
<b>Cc:</b> <a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<b>Subject:</b> Re: [cfe-dev] Clang Linux Driver Compilation</font>
<div> </div>
</div><div><div class="h5">
<div>
<div dir="ltr">
<div>I'm pretty certain the Linux makefile is not able to do that. What you will need to do compile all files to llvm-IR output, concatenating it together and then run opt -analyze ... on that.
<br>
<br>
</div>
<div>The way I can see that working is to use V=1 to give more verbose output, then filter out the clang commands - once you have that in a file, do a "search and replace" for `-c` to `-S -emit-llvm` [possibly also replace `-o somefile.o` with `-o -` and redirect
 all the output to a file.<br>
<br>
</div>
<div>I'm not sure how opt copes with multiple modules as one input - so you may need to clean up the input a bit further - or run it through llvm-link, perhaps?<br>
<br>
</div>
<div>I've never done this, so I'm just thinking about it logically and picking up pieces of knowledge like `V=1` that I do have.<br>
</div>
<div><br>
--<br>
</div>
<div>Mats<br>
</div>
<div><br>
</div>
<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 25 July 2015 at 18:37, Iyer,Naveen R <span dir="ltr">
<<a href="mailto:niyer@ufl.edu" target="_blank">niyer@ufl.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div style="font-size:12pt;color:#000000;background-color:#ffffff;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>I tried the following command for regular C source files:</p>
<p></p>
<pre><code><span>clang</span><span>-3.5</span><span> </span><span>-</span><span>S </span><span>-</span><span>emit</span><span>-</span><span>llvm hello</span><span>.</span><span>c </span><span>-</span><span>o </span><span>-</span><span> </span><span>|</span><span> opt </span><span>-</span><span>analyze </span><span>-</span><span>dot</span><span>-</span><span>callgraph</span></code></pre>
<p></p>
<p>and it worked.</p>
<p><br>
</p>
<p>Now, I'm trying to do the same with linux device driver usbmouse.c (linux-4.1.1/drivers/hid/usbhid/). I tried the following make command:</p>
<p><br>
</p>
<p>make CC=clang-3.5 SUBDIRS=drivers/hid/usbhid/ CONFIG_USB_MOUSE=m modules</p>
<p><br>
</p>
<p>It gave several warnings, but nevertheless, looked like it compiled.</p>
<p>Could anybody please guide me on how I can modify the Makefile so as to generate callgraphs?<br>
</p>
<p><br>
</p>
<p>Thanks</p>
<p>Regards<span><font color="#888888"><br>
</font></span></p>
<span><font color="#888888">
<div>
<div name="divtagdefaultwrapper">
<div name="divtagdefaultwrapper"><b><font face="Times New Roman, Times, serif">Naveen </font></b></div>
</div>
</div>
</font></span></div>
</div>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div></div></div>
</div>
</div>

</blockquote></div><br></div></div>