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?

Jan

Reply via email to