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.