> On 28 Feb 2026, at 3:22 AM, John Paul Adrian Glaubitz 
> <[email protected]> wrote:
> 
> Hi Sudhakar,
> 
> On Fri, 2026-02-27 at 22:29 +0100, John Paul Adrian Glaubitz wrote:
>> On Fri, 2026-02-27 at 19:11 +0530, Sudhakar Kuppusamy wrote:
>>> Configuring the build with --with-platform=emu fails on 32-bit PowerPC with:
>>> 
>>> /usr/bin/ld: appendedsig.module: in function `grub_mod_init':
>>> /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1615:(.text+0x2ab4):
>>>  undefined reference to `grub_pks_get_keystore'
>>> /usr/bin/ld: appendedsig.module: in function `create_dbs_from_pks':
>>> /home/glaubitz/grub/grub-core/commands/appendedsig/appendedsig.c:1400:(.text+0x2c3c):
>>>  undefined reference to `grub_pks_free_data'
>>> collect2: error: ld returned 1 exit status
>>> 
>>> Fixing this by excluding the Platform Keystore (PKS) for grub-emu on 32-bit 
>>> PowerPC.
>>> 
>>> Reported-by: John Paul Adrian Glaubitz <[email protected]>
>>> Signed-off-by: Sudhakar Kuppusamy <[email protected]>
>>> ---
>>> include/grub/powerpc/ieee1275/platform_keystore.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>> 
>>> diff --git a/include/grub/powerpc/ieee1275/platform_keystore.h 
>>> b/include/grub/powerpc/ieee1275/platform_keystore.h
>>> index 931ada224..3bfb594a3 100644
>>> --- a/include/grub/powerpc/ieee1275/platform_keystore.h
>>> +++ b/include/grub/powerpc/ieee1275/platform_keystore.h
>>> @@ -96,7 +96,7 @@ struct grub_pks
>>> };
>>> typedef struct grub_pks grub_pks_t;
>>> 
>>> -#if defined(__powerpc__)
>>> +#if defined(__powerpc__) && !(GRUB_MACHINE_EMU)
>>> /* Initialization of the Platform Keystore. */
>>> extern void
>>> grub_pks_keystore_init (void);
>> 
>> I can confirm that this patch fixes the problem, so:
>> 
>> Tested-by: John Paul Adrian Glaubitz <[email protected]>
>> 
>> However, I'm wondering whether the commit message is correct as __powerpc__
>> is also defined on 64-bit PowerPC:
>> 
>> glaubitz@perotto:~$ echo | gcc -E -dM - |grep -i powerpc
>> #define __powerpc__ 1
>> #define __powerpc64__ 1
>> glaubitz@perotto:~$
>> 
>> Shouldn't the correct commit message be:
>> 
>> powerpc_ieee1275: Exclude PKS support for grub-emu on PowerPC
>> 
>> ?
>> 
>> Or am I missing something here?
> 
> I just tried to build --with-platform=ieee1275 which fails:
> 
> cc -DHAVE_CONFIG_H -I. -I../../../grub-core -I..  
> -Wno-unused-but-set-variable -Wall -W  -DGRUB_MACHINE_IEEE1275=1 
> -DGRUB_MACHINE=POWERPC_IEEE1275 -m32 -mbig-endian -nostdinc -isystem
> /usr/lib/gcc/powerpc-linux-gnu/15/include -I../../../include -I../include 
> -DGRUB_FILE=\"kern/rescue_parser.c\" -I. -I../../../grub-core -I.. -I../../.. 
> -I../../../include -I../include -I../../../grub-
> core/lib/libgcrypt-grub/src/   -DGRUB_KERNEL=1  -D_FILE_OFFSET_BITS=64 
> -std=gnu99 -fno-common -Os -m32 -Wall -W -Wshadow -Wpointer-arith -Wundef 
> -Wchar-subscripts -Wcomment -Wdeprecated-declarations -
> Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args 
> -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration 
> -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-
> format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point 
> -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused 
> -Wunused-function -Wunused-label -Wunused-parameter -
> Wunused-value  -Wunused-variable -Wwrite-strings -Wnested-externs 
> -Wstrict-prototypes -g -Wredundant-decls -Wmissing-prototypes 
> -Wmissing-declarations -Wcast-align  -Wextra -Wattributes -Wendif-labels
> -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers 
> -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing 
> -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign
> -Wmissing-include-dirs -Wmissing-prototypes -Wmissing-declarations -Wformat=2 
> -mbig-endian -freg-struct-return -msoft-float -fno-omit-frame-pointer 
> -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables
> -fno-unwind-tables -fno-ident -fno-PIE -fno-pie -fno-stack-protector 
> -Wtrampolines -Werror  -mcpu=powerpc  -ffreestanding   -c -o 
> kern/kernel_exec-rescue_parser.o `test -f 'kern/rescue_parser.c' ||
> echo '../../../grub-core/'`kern/rescue_parser.c
> In file included from 
> ../../../grub-core/kern/powerpc/ieee1275/platform_keystore.c:26:
> ../../../include/grub/powerpc/ieee1275/platform_keystore.h:99:31: error: 
> 'GRUB_MACHINE_EMU' is not defined, evaluates to '0' [-Werror=undef]
>   99 | #if defined(__powerpc__) && !(GRUB_MACHINE_EMU)
>      |                               ^~~~~~~~~~~~~~~~
> 
> Using "&& !defined(GRUB_MACHINE_EMU)" instead works.
> 
> Can you change that?

Thank you Adrian for the testing and suggestion. I'll make changes in v2.

Thanks,
Sudhakar
> 
> Adrian
> 
> -- 
> .''`.  John Paul Adrian Glaubitz
> : :' :  Debian Developer
> `. `'   Physicist
>  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to