Re: [PULL REQUEST] [PATCH v2 00/10] allow BFLT executables on systems with a MMU

From: Greg Ungerer
Date: Tue Jul 19 2016 - 03:20:40 EST


Hi Nicolas,

On 18/07/16 13:31, Nicolas Pitre wrote:
> This series provides the necessary changes to allow "flat" executable
> binaries meant for no-MMU systems to actually run on systems with a MMU.
>
> This can also be found in the following git repo:
>
> git://git.linaro.org/people/nicolas.pitre/linux binfmt_flat_with_mmu
>
> *Why?*
>
> Because developing and testing natively on a large system with lots of
> RAM makes it so much more convenient to use all the existing profiling
> tools and debugging facilities that a kernel with lots of RAM can give.
> And incidentally, those systems with lots of RAM all have a MMU.
>
> *Why not use elf_fdpic?*
>
> The flat executable format is simple with very small footprint
> overhead, either in the executables themselves or kernel support.
> This makes the flat format more suitable than elf_fdpic for very small
> single-user-app embedded systems.
>
> And while elf_fdpic binaries can run on MMU systems, flat binaries still
> couldn't, which just felt wrong.
>
> So here it is. The no-MMU support should remain unaffected. Please consider
> for pulling.
>
> Tested on ARM only with a busybox build.

Tested on m68k (ColdFire specifically) and everything compiles
cleanly and works as before.

I tried running a flat binary on an MMU ColdFire system and
that crashed out with a SIGSEGV. I haven't debugged any further
than that yet.

I had a look over the patches and I didn't see any specific
problems. So from me:

Reviewed-by: Greg Ungerer <gerg@xxxxxxxxxxxxxx>

When I get a minute I'll dig a little into that bflat running
on MMU problem on ColdFire.

Regards
Greg



> Changes since v1:
>
> - Removed SuperH and Xtensa from the Kconfig rule as they fail to build
> due to lack of get/put_unaligned_user().
>
> - Clarified some commit logs a bit.
>
> diffstat:
>
> arch/arm/include/asm/flat.h | 5 +-
> arch/m68k/include/asm/flat.h | 5 +-
> fs/Kconfig.binfmt | 3 +-
> fs/binfmt_elf_fdpic.c | 38 +---
> fs/binfmt_flat.c | 372 +++++++++++++++++++++--------------
> fs/exec.c | 33 ++++
> include/linux/binfmts.h | 2 +
> 7 files changed, 268 insertions(+), 190 deletions(-)
>
>