diff --git a/include/ChangeLog b/include/ChangeLog index c7ce2592979..47035883d3b 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -8,6 +8,12 @@ * simple-object.h (simple_object_copy_lto_debug_sections): New function. +2017-07-31 Nick Clifton + + Binutils PR 21850 + * ansidecl.h (OVERRIDE): Protect check of __cplusplus value with + #idef __cplusplus. + 2017-07-02 Jan Kratochvil * dwarf2.def (DW_IDX_compile_unit, DW_IDX_type_unit, DW_IDX_die_offset) diff --git a/include/ansidecl.h b/include/ansidecl.h index f6e1761af2d..ab3b895a475 100644 --- a/include/ansidecl.h +++ b/include/ansidecl.h @@ -334,22 +334,28 @@ So instead we use the macro below and test it against specific values. */ For gcc, use "-std=c++11" to enable C++11 support; gcc 6 onwards enables this by default (actually GNU++14). */ -#if __cplusplus >= 201103 -/* C++11 claims to be available: use it. final/override were only - implemented in 4.7, though. */ -# if GCC_VERSION < 4007 +#if defined __cplusplus +# if __cplusplus >= 201103 + /* C++11 claims to be available: use it. Final/override were only + implemented in 4.7, though. */ +# if GCC_VERSION < 4007 +# define OVERRIDE +# define FINAL +# else +# define OVERRIDE override +# define FINAL final +# endif +# elif GCC_VERSION >= 4007 + /* G++ 4.7 supports __final in C++98. */ +# define OVERRIDE +# define FINAL __final +# else + /* No C++11 support; leave the macros empty. */ # define OVERRIDE # define FINAL -# else -# define OVERRIDE override -# define FINAL final # endif -#elif GCC_VERSION >= 4007 -/* G++ 4.7 supports __final in C++98. */ -# define OVERRIDE -# define FINAL __final #else -/* No C++11 support; leave the macros empty: */ + /* No C++11 support; leave the macros empty. */ # define OVERRIDE # define FINAL #endif