diff mbox series

[v2,1/4] linux-user: Move CPU type name selection to a function

Message ID 20180116172510.28878-2-laurent@vivier.eu
State New
Headers show
Series linux-user: select CPU type according ELF header values | expand

Commit Message

Laurent Vivier Jan. 16, 2018, 5:25 p.m. UTC
Instead of a sequence of "#if ... #endif" move the
selection to a function in linux-user/*/target_elf.h

We can't add them in linux-user/*/target_cpu.h
because we will need to include "elf.h" to
use ELF flags with eflags, and including
"elf.h" in "target_cpu.h" introduces some
conflic in elfload.c

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---

Notes:
    v2: new patch in the series

 linux-user/aarch64/target_elf.h    | 14 +++++++++++++
 linux-user/alpha/target_elf.h      | 14 +++++++++++++
 linux-user/arm/target_elf.h        | 14 +++++++++++++
 linux-user/cris/target_elf.h       | 14 +++++++++++++
 linux-user/hppa/target_elf.h       | 14 +++++++++++++
 linux-user/i386/target_elf.h       | 14 +++++++++++++
 linux-user/m68k/target_elf.h       | 14 +++++++++++++
 linux-user/main.c                  | 41 ++------------------------------------
 linux-user/microblaze/target_elf.h | 14 +++++++++++++
 linux-user/mips/target_elf.h       | 14 +++++++++++++
 linux-user/mips64/target_elf.h     | 14 +++++++++++++
 linux-user/nios2/target_elf.h      | 14 +++++++++++++
 linux-user/openrisc/target_elf.h   | 14 +++++++++++++
 linux-user/ppc/target_elf.h        | 21 +++++++++++++++++++
 linux-user/s390x/target_elf.h      | 14 +++++++++++++
 linux-user/sh4/target_elf.h        | 14 +++++++++++++
 linux-user/sparc/target_elf.h      | 14 +++++++++++++
 linux-user/sparc64/target_elf.h    | 14 +++++++++++++
 linux-user/tilegx/target_elf.h     | 14 +++++++++++++
 linux-user/unicore32/target_elf.h  | 14 +++++++++++++
 linux-user/x86_64/target_elf.h     | 14 +++++++++++++
 21 files changed, 289 insertions(+), 39 deletions(-)
 create mode 100644 linux-user/aarch64/target_elf.h
 create mode 100644 linux-user/alpha/target_elf.h
 create mode 100644 linux-user/arm/target_elf.h
 create mode 100644 linux-user/cris/target_elf.h
 create mode 100644 linux-user/hppa/target_elf.h
 create mode 100644 linux-user/i386/target_elf.h
 create mode 100644 linux-user/m68k/target_elf.h
 create mode 100644 linux-user/microblaze/target_elf.h
 create mode 100644 linux-user/mips/target_elf.h
 create mode 100644 linux-user/mips64/target_elf.h
 create mode 100644 linux-user/nios2/target_elf.h
 create mode 100644 linux-user/openrisc/target_elf.h
 create mode 100644 linux-user/ppc/target_elf.h
 create mode 100644 linux-user/s390x/target_elf.h
 create mode 100644 linux-user/sh4/target_elf.h
 create mode 100644 linux-user/sparc/target_elf.h
 create mode 100644 linux-user/sparc64/target_elf.h
 create mode 100644 linux-user/tilegx/target_elf.h
 create mode 100644 linux-user/unicore32/target_elf.h
 create mode 100644 linux-user/x86_64/target_elf.h

Comments

Richard Henderson Jan. 16, 2018, 8:10 p.m. UTC | #1
On 01/16/2018 09:25 AM, Laurent Vivier wrote:
> Instead of a sequence of "#if ... #endif" move the
> selection to a function in linux-user/*/target_elf.h
> 
> We can't add them in linux-user/*/target_cpu.h
> because we will need to include "elf.h" to
> use ELF flags with eflags, and including
> "elf.h" in "target_cpu.h" introduces some
> conflic in elfload.c
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
> 
> Notes:
>     v2: new patch in the series

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


