[PATCH] Fix building gdb with gcc-4.x

Simon Marchi simon.marchi@polymtl.ca
Mon Jan 4 21:30:11 GMT 2021


On 2021-01-04 3:57 p.m., Bernd Edlinger wrote:
> Hi,
> 
> with Luis' commit of today the trunk is no longer able to
> be compiled with gcc-4.x.
> 
> The problem is std::is_trivially_default_constructible is
> not defined before gcc-5 although the compiler supports C++11 
> 
> I am not sure about what's the best approach for conditionally
> enabling the code, especially for compilers other than g++.
> 
> 
> This fixes the build for me.
> Is it OK for trunk?
> 
> 
> Thanks
> Bernd.
> 

We have other instances of this, I'd suggest inspiring yourself from:

https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdb/unittests/enum-flags-selftests.c;h=e3b6cf81d07f1eaefec72bce131d1c75ce00ef82;hb=HEAD#l66

These defines are defined here:

https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdbsupport/traits.h;h=f545edbb0d93e95f65e954fbf54cbc8843e5239a;hb=HEAD#l28

As you see, we already have a HAVE_IS_TRIVIALLY_CONSTRUCTIBLE, we could
use it.  The code in trad-frame.c could be changed to use
std::is_trivially_constructible instead of
std::is_trivially_default_constructible, I believe it's the same when
passing no Args... to is_trivially_constructible.  See "Possible
implementation" in:

https://en.cppreference.com/w/cpp/types/is_default_constructible

Simon


More information about the Gdb-patches mailing list