|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 19/28] build_id: Provide ld-embedded build-ids
>>> On 08.04.16 at 21:23, <konrad.wilk@xxxxxxxxxx> wrote:
> On Fri, Apr 08, 2016 at 11:44:54AM -0600, Jan Beulich wrote:
>> >>> On 08.04.16 at 19:06, <konrad.wilk@xxxxxxxxxx> wrote:
>> > So that when xen.efi is linked with this build_id.o (in v5, now called
>> > notes.o in v6)
>> > it can encapsulate __note_gnu_build_id_start and __note_gnu_build_id_end
>> > around
>> > it. I could change for EFI builds the xen.lds.S to be:
>> >
>> > *(.rodata.*)
>> > +#if defined(BUILD_ID) && defined(EFI)
>> > +/*
>> > + * No mechanism to put an PT_NOTE in the EFI file - so put
>> > + * it in .data section.
>> > + */
>> > + . = ALIGN(4);
>> > +
>> > + __note_gnu_build_id_start = .;
>> > + *(.rodata.note.gnu.build-id)
>> > + __note_gnu_build_id_end = .;
>> > + *(.note)
>> > + *(.note.*)
>> > +#endif
>> >
>> > But then it differes from the change for !EFI (Which would be naturally
>> > called .note.gnu.build-id).
>>
>> But that looks to be the right approach, accounting for the
>> differences between ELF and COFF/PE. And btw., unless you did
>> changes elsewhere I don't think this inclusion of .note and .note.*
>> here would have the effect you want it to have.
>
> We don't really have any other .note, which is good.
>
> I tried to feed the linker a notes.o file with .rodata.note
> and have the efi.lds.S ingest it:
>
> __note_gnu_build_id_start = .;
> *(.rodata.note)
> __note_gnu_build_id_end = .;
>
> But it ignored it (no data, and __note_gnu_build_id_start ==
> __note_gnu_build_id_end)
I don't think it ignored it - it merely got put in a place you didn't want
it to be: The earlier *(.rodata.*) consumes it afaict. So perhaps you
want to move the notes between .text and .rodata?
> @@ -57,10 +60,19 @@ SECTIONS
> *(.lockprofile.data)
> __lock_profile_end = .;
> #endif
> -
> - _erodata = .; /* End of read-only data */
> } :text
>
> +#if defined(BUILD_ID)
> + . = ALIGN(4);
> + .note : {
> + __note_gnu_build_id_start = .;
> + *(.note)
> + *(.note.*)
> + __note_gnu_build_id_end = .;
> + } :note :text
> +#endif
That can't be right: What if any other .note or .note.* section
appears for whatever reason? There may be distro specific
.note.* sections issued by the compiler...
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |