Message ID | c7c88e88408588fa6fcf858a5ae503b5e2f4ec0b.1567198492.git.msuchanek@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Disable compat cruft on ppc64le v7 | expand |
Michal Suchanek <msuchanek@suse.de> writes: > On bigendian ppc64 it is common to have 32bit legacy binaries but much > less so on littleendian. I think the toolchain people will tell you that there is no 32-bit little endian ABI defined at all, if anything works it's by accident. So I think we should not make this selectable, unless someone puts their hand up to say they want it and are willing to test it and keep it working. cheers > v3: make configurable > --- > arch/powerpc/Kconfig | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 5bab0bb6b833..b0339e892329 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -264,8 +264,9 @@ config PANIC_TIMEOUT > default 180 > > config COMPAT > - bool > - default y if PPC64 > + bool "Enable support for 32bit binaries" > + depends on PPC64 > + default y if !CPU_LITTLE_ENDIAN > select COMPAT_BINFMT_ELF > select ARCH_WANT_OLD_COMPAT_IPC > select COMPAT_OLD_SIGACTION > -- > 2.22.0
On Mon, Sep 02, 2019 at 12:03:12PM +1000, Michael Ellerman wrote: > Michal Suchanek <msuchanek@suse.de> writes: > > On bigendian ppc64 it is common to have 32bit legacy binaries but much > > less so on littleendian. > > I think the toolchain people will tell you that there is no 32-bit > little endian ABI defined at all, if anything works it's by accident. There of course is a lot of powerpcle-* support. The ABI used for it on linux is the SYSV ABI, just like on BE 32-bit. There also is specific powerpcle-linux support in GCC, and in binutils, too. Also, config.guess/config.sub supports it. Half a year ago this all built fine (no, I don't test it often either). I don't think glibc supports it though, so I wonder if anyone builds an actual system with it? Maybe busybox or the like? > So I think we should not make this selectable, unless someone puts their > hand up to say they want it and are willing to test it and keep it > working. What about actual 32-bit LE systems? Does anyone still use those? Segher
Segher Boessenkool <segher@kernel.crashing.org> writes: > On Mon, Sep 02, 2019 at 12:03:12PM +1000, Michael Ellerman wrote: >> Michal Suchanek <msuchanek@suse.de> writes: >> > On bigendian ppc64 it is common to have 32bit legacy binaries but much >> > less so on littleendian. >> >> I think the toolchain people will tell you that there is no 32-bit >> little endian ABI defined at all, if anything works it's by accident. ^ v2 > There of course is a lot of powerpcle-* support. The ABI used for it > on linux is the SYSV ABI, just like on BE 32-bit. I was talking about ELFv2, which is 64-bit only. But that was based on me thinking we had a hard assumption in the kernel that ppc64le kernels always expect ELFv2 userland. Looking at the code though I was wrong about that, it looks like we will run little endian ELFv1 binaries, though I don't think anyone is testing it. > There also is specific powerpcle-linux support in GCC, and in binutils, > too. Also, config.guess/config.sub supports it. Half a year ago this > all built fine (no, I don't test it often either). > > I don't think glibc supports it though, so I wonder if anyone builds an > actual system with it? Maybe busybox or the like? > >> So I think we should not make this selectable, unless someone puts their >> hand up to say they want it and are willing to test it and keep it >> working. > > What about actual 32-bit LE systems? Does anyone still use those? Not that I've ever heard of. cheers
On 09/02/2019 11:53 PM, Michael Ellerman wrote: > Segher Boessenkool <segher@kernel.crashing.org> writes: >> On Mon, Sep 02, 2019 at 12:03:12PM +1000, Michael Ellerman wrote: >>> Michal Suchanek <msuchanek@suse.de> writes: >>>> On bigendian ppc64 it is common to have 32bit legacy binaries but much >>>> less so on littleendian. >>> >>> I think the toolchain people will tell you that there is no 32-bit >>> little endian ABI defined at all, if anything works it's by accident. > ^ > v2 > >> There of course is a lot of powerpcle-* support. The ABI used for it >> on linux is the SYSV ABI, just like on BE 32-bit. > > I was talking about ELFv2, which is 64-bit only. But that was based on > me thinking we had a hard assumption in the kernel that ppc64le kernels > always expect ELFv2 userland. Looking at the code though I was wrong > about that, it looks like we will run little endian ELFv1 binaries, > though I don't think anyone is testing it. > >> There also is specific powerpcle-linux support in GCC, and in binutils, >> too. Also, config.guess/config.sub supports it. Half a year ago this >> all built fine (no, I don't test it often either). >> >> I don't think glibc supports it though, so I wonder if anyone builds an >> actual system with it? Maybe busybox or the like? >> >>> So I think we should not make this selectable, unless someone puts their >>> hand up to say they want it and are willing to test it and keep it >>> working. >> >> What about actual 32-bit LE systems? Does anyone still use those? > > Not that I've ever heard of. > We dropped support from 32-bit LE at least with a1f3ae3fe8a1 ("powerpc/32: Use stmw/lmw for registers save/restore in asm"). Discussion about it can be found at https://patchwork.ozlabs.org/patch/899465/ Christophe
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 5bab0bb6b833..b0339e892329 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -264,8 +264,9 @@ config PANIC_TIMEOUT default 180 config COMPAT - bool - default y if PPC64 + bool "Enable support for 32bit binaries" + depends on PPC64 + default y if !CPU_LITTLE_ENDIAN select COMPAT_BINFMT_ELF select ARCH_WANT_OLD_COMPAT_IPC select COMPAT_OLD_SIGACTION