r~
Philippe Mathieu-Daudé Jan. 16, 2018, 8:34 p.m. UTC | #2
On 01/16/2018 02:25 PM, Laurent Vivier wrote:
> Instead of a sequence of "#if ... #endif" move the
> selection to a function in linux-user/*/target_elf.h
> 
> We can't add them in linux-user/*/target_cpu.h
> because we will need to include "elf.h" to
> use ELF flags with eflags, and including
> "elf.h" in "target_cpu.h" introduces some
> conflic in elfload.c
> 
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
> ---
> 
> Notes:
>     v2: new patch in the series
> 
>  linux-user/aarch64/target_elf.h    | 14 +++++++++++++
>  linux-user/alpha/target_elf.h      | 14 +++++++++++++
>  linux-user/arm/target_elf.h        | 14 +++++++++++++
>  linux-user/cris/target_elf.h       | 14 +++++++++++++
>  linux-user/hppa/target_elf.h       | 14 +++++++++++++
>  linux-user/i386/target_elf.h       | 14 +++++++++++++
>  linux-user/m68k/target_elf.h       | 14 +++++++++++++
>  linux-user/main.c                  | 41 ++------------------------------------
>  linux-user/microblaze/target_elf.h | 14 +++++++++++++
>  linux-user/mips/target_elf.h       | 14 +++++++++++++
>  linux-user/mips64/target_elf.h     | 14 +++++++++++++
>  linux-user/nios2/target_elf.h      | 14 +++++++++++++
>  linux-user/openrisc/target_elf.h   | 14 +++++++++++++
>  linux-user/ppc/target_elf.h        | 21 +++++++++++++++++++
>  linux-user/s390x/target_elf.h      | 14 +++++++++++++
>  linux-user/sh4/target_elf.h        | 14 +++++++++++++
>  linux-user/sparc/target_elf.h      | 14 +++++++++++++
>  linux-user/sparc64/target_elf.h    | 14 +++++++++++++
>  linux-user/tilegx/target_elf.h     | 14 +++++++++++++
>  linux-user/unicore32/target_elf.h  | 14 +++++++++++++
>  linux-user/x86_64/target_elf.h     | 14 +++++++++++++
>  21 files changed, 289 insertions(+), 39 deletions(-)
>  create mode 100644 linux-user/aarch64/target_elf.h
>  create mode 100644 linux-user/alpha/target_elf.h
>  create mode 100644 linux-user/arm/target_elf.h
>  create mode 100644 linux-user/cris/target_elf.h
>  create mode 100644 linux-user/hppa/target_elf.h
>  create mode 100644 linux-user/i386/target_elf.h
>  create mode 100644 linux-user/m68k/target_elf.h
>  create mode 100644 linux-user/microblaze/target_elf.h
>  create mode 100644 linux-user/mips/target_elf.h
>  create mode 100644 linux-user/mips64/target_elf.h
>  create mode 100644 linux-user/nios2/target_elf.h
>  create mode 100644 linux-user/openrisc/target_elf.h
>  create mode 100644 linux-user/ppc/target_elf.h
>  create mode 100644 linux-user/s390x/target_elf.h
>  create mode 100644 linux-user/sh4/target_elf.h
>  create mode 100644 linux-user/sparc/target_elf.h
>  create mode 100644 linux-user/sparc64/target_elf.h
>  create mode 100644 linux-user/tilegx/target_elf.h
>  create mode 100644 linux-user/unicore32/target_elf.h
>  create mode 100644 linux-user/x86_64/target_elf.h
> 
> diff --git a/linux-user/aarch64/target_elf.h b/linux-user/aarch64/target_elf.h
> new file mode 100644
> index 0000000000..a7eb962fba
> --- /dev/null
> +++ b/linux-user/aarch64/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef AARCH64_TARGET_ELF_H
> +#define AARCH64_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/alpha/target_elf.h b/linux-user/alpha/target_elf.h
> new file mode 100644
> index 0000000000..344e9f4d39
> --- /dev/null
> +++ b/linux-user/alpha/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef ALPHA_TARGET_ELF_H
> +#define ALPHA_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/arm/target_elf.h b/linux-user/arm/target_elf.h
> new file mode 100644
> index 0000000000..58ff6a0986
> --- /dev/null
> +++ b/linux-user/arm/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef ARM_TARGET_ELF_H
> +#define ARM_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/cris/target_elf.h b/linux-user/cris/target_elf.h
> new file mode 100644
> index 0000000000..99eb4ec704
> --- /dev/null
> +++ b/linux-user/cris/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef CRIS_TARGET_ELF_H
> +#define CRIS_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/hppa/target_elf.h b/linux-user/hppa/target_elf.h
> new file mode 100644
> index 0000000000..82b4e9535e
> --- /dev/null
> +++ b/linux-user/hppa/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef HPPA_TARGET_ELF_H
> +#define HPPA_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h
> new file mode 100644
> index 0000000000..1c6142e7da
> --- /dev/null
> +++ b/linux-user/i386/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef I386_TARGET_ELF_H
> +#define I386_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "qemu32";
> +}
> +#endif
> diff --git a/linux-user/m68k/target_elf.h b/linux-user/m68k/target_elf.h
> new file mode 100644
> index 0000000000..df375ad5d3
> --- /dev/null
> +++ b/linux-user/m68k/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef M68K_TARGET_ELF_H
> +#define M68K_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/main.c b/linux-user/main.c
> index 450eb3ce65..3954e8996b 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -35,6 +35,7 @@
>  #include "elf.h"
>  #include "exec/log.h"
>  #include "trace/control.h"
> +#include "target_elf.h"
>  
>  char *exec_path;
>  
> @@ -4319,45 +4320,7 @@ int main(int argc, char **argv, char **envp)
>      init_qemu_uname_release();
>  
>      if (cpu_model == NULL) {
> -#if defined(TARGET_I386)
> -#ifdef TARGET_X86_64
> -        cpu_model = "qemu64";
> -#else
> -        cpu_model = "qemu32";
> -#endif
> -#elif defined(TARGET_ARM)
> -        cpu_model = "any";
> -#elif defined(TARGET_UNICORE32)
> -        cpu_model = "any";
> -#elif defined(TARGET_M68K)
> -        cpu_model = "any";
> -#elif defined(TARGET_SPARC)
> -#ifdef TARGET_SPARC64
> -        cpu_model = "TI UltraSparc II";
> -#else
> -        cpu_model = "Fujitsu MB86904";
> -#endif
> -#elif defined(TARGET_MIPS)
> -#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64)
> -        cpu_model = "5KEf";
> -#else
> -        cpu_model = "24Kf";
> -#endif
> -#elif defined TARGET_OPENRISC
> -        cpu_model = "or1200";
> -#elif defined(TARGET_PPC)
> -# ifdef TARGET_PPC64
> -        cpu_model = "POWER8";
> -# else
> -        cpu_model = "750";
> -# endif
> -#elif defined TARGET_SH4
> -        cpu_model = "sh7785";
> -#elif defined TARGET_S390X
> -        cpu_model = "qemu";
> -#else
> -        cpu_model = "any";
> -#endif
> +        cpu_model = cpu_get_model(0);
>      }
>      tcg_exec_init(0);
>      /* NOTE: we need to init the CPU at this stage to get
> diff --git a/linux-user/microblaze/target_elf.h b/linux-user/microblaze/target_elf.h
> new file mode 100644
> index 0000000000..8a8f1debff
> --- /dev/null
> +++ b/linux-user/microblaze/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef MICROBLAZE_TARGET_ELF_H
> +#define MICROBLAZE_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/mips/target_elf.h b/linux-user/mips/target_elf.h
> new file mode 100644
> index 0000000000..bed0b43259
> --- /dev/null
> +++ b/linux-user/mips/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef MIPS_TARGET_ELF_H
> +#define MIPS_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "24Kf";
> +}
> +#endif
> diff --git a/linux-user/mips64/target_elf.h b/linux-user/mips64/target_elf.h
> new file mode 100644
> index 0000000000..5b6f4692e0
> --- /dev/null
> +++ b/linux-user/mips64/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef MIPS64_TARGET_ELF_H
> +#define MIPS64_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "5KEf";
> +}
> +#endif
> diff --git a/linux-user/nios2/target_elf.h b/linux-user/nios2/target_elf.h
> new file mode 100644
> index 0000000000..801e20afaf
> --- /dev/null
> +++ b/linux-user/nios2/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef NIOS2_TARGET_ELF_H
> +#define NIOS2_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/openrisc/target_elf.h b/linux-user/openrisc/target_elf.h
> new file mode 100644
> index 0000000000..40ceb025c9
> --- /dev/null
> +++ b/linux-user/openrisc/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef OPENRISC_TARGET_ELF_H
> +#define OPENRISC_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "or1200";
> +}
> +#endif
> diff --git a/linux-user/ppc/target_elf.h b/linux-user/ppc/target_elf.h
> new file mode 100644
> index 0000000000..f72f63a53c
> --- /dev/null
> +++ b/linux-user/ppc/target_elf.h
> @@ -0,0 +1,21 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef PPC_TARGET_ELF_H
> +#define PPC_TARGET_ELF_H

I'd rather use:

> +static inline const char *cpu_get_model(uint32_t eflags)
> +{

#ifdef TARGET_PPC64
        return "POWER8";
#else
        return "750";
#endif

> +}

anyway:
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> diff --git a/linux-user/s390x/target_elf.h b/linux-user/s390x/target_elf.h
> new file mode 100644
> index 0000000000..8114b59c1d
> --- /dev/null
> +++ b/linux-user/s390x/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef S390X_TARGET_ELF_H
> +#define S390X_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "qemu";
> +}
> +#endif
> diff --git a/linux-user/sh4/target_elf.h b/linux-user/sh4/target_elf.h
> new file mode 100644
> index 0000000000..f485e0cef2
> --- /dev/null
> +++ b/linux-user/sh4/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef SH4_TARGET_ELF_H
> +#define SH4_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "sh7785";
> +}
> +#endif
> diff --git a/linux-user/sparc/target_elf.h b/linux-user/sparc/target_elf.h
> new file mode 100644
> index 0000000000..31d508c0df
> --- /dev/null
> +++ b/linux-user/sparc/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef SPARC_TARGET_ELF_H
> +#define SPARC_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "Fujitsu MB86904";
> +}
> +#endif
> diff --git a/linux-user/sparc64/target_elf.h b/linux-user/sparc64/target_elf.h
> new file mode 100644
> index 0000000000..d6e388f1cf
> --- /dev/null
> +++ b/linux-user/sparc64/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef SPARC64_TARGET_ELF_H
> +#define SPARC64_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "TI UltraSparc II";
> +}
> +#endif
> diff --git a/linux-user/tilegx/target_elf.h b/linux-user/tilegx/target_elf.h
> new file mode 100644
> index 0000000000..7197bb0005
> --- /dev/null
> +++ b/linux-user/tilegx/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef TILEGX_TARGET_ELF_H
> +#define TILEGX_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/unicore32/target_elf.h b/linux-user/unicore32/target_elf.h
> new file mode 100644
> index 0000000000..e2bfcb2ca3
> --- /dev/null
> +++ b/linux-user/unicore32/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef UNICORE32_TARGET_ELF_H
> +#define UNICORE32_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "any";
> +}
> +#endif
> diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h
> new file mode 100644
> index 0000000000..7b76a90de8
> --- /dev/null
> +++ b/linux-user/x86_64/target_elf.h
> @@ -0,0 +1,14 @@
> +/*
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation, or (at your option) any
> + * later version. See the COPYING file in the top-level directory.
> + */
> +
> +#ifndef X86_64_TARGET_ELF_H
> +#define X86_64_TARGET_ELF_H
> +static inline const char *cpu_get_model(uint32_t eflags)
> +{
> +    return "qemu64";
> +}
> +#endif
>
diff mbox series

