diff mbox series

xen/x86: prevent addition of .note.gnu.property if livepatch is enabled

Message ID 20241107145952.73403-1-roger.pau@citrix.com (mailing list archive)
State New
Headers show
Series xen/x86: prevent addition of .note.gnu.property if livepatch is enabled | expand

Commit Message

Roger Pau Monné Nov. 7, 2024, 2:59 p.m. UTC
GNU assembly that supports such feature will unconditionally add a
.note.gnu.property section to object files.  The content of that section can
change depending on the generated instructions.  The current logic in
livepatch-build-tools doesn't know how to deal with such section changing
as a result of applying a patch and rebuilding.

Since .note.gnu.property is not consumed by the Xen build, suppress its
addition when livepatch support is enabled.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/arch.mk | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Jan Beulich Nov. 7, 2024, 3:14 p.m. UTC | #1
On 07.11.2024 15:59, Roger Pau Monne wrote:
> GNU assembly that supports such feature will unconditionally add a
> .note.gnu.property section to object files.  The content of that section can
> change depending on the generated instructions.  The current logic in
> livepatch-build-tools doesn't know how to deal with such section changing
> as a result of applying a patch and rebuilding.
> 
> Since .note.gnu.property is not consumed by the Xen build, suppress its
> addition when livepatch support is enabled.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

Just one thing though:

> --- a/xen/arch/x86/arch.mk
> +++ b/xen/arch/x86/arch.mk
> @@ -26,6 +26,12 @@ $(call as-option-add,CFLAGS,CC,"invpcid (%rax)$(comma)%rax",-DHAVE_AS_INVPCID)
>  $(call as-option-add,CFLAGS,CC,"movdiri %rax$(comma)(%rax)",-DHAVE_AS_MOVDIR)
>  $(call as-option-add,CFLAGS,CC,"enqcmd (%rax)$(comma)%rax",-DHAVE_AS_ENQCMD)
>  
> +# Disable the addition of a .note.gnu.property section to object files when
> +# livepatch support is enabled.  The contents of that section can change
> +# depending on the instructions used, and livepatch-build-tools doesn't know
> +# how to deal with such changes.
> +$(call cc-option-add,CFLAGS-$(CONFIG_LIVEPATCH),CC,-Wa$$(comma)-mx86-used-note=no)
> +
>  # Check to see whether the assmbler supports the .nop directive.
>  $(call as-option-add,CFLAGS,CC,\
>      ".L1: .L2: .nops (.L2 - .L1)$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)

I don't really like this being squashed between two as-option-add invocations.
Can this be moved down, e.g. before or after the XEN_IBT chunk? Happy to move
while committing ...

Jan
Roger Pau Monné Nov. 7, 2024, 3:56 p.m. UTC | #2
On Thu, Nov 07, 2024 at 04:14:20PM +0100, Jan Beulich wrote:
> On 07.11.2024 15:59, Roger Pau Monne wrote:
> > GNU assembly that supports such feature will unconditionally add a
> > .note.gnu.property section to object files.  The content of that section can
> > change depending on the generated instructions.  The current logic in
> > livepatch-build-tools doesn't know how to deal with such section changing
> > as a result of applying a patch and rebuilding.
> > 
> > Since .note.gnu.property is not consumed by the Xen build, suppress its
> > addition when livepatch support is enabled.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

> Just one thing though:
> 
> > --- a/xen/arch/x86/arch.mk
> > +++ b/xen/arch/x86/arch.mk
> > @@ -26,6 +26,12 @@ $(call as-option-add,CFLAGS,CC,"invpcid (%rax)$(comma)%rax",-DHAVE_AS_INVPCID)
> >  $(call as-option-add,CFLAGS,CC,"movdiri %rax$(comma)(%rax)",-DHAVE_AS_MOVDIR)
> >  $(call as-option-add,CFLAGS,CC,"enqcmd (%rax)$(comma)%rax",-DHAVE_AS_ENQCMD)
> >  
> > +# Disable the addition of a .note.gnu.property section to object files when
> > +# livepatch support is enabled.  The contents of that section can change
> > +# depending on the instructions used, and livepatch-build-tools doesn't know
> > +# how to deal with such changes.
> > +$(call cc-option-add,CFLAGS-$(CONFIG_LIVEPATCH),CC,-Wa$$(comma)-mx86-used-note=no)
> > +
> >  # Check to see whether the assmbler supports the .nop directive.
> >  $(call as-option-add,CFLAGS,CC,\
> >      ".L1: .L2: .nops (.L2 - .L1)$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)
> 
> I don't really like this being squashed between two as-option-add invocations.
> Can this be moved down, e.g. before or after the XEN_IBT chunk? Happy to move
> while committing ...

Feel free to move it.

Roger.
diff mbox series

Patch

diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
index 1460ecf30b9a..1ded012d9f5b 100644
--- a/xen/arch/x86/arch.mk
+++ b/xen/arch/x86/arch.mk
@@ -26,6 +26,12 @@  $(call as-option-add,CFLAGS,CC,"invpcid (%rax)$(comma)%rax",-DHAVE_AS_INVPCID)
 $(call as-option-add,CFLAGS,CC,"movdiri %rax$(comma)(%rax)",-DHAVE_AS_MOVDIR)
 $(call as-option-add,CFLAGS,CC,"enqcmd (%rax)$(comma)%rax",-DHAVE_AS_ENQCMD)
 
+# Disable the addition of a .note.gnu.property section to object files when
+# livepatch support is enabled.  The contents of that section can change
+# depending on the instructions used, and livepatch-build-tools doesn't know
+# how to deal with such changes.
+$(call cc-option-add,CFLAGS-$(CONFIG_LIVEPATCH),CC,-Wa$$(comma)-mx86-used-note=no)
+
 # Check to see whether the assmbler supports the .nop directive.
 $(call as-option-add,CFLAGS,CC,\
     ".L1: .L2: .nops (.L2 - .L1)$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)