On Wed, Sep 28, 2016 at 01:26:12AM +0000, Joseph Myers wrote: > On Wed, 28 Sep 2016, Alan Modra wrote: > > > compatibility-ldbl.o is compiled with -mlong-double-64. When > > long double .gnu_attribute tags are checked by the linker, it > > complains about the mismatch between this file and others in > > libstdc++. > > Is that the only file in libstdc++ that involves long double in its > interface at all, and so that gets such attributes?
No, some 12 object files do, all marked with 128-bit IBM long double. eg. c++locale.o, complex_io.o, hash_tr1.o. > I'd expect libraries such as libstdc++ and libgcc (generally, all compiler > and libc libraries) to be set up in such a way that they will work with > all long double choices in user code (via mangling and headers mapping > access to long double library functions to the right versions for the > chosen type) - and so need to be compiled without these attribute tags to > avoid the linker complaining when someone links them with user code built > with a non-default choice of long double. Certainly for glibc I'd think > using the option globally to build everything is the right choice (well, > except for libnldbl.a, where -mlong-double-64 attributes are logically > correct). Yes, and this is why the linker only warns rather than errors on mismatching .gnu.attributes tags. -- Alan Modra Australia Development Lab, IBM