Patch

diff --git a/linux-user/aarch64/target_elf.h b/linux-user/aarch64/target_elf.h
new file mode 100644
index 0000000000..a7eb962fba
--- /dev/null
+++ b/linux-user/aarch64/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef AARCH64_TARGET_ELF_H
+#define AARCH64_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/alpha/target_elf.h b/linux-user/alpha/target_elf.h
new file mode 100644
index 0000000000..344e9f4d39
--- /dev/null
+++ b/linux-user/alpha/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef ALPHA_TARGET_ELF_H
+#define ALPHA_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/arm/target_elf.h b/linux-user/arm/target_elf.h
new file mode 100644
index 0000000000..58ff6a0986
--- /dev/null
+++ b/linux-user/arm/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef ARM_TARGET_ELF_H
+#define ARM_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/cris/target_elf.h b/linux-user/cris/target_elf.h
new file mode 100644
index 0000000000..99eb4ec704
--- /dev/null
+++ b/linux-user/cris/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef CRIS_TARGET_ELF_H
+#define CRIS_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/hppa/target_elf.h b/linux-user/hppa/target_elf.h
new file mode 100644
index 0000000000..82b4e9535e
--- /dev/null
+++ b/linux-user/hppa/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef HPPA_TARGET_ELF_H
+#define HPPA_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/i386/target_elf.h b/linux-user/i386/target_elf.h
new file mode 100644
index 0000000000..1c6142e7da
--- /dev/null
+++ b/linux-user/i386/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef I386_TARGET_ELF_H
+#define I386_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "qemu32";
+}
+#endif
diff --git a/linux-user/m68k/target_elf.h b/linux-user/m68k/target_elf.h
new file mode 100644
index 0000000000..df375ad5d3
--- /dev/null
+++ b/linux-user/m68k/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef M68K_TARGET_ELF_H
+#define M68K_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/main.c b/linux-user/main.c
index 450eb3ce65..3954e8996b 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -35,6 +35,7 @@ 
 #include "elf.h"
 #include "exec/log.h"
 #include "trace/control.h"
