From 7697e70aaabc5b0ab3426274652db09117f8f7fe Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Mon, 29 Jun 2009 14:49:03 +0100 Subject: [PATCH] Fix broken ELF coredump build on ppc kvm-87 build fails on ppc: https://koji.fedoraproject.org/koji/getfile?taskID=1441042&name=build.log gcc -I. -I.. -I/builddir/build/BUILD/qemu-kvm-devel-87/target-i386 -I/builddir/build/BUILD/qemu-kvm-devel-87 -MMD -MT elfload.o -MP -DNEED_CPU_H -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D__user= -I/builddir/build/BUILD/qemu-kvm-devel-87/tcg -I/builddir/build/BUILD/qemu-kvm-devel-87/tcg/ppc64 -I/builddir/build/BUILD/qemu-kvm-devel-87/fpu -I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user -I/builddir/build/BUILD/qemu-kvm-devel-87/linux-user/i386 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mminimal-toc -g -fno-strict-aliasing -O2 -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -c -o elfload.o /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:214: error: conflicting types for 'elf_greg_t' /usr/include/asm/elf.h:123: note: previous declaration of 'elf_greg_t' was here /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:220: error: conflicting types for 'elf_gregset_t' /usr/include/asm/elf.h:124: note: previous declaration of 'elf_gregset_t' was here In file included from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:697: ../elf.h:457:1: warning: "R_PPC_NUM" redefined In file included from /usr/include/asm/sigcontext.h:13, from /usr/include/bits/sigcontext.h:28, from /usr/include/signal.h:339, from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/qemu.h:4, from /builddir/build/BUILD/qemu-kvm-devel-87/linux-user/elfload.c:16: /usr/include/asm/elf.h:81:1: warning: this is the location of the previous definition Code was introduced in kvm-87 by: 9edc5d7966 linux-user: added x86 and x86_64 support for ELF coredump edf8e2af14 linux-user: implemented ELF coredump support for ARM target It seems ppc kernel-headers is unusual in exposing elf_greg_t definitions. Other arches seem to avoid doing that. Signed-off-by: Mark McLoughlin --- linux-user/elfload.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index d31cca7..f6488c7 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -134,6 +134,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i regs->rip = infop->entry; } +#ifdef FIX_BROKEN_PPC_BUILD typedef target_ulong elf_greg_t; typedef uint32_t target_uid_t; typedef uint32_t target_gid_t; @@ -179,6 +180,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env) (*regs)[25] = env->segs[R_FS].selector & 0xffff; (*regs)[26] = env->segs[R_GS].selector & 0xffff; } +#endif /* FIX_BROKEN_PPC_BUILD */ #else @@ -211,6 +213,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i regs->edx = 0; } +#ifdef FIX_BROKEN_PPC_BUILD typedef target_ulong elf_greg_t; typedef uint16_t target_uid_t; typedef uint16_t target_gid_t; @@ -246,9 +249,12 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env) (*regs)[15] = env->regs[R_ESP]; (*regs)[16] = env->segs[R_SS].selector & 0xffff; } +#endif /* FIX_BROKEN_PPC_BUILD */ #endif +#ifdef FIX_BROKEN_PPC_BUILD #define USE_ELF_CORE_DUMP +#endif /* FIX_BROKEN_PPC_BUILD */ #define ELF_EXEC_PAGESIZE 4096 #endif @@ -286,6 +292,7 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i regs->ARM_r10 = infop->start_data; } +#ifdef FIX_BROKEN_PPC_BUILD typedef uint32_t elf_greg_t; typedef uint16_t target_uid_t; typedef uint16_t target_gid_t; @@ -318,6 +325,7 @@ static void elf_core_copy_regs(elf_gregset_t *regs, const CPUState *env) } #define USE_ELF_CORE_DUMP +#endif /* FIX_BROKEN_PPC_BUILD */ #define ELF_EXEC_PAGESIZE 4096 enum -- 1.6.2.5