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