[PATCH] include, opcodes: prefix REG_* macros in cris.h, nds32.h and microblaze-opcm.h
Hans-Peter Nilsson
hp@bitrange.com
Wed Aug 19 17:32:11 GMT 2026
On Tue, 18 Aug 2026, Simon Marchi wrote:
> Bug 34537 reports:
>
> When building gdb with the default configure options of gdb buildbots (which
> include --enable-targets=all), gdb fails to build:
>
> CXX microblaze-tdep.o
> In file included from ../../binutils-gdb/gdb/microblaze-tdep.c:37:
> 158 | #define REG_PC REG_RIP
> | ^~~~~~
> ../../binutils-gdb/gdb/../opcodes/microblaze-opcm.h:120:9: error: ?REG_SP? redefined [-Werror]
> 120 | #define REG_SP 1 /* stack pointer. */
> | ^~~~~~
> Attempt to fix it by prefixing the macros with the arch name.
An alternative, less intrusive method, would be to #undef those
macros in a suitable gdb toplevel file, maybe defs.h, after
including cstdlib but before including binutils/gdb files. The
error is clearly on the Solaris side, for namespace intrusion
and pollution.
Having said and suggested that, if that won't work, the CRIS
bits are fine.
>
> I only modified the macros starting with "REG_", but there are other
> macros with very generic names (e.g. "MAX_REG") that could be renamed
> too (for consistency, IMO, all the macros in those files should be
> prefixed the same way).
>
> I couldn't build-test this patch on Solaris, but it build with
> --enable-targets=all on Linux.
How would you tell this attempt is complete?
(Maybe someone's doing evil ungreppable things like REG_ ## SP. ;-)
Are there not Solaris machines in the gcc build farm?
brgds, H-P
More information about the Binutils
mailing list