qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] QEMU build fails with Clang?


From: Blue Swirl
Subject: Re: [Qemu-devel] QEMU build fails with Clang?
Date: Sun, 6 Jan 2013 10:26:57 +0000

On Sun, Jan 6, 2013 at 9:40 AM, Brad Smith <address@hidden> wrote:
> On Sat, Jan 05, 2013 at 04:51:01PM +0000, Blue Swirl wrote:
>> On Sat, Jan 5, 2013 at 1:48 AM, Brad Smith <address@hidden> wrote:
>> > Supposedly QEMU is able to build with Clang and yet trying to do so
>> > I am seeing the build fail as follows..
>> >
>> > Comments?
>>
>> Clang does not support this kind of assembly code yet. The attached
>> patch avoids this by using 'as' and 'cpp' for .S files, please try. It
>> could still fail if the 'as' does not come from binutils.
>
> Could this please use $CC -E instead unless overridden? It just
> makes it easier if I only have to override CC and not CPP as well
> if using LLVM/Clang or even say another copy of GCC and have it
> use the appropriate C preprocessor.

I've just posted to the list an updated version using $cc -E.

>
> BTW, there are some interesting warnings spit out while compiling
> with Clang and most of them look to be legit issues with the code.

I'm using this to get a warning free build:
CFLAGS=-Wno-unused-value -Wno-initializer-overrides
-Wno-constant-conversion -Wno-unneeded-internal-declaration

Not all warnings are very interesting to fix, for example initializer
override warnings comes from somewhat useful shorthand in defining
tables and the only warning from -Wconstant-conversion in ARM code
looks like a bug in Clang.

But there could be additional Clang warning flags besides the defaults
that could be useful to enable, using -Weverything (or what was it)
produced some interesting warnings.

>
> QEMU builds and works fine with Clang with this patch applied.
>
>> >
>> >
>> > gmake[1]: Entering directory `/home/brad/qemu/pc-bios/optionrom'
>> > clang -I. -I/home/brad/qemu -I/home/brad/qemu/include 
>> > -I/home/brad/qemu/libcacard -Wall -Wstrict-prototypes -Werror 
>> > -fomit-frame-pointer -fno-builtin -I/home/brad/qemu   -fno-stack-protector 
>> > -MMD -MP -MT multiboot.o -MF ./multiboot.d -Wall -Wstrict-prototypes 
>> > -Werror -fomit-frame-pointer -fno-builtin -I/home/brad/qemu   
>> > -fno-stack-protector -c -o multiboot.o multiboot.S
>> > multiboot.S:31:1: error: unexpected directive .code16
>> > .code16; .text; .global _start; _start:; .short 0xaa55; .byte (_end - 
>> > _start) / 512; lret; .org 0x18; .short 0; .short _pnph; _pnph: .ascii 
>> > "$PnP"; .byte 0x01; .byte ( _pnph_len / 16 ); .short 0x0000; .byte 0x00; 
>> > .byte 0x00; .long 0x00000000; .short _manufacturer; .short _product; .long 
>> > 0x00000000; .short 0x0000; .short 0x0000; .short _bev; .short 0x0000; 
>> > .short 0x0000; .equ _pnph_len, . - _pnph; _bev:; movw %cs, %ax; movw %ax, 
>> > %ds;
>> > ^
>> > multiboot.S:31:8: error: .code16 not supported yet
>> > .code16; .text; .global _start; _start:; .short 0xaa55; .byte (_end - 
>> > _start) / 512; lret; .org 0x18; .short 0; .short _pnph; _pnph: .ascii 
>> > "$PnP"; .byte 0x01; .byte ( _pnph_len / 16 ); .short 0x0000; .byte 0x00; 
>> > .byte 0x00; .long 0x00000000; .short _manufacturer; .short _product; .long 
>> > 0x00000000; .short 0x0000; .short 0x0000; .short _bev; .short 0x0000; 
>> > .short 0x0000; .equ _pnph_len, . - _pnph; _bev:; movw %cs, %ax; movw %ax, 
>> > %ds;
>> >        ^
>> > multiboot.S:71:135: error: unknown directive
>> >  read_fw 0x0a; mov %eax, %edi; read_fw 0x0b; mov %eax, %ecx; mov $0x12, 
>> > %ax; mov $0x510, %edx; outw %ax, (%dx); mov $0x511, %dx; cld; .dc.b 
>> > 0xf3,0x6c
>> >                                                                            
>> >                                                            ^
>> > multiboot.S:102:2: error: unknown directive
>> >  .dc.b 0x26,0x67,0x66,0x89,0x4f,0xfc
>> >  ^
>> > multiboot.S:130:17: error: unexpected token in argument list
>> >  data32 lgdt %gs:6
>> >                 ^
>> > multiboot.S:138:15: error: unknown token in expression
>> >  data32 ljmp *%gs:0
>> >               ^
>> > multiboot.S:152:135: error: unknown directive
>> >  read_fw 0x07; mov %eax, %edi; read_fw 0x08; mov %eax, %ecx; mov $0x11, 
>> > %ax; mov $0x510, %edx; outw %ax, (%dx); mov $0x511, %dx; cld; .dc.b 
>> > 0xf3,0x6c
>> >                                                                            
>> >                                                            ^
>> > gmake[1]: *** [multiboot.o] Error 1
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]