<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div>This means the subprogram type is invalid. Set a breakpoint inside createSubprogramDIE() where addType() is used to add AT_type. </div>

<div></div></div></blockquote></div><div><br></div><div>OK that was useful. I figured out what at least one of my problems was - an incorrect encoding of type "void".</div><div><br></div><div>However, I'm still see errors in dwarfdump output, although fewer than before. Here's a sample of one of the errors I am getting:</div>

<div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000192a4: DIE attribute 0x000192a5:  AT_type/FORM_ref4 has a value 0x000194c7 that is not in the current compile unit in the .debug_info section.</font></div>

</div></blockquote><div><br></div><div>And here's the relevant DIE that it's referring to:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div>
<div><font class="Apple-style-span" face="'courier new', monospace">0x0001929b:     TAG_array_type [12] *</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0001929c:      AT_sibling( cu + 0x00000177 => {0x000192ab} )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000192a0:      AT_type( cu + 0x000000b2 => {0x000191e6} ( uint32 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000192a4:         TAG_subrange_type [13]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace" color="#FF0000"><b>0x000192a5:          AT_type( cu + 0x00000393 => {0x000194c7} (  ) )</b></font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000192a9:          AT_upper_bound( 0x01 )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000192aa:         NULL</font></div></div></blockquote><div><div><br></div></div><div>dwarfdump is complaining because the AT_type attribute of the subrange is pointing to an invalid offset. Now, I created this subrange with the call:</div>

<div><br></div><div><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="949.54">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #642880}
span.s1 {color: #0000c0}
span.s2 {color: #000000}
</style>


<p class="p1"><span class="s1">    diBuilder_</span><span class="s2">.</span>getOrCreateSubrange<span class="s2">(0, 1);</span></p></div><div><br></div>As you can see there's nothing there for me to screw up. So I'm puzzled as to where that AT_type is coming from.<div>

<br></div><div>Another strange thing: When I run dwarfdump on the .o file, I get far fewer error messages than when I run it on the final executable that was built from just that one .o file. For example, these errors (and many more) only shows up on the executable:</div>

<div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000889: DIE attribute 0x0000088a:  AT_type/FORM_ref4 has a value 0x00001053 that is not in the current compile unit in the .debug_info section.</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000008b4: DIE attribute 0x000008b5:  AT_type/FORM_ref4 has a value 0x000010a1 that is not in the current compile unit in the .debug_info section.</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000008d6: DIE attribute 0x000008d7:  AT_type/FORM_ref4 has a value 0x00001053 that is not in the current compile unit in the .debug_info section.</font></div>

</div></blockquote><div><div><br></div><div>Looking at the first of these, here's what the DIE from the executable looks like:</div></div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000087d:     TAG_class_type [9] *</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000087e:      AT_sibling( cu + 0x000000ad => {0x000008a0} )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000882:      AT_name( .debug_str[0x000001ff] = "tart.reflect.Type" )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000886:      AT_byte_size( 0x0c )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000887:      AT_decl_file( 0x42 ( "/Users/talin/Projects/tart/trunk/lib/std/tart/reflect/Type.tart" ) )</font></div></div>

<div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000888:      AT_decl_line( 0x05 ( 5 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000889:         TAG_inheritance [10]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace" color="#FF0000"><b>0x0000088a:          AT_type( cu + 0x00000860 => {0x00001053} (  ) )</b></font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000088e:          AT_data_member_location( <0x2> 23 00  ( plus-uconst 0x0000 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000891:         TAG_member [11]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000892:          AT_name( .debug_str[0x00000211] = "_typeKind" )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000896:          AT_type( cu + 0x00000063 => {0x00000856} ( NULL ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000089a:          AT_decl_file( 0x3a ( "/Users/talin/Projects/tart/trunk/lib/std/tart/reflect/Module.tart" ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000089b:          AT_decl_line( 0x17 ( 23 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000089c:          AT_data_member_location( <0x2> 23 08  ( plus-uconst 0x0008 ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x0000089f:         NULL</font></div>

</div></blockquote><div><br></div><div>Now, if I find the corresponding DIE from the .o file, here's what it looks like:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002c4:     TAG_class_type [9] *</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002c5:      AT_sibling( cu + 0x000002fb => {0x000002fb} )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002c9:      AT_name( "tart.reflect.Type" )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002db:      AT_byte_size( 0x0c )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002dc:      AT_decl_file( 0x42 ( "/Users/talin/Projects/tart/trunk/lib/gc1/tart/gc1/Type.tart" ) )</font></div></div><div>

<div><font class="Apple-style-span" face="'courier new', monospace">0x000002dd:      AT_decl_line( 0x05 ( 5 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002de:         TAG_inheritance [10]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace" color="#FF0000"><b>0x000002df:          AT_type( cu + 0x00000a7b => {0x00000a7b} ( tart.core.Object ) )</b></font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002e3:          AT_data_member_location( <0x2> 23 00  ( plus-uconst 0x0000 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002e6:         TAG_member [11]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002e7:          AT_name( "_typeKind" )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002f1:          AT_type( cu + 0x00000221 => {0x00000221} ( TypeKind ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002f5:          AT_decl_file( 0x4b ( "/Users/talin/Projects/tart/trunk/lib/gc1/tart/gc1/GC1.tart" ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002f6:          AT_decl_line( 0x17 ( 23 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002f7:          AT_data_member_location( <0x2> 23 08  ( plus-uconst 0x0008 ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x000002fa:         NULL</font></div>

</div></blockquote><div><br></div><div>As you can see, the AT_type from the TAG_inheritance DIE is pointing to a valid DIE in the .o file, but not in the executable. Here's the type it's pointing to:</div><div><br>

</div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a7b:     TAG_class_type [9] *</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a7c:      AT_sibling( cu + 0x00000ab9 => {0x00000ab9} )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a80:      AT_name( "tart.core.Object" )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a91:      AT_byte_size( 0x08 )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a92:      AT_decl_file( 0x12 ( "/Users/talin/Projects/tart/trunk/lib/gc1/tart/gc1/Object.tart" ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a93:      AT_decl_line( 0x07 ( 7 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br>

</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a94:         TAG_member [11]  </font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a95:          AT_name( "__tib" )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a9b:          AT_type( cu + 0x00000a75 => {0x00000a75} ( tart.core.TypeInfoBlock* ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000a9f:          AT_decl_file( 0x4b ( "/Users/talin/Projects/tart/trunk/lib/gc1/tart/gc1/GC1.tart" ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000aa0:          AT_decl_line( 0x08 ( 8 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000aa1:          AT_data_member_location( <0x2> 23 00  ( plus-uconst 0x0000 ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000aa4:         TAG_member [11]  </font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000aa5:          AT_name( "__gcstate" )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000aaf:          AT_type( cu + 0x00000094 => {0x00000094} ( int32 ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000ab3:          AT_decl_file( 0x4b ( "/Users/talin/Projects/tart/trunk/lib/gc1/tart/gc1/GC1.tart" ) )</font></div></div>

<div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000ab4:          AT_decl_line( 0x09 ( 9 ) )</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000ab5:          AT_data_member_location( <0x2> 23 04  ( plus-uconst 0x0004 ) )</font></div>

</div><div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">0x00000ab8:         NULL</font></div>

</div></blockquote><div><br></div><div>Now, the .o file is being produced by llc, and the executable is being produced by:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div><font class="Apple-style-span" face="'courier new', monospace">/usr/bin/c++ -g -o $PRGNAME $PRGNAME.o runtime/libruntime.a</font></div></blockquote><div><br></div><div>So the question is - why are the DIEs which are correct in the .o file being garbled when they are in the executable? </div>

<div><br></div><div>-- <br>-- Talin<br>
</div>