<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Relating to the article in llvm-dev list,</span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><a href="http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-December/036982.html">http://lists.cs.uiuc.edu/pipermail/llvmdev/2010-December/036982.html</a></span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">attached patch assigns __used__ attributes to all global </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">static </span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "></span>variables llvm-gcc/gcc/crtstuff.c so that they are not removed</div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">as results of optimization.</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "><br></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">The affected variables are follows:</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
- static func_ptr force_to_data[1]</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">- STATIC void *__JCR_LIST__[]</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
- static func_ptr __do_global_dtors_aux_fini_array_entry[]</div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">- static func_ptr __frame_dummy_init_array_entry[]</span></font></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">- STATIC EH_FRAME_SECTION_CONST int32 __FRAME_END__[]</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
- STATIC void *__JCR_END__[1]</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; "> </div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
STATIC is defined to be 'static' if elf format is used and otherwise </div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">defined empty. I'm not sure whether it will cause some unexpected </div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">behavior on other formats. I think f</span></font><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">ollowing comment in the code </span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">might concern </span><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">about this:</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; "><div><div><br></div></div><div>STATIC func_ptr __DTOR_END__[1]</div><div>/* LLVM LOCAL begin */</div><div>#ifdef __llvm__</div>
<div>/* FIXME: Remove when external weak linkage will be alive. */</div><div>  __attribute__((__used__, section(".dtors"), aligned(sizeof(func_ptr))))</div><div>#else  </div><div>  __attribute__((unused, section(".dtors"), aligned(sizeof(func_ptr))))</div>
<div>#endif  </div><div>/* LLVM LOCAL end */</div><div>  = { (func_ptr) 0 };</div><div>#endif</div><div><br></div></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">At least, the patch worked fine on </span><span class="Apple-style-span" style="font-family: arial, sans-serif; border-collapse: collapse; ">armv6 target under linux.</span></div>
<div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">It solved the problem that frame_dummy and </div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
__do_global_dtors_aux were not called if .init_array and</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">.fini_array sections are used.</div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">
<br></div><div style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">Please verify this patch and apply if it's acceptable.</div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br>
</span></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">Best regards,</span></font></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">Woongsik Choi</span></font></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><br></span></font></div>