> > 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 */

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to