From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v3 13/23] XENVER_build_id: Provide ld-embedded build-ids (v10) Date: Wed, 24 Feb 2016 13:52:45 -0500 Message-ID: <20160224185245.GA18149@char.us.oracle.com> References: <1455300361-13092-1-git-send-email-konrad.wilk@oracle.com> <1455300361-13092-14-git-send-email-konrad.wilk@oracle.com> <56C381E9.7030002@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <56C381E9.7030002@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andrew Cooper Cc: Wei Liu , Ian Campbell , jinsong.liu@alibaba-inc.com, Stefano Stabellini , Ian Jackson , xen-devel@lists.xen.org, mpohlack@amazon.de, ross.lagerwall@citrix.com, Stefano Stabellini , Jan Beulich , xen-devel@lists.xenproject.org, Daniel De Graaf , Keir Fraser , sasha.levin@citrix.com List-Id: xen-devel@lists.xenproject.org > > diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S > > index f501a2f..5cf180f 100644 > > --- a/xen/arch/arm/xen.lds.S > > +++ b/xen/arch/arm/xen.lds.S > > @@ -22,6 +22,9 @@ OUTPUT_ARCH(FORMAT) > > PHDRS > > { > > text PT_LOAD /* XXX should be AT ( XEN_PHYS_START ) */ ; > > +#if defined(BUILD_ID) > > + note PT_NOTE ; > > +#endif > > } > > SECTIONS > > { > > @@ -53,6 +56,16 @@ SECTIONS > > _erodata = .; /* End of read-only data */ > > } :text > > > > +#if defined(BUILD_ID) > > + .note : { > > + __note_gnu_build_id_start = .; > > + *(.note.gnu.build-id) > > + __note_gnu_build_id_end = .; > > + *(.note) > > + *(.note.*) > > + } :text > > +#endif > > This data really should be contained inside rodata. I get (I replace :text with :rodata) and got: ld: section `.note' assigned to non-existent phdr `rodata' Which makes sense as there are only two PHDRS. Where you suggesting that the .note should be part of the .rodata section? Jan wanted this to be in its own section (.note). Are you suggesting to add another one PHDR? (If so, then mkelf32 has to be modified, and for EFI I think it will have to have some #ifdef machinery to make it work). This is what I have right now in the tree. diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 9fde1db..ee16d22 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -31,6 +31,9 @@ OUTPUT_ARCH(i386:x86-64) PHDRS { text PT_LOAD ; +#if defined(BUILD_ID) && !defined(EFI) + note PT_NOTE ; +#endif } SECTIONS { @@ -65,8 +68,28 @@ SECTIONS *(.rodata) *(.rodata.*) +#if defined(BUILD_ID) && defined(EFI) + __note_gnu_build_id_start = .; + *(.note.gnu.build-id) + __note_gnu_build_id_end = .; +#endif } :text +#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 : { + __note_gnu_build_id_start = .; + *(.note.gnu.build-id) + __note_gnu_build_id_end = .; + *(.note) + *(.note.*) + } :note :text +#endif + . = ALIGN(SMP_CACHE_BYTES); .data.read_mostly : { /* Exception table */