gdb: fix vfork with multiple threads
[deliverable/binutils-gdb.git] / gdb / c-exp.y
index 8bc7a97e0ac10f1a111caf6865278adc616863b4..93b10f05b7d24f79c04c62455bca40b854e4e510 100644 (file)
@@ -1125,8 +1125,7 @@ variable: block COLONCOLON name
                          if (symbol_read_needs_frame (sym.symbol))
                            pstate->block_tracker->update (sym);
 
-                         pstate->push_new<var_value_operation> (sym.symbol,
-                                                                sym.block);
+                         pstate->push_new<var_value_operation> (sym);
                        }
        ;
 
@@ -1195,10 +1194,9 @@ variable:        name_not_typename
                                = find_gnu_ifunc (sym.symbol);
                              if (resolver.minsym != NULL)
                                pstate->push_new<var_msym_value_operation>
-                                 (resolver.minsym, resolver.objfile);
+                                 (resolver);
                              else
-                               pstate->push_new<var_value_operation>
-                                 (sym.symbol, sym.block);
+                               pstate->push_new<var_value_operation> (sym);
                            }
                          else if ($1.is_a_field_of_this)
                            {
@@ -1239,11 +1237,14 @@ variable:       name_not_typename
                                   ? find_function_alias_target (msymbol)
                                   : NULL);
                              if (alias_target != NULL)
-                               pstate->push_new<var_value_operation>
-                                 (alias_target, SYMBOL_BLOCK_VALUE (alias_target));
+                               {
+                                 block_symbol bsym { alias_target,
+                                   SYMBOL_BLOCK_VALUE (alias_target) };
+                                 pstate->push_new<var_value_operation> (bsym);
+                               }
                              else
                                pstate->push_new<var_msym_value_operation>
-                                 (msymbol.minsym, msymbol.objfile);
+                                 (msymbol);
                            }
                        }
        ;
@@ -1266,11 +1267,16 @@ single_qualifier:
                  cpstate->type_stack.insert (pstate,
                                              copy_name ($2.stoken).c_str ());
                }
+       |       '@' UNKNOWN_CPP_NAME
+               {
+                 cpstate->type_stack.insert (pstate,
+                                             copy_name ($2.stoken).c_str ());
+               }
        ;
 
 qualifier_seq_noopt:
                single_qualifier
-       |       qualifier_seq single_qualifier
+       |       qualifier_seq_noopt single_qualifier
        ;
 
 qualifier_seq:
@@ -1879,7 +1885,7 @@ type_aggregate_p (struct type *type)
          || type->code () == TYPE_CODE_UNION
          || type->code () == TYPE_CODE_NAMESPACE
          || (type->code () == TYPE_CODE_ENUM
-             && TYPE_DECLARED_CLASS (type)));
+             && type->is_declared_class ()));
 }
 
 /* Validate a parameter typelist.  */
This page took 0.049455 seconds and 4 git commands to generate.