On Wed, 2017-06-07 at 12:21 -0700, Richard Henderson wrote: > > Setting the variable in the constructor wouldn't influence IFUNC > > resolver behavior because those can run before ELF constructors > > (even with lazy binding). > With lazy binding, the constructors of libraries should run in graph > dependency > order, which means this constructor should run before any users. > > Without lazy binding, you're right that ifunc resolvers can run earlier, and > this would be largely useless. Suggestions for a better organization > welcome.
Would defining __builtin_cpu_init, __builtin_cpu_is, and __builtin_cpu_supports for ARM help with this? X86 seems to have some special code to call __builtin_cpu_init from dispatch_function_versions. Is that early enough? Then __builtin_cpu_is or __builtin_cpu_supports could be used in the IFUNC resolvers instead of checking the libat_have_strexbhd variable. Steve Ellcey sell...@cavium.com