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

Re: [Xen-devel] Clang/LLVM version requirements



On 13/09/2012 15:55, "Tim Deegan" <tim@xxxxxxx> wrote:

> At 15:01 +0100 on 13 Sep (1347548504), Jan Beulich wrote:
>>>>> On 13.09.12 at 14:21, Tim Deegan <tim@xxxxxxx> wrote:
>>> Allowing BSS would just need a few extra runes (AFAICS,
>>> "--set-section-flags .bss=alloc,load,contents") in the objcopy that
>>> makes reloc.bin.
>>>  But I'm not sure how to make sure everything is
>>> rip-relative, do if that's the real concern I'm inclined to go with
>>> this compile-time check and exclude .[ro]data[.*] as well.
>>> We can always fix it up to allow bss and data sections if we ever
>>> actually need them.
>> 
>> As said, I'm fine with any approach as long as it works with all
>> supported tool chains. So feel free to go the route you're
>> proposing.
> 
> OK.  The patch below works for me on gccs 4.1 to 4.7 and clang 3.0.
> I tries gcc 3.4 but the build already fails in a few other places.
> Do we really still support gcc 3.4 like the README says?

It's been a long while since we updated our compiler support. In general
I've been happy to say we support each gcc release only for 2-3 years. In
this case that would mean we could *even* update our support to be only gcc
4.2 and later.

What do people think about us forcing this? It might even let us get rid of
GCC_HAS_VISIBILITY_ATTRIBUTE?

 -- Keir

> Can I have an Ack, or would you like to apply it yourself?
> 
> Tim.
> 
> # HG changeset patch
> # Parent 9e46d90d0182979a7220314ca19d2525e338aa5d
> x86: check for data and BSS in reloc code at compile time.
> 
> This is a more useful failure mode than hanging at boot time, and
> incidentally fixes the clang/LLVM build by removing a .subsection rune.
> 
> Signed-off-by: Tim Deegan <tim@xxxxxxx>
> 
> diff -r 9e46d90d0182 xen/arch/x86/boot/build32.mk
> --- a/xen/arch/x86/boot/build32.mk Thu Sep 13 15:00:26 2012 +0100
> +++ b/xen/arch/x86/boot/build32.mk Thu Sep 13 15:04:32 2012 +0100
> @@ -20,6 +20,15 @@ CFLAGS := $(filter-out -flto,$(CFLAGS))
>  
>  %.o: %.c
> $(CC) $(CFLAGS) -c -fpic $< -o $@
> + $(OBJDUMP) -h $@ | sed -n '/[0-9]/{s,00*,0,g;p}' |\
> +  while read idx name sz rest; do \
> +   case "$$name" in \
> +   .data|.data.*|.rodata|.rodata.*|.bss|.bss.*) \
> +    test $$sz != 0 || continue; \
> +    echo "Error: non-empty $$name: 0x$$sz" >&2; \
> +    exit $$(expr $$idx + 1);; \
> +   esac; \
> +  done
>  
>  reloc.o: $(BASEDIR)/include/asm-x86/config.h
>  .PRECIOUS: %.bin %.lnk
> diff -r 9e46d90d0182 xen/arch/x86/boot/reloc.c
> --- a/xen/arch/x86/boot/reloc.c Thu Sep 13 15:00:26 2012 +0100
> +++ b/xen/arch/x86/boot/reloc.c Thu Sep 13 15:04:32 2012 +0100
> @@ -18,10 +18,7 @@ asm (
>      "    call 1f                       \n"
>      "1:  pop  %ebx                     \n"
>      "    mov  %eax,alloc-1b(%ebx)      \n"
> -    "    mov  $_end,%ecx               \n"  /* check that BSS is empty! */
> -    "    sub  $__bss_start,%ecx        \n"
> -    "    jz reloc                      \n"
> -    "1:  jmp 1b                        \n"
> +    "    jmp  reloc                    \n"
>      );
>  
>  /* This is our data.  Because the code must be relocatable, no BSS is
> @@ -30,9 +27,6 @@ asm (
>  asm (
>      "alloc:                            \n"
>      "    .long 0                       \n"
> -    "    .subsection 1                 \n"
> -    "    .p2align 4, 0xcc              \n"
> -    "    .subsection 0                 \n"
>      );
>  
>  typedef unsigned int u32;
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.