mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: musl@lists.openwall.com
Subject: Re: [PATCH] powerpc64le: Add single instruction math functions
Date: Sat, 24 Jun 2017 18:44:06 -0400	[thread overview]
Message-ID: <20170624224406.GZ1627@brightrain.aerifal.cx> (raw)
In-Reply-To: <CAGWvnymV26L=GrNjRPcvzOResirpjMb_8BkpFqdJhvrLMtYvPw@mail.gmail.com>

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@adelielinux.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


  reply	other threads:[~2017-06-24 22:44 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-21 14:53 David Edelsohn
2017-06-23 19:35 ` Rich Felker
2017-06-23 19:53   ` David Edelsohn
2017-06-24  0:46     ` A. Wilcox
2017-06-24  0:55       ` Rich Felker
2017-06-24  3:05       ` David Edelsohn
2017-06-24  3:32         ` Rich Felker
2017-06-24  3:38         ` A. Wilcox
2017-06-24 20:53           ` David Edelsohn
2017-06-24 22:44             ` Rich Felker [this message]
2017-06-24 23:57             ` A. Wilcox
2017-06-25  0:10               ` Rich Felker
2017-06-25  1:41                 ` Rich Felker
2017-06-29 13:49                 ` David Edelsohn
2017-06-29 16:05                   ` Rich Felker
2017-06-29 17:00                     ` David Edelsohn
2017-06-29 17:59                       ` Rich Felker
2017-06-30  1:07                         ` David Edelsohn
2017-06-30  2:11                           ` Rich Felker
2017-06-25  3:24               ` David Edelsohn
2017-06-25 14:28                 ` Rich Felker
2017-06-25 14:56                   ` David Edelsohn
2018-09-27 22:53                   ` A. Wilcox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170624224406.GZ1627@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).