On 2025-12-10 02:09, Jan Beulich wrote:
On 09.12.2025 22:55, Jason Andryuk wrote:
On 2025-12-08 03:46, Jan Beulich wrote:
On 05.12.2025 23:40, Andrew Cooper wrote:
On 05/12/2025 10:28 pm, Jason Andryuk wrote:
When linking to create xen-syms, add --gc-sections to garbage collect
unused stuff.  Relies on CONFIG_CC_SPLIT_SECTIONS

We need to add KEEP() to the linker script in assorted places to retain
appropriate data - especially the arrays created therein.

Something is off though.  In a test where memory_add() is unreachable,
it is still included.  I'm not sure, but I am wondering if it's the
alternatives somehow keeping a reference to it.

Yes, .altinstructions contains relocations against the origin patch
site, which will cause it to appear to be referenced. The same will be
happening with a bunch of other sections.

We will need to derive helper section names from base section ones. See
e.g. HAVE_AS_SECTNAME_SUBST as introduced by "common: honor
CONFIG_CC_SPLIT_SECTIONS also for assembly functions", controlling the
use of the --sectname-subst asssembler option, to in turn be able to use
%S in section names (available from gas 2.26 onwards).

I tried to add your patch and change ALTERNATIVE to:
".pushsection .altinstructions.%S, \"a\", @progbits\n"
but it fails to build.  One example:
./include/xen/compiler.h:62:21: error: invalid 'asm': operand number
missing after %-letter
     62 | # define asm_inline asm __inline
        |                     ^~~
./arch/x86/include/asm/pdx.h:13:5: note: in expansion of macro ‘asm_inline’
     13 |     asm_inline goto (                               \
        |     ^~~~~~~~~~
./arch/x86/include/asm/pdx.h:22:5: note: in expansion of macro
‘PDX_ASM_GOTO’
     22 |     PDX_ASM_GOTO(skip);
        |     ^~~~~~~~~~~~

".pushsection .altinstructions.%%S, \"a\", @progbits\n" ends up creating
section ".altinstructions.%S" which doesn't helpful.

Is %S expected to work with inline asm, or only standalone?

Both, as long as --sectname-subst is passed to the assembler. My patch adds
that option to AFLAGS only, whereas for inline assembly it would need adding
to CFLAGS. Did you perhaps overlook that?

Yes, you are correct - I had not changed CFLAGS. With that updated, the %%S form creates sections:
.altinstructions..text.set_domain_state_info

Thanks,
Jason

Reply via email to