Do not load .eh_frame section from separete object files
[deliverable/binutils-gdb.git] / gdb / ax-gdb.c
index e85f0030879b91ba85d93c8c7f93bcad56f26e52..5258167df3824a9ce0e836b03e03820bbfd1b424 100644 (file)
@@ -70,7 +70,8 @@ static struct value *const_var_ref (struct symbol *var);
 static struct value *const_expr (union exp_element **pc);
 static struct value *maybe_const_expr (union exp_element **pc);
 
-static void gen_traced_pop (struct gdbarch *, struct agent_expr *, struct axs_value *);
+static void gen_traced_pop (struct gdbarch *, struct agent_expr *,
+                           struct axs_value *);
 
 static void gen_sign_extend (struct agent_expr *, struct type *);
 static void gen_extend (struct agent_expr *, struct type *);
@@ -633,7 +634,8 @@ gen_var_ref (struct gdbarch *gdbarch, struct agent_expr *ax,
 
     case LOC_CONST_BYTES:
       internal_error (__FILE__, __LINE__,
-                     _("gen_var_ref: LOC_CONST_BYTES symbols are not supported"));
+                     _("gen_var_ref: LOC_CONST_BYTES "
+                       "symbols are not supported"));
 
       /* Variable at a fixed location in memory.  Easy.  */
     case LOC_STATIC:
@@ -1138,8 +1140,9 @@ gen_less (struct agent_expr *ax, struct axs_value *value,
    operator, used in error messages */
 static void
 gen_binop (struct agent_expr *ax, struct axs_value *value,
-          struct axs_value *value1, struct axs_value *value2, enum agent_op op,
-          enum agent_op op_unsigned, int may_carry, char *name)
+          struct axs_value *value1, struct axs_value *value2,
+          enum agent_op op, enum agent_op op_unsigned,
+          int may_carry, char *name)
 {
   /* We only handle INT op INT.  */
   if ((TYPE_CODE (value1->type) != TYPE_CODE_INT)
@@ -1447,7 +1450,8 @@ gen_struct_ref_recursive (struct expression *exp, struct agent_expr *ax,
                {
                  gen_static_field (exp->gdbarch, ax, value, type, i);
                  if (value->optimized_out)
-                   error (_("static field `%s' has been optimized out, cannot use"),
+                   error (_("static field `%s' has been "
+                            "optimized out, cannot use"),
                           field);
                  return 1;
                }
@@ -1469,7 +1473,8 @@ gen_struct_ref_recursive (struct expression *exp, struct agent_expr *ax,
       struct type *basetype = check_typedef (TYPE_BASECLASS (type, i));
 
       rslt = gen_struct_ref_recursive (exp, ax, value, field,
-                                      offset + TYPE_BASECLASS_BITPOS (type, i) / TARGET_CHAR_BIT,
+                                      offset + TYPE_BASECLASS_BITPOS (type, i)
+                                      / TARGET_CHAR_BIT,
                                       basetype);
       if (rslt)
        return 1;
@@ -1544,7 +1549,7 @@ gen_static_field (struct gdbarch *gdbarch,
     }
   else
     {
-      char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
+      const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
       struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0);
 
       if (sym)
@@ -1587,7 +1592,8 @@ gen_struct_elt_for_reference (struct expression *exp,
            {
              gen_static_field (exp->gdbarch, ax, value, t, i);
              if (value->optimized_out)
-               error (_("static field `%s' has been optimized out, cannot use"),
+               error (_("static field `%s' has been "
+                        "optimized out, cannot use"),
                       fieldname);
              return 1;
            }
@@ -1706,7 +1712,8 @@ gen_repeat (struct expression *exp, union exp_element **pc,
     int length;
 
     if (!v)
-      error (_("Right operand of `@' must be a constant, in agent expressions."));
+      error (_("Right operand of `@' must be a "
+              "constant, in agent expressions."));
     if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
       error (_("Right operand of `@' must be an integer."));
     length = value_as_long (v);
@@ -1890,7 +1897,8 @@ gen_expr (struct expression *exp, union exp_element **pc,
                ax_tsv (ax, aop_tracev, tsv->number);
            }
          else
-           error (_("$%s is not a trace state variable, may not assign to it"), name);
+           error (_("$%s is not a trace state variable, "
+                    "may not assign to it"), name);
        }
       else
        error (_("May only assign to trace state variables"));
@@ -1925,7 +1933,8 @@ gen_expr (struct expression *exp, union exp_element **pc,
                ax_tsv (ax, aop_tracev, tsv->number);
            }
          else
-           error (_("$%s is not a trace state variable, may not assign to it"), name);
+           error (_("$%s is not a trace state variable, "
+                    "may not assign to it"), name);
        }
       else
        error (_("May only assign to trace state variables"));
@@ -2007,7 +2016,8 @@ gen_expr (struct expression *exp, union exp_element **pc,
            value->type = builtin_type (exp->gdbarch)->builtin_long_long;
          }
        else
-         error (_("$%s is not a trace state variable; GDB agent expressions cannot use convenience variables."), name);
+         error (_("$%s is not a trace state variable; GDB agent "
+                  "expressions cannot use convenience variables."), name);
       }
       break;
 
@@ -2034,14 +2044,13 @@ gen_expr (struct expression *exp, union exp_element **pc,
 
        (*pc) += 3;
        gen_expr (exp, pc, ax, value);
-       /* I'm not sure I understand UNOP_MEMVAL entirely.  I think
-          it's just a hack for dealing with minsyms; you take some
-          integer constant, pretend it's the address of an lvalue of
-          the given type, and dereference it.  */
-       if (value->kind != axs_rvalue)
-         /* This would be weird.  */
-         internal_error (__FILE__, __LINE__,
-                         _("gen_expr: OP_MEMVAL operand isn't an rvalue???"));
+
+       /* If we have an axs_rvalue or an axs_lvalue_memory, then we
+          already have the right value on the stack.  For
+          axs_lvalue_register, we must convert.  */
+       if (value->kind == axs_lvalue_register)
+         require_rvalue (ax, value);
+
        value->type = type;
        value->kind = axs_lvalue_memory;
       }
@@ -2129,18 +2138,17 @@ gen_expr (struct expression *exp, union exp_element **pc,
     case OP_THIS:
       {
        char *this_name;
-       struct symbol *func, *sym;
+       struct symbol *sym, *func;
        struct block *b;
+       const struct language_defn *lang;
 
-       func = block_linkage_function (block_for_pc (ax->scope));
-       this_name = language_def (SYMBOL_LANGUAGE (func))->la_name_of_this;
-       b = SYMBOL_BLOCK_VALUE (func);
+       b = block_for_pc (ax->scope);
+       func = block_linkage_function (b);
+       lang = language_def (SYMBOL_LANGUAGE (func));
 
-       /* Calling lookup_block_symbol is necessary to get the LOC_REGISTER
-          symbol instead of the LOC_ARG one (if both exist).  */
-       sym = lookup_block_symbol (b, this_name, VAR_DOMAIN);
+       sym = lookup_language_this (lang, b);
        if (!sym)
-         error (_("no `%s' found"), this_name);
+         error (_("no `%s' found"), lang->la_name_of_this);
 
        gen_var_ref (exp->gdbarch, ax, value, sym);
 
@@ -2247,8 +2255,8 @@ gen_expr_binop_rest (struct expression *exp,
 
        if (binop_types_user_defined_p (op, value1->type, value2->type))
          {
-           error (_("\
-cannot subscript requested type: cannot call user defined functions"));
+           error (_("cannot subscript requested type: "
+                    "cannot call user defined functions"));
          }
        else
          {
@@ -2268,7 +2276,8 @@ cannot subscript requested type: cannot call user defined functions"));
          }
 
        if (!is_integral_type (value2->type))
-         error (_("Argument to arithmetic operation not a number or boolean."));
+         error (_("Argument to arithmetic operation "
+                  "not a number or boolean."));
 
        gen_ptradd (ax, value, value1, value2);
        gen_deref (ax, value);
@@ -2511,10 +2520,12 @@ void
 _initialize_ax_gdb (void)
 {
   add_cmd ("agent", class_maintenance, agent_command,
-          _("Translate an expression into remote agent bytecode for tracing."),
+          _("Translate an expression into "
+            "remote agent bytecode for tracing."),
           &maintenancelist);
 
   add_cmd ("agent-eval", class_maintenance, agent_eval_command,
-          _("Translate an expression into remote agent bytecode for evaluation."),
+          _("Translate an expression into remote "
+            "agent bytecode for evaluation."),
           &maintenancelist);
 }
This page took 0.026282 seconds and 4 git commands to generate.