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?

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