----- Original Message ----- > From: "Laurent Vivier" <laur...@vivier.eu> > Sent: Tuesday, November 7, 2017 9:27:38 AM
> Le 07/11/2017 à 16:20, Aaron Sierra a écrit : >> ----- Original Message ----- >>> From: "Laurent Vivier" <laur...@vivier.eu> >>> Sent: Tuesday, November 7, 2017 3:24:52 AM >> >>> Le 07/11/2017 à 03:50, Aaron Sierra a écrit : >>>> Enable building PowerPC targets supporting a specific CPU, without >>>> having to set QEMU_CPU via the environment. For example these build >>>> targets (and many more) become available: >>>> >>>> qemu-ppc.e500mc qemu-ppc.e500v2 qemu-ppc.e5500 qemu-ppc.e600 >>>> qemu-ppc.e6500 >>>> >>>> These (statically compiled) binaries have proven useful for >>>> emulating PowerPC CPUs within Docker containers, where it's hard to >>>> reliably define environment variables that are available for every >>>> process. >>>> >>> >>> An other idea would be to extract the default cpu from argv[0]. >>> >>> We don't change the default CPU at compile time, but we check the binary >>> name: >>> - if it's qemu-ppc, let's use the default cpu for qemu-ppc >>> - if it's not qemu-ppc, but something like qemu-ppc.XXX, let's set the >>> CPU to XXX. For instance "qemu-ppc.e600" will be a shortcut for >>> "qemu-ppc -cpu e600". [1] >>> >>> I think it's easy to implement and don't change the default behavior of >>> qemu. And you can use hardlink to define several binaries with different >>> defaults (like busybox) >> >> Laurent, >> >> I had that thought, too, as being the cleanest and simplest to implement, >> but it didn't work out as a practical solution. Having execution depend >> on the name of the file would require a lot of tuning of magics, masks, >> and interpreters in /proc/sys/fs/binfmt_misc to get the behavior that I >> depend on. It would require one entry per binary. >> >> With the implementation that I've proposed, I only need two fairly generic >> entries (ppc and ppc64) stock from Ubuntu's qemu-user-static package. >> With Docker it's trivial to bind <any_path>/qemu-ppc.e500mc to >> /usr/bin/qemu-ppc-static within the container. Which gives me complete >> control over how the container is emulated. > > So I (sadly) think the wrapper is the best solution... > > write a C statically linked program that call the qemu-user-static with > the good "-cpu" value. > > Something like: > > https://github.com/parazyd/qemu-wrapper/blob/master/qemu-wrapper.c Laurent, Yes, that seems like a very simple solution to my problem. Thanks for the tip. I'll give it a shot. -Aaron S. > > Laurent