[PATCH] [gdb/build] Fix C inclusion of nat/x86-cpuid.h

Tom de Vries via Gdb-patches
2023-08-29T15:38:54Z

When running test-case gdb.arch/i386-avx512.exp, I run into:
...
gdb compile failed, In file included from gdb.arch/i386-avx512.c:20:0:
src/gdb/nat/x86-cpuid.h: In function 'x86_cpuid_count':
src/gdb/nat/x86-cpuid.h:63:16: error: \
'nullptr' undeclared (first use in this function)
if (__eax == nullptr)
^~~~~~~
src/gdb/nat/x86-cpuid.h:63:16: note: each \
undeclared identifier is reported only once for each function it appears in

=== gdb Summary ===

# of untested testcases 1
...

This is due to commit e85aad4ae76 ("nat/x86-cpuid.h: Add x86_cpuid_count
wrapper around __get_cpuid_count"), which introduced the nullptr check.

The header file gdb/nat/x86-cpuid.h is a file that is included in the build
and compiled as a C++ file, but also in the testsuite and compiled as a C
file.

Fix this by replacing nullptr with (void *)0.

Tested on x86_64-linux.
---
gdb/nat/x86-cpuid.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gdb/nat/x86-cpuid.h b/gdb/nat/x86-cpuid.h
index 517113d45e8..25a08f4e94e 100644
--- a/gdb/nat/x86-cpuid.h
+++ b/gdb/nat/x86-cpuid.h
@@ -60,13 +60,13 @@ x86_cpuid_count (unsigned int __level, unsigned int __sublevel,
{
unsigned int __scratch;

- if (__eax == nullptr)
+ if (__eax == (void *)0)
__eax = &__scratch;
- if (__ebx == nullptr)
+ if (__ebx == (void *)0)
__ebx = &__scratch;
- if (__ecx == nullptr)
+ if (__ecx == (void *)0)
__ecx = &__scratch;
- if (__edx == nullptr)
+ if (__edx == (void *)0)
__edx = &__scratch;

return __get_cpuid_count (__level, __sublevel, __eax, __ebx, __ecx, __edx);

base-commit: 8468e03688622f265529699e2efd355a4c122cc6
--
2.35.3