+#include "target_elf.h"
 
 char *exec_path;
 
@@ -4319,45 +4320,7 @@  int main(int argc, char **argv, char **envp)
     init_qemu_uname_release();
 
     if (cpu_model == NULL) {
-#if defined(TARGET_I386)
-#ifdef TARGET_X86_64
-        cpu_model = "qemu64";
-#else
-        cpu_model = "qemu32";
-#endif
-#elif defined(TARGET_ARM)
-        cpu_model = "any";
-#elif defined(TARGET_UNICORE32)
-        cpu_model = "any";
-#elif defined(TARGET_M68K)
-        cpu_model = "any";
-#elif defined(TARGET_SPARC)
-#ifdef TARGET_SPARC64
-        cpu_model = "TI UltraSparc II";
-#else
-        cpu_model = "Fujitsu MB86904";
-#endif
-#elif defined(TARGET_MIPS)
-#if defined(TARGET_ABI_MIPSN32) || defined(TARGET_ABI_MIPSN64)
-        cpu_model = "5KEf";
-#else
-        cpu_model = "24Kf";
-#endif
-#elif defined TARGET_OPENRISC
-        cpu_model = "or1200";
-#elif defined(TARGET_PPC)
-# ifdef TARGET_PPC64
-        cpu_model = "POWER8";
-# else
-        cpu_model = "750";
-# endif
-#elif defined TARGET_SH4
-        cpu_model = "sh7785";
-#elif defined TARGET_S390X
-        cpu_model = "qemu";
-#else
-        cpu_model = "any";
-#endif
+        cpu_model = cpu_get_model(0);
     }
     tcg_exec_init(0);
     /* NOTE: we need to init the CPU at this stage to get
diff --git a/linux-user/microblaze/target_elf.h b/linux-user/microblaze/target_elf.h
new file mode 100644
index 0000000000..8a8f1debff
--- /dev/null
+++ b/linux-user/microblaze/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef MICROBLAZE_TARGET_ELF_H
+#define MICROBLAZE_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/mips/target_elf.h b/linux-user/mips/target_elf.h
new file mode 100644
index 0000000000..bed0b43259
--- /dev/null
+++ b/linux-user/mips/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef MIPS_TARGET_ELF_H
+#define MIPS_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "24Kf";
+}
+#endif
diff --git a/linux-user/mips64/target_elf.h b/linux-user/mips64/target_elf.h
new file mode 100644
index 0000000000..5b6f4692e0
--- /dev/null
+++ b/linux-user/mips64/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef MIPS64_TARGET_ELF_H
+#define MIPS64_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "5KEf";
+}
+#endif
diff --git a/linux-user/nios2/target_elf.h b/linux-user/nios2/target_elf.h
new file mode 100644
index 0000000000..801e20afaf
--- /dev/null
+++ b/linux-user/nios2/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef NIOS2_TARGET_ELF_H
+#define NIOS2_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/openrisc/target_elf.h b/linux-user/openrisc/target_elf.h
new file mode 100644
index 0000000000..40ceb025c9
--- /dev/null
+++ b/linux-user/openrisc/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef OPENRISC_TARGET_ELF_H
+#define OPENRISC_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "or1200";
+}
+#endif
diff --git a/linux-user/ppc/target_elf.h b/linux-user/ppc/target_elf.h
new file mode 100644
index 0000000000..f72f63a53c
--- /dev/null
+++ b/linux-user/ppc/target_elf.h
@@ -0,0 +1,21 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef PPC_TARGET_ELF_H
+#define PPC_TARGET_ELF_H
+#ifdef TARGET_PPC64
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "POWER8";
+}
+#else
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "750";
+}
+#endif
+#endif
diff --git a/linux-user/s390x/target_elf.h b/linux-user/s390x/target_elf.h
new file mode 100644
index 0000000000..8114b59c1d
--- /dev/null
+++ b/linux-user/s390x/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef S390X_TARGET_ELF_H
+#define S390X_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "qemu";
+}
+#endif
diff --git a/linux-user/sh4/target_elf.h b/linux-user/sh4/target_elf.h
new file mode 100644
index 0000000000..f485e0cef2
--- /dev/null
+++ b/linux-user/sh4/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef SH4_TARGET_ELF_H
+#define SH4_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "sh7785";
+}
+#endif
diff --git a/linux-user/sparc/target_elf.h b/linux-user/sparc/target_elf.h
new file mode 100644
index 0000000000..31d508c0df
--- /dev/null
+++ b/linux-user/sparc/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef SPARC_TARGET_ELF_H
+#define SPARC_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "Fujitsu MB86904";
+}
+#endif
diff --git a/linux-user/sparc64/target_elf.h b/linux-user/sparc64/target_elf.h
new file mode 100644
index 0000000000..d6e388f1cf
--- /dev/null
+++ b/linux-user/sparc64/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef SPARC64_TARGET_ELF_H
+#define SPARC64_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "TI UltraSparc II";
+}
+#endif
diff --git a/linux-user/tilegx/target_elf.h b/linux-user/tilegx/target_elf.h
new file mode 100644
index 0000000000..7197bb0005
--- /dev/null
+++ b/linux-user/tilegx/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef TILEGX_TARGET_ELF_H
+#define TILEGX_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/unicore32/target_elf.h b/linux-user/unicore32/target_elf.h
new file mode 100644
index 0000000000..e2bfcb2ca3
--- /dev/null
+++ b/linux-user/unicore32/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef UNICORE32_TARGET_ELF_H
+#define UNICORE32_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "any";
+}
+#endif
diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h
new file mode 100644
index 0000000000..7b76a90de8
--- /dev/null
+++ b/linux-user/x86_64/target_elf.h
@@ -0,0 +1,14 @@ 
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation, or (at your option) any
+ * later version. See the COPYING file in the top-level directory.
+ */
+
+#ifndef X86_64_TARGET_ELF_H
+#define X86_64_TARGET_ELF_H
+static inline const char *cpu_get_model(uint32_t eflags)
+{
+    return "qemu64";
+}
+#endif