* [Qemu-devel] QEMU build fails with Clang? @ 2013-01-05 1:48 Brad Smith 2013-01-05 16:51 ` Blue Swirl 0 siblings, 1 reply; 6+ messages in thread From: Brad Smith @ 2013-01-05 1:48 UTC (permalink / raw) To: qemu-devel Supposedly QEMU is able to build with Clang and yet trying to do so I am seeing the build fail as follows.. Comments? 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. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] QEMU build fails with Clang? 2013-01-05 1:48 [Qemu-devel] QEMU build fails with Clang? Brad Smith @ 2013-01-05 16:51 ` Blue Swirl 2013-01-06 3:19 ` Ashley 2013-01-06 9:40 ` Brad Smith 0 siblings, 2 replies; 6+ messages in thread From: Blue Swirl @ 2013-01-05 16:51 UTC (permalink / raw) To: Brad Smith; +Cc: qemu-devel [-- Attachment #1: Type: text/plain, Size: 3016 bytes --] On Sat, Jan 5, 2013 at 1:48 AM, Brad Smith <brad@comstyle.com> 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. > > > 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. > > [-- Attachment #2: 0001-optionrom-build-with-discrete-CPP-and-AS-steps.patch --] [-- Type: text/x-diff, Size: 2403 bytes --] From dcdd392a0341bf7ff65b114055dc221aa013fa93 Mon Sep 17 00:00:00 2001 Message-Id: <dcdd392a0341bf7ff65b114055dc221aa013fa93.1357402566.git.blauwirbel@gmail.com> From: Blue Swirl <blauwirbel@gmail.com> Date: Sat, 5 Jan 2013 10:10:27 +0000 Subject: [PATCH] optionrom: build with discrete CPP and AS steps Build option ROM .S files with separate preprocessor and assembler steps because the C compiler could be unsuitable. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- configure | 6 ++++++ rules.mak | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 837a84a..b17b9a2 100755 --- a/configure +++ b/configure @@ -262,6 +262,8 @@ else fi ar="${AR-${cross_prefix}ar}" +as="${AS-${cross_prefix}as}" +cpp="${CPP-${cross_prefix}cpp}" objcopy="${OBJCOPY-${cross_prefix}objcopy}" ld="${LD-${cross_prefix}ld}" libtool="${LIBTOOL-${cross_prefix}libtool}" @@ -3712,6 +3714,8 @@ echo "CC_I386=$cc_i386" >> $config_host_mak echo "HOST_CC=$host_cc" >> $config_host_mak echo "OBJCC=$objcc" >> $config_host_mak echo "AR=$ar" >> $config_host_mak +echo "AS=$as" >> $config_host_mak +echo "CPP=$cpp" >> $config_host_mak echo "OBJCOPY=$objcopy" >> $config_host_mak echo "LD=$ld" >> $config_host_mak echo "WINDRES=$windres" >> $config_host_mak @@ -4264,6 +4268,8 @@ for rom in seabios vgabios ; do echo "CPP=${cross_prefix}cpp" >> $config_mak echo "OBJCOPY=objcopy" >> $config_mak echo "IASL=iasl" >> $config_mak + echo "AS=$as" >> $config_mak + echo "CPP=$cpp" >> $config_mak echo "LD=$ld" >> $config_mak done diff --git a/rules.mak b/rules.mak index 8448b94..3204f54 100644 --- a/rules.mak +++ b/rules.mak @@ -28,8 +28,11 @@ else $(call quiet-command,$(LIBTOOL) --mode=compile --quiet --tag=CC $(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," lt CC $@") endif -%.o: %.S - $(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," AS $(TARGET_DIR)$@") +%.asm: %.S + $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -o $@ $<," CPP $(TARGET_DIR)$@") + +%.o: %.asm + $(call quiet-command,$(AS) $(ASFLAGS) -o $@ $<," AS $(TARGET_DIR)$@") %.o: %.m $(call quiet-command,$(OBJCC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@") -- 1.7.2.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] QEMU build fails with Clang? 2013-01-05 16:51 ` Blue Swirl @ 2013-01-06 3:19 ` Ashley 2013-01-06 3:26 ` Brad Smith 2013-01-06 9:40 ` Brad Smith 1 sibling, 1 reply; 6+ messages in thread From: Ashley @ 2013-01-06 3:19 UTC (permalink / raw) To: qemu-devel On 1/5/2013 8:51 AM, Blue Swirl wrote: > On Sat, Jan 5, 2013 at 1:48 AM, Brad Smith <brad@comstyle.com> 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. > >> >> >> 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. >> >> Have you committed this to the git? (or is the term push) I think that might be a good idea if you haven't (or some variation of this fix) because clang is going to be the "official" C/C++ compiler in FreeBSD 10 (as I've heard). ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] QEMU build fails with Clang? 2013-01-06 3:19 ` Ashley @ 2013-01-06 3:26 ` Brad Smith 0 siblings, 0 replies; 6+ messages in thread From: Brad Smith @ 2013-01-06 3:26 UTC (permalink / raw) To: Ashley; +Cc: qemu-devel On Sat, Jan 05, 2013 at 07:19:11PM -0800, Ashley wrote: > On 1/5/2013 8:51 AM, Blue Swirl wrote: > >On Sat, Jan 5, 2013 at 1:48 AM, Brad Smith <brad@comstyle.com> 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. > > > >> > >> > >>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. > >> > >> > > Have you committed this to the git? (or is the term push) Considering I'm still building and haven't replied yet.. no. > I think that might be a good idea if you haven't (or some variation > of this fix) because clang is going to be the "official" C/C++ > compiler in FreeBSD 10 (as I've heard). It's known as the system compiler and that is already the case. Although I'm not using FreeBSD and this is still important even if not using FreeBSD. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] QEMU build fails with Clang? 2013-01-05 16:51 ` Blue Swirl 2013-01-06 3:19 ` Ashley @ 2013-01-06 9:40 ` Brad Smith 2013-01-06 10:26 ` Blue Swirl 1 sibling, 1 reply; 6+ messages in thread From: Brad Smith @ 2013-01-06 9:40 UTC (permalink / raw) To: Blue Swirl; +Cc: qemu-devel On Sat, Jan 05, 2013 at 04:51:01PM +0000, Blue Swirl wrote: > On Sat, Jan 5, 2013 at 1:48 AM, Brad Smith <brad@comstyle.com> 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. BTW, there are some interesting warnings spit out while compiling with Clang and most of them look to be legit issues with the code. 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. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] QEMU build fails with Clang? 2013-01-06 9:40 ` Brad Smith @ 2013-01-06 10:26 ` Blue Swirl 0 siblings, 0 replies; 6+ messages in thread From: Blue Swirl @ 2013-01-06 10:26 UTC (permalink / raw) To: Brad Smith; +Cc: qemu-devel On Sun, Jan 6, 2013 at 9:40 AM, Brad Smith <brad@comstyle.com> 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 <brad@comstyle.com> 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. > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-01-06 10:27 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-01-05 1:48 [Qemu-devel] QEMU build fails with Clang? Brad Smith 2013-01-05 16:51 ` Blue Swirl 2013-01-06 3:19 ` Ashley 2013-01-06 3:26 ` Brad Smith 2013-01-06 9:40 ` Brad Smith 2013-01-06 10:26 ` Blue Swirl
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).