Enable building of op.o on gcc4
cover Enable building of op.o on gcc4
Compiling qemu on gcc4 has been a long standing issue. During the time several approaches came up, each more or less intrusive.
I have collected the ones I found to be the cleanest, fixed PowerPC host support with Michael Matz and am sending everything as a patchset now, hoping that someone comments on these patches and they will finally get included.
Please test these patches on all platforms you have available.
Regards,
Alex
Thursday 17 January 2008 08:41:32 tarihinde Alexander Graf şunları yazmıştı:
Quoted 9 lines
Compiling qemu on gcc4 has been a long standing issue. During the time several approaches came up, each more or less intrusive.
I have collected the ones I found to be the cleanest, fixed PowerPC host support with Michael Matz and am sending everything as a patchset now, hoping that someone comments on these patches and they will finally get included.
Please test these patches on all platforms you have available.
Thanks but ppc target doesn't work here with gcc 4.3 trunk , i686-linux :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer -Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -fomit-frame-pointer -I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-ppc -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/ppc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu-DHAS_AUDIO
-DHAS_AUDIO_CHOICE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -o
cpu-exec.o /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/cpu-exec.c
../dyngen -g -o gen-op.h op.o
dyngen: ret or jmp expected at the end of op_divw
This is for ppc-linux-user .
Also arm-linux-user is broken :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer -Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/mips -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu -DHAS_AUDIO -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -o
helper.o /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips/helper.c /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c: In
function 'op_iwmmxt_movq_wRn_M0':/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
unable to find a register to spill in class 'GENERAL_REGS' /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error: this
is the insn:
(insn:HI 8 17 18
2 /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:175 (set
(mem/s/j:DI (plus:SI (plus:SI (mult:SI (reg/f:SI 59)
(const_int 8 [0x8]))
(reg/f:SI 58 [ env.2032 ]))
(const_int 4 [0x4])) [0 <variable>.iwmmxt.regs S8 A32])
(reg:DI 60 [ <variable>.iwmmxt.val ])) 63 {*movdi_2}
(expr_list:REG_DEAD (reg:DI 60 [ <variable>.iwmmxt.val ])
(expr_list:REG_DEAD (reg/f:SI 59)
(expr_list:REG_DEAD (reg/f:SI 58 [ env.2032 ])
(nil)))))/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: confused by earlier errors, bailing out
Thanks,
ismail
Signature · 1 line
Never learn by your mistakes, if you do you may never dare to try again.
Hi,
Quoted 11 lines · Ismail Dönmez
Thanks but ppc target doesn't work here with gcc 4.3 trunk , i686-linux :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer -Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -fomit-frame-pointer -I. -I..
(quoted diff) +0
-3-I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-ppc -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/ppc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu-DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -ocpu-exec.o
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/cpu-exec.c../dyngen -g -ogen-op.hop.o
dyngen: ret or jmp expected at the end ofop_divwThis is for ppc-linux-user .
Does not happen for me, with gcc 4.1.2 on OpenSUSE 10.2.
Quoted 24 lines
Also arm-linux-user is broken :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer -Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -I. -I..
(quoted diff) +0
-3-I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/mips -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu -DHAS_AUDIO -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -ohelper.o
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips/helper.c/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c: In function 'op_iwmmxt_movq_wRn_M0':/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
unable to find a register to spill in class 'GENERAL_REGS'/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error: this is the insn:
(insn:HI 8 17 18
2/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:175(set (mem/s/j:DI (plus:SI (plus:SI (mult:SI (reg/f:SI 59)(const_int 8 [0x8])) (reg/f:SI 58 [ env.2032 ])) (const_int 4 [0x4])) [0 <variable>.iwmmxt.regs S8 A32]) (reg:DI 60 [ <variable>.iwmmxt.val ])) 63 {*movdi_2} (expr_list:REG_DEAD (reg:DI 60 [ <variable>.iwmmxt.val ]) (expr_list:REG_DEAD (reg/f:SI 59) (expr_list:REG_DEAD (reg/f:SI 58 [ env.2032 ]) (nil)))))
Quoted 2 lines
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: confused by earlier errors, bailing out
I do not get this error, either.
Ciao,
Dscho
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
Quoted 47 lines
Hi,
Quoted 15 lines · Ismail Dönmez
Thanks but ppc target doesn't work here with gcc 4.3 trunk , i686-linux :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer
(quoted diff) +0
-9-Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -fomit-frame-pointer -I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-ppc -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/ppc -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu-DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -o cpu-exec.o /var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/cpu-exec.c../dyngen -g -o
gen-op.hop.o
dyngen: ret or jmp expected at the end ofop_divwQuoted 1 line
This is for ppc-linux-user .
Does not happen for me, with gcc 4.1.2 on OpenSUSE 10.2.
Quoted 25 lines
Also arm-linux-user is broken :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer
(quoted diff) +0
-8-Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/mips -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu -DHAS_AUDIO -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -o helper.o
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips/helper.c/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c: In function 'op_iwmmxt_movq_wRn_M0':/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
unable to find a register to spill in class 'GENERAL_REGS'/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
this is the insn:
(insn:HI 8 17 18
2/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:175(set (mem/s/j:DI (plus:SI (plus:SI (mult:SI (reg/f:SI 59)(const_int 8 [0x8])) (reg/f:SI 58 [ env.2032 ])) (const_int 4 [0x4])) [0 <variable>.iwmmxt.regs S8 A32]) (reg:DI 60 [ <variable>.iwmmxt.val ])) 63 {*movdi_2}
Quoted 8 lines
Quoted 6 lines
(expr_list:REG_DEAD (reg:DI 60 [ <variable>.iwmmxt.val ])
(expr_list:REG_DEAD (reg/f:SI 59) (expr_list:REG_DEAD (reg/f:SI 58 [ env.2032 ]) (nil)))))
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176:
confused by earlier errors, bailing outI do not get this error, either.
Might be a GCC 4.3 thing :-/
Regards,
ismail
Signature · 1 line
Never learn by your mistakes, if you do you may never dare to try again.
Hi,
Quoted 1 line · Ismail Dönmez
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
??
Quoted 1 line
Might be a GCC 4.3 thing :-/
I guess so. Maybe I will find some time next week to compile gcc 4.3 and test with it...
Ciao,
Dscho
Am 17.01.2008 um 23:59 schrieb Johannes Schindelin:
Quoted 5 lines · Ismail Dönmez
Quoted 2 lines
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
??
From the 'missing' i-dots and the mail domain I'd infer Turkish. ;)
Andreas
Friday 18 January 2008 00:59:36 tarihinde Johannes Schindelin şunları yazmıştı:
Quoted 3 lines
Quoted 1 line
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
??
Turkish for "@date you wrote this."
Regards,
ismail
Signature · 1 line
Never learn by your mistakes, if you do you may never dare to try again.
Hi,
Quoted 7 lines · Ismail Dönmez
Friday 18 January 2008 00:59:36 tarihinde Johannes Schindelin şunları yazmıştı:
Quoted 3 lines
Quoted 1 line
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
??
Turkish for "@date you wrote this."
I thought as much, but at least in other mails I can read my name...
Ciao,
Dscho
Quoted 62 lines · Ismail Dönmez
Thursday 17 January 2008 19:00:11 tarihinde şunları yazmıştınız:
Quoted 52 lines
Hi,
Quoted 18 lines · Ismail Dönmez
Thanks but ppc target doesn't work here with gcc 4.3 trunk , i686-linux :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer -Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -fomit-frame- pointer
(quoted diff) +0
-4-I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-ppc -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/ppc -
D_GNU_SOURCE(quoted diff) +0
-3-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu-DHAS_AUDIO -DHAS_AUDIO_CHOICE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c
-o cpu-exec.o/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/cpu-exec.c../dyngen -g -ogen-op.hop.o
dyngen: ret or jmp expected at the end ofop_divwQuoted 1 line
This is for ppc-linux-user .
Does not happen for me, with gcc 4.1.2 on OpenSUSE 10.2.
Quoted 27 lines
Also arm-linux-user is broken :
gcc -mtune=native -march=native -O2 -pipe -fomit-frame-pointer
(quoted diff) +0
-5-Wstrict-overflow -Wall -O2 -g -fno-strict-aliasing -I. -I.. -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1 -MMD -MP -DNEED_CPU_H -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/linux-user/mips -
D_GNU_SOURCE(quoted diff) +0
-3-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/fpu -DHAS_AUDIO -I/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/slirp -c -o helper.o
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-mips/helper.c/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c: In function 'op_iwmmxt_movq_wRn_M0':/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
unable to find a register to spill in class 'GENERAL_REGS'/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176: error:
this is the insn:
(insn:HI 8 17 18
2/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:175(set (mem/s/j:DI (plus:SI (plus:SI (mult:SI (reg/f:SI 59)(const_int 8 [0x8])) (reg/f:SI 58 [ env.2032 ])) (const_int 4 [0x4])) [0 <variable>.iwmmxt.regs S8 A32]) (reg:DI 60 [ <variable>.iwmmxt.val ])) 63 {*movdi_2}Quoted 8 lines
Quoted 6 lines
(expr_list:REG_DEAD (reg:DI 60 [ <variable>.iwmmxt.val ])
(expr_list:REG_DEAD (reg/f:SI 59) (expr_list:REG_DEAD (reg/f:SI 58 [ env.2032 ]) (nil)))))
/var/pisi/qemu-0.9.1-9/work/qemu-0.9.1/target-arm/op_iwmmxt.c:176:
confused by earlier errors, bailing outI do not get this error, either.
Quoted 9 lines
Might be a GCC 4.3 thing :-/
Regards,
ismailSignature · 1 line
Never learn by your mistakes, if you do you may never dare to try again.
This looks rather like an old version of the patch. Are you sure you did a ./configure after applying the newest version of the patch (the one that modifies the configure script)?
Alex