Tweak gdb.cp tests for aarch32
[deliverable/binutils-gdb.git] / gdb / ax-gdb.c
index 38f2c55f7194205fb3df583a3f5651c7c242f105..7c6cb6481fbba8c599f37c4a885aa9c9b871af44 100644 (file)
@@ -1,6 +1,6 @@
 /* GDB-specific functions for operating on agent expressions.
 
-   Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   Copyright (C) 1998-2016 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -40,6 +40,7 @@
 #include "arch-utils.h"
 #include "cli/cli-utils.h"
 #include "linespec.h"
+#include "location.h"
 #include "objfiles.h"
 
 #include "valprint.h"
@@ -393,26 +394,25 @@ gen_traced_pop (struct gdbarch *gdbarch,
 
       case axs_lvalue_memory:
        {
-         if (string_trace)
-           ax_simple (ax, aop_dup);
-
          /* Initialize the TYPE_LENGTH if it is a typedef.  */
          check_typedef (value->type);
 
-         /* There's no point in trying to use a trace_quick bytecode
-            here, since "trace_quick SIZE pop" is three bytes, whereas
-            "const8 SIZE trace" is also three bytes, does the same
-            thing, and the simplest code which generates that will also
-            work correctly for objects with large sizes.  */
-         ax_const_l (ax, TYPE_LENGTH (value->type));
-         ax_simple (ax, aop_trace);
-
          if (string_trace)
            {
-             ax_simple (ax, aop_ref32);
+             gen_fetch (ax, value->type);
              ax_const_l (ax, ax->trace_string);
              ax_simple (ax, aop_tracenz);
            }
+         else
+           {
+             /* There's no point in trying to use a trace_quick bytecode
+                here, since "trace_quick SIZE pop" is three bytes, whereas
+                "const8 SIZE trace" is also three bytes, does the same
+                thing, and the simplest code which generates that will also
+                work correctly for objects with large sizes.  */
+             ax_const_l (ax, TYPE_LENGTH (value->type));
+             ax_simple (ax, aop_trace);
+           }
        }
        break;
 
@@ -2563,7 +2563,7 @@ gen_printf (CORE_ADDR scope, struct gdbarch *gdbarch,
 
   /* Issue the printf bytecode proper.  */
   ax_simple (ax, aop_printf);
-  ax_simple (ax, nargs);
+  ax_raw_byte (ax, nargs);
   ax_string (ax, format, fmtlen);
 
   /* And terminate.  */
@@ -2642,13 +2642,16 @@ agent_command_1 (char *exp, int eval)
       int ix;
       struct linespec_sals *iter;
       struct cleanup *old_chain;
+      struct event_location *location;
 
       exp = skip_spaces (exp);
       init_linespec_result (&canonical);
-      decode_line_full (&exp, DECODE_LINE_FUNFIRSTLINE,
+      location = new_linespec_location (&exp);
+      old_chain = make_cleanup_delete_event_location (location);
+      decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
                        (struct symtab *) NULL, 0, &canonical,
                        NULL, NULL);
-      old_chain = make_cleanup_destroy_linespec_result (&canonical);
+      make_cleanup_destroy_linespec_result (&canonical);
       exp = skip_spaces (exp);
       if (exp[0] == ',')
         {
This page took 0.024628 seconds and 4 git commands to generate.