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

Re: [Xen-devel] [PATCH for-4.7] xen/build: Fix build with Clang



On 07/04/16 20:12, Jan Beulich wrote:
>>>> On 07.04.16 at 20:46, <andrew.cooper3@xxxxxxxxxx> wrote:
>> The clang build already has many duplicate symbols for some reason I have yet
>> to identify, e.g.
>>
>>   Duplicate symbol 'asid.c#get_cpu_info' (ffff82d0801e6840 != 
>> ffff82d0801c8190)
>>   Duplicate symbol 'ats.c#__list_add' (ffff82d08015b900 != ffff82d0801546a0)
>>   Duplicate symbol 'common.c#clear_bit' (ffff82d080213560 != 
>> ffff82d0801baf10)
>>   Duplicate symbol 'common.c#constant_test_bit' (ffff82d080213550 != 
>> ffff82d0801ba750)
>>   Duplicate symbol 'common.c#cpumask_check' (ffff82d080218c50 != 
>> ffff82d0801baf20)
>>   Duplicate symbol 'common.c#cpumask_clear_cpu' (ffff82d080214990 != 
>> ffff82d0801bae40)
>>   Duplicate symbol 'common.c#get_cpu_info' (ffff82d080212210 != 
>> ffff82d0801bad20)
>>
>> The resulting binary does function.  Someone with more time can investigate
>> making symbol handling work better with Clang
> I'd guess that's because they don't inline functions as aggressively
> as gcc does.
>
>> --- a/xen/Rules.mk
>> +++ b/xen/Rules.mk
>> @@ -50,9 +50,15 @@ ALL_OBJS-$(CONFIG_X86)   += $(BASEDIR)/crypto/built_in.o
>>  CFLAGS += -nostdinc -fno-builtin -fno-common
>>  CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
>>  CFLAGS += -pipe -g -D__XEN__ -include $(BASEDIR)/include/xen/config.h
>> -CFLAGS += -Wa,--strip-local-absolute
>>  CFLAGS += '-D__OBJECT_FILE__="$@"'
>>  
>> +ifneq ($(clang),y)
>> +# Clang doesn't understand this command line argument, and doesn't appear to
>> +# have an suitable alternative.  The resulting compiled binary does 
>> function,
>> +# but has an excessively large symbol table.
>> +CFLAGS += -Wa,--strip-local-absolute
>> +endif
> Well, that's the brute force undo-it-altogether-for-clang approach
> that I think Doug had also considered. You may have seen the
> discussion (on irc iirc) - I'd really like to see the option still getting
> passed to gas (for all the .S files) even when using clang. Would
> that really be hard to arrange for?

That won't fix the fact that all the .c files which include
cpufeatureset.h also gets the absolute symbols, to allow the
alternatives() blocks to compile.

It will complicate the clang build quite a bit, and won't make much of a
dent on the symbol table bloat.

~Andrew

_______________________________________________
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®.