On Mon, 11 Nov 2013, Ulrich Weigand wrote: > Hello, > > this is the first patch in the series to add support for the ELFv2 ABI. > > The ELFv2 ABI is the intended ABI for the new powerpc64le-linux port. > However, it is not inherently tied to the byte order; it it possible > in principle to use the ELFv2 ABI in big-endian mode too.
I'd rather, from a glibc perspective, keep down the number of variant ABIs available - and in particular, disallow the (ELFv1, little-endian combination) - have a compiler error given for it. And, similarly, have the (ELFv2, big-endian) combination only if the plan is for it to obsolete the old ABI and for support for the old ABI for powerpc64-linux to be removed from GCC and glibc in a few years' time (similarly to how the ARM EABI superseded the old arm-linux-gnu ABI). If you don't have such errors in GCC, then you should have configure-time errors in glibc to disallow the unsupported combinations. (Any new supported glibc configuration should of course set minimum symbol version to GLIBC_2.19, or whatever the version is of the first release supporting it - and the dynamic linker / ldconfig should distinguish shared libraries for the two variants.) I didn't see anything in this series regarding the ELFv1 ABI feature that's the greatest pain from a glibc perspective - the use of IBM long double. The idea of moving to IEEE binary128 was floated in <https://sourceware.org/ml/libc-alpha/2013-10/msg00597.html> - have you abandoned that idea? Obviously it would be bad to end up having two variants of ELFv2 with different long double formats. (Though we can't actually eliminate IBM long double support from glibc unless all ABIs with it are obsoleted, including 32-bit.) If you do move to IEEE binary128 I'd advise simply using soft-fp in libgcc for the functions that normally go in libgcc, given that 64-bit implies hard float, rather than the arrangements some targets have of putting their binary128 functions in glibc. > Therefore, it is introduces via a new pair of options > -mabi=elfv1 / -mabi=elfv2 > where -mabi=elfv1 select the current Linux ABI, and -mabi=elfv2 > selects the new one. New command-line options need invoke.texi documentation. > (Of course, patches to binutils, glibc, and libffi to support the > new ELFv2 ABI are also required.) And GDB - GDB needs to know how to call functions, how to pass arguments to them and how to find the return value. -- Joseph S. Myers jos...@codesourcery.com