[prev in list] [next in list] [prev in thread] [next in thread]
List: gdb-cvs
Subject: [binutils-gdb] [gdb/build] Fix C inclusion of nat/x86-cpuid.h
From: Tom de Vries via Gdb-cvs <gdb-cvs () sourceware ! org>
Date: 2023-08-29 20:40:11
Message-ID: 20230829204011.B7CF53858409 () sourceware ! org
[Download RAW message or body]
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=97319ac805eda5ade08b88651bb7490089a7781f
commit 97319ac805eda5ade08b88651bb7490089a7781f
Author: Tom de Vries <tdevries@suse.de>
Date: Tue Aug 29 22:40:36 2023 +0200
[gdb/build] Fix C inclusion of nat/x86-cpuid.h
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.
Co-Authored-By: Kevin Buettner <kevinb@redhat.com>
Approved-by: Kevin Buettner <kevinb@redhat.com>
Diff:
---
gdb/nat/x86-cpuid.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/gdb/nat/x86-cpuid.h b/gdb/nat/x86-cpuid.h
index 517113d45e8..e1b0321d593 100644
--- a/gdb/nat/x86-cpuid.h
+++ b/gdb/nat/x86-cpuid.h
@@ -22,6 +22,12 @@
/* Always include the header for the cpu bit defines. */
#include "x86-gcc-cpuid.h"
+#ifndef __cplusplus
+/* This header file is also used in C code for some test-cases, so define
+ nullptr in C terms to avoid a compilation error. */
+#define nullptr ((void *) 0)
+#endif
+
#if defined(__i386__) || defined(__x86_64__)
/* Return cpuid data for requested cpuid level, as found in returned
@@ -92,4 +98,10 @@ x86_cpuid_count (unsigned int __level, unsigned int __sublevel,
#endif /* i386 && x86_64 */
+#ifndef __cplusplus
+/* Avoid leaking this local definition beyond the scope of this header
+ file. */
+#undef nullptr
+#endif
+
#endif /* NAT_X86_CPUID_H */
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic