# You need to modify these revision numbers for your update.-old_gcc_revision=r212125 # the revision of the previous update-new_gcc_revision=r240068 # the revision for this update+old_gcc_revision=r240068 # the revision of the previous update+new_gcc_revision=r246502 # the revision for this update

This program is free software; you can redistribute it and/or modify@@ -313,13 +313,39 @@#define ENUM_BITFIELD(TYPE) unsigned int#endif

- /* This is used to mark a class or virtual function as final. */-#if __cplusplus >= 201103L-#define GCC_FINAL final+/* C++11 adds the ability to add "override" after an implementation of a+ virtual function in a subclass, to:+ (A) document that this is an override of a virtual function+ (B) allow the compiler to issue a warning if it isn't (e.g. a mismatch+ of the type signature).++ Similarly, it allows us to add a "final" to indicate that no subclass+ may subsequently override the vfunc.++ Provide OVERRIDE and FINAL as macros, allowing us to get these benefits+ when compiling with C++11 support, but without requiring C++11.++ 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+# define OVERRIDE+# define FINAL+# else+# define OVERRIDE override+# define FINAL final+# endif#elif GCC_VERSION >= 4007-#define GCC_FINAL __final+/* G++ 4.7 supports __final in C++98. */+# define OVERRIDE+# define FINAL __final#else-#define GCC_FINAL+/* No C++11 support; leave the macros empty: */+# define OVERRIDE+# define FINAL#endif

/* If the top level is a DEMANGLE_COMPONENT_LOCAL_NAME, then- there may be CV-qualifiers on its right argument which+ there may be function-qualifiers on its right argument whichreally apply here; this happens when parsing a classwhich is local to a function. */if (dc->type == DEMANGLE_COMPONENT_LOCAL_NAME)@@ -1318,12 +1342,7 @@struct demangle_component *dcr;

- /* While processing this parameter, we need to pop the list of- templates. This is because the template parameter may- itself be a reference to a parameter of an outer- template. */+ if (a == NULL)+ {+ d_print_error (dpi);+ return;+ }

- hold_dpt = dpi->templates;- dpi->templates = hold_dpt->next;+ /* While processing this parameter, we need to pop the list+ of templates. This is because the template parameter may+ itself be a reference to a parameter of an outer+ template. */

/* If none of these are set, use 'current_demangling_style' as the default. */-#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_V3|DMGL_JAVA|DMGL_GNAT|DMGL_DLANG)+#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_V3|DMGL_JAVA|DMGL_GNAT|DMGL_DLANG|DMGL_RUST)