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)


On Tue, 2017-06-06 at 07:50 +0200, Florian Weimer wrote:
> * 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).

So the question remains, where is libat_have_strexbhd set?  As near as
I can tell it isn't set, which would make the libatomic IFUNC pointless
on arm.

Steve Ellcey


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