This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libatomic IFUNC question (arm & libat_have_strexbhd)


* 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).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]