Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 24 Jun 2017 18:44:06 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: [PATCH] powerpc64le: Add single instruction math functions

On Sat, Jun 24, 2017 at 04:53:58PM -0400, David Edelsohn wrote:
> On Fri, Jun 23, 2017 at 11:38 PM, A. Wilcox <awilfox@...lielinux.org> wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA256
> >
> > On 23/06/17 22:05, David Edelsohn wrote:
> >> Note that I only added the optimizations to the "powerpc64" port,
> >> not the "powerpc" port.  The powerpc64 port only support PPC64LE
> >> Linux, which does not include PPC970.  The comments about emulation
> >> are not relevant to the "powerpc64" port.
> >
> > On 23/06/17 14:35, Rich Felker wrote:
> >> Indeed, musl uses the ELFv2 ABI (minus its gratuitous mandate of
> >> minimum ISA level) for both little and big endian powerpc64, and I
> >> think we have users of both (people running it on old powerbooks,
> >> etc.).
> 
> The ABIs are not endian-specific.  ELFv1 can operate as little endian
> (and did for a brief period as a transition), ELFv2 can operate as big
> endian. PowerPC64 Linux only will be 64 bit little endian going
> forward, although the existing big endian, ELFv1 Linux distributions
> will continue to be supported.  There is no infrastructure or
> distribution into which a PPC64BE ELFv2 libc can be installed.

Any distro that builds from source and uses musl should work. I
suspect Sabotage can do it. Rob Landley's minimal mkroot builds should
also get you a system you can boot.

> A PPC64 big endian ELFv2 port is an interesting exercise, but does not
> match or interact with any other Linux distributions or toolchains.

That's already the case if you're using musl anyway, and part of why
the decision made sense.

> All of the PPC64 BE Linux ports are based on ELFv1 and have no
> intention of changing.

I think the kernel simply supports both ELFv1 and ELFv2 userspace
anyway and doesn't care what binaries you run, though I didn't check.
The only place where it could care anyway is the function pointers
used for signal handlers.

> > Are you aware of any little-endian specific code in musl/powerpc64?  I
> > assume that libc-test would probably catch most of it when I am able
> > to run it, but until then, it would be nice to know if there is
> > anything I need to work on in the meantime.
> 
> The PPC64 port of Musl does not assume little endian addressing, but
> Musl currently only supports ELFv2.  All of the toolchains and
> operating systems that support ELFv2 are little endian.  All of the
> big endian toolchains and operating systems are designed for ELFv1.
> There is no overlap.

git clone https://github.com/richfelker/musl-cross-make.git \
&& cd musl-cross-make && make TARGET=powerpc64-linux-musl

There are no patches needed for the ABI to work, just --with-abi=elfv2
which musl-cross-make always uses for ppc64. qemu-ppc64 (user level)
runs the binaries it produces just fine. I don't have actual hardware
or a kernel for system emulation handy but I don't see any reason to
expect it not to work.

> I added the macro tests for portability and completeness.
> 
> The only ports of Musl that will function on existing, supported,
> big-endian PowerPC systems are the 32 bit "powerpc" port and an
> unimplemented PPC64 BE ELFv1 port.

I guess "supported" is the key word here, in particular whose
perspective you're asking that something be supported from.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.