<div dir="ltr">When I implemented ifunc I followed GCC documentation and was not aware of ifunc resolvers parameter. But if it is so much platform dependent and undocumented in GCC, I'm doubt if it should be supported in clang.</div><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 29, 2018 at 11:38 PM Ed Maste <<a href="mailto:emaste@freebsd.org">emaste@freebsd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">When ifunc support was added to Clang with r265917<br>
<a href="http://llvm.org/viewvc/llvm-project?rev=265917&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=265917&view=rev</a> it did not<br>
allow resolvers to take parameters. It appears GCC documents ifunc<br>
resolvers as taking no parameters, but GCC in fact allows it.<br>
<br>
In FreeBSD our rtld passes machine-dependent CPU ID information to<br>
ifunc resolvers, and we had to remove the prohibition:<br>
<a href="https://svnweb.freebsd.org/changeset/base/339019" rel="noreferrer" target="_blank">https://svnweb.freebsd.org/changeset/base/339019</a>.<br>
<br>
In the glibc world, as far as I can tell it in fact passes dl_hwcap on<br>
several architectures (but not on x86 or x86_64).<br>
<br>
I believe GCC's documentation is simply incorrect. Is there any reason<br>
not to just remove this check and error case from Clang?<br>
</blockquote></div>