<div dir="rtl"><div dir="ltr">Hello,</div>
<div dir="ltr"> </div>
<div dir="ltr">I am observing a weird behavior in clang, inconsistent with gcc. 
<div>Consider the following file (bug.c):</div></div>
<div dir="ltr"> </div>
<blockquote style="MARGIN-RIGHT:0px" dir="ltr">
<div><font face="courier new,monospace">extern int x;</font></div>
<div><font face="courier new,monospace">int main()</font></div>
<div><font face="courier new,monospace">{</font></div>
<div><font face="courier new,monospace">#line 10 "foo.c"</font></div>
<div><font face="courier new,monospace">  {</font></div>
<div><font face="courier new,monospace">#line 100 "bug.c"</font></div>
<div><font face="courier new,monospace">    int y=0;</font></div>
<div><font face="courier new,monospace">  }</font></div>
<div><font face="courier new,monospace">  ++x;</font></div>
<div><font face="courier new,monospace">  return 0;</font></div>
<div><font face="courier new,monospace">}</font></div>
<div><font face="courier new,monospace"> </font></div></blockquote>
<div dir="ltr">Obviously building it fails in the linking stage, as "x" is undefined. That's fine.</div>
<div dir="ltr">The problem is that clang reports the "++x" coming from a wrong file.</div>
<div dir="ltr">I expected to see the report on "bug.c", line 102.</div>
<div dir="ltr">However, clang reports it on "foo.c", line 102.</div>
<div dir="ltr">i.e. in the last #line pragma (#line 100 "bug.c") it used the line information "100", but ignored the file information "bug.c"</div>
<div dir="ltr"> </div>
<div dir="ltr">Here's the command line I used:</div>
<blockquote style="MARGIN-RIGHT:0px" dir="ltr">
<div><font face="courier new,monospace">clang -g bug.c -o bug.out</font></div></blockquote>
<div dir="ltr"> </div>
<div dir="ltr">And this is the output it produced:</div>
<blockquote style="MARGIN-RIGHT:0px" dir="ltr">
<div><font face="courier new,monospace">/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: Dwarf Error: Invalid or unhandled FORM value: 25.</font></div>
<div><font face="courier new,monospace">/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: Dwarf Error: Invalid or unhandled FORM value: 25.</font></div>
<div><font face="courier new,monospace">/tmp/bug-4lmk6q.o: In function `main':</font></div>
<div><font face="courier new,monospace">..../<strong><font color="#000000">foo.c</font>:102</strong>: undefined reference to `x'</font></div>
<div><font face="courier new,monospace">..../<strong>foo.c:102</strong>: undefined reference to `x'</font></div>
<div><font face="courier new,monospace">clang: error: linker command failed with exit code 1 (use -v to see invocation)</font></div></blockquote>
<div dir="ltr"> </div>
<div dir="ltr">I observed this on the on version 3.1, 3.2 and the latest code from the trunk. 
<div>Any ideas?</div>
<div> </div>
<div>Much thanks,</div>
<div>Eran</div></div></div>