Skip to contentSkip to conversation

Enable building of op.o on gcc4

PATCH In review Alexander Graf 4 participants 9 messages Jan 17, 2008 – Jan 18, 2008

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw

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.
#2 lore raw

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 -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 .

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 -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)))))
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

#3 lore raw

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.h op.o
dyngen: ret or jmp expected at the end of op_divw

Quoted 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 out

I 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.
#4 lore raw

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

#5 lore raw

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

#6 lore raw
In reply to Johannes Schindelin

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.
#7 lore raw

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

#8 lore raw
In reply to Ismail Dönmez
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 -o gen-op.h op.o
dyngen: ret or jmp expected at the end of op_divw

Quoted 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 out

I do not get this error, either.

Quoted 9 lines

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.

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