[gdb/build] Fix build with gcc 4.8.5
authorTom de Vries <tdevries@suse.de>
Tue, 12 Jul 2022 11:36:57 +0000 (13:36 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 12 Jul 2022 11:36:57 +0000 (13:36 +0200)
When building gdb with gcc 4.8.5, we run into problems due to unconditionally
using:
...
     gdb_static_assert (std::is_trivially_copyable<packed>::value);
...
in gdbsupport/packed.h.

Fix this by guarding the usage with HAVE_IS_TRIVIALLY_COPYABLE.

Tested by doing a full gdb build with gcc 4.8.5.

gdbsupport/packed.h

index ebc66c0cb1a28941e845ae659207f677cae59ea7..cd331b5477ddccae3c13e19a96b2fb450c5d2fe4 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef PACKED_H
 #define PACKED_H
 
+#include "traits.h"
+
 /* Each instantiation and full specialization of the packed template
    defines a type that behaves like a given scalar type, but that has
    byte alignment, and, may optionally have a smaller size than the
@@ -38,7 +40,9 @@ public:
     gdb_static_assert (alignof (packed) == 1);
 
     /* Make sure packed can be wrapped with std::atomic.  */
+#if HAVE_IS_TRIVIALLY_COPYABLE
     gdb_static_assert (std::is_trivially_copyable<packed>::value);
+#endif
     gdb_static_assert (std::is_copy_constructible<packed>::value);
     gdb_static_assert (std::is_move_constructible<packed>::value);
     gdb_static_assert (std::is_copy_assignable<packed>::value);