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

Re: [Minios-devel] [UNIKRAFT PATCH v2 01/23] include/uk: introduce __weak_alias macro



Hi,

well, this is not a correct behavior of gcc. I don't like the idea of
polluting build log with warnings about not your problem and which you
can not fix. And I don't like the idea of ditching something as
essential as weak aliasing.

Another thing, LTO resolves a weak symbol only if it is referenced
inside a library. This is exactly the idea behind the workaround for
this "multiple definition of `main'" patch you reviewed earlier
today. Yes you could perhaps check if this is the case, and produce the
warning only if 1) LTO is enabled 2) the weak symbol is referenced
inside the library it was defined. I think this is way too complex for
the outcome.

- BR, Yuri.

Sharan Santhanam <sharan.santhanam@xxxxxxxxx> writes:

> Hello Yuri,
>
> This patch functionally seems fine.
>
> I have a question with regard to its usage especially with LTO enabled. 
> The library which uses this macro should not use the function internally 
> as LTO would internally resolve it with the weak symbol. I think it 
> would be wise to add a comment to warn the users of the macro about it.
>
> Thanks & Regards
> Sharan
>
> On 2/4/19 3:36 PM, Yuri Volchkov wrote:
>> Signed-off-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>
>> ---
>>   include/uk/essentials.h | 4 ++++
>>   1 file changed, 4 insertions(+)
>> 
>> diff --git a/include/uk/essentials.h b/include/uk/essentials.h
>> index 3c16e308..dc1d69b0 100644
>> --- a/include/uk/essentials.h
>> +++ b/include/uk/essentials.h
>> @@ -76,6 +76,10 @@ extern "C" {
>>   #ifndef __align
>>   #define __align(bytes)         __attribute__((aligned(bytes)))
>>   #endif
>> +#ifndef __weak_alias
>> +#define __weak_alias(old, new) \
>> +    extern __typeof(old) new __attribute__((weak, alias(#old)))
>> +#endif
>>   
>>   /**
>>     * Mark a function as constructor
>> 

-- 
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurfürsten-Anlage 36
D-69115 Heidelberg

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

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