This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Implementing C++1x and C1x atomics
On Mon, 17 Aug 2009, Lawrence Crowl wrote:
> > Ways for the kernel or dynamic linker to detect such
> > incompatibilities may be useful, but would apply to this issue
> > in general, not specifically to atomic operations.
>
> The difference with the atomics is that if an application uses the
> D instructions, we also need the dynamic library to also use the
> D instructions (on a D or later processor). How do we ensure that?
I have suggested that the library inform the compiler, via its headers
(whatever the details - pragmas, macros, etc. - and whether or not the
header in question is implicitly preincluded) of whether the library will
be using these instructions, with the compiler making safe assumptions if
the library does not give it this information. (The information passed
from the library to the compiler would be an assertion that that library
version, and all later versions, when used on a D or later processor, will
always use the D instructions or later instructions that safely
interoperate with them.)
> If we cannot, then I am concerned that we would be able to inline
> no atomic operations without dropping support for the 80386 as
> a subset of the later processors. The same situation applies to
> other processor families.
80386 support is already dropped (effectively) in glibc, and has been for
quite some time; you have to use -march=i486 or later to build glibc for
IA32, or it will fail to link with missing atomic operations.
--
Joseph S. Myers
joseph@codesourcery.com