<div dir="ltr">Looks like Clang picks the default in this way:<div><br><div><div>void Generic_ELF::addClangTargetOptions(const ArgList &DriverArgs,</div><div>                                        ArgStringList &CC1Args) const {</div>
<div>  const Generic_GCC::GCCVersion &V = GCCInstallation.getVersion();</div><div>  bool UseInitArrayDefault =</div><div>      getTriple().getArch() == llvm::Triple::aarch64 ||</div><div>      getTriple().getArch() == llvm::Triple::aarch64_be ||</div>
<div>      (getTriple().getOS() == llvm::Triple::Linux &&</div><div>       (!V.isOlderThan(4, 7, 0) ||</div><div>        getTriple().getEnvironment() == llvm::Triple::Android));</div><div><br></div><div>  if (DriverArgs.hasFlag(options::OPT_fuse_init_array,</div>
<div>                         options::OPT_fno_use_init_array,</div><div>                         UseInitArrayDefault))</div><div>    CC1Args.push_back("-fuse-init-array");</div><div>}</div></div><div><br></div>
<div>I thought gcc changed way earlier than 4.7.</div></div><div><br></div><div>Anyway, this looks good to me. llc can have the modern default on other ELF platforms.</div><div><br></div><div>Does anyone know if the BSDs ever switched over to .init_array from .ctors?</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 28, 2014 at 5:37 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We have been using .init-array for most systems for quiet some time,<br>
but tools like llc are still defaulting to .ctors because the old<br>
option was never changed.<br>
<br>
This patch makes llc default to .init-array and changes the option to<br>
be -use-ctors.<br>
<br>
Cheers,<br>
Rafael<br>
</blockquote></div><br></div>