How about a sysctl switch to disable GNU IFUNC?

Does anyone here know the history of FreeBSD's adoption of IFUNC, or have some guesses about who might? I tried to hit up some of the GNU folks about this, and couldn't get a definitive answer about why they added it in the first place. In particular, I'm wondering if there was a *specific* performance or compatibility problem that made someone decide "Yeah, we need this IFUNC" thing.

There may have been more contributors but I became aware of if from the work done by Robert Clausecker. For instance see https://muc.lists.freebsd.current.narkive.com/PJteYsom/amd64-simd-libc-work-has-landed

The other part of this is when it got added to clang. This work wouldn't have been posssible without clang supporting @gnu_indirect_function.
 
If you want to take a look at the source (mostly amd64) then search for ARCHFUNCS in src/lib/libc. This is a macro used in asm files and it will add

.type CNAME(func), @gnu_indirect_function; \

I.e., GNU ifunc.
 
Back
Top