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) Thanks, Laurent [1] something like: -- a/linux-user/main.c +++ b/linux-user/main.c @@ -4165,6 +4165,7 @@ static void usage(int exitcode) static int parse_args(int argc, char **argv) { const char *r; + const char *cpuname; int optind; const struct qemu_argument *arginfo; @@ -4179,6 +4180,11 @@ static int parse_args(int argc, char **argv) } } + cpuname = strrchr(argv[0], '.'); + if (cpuname && cpuname[1] != 0) { + cpu_model = strdup(cpuname + 1); + } + optind = 1; for (;;) { if (optind >= argc) {