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

Re: [Xen-devel] [PATCH] xen/x86: fix linker script to work with lld



>>> On 11.07.18 at 11:02, <roger.pau@xxxxxxxxxx> wrote:
> On Wed, Jul 11, 2018 at 02:48:25AM -0600, Jan Beulich wrote:
>> >>> On 11.07.18 at 10:29, <roger.pau@xxxxxxxxxx> wrote:
>> > On Wed, Jul 11, 2018 at 01:09:30AM -0600, Jan Beulich wrote:
>> >> Another possible thing to try might be to make the extern declaration
>> >> of the symbol weak, and drop the offending line altogether.
>> > 
>> > Oh, that didn't occur to me, and does seem to work. Below is what I've
>> > successfully tested:
>> > 
>> > diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
>> > index 5f2392621d..d84704745e 100644
>> > --- a/xen/arch/x86/xen.lds.S
>> > +++ b/xen/arch/x86/xen.lds.S
>> > @@ -297,8 +297,6 @@ SECTIONS
>> >    } :text
>> >  #endif
>> >  
>> > -  efi = DEFINED(efi) ? efi : .;
>> > -
>> >    /* Sections to be discarded */
>> >    /DISCARD/ : {
>> >         *(.exit.text)
>> > diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
>> > index 44b7d3ec3a..8e25bfaebb 100644
>> > --- a/xen/include/xen/efi.h
>> > +++ b/xen/include/xen/efi.h
>> > @@ -21,7 +21,7 @@ struct efi {
>> >      unsigned long smbios3;      /* SMBIOS v3 table */
>> >  };
>> >  
>> > -extern struct efi efi;
>> > +extern struct efi efi __attribute__((weak));
>> >  
>> >  #ifndef __ASSEMBLY__
>> >  
>> > 
>> > If that's acceptable I will refresh and resend the patch.
>> 
>> Let's see what Daniel and maybe others say. If you go that route,
>> could I talk you into adding __weak to compiler.h (I dislike to suggest
>> the leading double underscores, but not using them there would just
>> be too inconsistent with the rest of this header)?
> 
> Hm, the header is kind of mixed on the usage of underscores. inline,
> always_inline or noreturn for example don't have them, so if you
> prefer I think it should be fine to add weak without underscores.

"weak" alone is too generic an identifier to be #define-d in a header
included by basically everything. And I dislike the "attribute_weak"
naming scheme as well, for yielding too long identifiers (i.e. not
providing any real savings over the spelled out __attribute__(())).

> There's an existing case of __attribute__((weak)) in
> livepatch_payload.h which I will replace in the same patch if that's
> fine.

Sure.

Jan



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

 


Rackspace

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