Re: Compiling Xen on FreeBSD using clang ...

From: Matthew Grooms <mgrooms_at_shrew.net>
Date: Sun, 19 Oct 2014 18:01:18 -0500
On 10/19/2014 3:03 PM, Marcin Cieslak wrote:
>
> On Sun, 19 Oct 2014, Matthew Grooms wrote:
>
[...]
>
> I have recently managed to compile Xen (4.5 unstable from git master) using
> few patches in the source code (I posted them to xen-devel_at_, most of them
> are almost the same as some earlier work by Julien Grall).
>

Hi Marcin,

I pulled in a few patches that were posted on the xen-devel list to get 
things to compile. Attached was the subset that I needed to get Xen 4.5 
to build with the clang 3.4.1 ( with seabios disabled ).

> I have used clang version 3.5.0 (trunk) from ports just for the .code16
> support, other than that clang 3.4.1 was fine.
>

Do you have a link to your patch set? I sifted through the ones posted 
by Julien and I probably saw most of yours as well. My goal was to get 
as much as possible to compile with the existing system compiler so I 
didn't try 3.5.0. Maybe that's a better bet.

> Xen kernel compiled this way even boots successfully and starts Debian
> dom0.
>

I was able to boot a FreeBSD PVH dom0 based on Rogers instructions. 
Pretty amazing that it all works with a GENERIC kernel. Was mostly 
focusing on getting the compile clean enough for a port/pkg of the final 
4.5 release.

[mgrooms_at_xen2 ~]$ uname -a
FreeBSD xen2.shrew.lab 11.0-CURRENT FreeBSD 11.0-CURRENT #0 
a50212f(pvh_dom0_v7): Sun Oct 19 09:57:23 CDT 2014 
root_at_xen2.shrew.lab:/usr/obj/usr/src/sys/GENERIC  amd64
[root_at_xen2 ~]# xl list
Name                                        ID   Mem VCPUs      State 
Time(s)
Domain-0                                     0  1024     2     r----- 
   7.1

> This command was used to compile with 3.4.1 (without hvmloader):
> env CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib gmake clang=y
> CC=clang-devel HOSTCC=clang-devel CONFIG_SEABIOS=y CONFIG_HVMLOADER=n
> SEABIOS_PATH=$HOME/qemu/bios.bin-1.7.5 CONFIG_QEMU=n "$_at_"
>

Thanks for that. I hope the Xen devs can get the yajl and signed int 
patches committed. Those were the only C level code changes I ran into 
and would clean up the build significantly for clang users. Tho only 
other knit was the ...

register unsigned long sp asm("rsp");

... assembly but maybe that compiles with 3.5 as well?

http://llvm.org/bugs/show_bug.cgi?id=11255

Everything else was build level compiler flag fiddling.

-Matthew

Received on Sun Oct 19 2014 - 21:01:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:53 UTC