mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool
@ 2025-03-23 16:36 Misbah Anjum N
  2025-03-23 16:36 ` Misbah Anjum N
  2025-04-17  6:09 ` Mukesh Kumar Chaurasiya
  0 siblings, 2 replies; 3+ messages in thread
From: Misbah Anjum N @ 2025-03-23 16:36 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: maddy, mpe, npiggin, christophe.leroy, naveen, linux-kernel

Hi,

I noticed that a patch addressing the same issue has been proposed by
Michal Suchanek:
https://lore.kernel.org/linuxppc-dev/Z86liwlwP5WvrEkw@kitsune.suse.cz/T/#t

The existing patch addresses the compilation error by modifying the Makefile
to use `gnu11` with `BOOTTARGETFLAGS`. This is a practical approach to avoid
the error in the short term.

This patch builds on that work by providing a long-term solution that ensures
compatibility with C23 while maintaining backward compatibility. Specifically:
    - It uses `__STDC_VERSION__` to conditionally define the `bool` typedef only
    for pre-C23 standards.
    - It ensures that the code is future-proof and ready for upcoming C23 standards,
    where `bool`, `true`, and `false` are reserved keywords.
    - It avoids reliance on compiler-specific flags, making the code more portable
    and standards-compliant.

Changlog:
    - Adding version check via __STDC_VERSION__
    - If  __STDC_VERSION__ < C23, 'typedef int bool' is defined as usual
    - If __STDC_VERSION__ >= C23, the typedef redundancy is removed

The patch has been tested with:
    - gcc (GCC) 15.0.1 20250228 (Red Hat 15.0.1-0)
    - gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)

Thanks,
Misbah Anjum N


Misbah Anjum N (1):
  arch/powerpc: Remove redundant typedef for bool

 arch/powerpc/boot/types.h | 2 ++
 1 file changed, 2 insertions(+)

-- 
2.49.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool
  2025-03-23 16:36 [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool Misbah Anjum N
@ 2025-03-23 16:36 ` Misbah Anjum N
  2025-04-17  6:09 ` Mukesh Kumar Chaurasiya
  1 sibling, 0 replies; 3+ messages in thread
From: Misbah Anjum N @ 2025-03-23 16:36 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: maddy, mpe, npiggin, christophe.leroy, naveen, linux-kernel

The custom 'bool' typedef in arch/powerpc/boot/types.h is incompatible with
the C23 standard, where 'bool', 'true', and 'false' are now reserved keywords.
With newer GCC versions (such as GCC 15), redefining 'bool' leads to compilation
errors. For example:
    error: 'bool' cannot be defined via 'typedef'

Since 'stdbool.h' is already included and provides a standard definition for
'bool', this typedef is redundant and can be removed to avoid conflicts.

Compilation Error:
    $ make -j$(nproc)
    ....
    In file included from arch/powerpc/boot/ops.h:13,
                     from arch/powerpc/boot/cuboot.c:12:
    arch/powerpc/boot/types.h:43:13: error: ‘bool’ cannot be defined via ‘typedef’
    43 | typedef int bool;
        |             ^~~~
    arch/powerpc/boot/types.h:43:13: note: ‘bool’ is a keyword with ‘-std=c23’ onwards
    arch/powerpc/boot/types.h:43:1: warning: useless type name in empty declaration
    43 | typedef int bool;
        | ^~~~~~~
    ....
    make[2]: *** [arch/powerpc/boot/Makefile:235: arch/powerpc/boot/devtree.o] Error 1
    make[2]: *** [arch/powerpc/boot/Makefile:235: arch/powerpc/boot/ofconsole.o] Error 1
    make[2]: *** [arch/powerpc/boot/Makefile:235: arch/powerpc/boot/ns16550.o] Error 1
    make[2]: *** [arch/powerpc/boot/Makefile:235: arch/powerpc/boot/main.o] Error 1
    make[1]: *** [arch/powerpc/Makefile:236: zImage] Error 2
    make: *** [Makefile:251: __sub-make] Error 2

Signed-off-by: Misbah Anjum N <misanjum@linux.ibm.com>
---
 arch/powerpc/boot/types.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/powerpc/boot/types.h b/arch/powerpc/boot/types.h
index 8a4c418b7..6f34b31b8 100644
--- a/arch/powerpc/boot/types.h
+++ b/arch/powerpc/boot/types.h
@@ -40,7 +40,9 @@ typedef s64 int64_t;
 #define min_t(type, a, b) min(((type) a), ((type) b))
 #define max_t(type, a, b) max(((type) a), ((type) b))
 
+#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 202300L
 typedef int bool;
+#endif
 
 #ifndef true
 #define true 1
-- 
2.49.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool
  2025-03-23 16:36 [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool Misbah Anjum N
  2025-03-23 16:36 ` Misbah Anjum N
@ 2025-04-17  6:09 ` Mukesh Kumar Chaurasiya
  1 sibling, 0 replies; 3+ messages in thread
From: Mukesh Kumar Chaurasiya @ 2025-04-17  6:09 UTC (permalink / raw)
  To: Misbah Anjum N
  Cc: linuxppc-dev, maddy, mpe, npiggin, christophe.leroy, naveen,
	linux-kernel

On Sun, Mar 23, 2025 at 11:36:06AM -0500, Misbah Anjum N wrote:
> Hi,
> 
> I noticed that a patch addressing the same issue has been proposed by
> Michal Suchanek:
> https://lore.kernel.org/linuxppc-dev/Z86liwlwP5WvrEkw@kitsune.suse.cz/T/#t
> 
> The existing patch addresses the compilation error by modifying the Makefile
> to use `gnu11` with `BOOTTARGETFLAGS`. This is a practical approach to avoid
> the error in the short term.
> 
> This patch builds on that work by providing a long-term solution that ensures
> compatibility with C23 while maintaining backward compatibility. Specifically:
>     - It uses `__STDC_VERSION__` to conditionally define the `bool` typedef only
>     for pre-C23 standards.
>     - It ensures that the code is future-proof and ready for upcoming C23 standards,
>     where `bool`, `true`, and `false` are reserved keywords.
>     - It avoids reliance on compiler-specific flags, making the code more portable
>     and standards-compliant.
> 
> Changlog:
>     - Adding version check via __STDC_VERSION__
>     - If  __STDC_VERSION__ < C23, 'typedef int bool' is defined as usual
>     - If __STDC_VERSION__ >= C23, the typedef redundancy is removed
> 
> The patch has been tested with:
>     - gcc (GCC) 15.0.1 20250228 (Red Hat 15.0.1-0)
>     - gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)
> 
> Thanks,
> Misbah Anjum N
> 
> 
> Misbah Anjum N (1):
>   arch/powerpc: Remove redundant typedef for bool
> 
>  arch/powerpc/boot/types.h | 2 ++
>  1 file changed, 2 insertions(+)
>
Reviewed-by: Mukesh Kumar Chaurasiya <mchauras@linux.ibm.com>
> -- 
> 2.49.0
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-04-17  6:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-03-23 16:36 [PATCH 1/1] arch/powerpc: Remove redundant typedef for bool Misbah Anjum N
2025-03-23 16:36 ` Misbah Anjum N
2025-04-17  6:09 ` Mukesh Kumar Chaurasiya

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®