Re: GDB 13.1 and clang

Chris Johns
2023-03-08T21:23:12Z

On 9/3/2023 5:22 am, Simon Marchi wrote:
> On 3/8/23 15:07, Chris Johns wrote:
>> Hi,
>>
>> I have just tried to build the latest RTEMS tools and we now use gdb 13.1. I am
>> seeing a build failure on FreeBSD 13.1 of:
>>
>> In file included from ../../gdb-13.1/gdb/xml-tdesc.c:23:
>> In file included from ../../gdb-13.1/gdb/target.h:42:
>> In file included from ../../gdb-13.1/gdb/infrun.h:21:
>> In file included from ../../gdb-13.1/gdb/gdbthread.h:26:
>> In file included from ../../gdb-13.1/gdb/breakpoint.h:38:
>> ../../gdb-13.1/gdb/target/waitstatus.h:113:1: error: use of undeclared
>> identifier 'DIAGNOSTIC_ERROR_SWITCH'
>> DIAGNOSTIC_ERROR_SWITCH
>> ^
>>
>> I only have clang installed on the FreeBSD machine.
>>
>> A quick review of include/diagnostics.h seems to show support for
>> DIAGNOSTIC_ERROR_SWITCH only in the gcc area?
>
> Hmm, I see it in the clang section:
>
> # define DIAGNOSTIC_ERROR_SWITCH \
> DIAGNOSTIC_ERROR ("-Wswitch")
>

It seems I need to do a better review before posting :)

> https://sourceware.org/cgit/binutils-gdb/tree/include/diagnostics.h?h=gdb-13.1-release&id=4f3e26ac6ee31f7bc4b04abd8bdb944e7f1fc5d2#n76
>
> Unless there's a typo I don't see.
>
> diagnostics.h is included at the top of waitstatus.h. Is it possible
> that another unrelated diagnostics.h gets included on FreeBSD? You
> could inspect the preprocessed file to see what the preprocessor
> included for diagnostics.h.

There is another version installed here:

$ pkg which /usr/local/include/diagnostics.h
/usr/local/include/diagnostics.h was installed by package binutils-2.37_2,1

We have /usr/local/include early in the include list on FreeBSD to pick up some
of the required libraries installed as packages. I will check for a package
update or I revisit the build flags to see how it can be handled.

Thank you for the prompt and helpful responses.

Chris