libatomic IFUNC question (arm & libat_have_strexbhd)
Florian Weimer
fw@deneb.enyo.de
Tue Jun 6 05:50:00 GMT 2017
* Steve Ellcey:
> I have a question about the use of IFUNCs in libatomic. I was looking at the
> arm implementation and in gcc/libatomic/config/linux/arm/host-config.h I see:
>
> extern bool libat_have_strexbhd HIDDEN;
> # define IFUNC_COND_1 libat_have_strexbhd
>
> I also see that gcc/libatomic/config/linux/arm/init.c has:
>
> bool libat_have_strexbhd;
> static void __attribute__((constructor))
> init_cpu_revision (void)
> {
> }
>
> What I don't see is any place that libat_have_strexbhd would ever get
> set. What am I missing here? init_cpu_revision is going to get called
> when libatomic is first loaded since it is a constructor but it doesn't
> seem to do anything and it isn't going to set libat_have_strexbhd as far
> as I can see.
Setting the variable in the constructor wouldn't influence IFUNC
resolver behavior because those can run before ELF constructors
(even with lazy binding).
More information about the Gcc
mailing list