From e277c15f54a156f034e0275f405572d20a233130 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 11 Oct 2015 19:58:57 +0000 Subject: [PATCH] Correct handling of enum attributes with g++ From OpenBSD's commit log: This was responsible for memory corruption with recent versions of Mesa where c and c++ code share a header with a packed enum type. Reference: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39219 Obtained from: OpenBSD (CVS rev. 1.2) MFC after: 1 week --- contrib/gcc/cp/parser.c | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/gcc/cp/parser.c b/contrib/gcc/cp/parser.c index 25cc2250f9f0..895d0eeed111 100644 --- a/contrib/gcc/cp/parser.c +++ b/contrib/gcc/cp/parser.c @@ -10906,6 +10906,7 @@ cp_parser_enum_specifier (cp_parser* parser) if (cp_parser_allow_gnu_extensions_p (parser)) { tree trailing_attr = cp_parser_attributes_opt (parser); + trailing_attr = chainon (trailing_attr, attributes); cplus_decl_attributes (&type, trailing_attr, (int) ATTR_FLAG_TYPE_IN_PLACE);