<div dir="ltr">Hi,<div><br></div><div>Thanks for your help,</div><div><br></div><div>I am passing header files in args option of parse function.</div><div><br></div><div>tu = index.parse(sys.argv[1],list_arg)<br></div><div>where list_arg = ['-I/usr/include',....]  --all libraries which i will require.</div><div><br></div><div>When I parse .c source file to read all return values of a function using "node2.get_tokens().next().spelling" , it is not able to find correct value of macro which is defined in library included in .c file and passed in args during index.parse().</div><div><br></div><div>For Example </div><div><div style="font-size:13px">static int bcm63xx_wdt_open(struct inode *inode, struct file *file)</div><div style="font-size:13px">{</div><div style="font-size:13px"><span style="white-space:pre-wrap">  </span>if (test_and_set_bit(0, &bcm63xx_wdt_device.inuse))</div><div style="font-size:13px"><span style="white-space:pre-wrap">         </span>return -EBUSY;                     <b>// not able to find value of EBUSY,hence returns error when I try to print node.spelling()</b></div><div style="font-size:13px">}                                                          // EBUSY is defined in linux/errno.h which is included in my .c file and also passed in list_arg.</div></div><div><br></div><div><br></div><div>Thanks again for all your help,</div><div>Moiz Ali</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 14, 2015 at 3:47 AM, mats petersson <span dir="ltr"><<a href="mailto:mats@planetcatfish.com" target="_blank">mats@planetcatfish.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Not able to parse header files, or not able to FIND (the correct!)<br>
header files? There is a distinct difference... Maybe you could output<br>
the preprocessed data from libclang (using the -E option)<br>
<br>
--<br>
Mats<br>
<div><div class="h5"><br>
On 13 January 2015 at 21:59, Moiz Ali <<a href="mailto:moiz.ali@stonybrook.edu">moiz.ali@stonybrook.edu</a>> wrote:<br>
> Hello,<br>
><br>
> I am trying to parse c file using clang. I have created python binding using<br>
> libclang.so and passing my .c file as and argument to my python script.<br>
><br>
> I see that it is not able to parse header file, due to which file<br>
> linux/errno.h is also not parsed and hence it is not able to get values of<br>
> macro definition of all error codes.<br>
> Ex:<br>
> ----<br>
> file bcm63xx_wdt.c:<br>
> #include <linux/bitops.h><br>
> #include <linux/errno.h><br>
> #include <linux/fs.h><br>
> #include <linux/io.h><br>
> ...<br>
> ...<br>
> static int bcm63xx_wdt_open(struct inode *inode, struct file *file)<br>
> {<br>
> if (test_and_set_bit(0, &bcm63xx_wdt_device.inuse))<br>
> return -EBUSY;                     // not able to find value of EBUSY,hence<br>
> returns error when I try to print node.spelling()<br>
> }<br>
><br>
> I try to parse same file using clang command directly in command prompt and<br>
> I see that<br>
><br>
> :~$ clang -Xclang -ast-dump -fsyntax-only bcm63xx_wdt.c<br>
> O/P:<br>
> |   | |-ReturnStmt 0x1c23858 <line:119:3,<br>
> /usr/include/asm-generic/errno-base.h:19:16><br>
> |   | | `-UnaryOperator 0x1c23838 <bcm63xx_wdt.c:119:10,<br>
> /usr/include/asm-generic/errno-base.h:19:16> 'int' prefix '-'<br>
> |   | |   `-IntegerLiteral 0x1c23818 <col:16> 'int' 16<br>
><br>
><br>
> Also if I include Macro definition in source file<br>
> #define EBUSY           16      /* Device or resource busy */<br>
><br>
> Then I get correct output<br>
><br>
> I am searching for issues in libclang but not able to find reason for<br>
> failiure, can you guide me some steps which can help.<br>
><br>
> Thanks,<br>
> Moiz Ali<br>
><br>
</div></div>> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
><br>
</blockquote></div><br></div>