On 28.11.25 15:31, Jan Beulich wrote:
On 28.11.2025 14:38, Juergen Gross wrote:
Today the linker script of Mini-OS specifies to merge all .note*
sections into a single section .note:

  .note : {
           *(.note)
           *(.note.*)
   }

It seems as if ld will use the attributes of the first .note* segment
found during the linking process for the final .note segment.

Somewhere between binutils 2.43 and 2.45 something changed resulting in
.note.GNU-stack being the first .note* segment found. Unfortunately
this segment has unusual attributes: it has PROGBITS instead of NOTE as
type, resulting in the Xen ELF parsing to no longer look into it for
finding the Xen ELF-notes. This in turn will result in failure while
trying to parse the binary, which will let domain creation fail.

In order to avoid this issue, enhance the linker script to merge
.note.Xen before other .note.* segments, resulting in the final .note
segment to still have the NOTE type.

Fixes: 6d1cc81d049f ("x86: switch to use elfnote")
Signed-off-by: Juergen Gross <[email protected]>

Reviewed-by: Jan Beulich <[email protected]>

I wonder though ...

--- a/arch/x86/minios-x86.lds.S
+++ b/arch/x86/minios-x86.lds.S
@@ -33,6 +33,7 @@ SECTIONS
.note : {
                  *(.note)
+                *(.note.Xen)
                  *(.note.*)
          }

... what use .note here is. Can't it be dropped in exchange?

Dropping it seems not to have any negative impact.

In theory this should not be in that patch, though, as its presence was
questionable even without my patch.


Juergen

Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to