ODR warnings for "struct insn_info"
[binutils-gdb.git] / gdb / ia64-tdep.c
index 895808ac08b9753604e41b7f20ba4582e644d4d2..82456dc9c981124a69607f81e949d47f76fc87ae 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for the IA-64 for GDB, the GNU debugger.
 
-   Copyright (C) 1999-2021 Free Software Foundation, Inc.
+   Copyright (C) 1999-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -75,7 +75,7 @@ static gdb::optional<gdb::byte_vector> ktab_buf;
 
 /* An enumeration of the different IA-64 instruction types.  */
 
-typedef enum instruction_type
+enum ia64_instruction_type
 {
   A,                   /* Integer ALU ;    I-unit or M-unit */
   I,                   /* Non-ALU integer; I-unit */
@@ -85,7 +85,7 @@ typedef enum instruction_type
   L,                   /* Extended (L+X) ; I-unit */
   X,                   /* Extended (L+X) ; I-unit */
   undefined            /* undefined or reserved */
-} instruction_type;
+};
 
 /* We represent IA-64 PC addresses as the value of the instruction
    pointer or'd with some bit combination in the low nibble which
@@ -310,7 +310,7 @@ static const struct floatformat *floatformats_ia64_ext[2] =
 static struct type *
 ia64_ext_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (gdbarch);
 
   if (!tdep->ia64_ext_type)
     tdep->ia64_ext_type
@@ -322,7 +322,7 @@ ia64_ext_type (struct gdbarch *gdbarch)
 
 static int
 ia64_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-                         struct reggroup *group)
+                         const struct reggroup *group)
 {
   int vector_p;
   int float_p;
@@ -470,7 +470,7 @@ replace_slotN_contents (gdb_byte *bundle, long long instr, int slotnum)
   replace_bit_field (bundle, instr, 5+41*slotnum, 41);
 }
 
-static const enum instruction_type template_encoding_table[32][3] =
+static const enum ia64_instruction_type template_encoding_table[32][3] =
 {
   { M, I, I },                         /* 00 */
   { M, I, I },                         /* 01 */
@@ -510,7 +510,7 @@ static const enum instruction_type template_encoding_table[32][3] =
    address of the next instruction to fetch.  */
 
 static CORE_ADDR
-fetch_instruction (CORE_ADDR addr, instruction_type *it, long long *instr)
+fetch_instruction (CORE_ADDR addr, ia64_instruction_type *it, long long *instr)
 {
   gdb_byte bundle[BUNDLE_LEN];
   int slotnum = (int) (addr & 0x0f) / SLOT_MULTIPLIER;
@@ -1363,7 +1363,7 @@ examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc,
 {
   CORE_ADDR next_pc;
   CORE_ADDR last_prologue_pc = pc;
-  instruction_type it;
+  ia64_instruction_type it;
   long long instr;
   int cfm_reg  = 0;
   int ret_reg  = 0;
@@ -1895,13 +1895,13 @@ ia64_frame_this_id (struct frame_info *this_frame, void **this_cache,
   if (cache->base != 0)
     (*this_id) = frame_id_build_special (cache->base, cache->pc, cache->bsp);
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog,
-                       "regular frame id: code %s, stack %s, "
-                       "special %s, this_frame %s\n",
-                       paddress (gdbarch, this_id->code_addr),
-                       paddress (gdbarch, this_id->stack_addr),
-                       paddress (gdbarch, cache->bsp),
-                       host_address_to_string (this_frame));
+    gdb_printf (gdb_stdlog,
+               "regular frame id: code %s, stack %s, "
+               "special %s, this_frame %s\n",
+               paddress (gdbarch, this_id->code_addr),
+               paddress (gdbarch, this_id->stack_addr),
+               paddress (gdbarch, cache->bsp),
+               host_address_to_string (this_frame));
 }
 
 static struct value *
@@ -1935,7 +1935,7 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
         that frame by adding the size of output:
            (sof (size of frame) - sol (size of locals)).  */
       val = ia64_frame_prev_register (this_frame, this_cache, IA64_CFM_REGNUM);
-      prev_cfm = extract_unsigned_integer (value_contents_all (val),
+      prev_cfm = extract_unsigned_integer (value_contents_all (val).data (),
                                           8, byte_order);
       bsp = rse_address_add (cache->bsp, -(cache->sof));
       prev_bsp =
@@ -1985,7 +1985,7 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
          /* Adjust the register number to account for register rotation.  */
          regnum = VP16_REGNUM + ((regnum - VP16_REGNUM) + rrb_pr) % 48;
        }
-      prN = extract_bit_field (value_contents_all (pr_val),
+      prN = extract_bit_field (value_contents_all (pr_val).data (),
                               regnum - VP0_REGNUM, 1);
       return frame_unwind_got_constant (this_frame, regnum, prN);
     }
@@ -1996,7 +1996,7 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
       ULONGEST unatN;
       unat_val = ia64_frame_prev_register (this_frame, this_cache,
                                           IA64_UNAT_REGNUM);
-      unatN = extract_bit_field (value_contents_all (unat_val),
+      unatN = extract_bit_field (value_contents_all (unat_val).data (),
                                 regnum - IA64_NAT0_REGNUM, 1);
       return frame_unwind_got_constant (this_frame, regnum, unatN);
     }
@@ -2118,12 +2118,12 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
            regnum = IA64_GR32_REGNUM + (regnum - V32_REGNUM);
          reg_val = ia64_frame_prev_register (this_frame, this_cache,
                                              IA64_CFM_REGNUM);
-         prev_cfm = extract_unsigned_integer (value_contents_all (reg_val),
-                                              8, byte_order);
+         prev_cfm = extract_unsigned_integer
+           (value_contents_all (reg_val).data (), 8, byte_order);
          reg_val = ia64_frame_prev_register (this_frame, this_cache,
                                              IA64_BSP_REGNUM);
-         prev_bsp = extract_unsigned_integer (value_contents_all (reg_val),
-                                              8, byte_order);
+         prev_bsp = extract_unsigned_integer
+           (value_contents_all (reg_val).data (), 8, byte_order);
          prev_bof = rse_address_add (prev_bsp, -(prev_cfm & 0x7f));
 
          addr = rse_address_add (prev_bof, (regnum - IA64_GR32_REGNUM));
@@ -2161,6 +2161,7 @@ ia64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
  
 static const struct frame_unwind ia64_frame_unwind =
 {
+  "ia64 prologue",
   NORMAL_FRAME,
   default_frame_unwind_stop_reason,
   &ia64_frame_this_id,
@@ -2176,7 +2177,7 @@ ia64_sigtramp_frame_init_saved_regs (struct frame_info *this_frame,
                                     struct ia64_frame_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (gdbarch);
 
   if (tdep->sigcontext_register_address)
     {
@@ -2268,13 +2269,13 @@ ia64_sigtramp_frame_this_id (struct frame_info *this_frame,
                                       get_frame_pc (this_frame),
                                       cache->bsp);
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog,
-                       "sigtramp frame id: code %s, stack %s, "
-                       "special %s, this_frame %s\n",
-                       paddress (gdbarch, this_id->code_addr),
-                       paddress (gdbarch, this_id->stack_addr),
-                       paddress (gdbarch, cache->bsp),
-                       host_address_to_string (this_frame));
+    gdb_printf (gdb_stdlog,
+               "sigtramp frame id: code %s, stack %s, "
+               "special %s, this_frame %s\n",
+               paddress (gdbarch, this_id->code_addr),
+               paddress (gdbarch, this_id->stack_addr),
+               paddress (gdbarch, cache->bsp),
+               host_address_to_string (this_frame));
 }
 
 static struct value *
@@ -2334,7 +2335,8 @@ ia64_sigtramp_frame_sniffer (const struct frame_unwind *self,
                             struct frame_info *this_frame,
                             void **this_cache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
+  gdbarch *arch = get_frame_arch (this_frame);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (arch);
   if (tdep->pc_in_sigtramp)
     {
       CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2348,6 +2350,7 @@ ia64_sigtramp_frame_sniffer (const struct frame_unwind *self,
 
 static const struct frame_unwind ia64_sigtramp_frame_unwind =
 {
+  "ia64 sigtramp",
   SIGTRAMP_FRAME,
   default_frame_unwind_stop_reason,
   ia64_sigtramp_frame_this_id,
@@ -2482,6 +2485,7 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val,
   unw_word_t bsp, sof, cfm, psr, ip;
   struct frame_info *this_frame = (struct frame_info *) arg;
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (gdbarch);
   
   /* We never call any libunwind routines that need to write registers.  */
   gdb_assert (!write);
@@ -2503,7 +2507,7 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val,
           the current register frame.  */
        bsp = get_frame_register_unsigned (this_frame, IA64_BSP_REGNUM);
        cfm = get_frame_register_unsigned (this_frame, IA64_CFM_REGNUM);
-       sof = gdbarch_tdep (gdbarch)->size_of_register_frame (this_frame, cfm);
+       sof = tdep->size_of_register_frame (this_frame, cfm);
        *val = ia64_rse_skip_regs (bsp, -sof);
        break;
 
@@ -2520,11 +2524,11 @@ ia64_access_reg (unw_addr_space_t as, unw_regnum_t uw_regnum, unw_word_t *val,
     }
       
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog, 
-                       "  access_reg: from cache: %4s=%s\n",
-                       (((unsigned) regnum <= IA64_NAT127_REGNUM)
-                       ? ia64_register_names[regnum] : "r??"), 
-                       paddress (gdbarch, *val));
+    gdb_printf (gdb_stdlog, 
+               "  access_reg: from cache: %4s=%s\n",
+               (((unsigned) regnum <= IA64_NAT127_REGNUM)
+                ? ia64_register_names[regnum] : "r??"), 
+               paddress (gdbarch, *val));
   return 0;
 }
 
@@ -2591,11 +2595,11 @@ ia64_access_rse_reg (unw_addr_space_t as, unw_regnum_t uw_regnum,
     }
       
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog, 
-                       "  access_rse_reg: from cache: %4s=%s\n",
-                       (((unsigned) regnum <= IA64_NAT127_REGNUM)
-                        ? ia64_register_names[regnum] : "r??"), 
-                       paddress (gdbarch, *val));
+    gdb_printf (gdb_stdlog, 
+               "  access_rse_reg: from cache: %4s=%s\n",
+               (((unsigned) regnum <= IA64_NAT127_REGNUM)
+                ? ia64_register_names[regnum] : "r??"), 
+               paddress (gdbarch, *val));
 
   return 0;
 }
@@ -2689,12 +2693,12 @@ get_kernel_table (unw_word_t ip, unw_dyn_info_t *di)
   di->u.ti.table_data = (unw_word_t *) ktab;
   
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog, "get_kernel_table: found table `%s': "
-                       "segbase=%s, length=%s, gp=%s\n",
-                       (char *) di->u.ti.name_ptr, 
-                       hex_string (di->u.ti.segbase),
-                       pulongest (di->u.ti.table_len), 
-                       hex_string (di->gp));
+    gdb_printf (gdb_stdlog, "get_kernel_table: found table `%s': "
+               "segbase=%s, length=%s, gp=%s\n",
+               (char *) di->u.ti.name_ptr, 
+               hex_string (di->u.ti.segbase),
+               pulongest (di->u.ti.table_len), 
+               hex_string (di->gp));
   return 0;
 }
 
@@ -2795,15 +2799,15 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
        return -UNW_ENOINFO;
 
       if (gdbarch_debug >= 1)
-       fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %s -> "
-                           "(name=`%s',segbase=%s,start=%s,end=%s,gp=%s,"
-                           "length=%s,data=%s)\n",
-                           hex_string (ip), (char *)di.u.ti.name_ptr,
-                           hex_string (di.u.ti.segbase),
-                           hex_string (di.start_ip), hex_string (di.end_ip),
-                           hex_string (di.gp),
-                           pulongest (di.u.ti.table_len), 
-                           hex_string ((CORE_ADDR)di.u.ti.table_data));
+       gdb_printf (gdb_stdlog, "ia64_find_proc_info_x: %s -> "
+                   "(name=`%s',segbase=%s,start=%s,end=%s,gp=%s,"
+                   "length=%s,data=%s)\n",
+                   hex_string (ip), (char *)di.u.ti.name_ptr,
+                   hex_string (di.u.ti.segbase),
+                   hex_string (di.start_ip), hex_string (di.end_ip),
+                   hex_string (di.gp),
+                   pulongest (di.u.ti.table_len), 
+                   hex_string ((CORE_ADDR)di.u.ti.table_data));
     }
   else
     {
@@ -2812,15 +2816,15 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
        return ret;
 
       if (gdbarch_debug >= 1)
-       fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %s -> "
-                           "(name=`%s',segbase=%s,start=%s,end=%s,gp=%s,"
-                           "length=%s,data=%s)\n",
-                           hex_string (ip), (char *)di.u.rti.name_ptr,
-                           hex_string (di.u.rti.segbase),
-                           hex_string (di.start_ip), hex_string (di.end_ip),
-                           hex_string (di.gp),
-                           pulongest (di.u.rti.table_len), 
-                           hex_string (di.u.rti.table_data));
+       gdb_printf (gdb_stdlog, "ia64_find_proc_info_x: %s -> "
+                   "(name=`%s',segbase=%s,start=%s,end=%s,gp=%s,"
+                   "length=%s,data=%s)\n",
+                   hex_string (ip), (char *)di.u.rti.name_ptr,
+                   hex_string (di.u.rti.segbase),
+                   hex_string (di.start_ip), hex_string (di.end_ip),
+                   hex_string (di.gp),
+                   pulongest (di.u.rti.table_len), 
+                   hex_string (di.u.rti.table_data));
     }
 
   ret = libunwind_search_unwind_table (&as, ip, &di, pi, need_unwind_info,
@@ -2870,11 +2874,11 @@ ia64_get_dyn_info_list (unw_addr_space_t as,
          if (addr)
            {
              if (gdbarch_debug >= 1)
-               fprintf_unfiltered (gdb_stdlog,
-                                   "dynamic unwind table in objfile %s "
-                                   "at %s (gp=%s)\n",
-                                   bfd_get_filename (objfile->obfd),
-                                   hex_string (addr), hex_string (di.gp));
+               gdb_printf (gdb_stdlog,
+                           "dynamic unwind table in objfile %s "
+                           "at %s (gp=%s)\n",
+                           bfd_get_filename (objfile->obfd),
+                           hex_string (addr), hex_string (di.gp));
              *dilap = addr;
              return 0;
            }
@@ -2911,13 +2915,13 @@ ia64_libunwind_frame_this_id (struct frame_info *this_frame, void **this_cache,
   (*this_id) = frame_id_build_special (id.stack_addr, id.code_addr, bsp);
 
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog,
-                       "libunwind frame id: code %s, stack %s, "
-                       "special %s, this_frame %s\n",
-                       paddress (gdbarch, id.code_addr),
-                       paddress (gdbarch, id.stack_addr),
-                       paddress (gdbarch, bsp),
-                       host_address_to_string (this_frame));
+    gdb_printf (gdb_stdlog,
+               "libunwind frame id: code %s, stack %s, "
+               "special %s, this_frame %s\n",
+               paddress (gdbarch, id.code_addr),
+               paddress (gdbarch, id.stack_addr),
+               paddress (gdbarch, bsp),
+               host_address_to_string (this_frame));
 }
 
 static struct value *
@@ -2954,7 +2958,7 @@ ia64_libunwind_frame_prev_register (struct frame_info *this_frame,
          /* Adjust the register number to account for register rotation.  */
          regnum = VP16_REGNUM + ((regnum - VP16_REGNUM) + rrb_pr) % 48;
        }
-      prN_val = extract_bit_field (value_contents_all (val),
+      prN_val = extract_bit_field (value_contents_all (val).data (),
                                   regnum - VP0_REGNUM, 1);
       return frame_unwind_got_constant (this_frame, regnum, prN_val);
     }
@@ -2963,7 +2967,7 @@ ia64_libunwind_frame_prev_register (struct frame_info *this_frame,
     {
       ULONGEST unatN_val;
 
-      unatN_val = extract_bit_field (value_contents_all (val),
+      unatN_val = extract_bit_field (value_contents_all (val).data (),
                                     regnum - IA64_NAT0_REGNUM, 1);
       return frame_unwind_got_constant (this_frame, regnum, unatN_val);
     }
@@ -2978,11 +2982,11 @@ ia64_libunwind_frame_prev_register (struct frame_info *this_frame,
         register will be if we pop the frame back which is why we might
         have been called.  We know that libunwind will pass us back the
         beginning of the current frame so we should just add sof to it.  */
-      prev_bsp = extract_unsigned_integer (value_contents_all (val),
+      prev_bsp = extract_unsigned_integer (value_contents_all (val).data (),
                                           8, byte_order);
       cfm_val = libunwind_frame_prev_register (this_frame, this_cache,
                                               IA64_CFM_REGNUM);
-      prev_cfm = extract_unsigned_integer (value_contents_all (cfm_val),
+      prev_cfm = extract_unsigned_integer (value_contents_all (cfm_val).data (),
                                           8, byte_order);
       prev_bsp = rse_address_add (prev_bsp, (prev_cfm & 0x7f));
 
@@ -3006,6 +3010,7 @@ ia64_libunwind_frame_sniffer (const struct frame_unwind *self,
 
 static const struct frame_unwind ia64_libunwind_frame_unwind =
 {
+  "ia64 libunwind",
   NORMAL_FRAME,
   default_frame_unwind_stop_reason,
   ia64_libunwind_frame_this_id,
@@ -3042,13 +3047,13 @@ ia64_libunwind_sigtramp_frame_this_id (struct frame_info *this_frame,
   (*this_id) = frame_id_build_special (id.stack_addr, id.code_addr, bsp);
 
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog,
-                       "libunwind sigtramp frame id: code %s, "
-                       "stack %s, special %s, this_frame %s\n",
-                       paddress (gdbarch, id.code_addr),
-                       paddress (gdbarch, id.stack_addr),
-                       paddress (gdbarch, bsp),
-                       host_address_to_string (this_frame));
+    gdb_printf (gdb_stdlog,
+               "libunwind sigtramp frame id: code %s, "
+               "stack %s, special %s, this_frame %s\n",
+               paddress (gdbarch, id.code_addr),
+               paddress (gdbarch, id.stack_addr),
+               paddress (gdbarch, bsp),
+               host_address_to_string (this_frame));
 }
 
 static struct value *
@@ -3064,7 +3069,7 @@ ia64_libunwind_sigtramp_frame_prev_register (struct frame_info *this_frame,
      method of getting previous registers.  */
   prev_ip_val = libunwind_frame_prev_register (this_frame, this_cache,
                                               IA64_IP_REGNUM);
-  prev_ip = extract_unsigned_integer (value_contents_all (prev_ip_val),
+  prev_ip = extract_unsigned_integer (value_contents_all (prev_ip_val).data (),
                                      8, byte_order);
 
   if (prev_ip == 0)
@@ -3094,6 +3099,7 @@ ia64_libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
 
 static const struct frame_unwind ia64_libunwind_sigtramp_frame_unwind =
 {
+  "ia64 libunwind sigtramp",
   SIGTRAMP_FRAME,
   default_frame_unwind_stop_reason,
   ia64_libunwind_sigtramp_frame_this_id,
@@ -3444,7 +3450,7 @@ ia64_find_global_pointer_from_dynamic_section (struct gdbarch *gdbarch,
              status = target_read_memory (addr, buf, sizeof (buf));
              if (status != 0)
                break;
-             tag = extract_signed_integer (buf, sizeof (buf), byte_order);
+             tag = extract_signed_integer (buf, byte_order);
 
              if (tag == DT_PLTGOT)
                {
@@ -3478,7 +3484,7 @@ ia64_find_global_pointer_from_dynamic_section (struct gdbarch *gdbarch,
 static CORE_ADDR
 ia64_find_global_pointer (struct gdbarch *gdbarch, CORE_ADDR faddr)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (gdbarch);
   CORE_ADDR addr = 0;
 
   if (tdep->find_global_pointer_from_solib)
@@ -3525,7 +3531,7 @@ find_extant_func_descr (struct gdbarch *gdbarch, CORE_ADDR faddr)
              status = target_read_memory (addr, buf, sizeof (buf));
              if (status != 0)
                break;
-             faddr2 = extract_signed_integer (buf, sizeof (buf), byte_order);
+             faddr2 = extract_signed_integer (buf, byte_order);
 
              if (faddr == faddr2)
                return addr;
@@ -3673,7 +3679,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                      function_call_return_method return_method,
                      CORE_ADDR struct_addr)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ia64_gdbarch_tdep *tdep = (ia64_gdbarch_tdep *) gdbarch_tdep (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   int argno;
   struct value *arg;
@@ -3743,8 +3749,8 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
          && TYPE_TARGET_TYPE (type)->code () == TYPE_CODE_FUNC)
        {
          gdb_byte val_buf[8];
-         ULONGEST faddr = extract_unsigned_integer (value_contents (arg),
-                                                    8, byte_order);
+         ULONGEST faddr = extract_unsigned_integer
+           (value_contents (arg).data (), 8, byte_order);
          store_unsigned_integer (val_buf, 8, byte_order,
                                  find_func_descr (regcache, faddr,
                                                   &funcdescaddr));
@@ -3776,7 +3782,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                 This is why we use store_unsigned_integer.  */
              store_unsigned_integer
                (val_buf, 8, byte_order,
-                extract_unsigned_integer (value_contents (arg), len,
+                extract_unsigned_integer (value_contents (arg).data (), len,
                                           byte_order));
            }
          else
@@ -3790,7 +3796,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
                 In this case, the data is Byte0-aligned.  Happy news,
                 this means that we don't need to differentiate the
                 handling of 8byte blocks and less-than-8bytes blocks.  */
-             memcpy (val_buf, value_contents (arg) + argoffset,
+             memcpy (val_buf, value_contents (arg).data () + argoffset,
                      (len > 8) ? 8 : len);
            }
 
@@ -3814,7 +3820,7 @@ ia64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
          while (len > 0 && floatreg < IA64_FR16_REGNUM)
            {
              gdb_byte to[IA64_FP_REGISTER_SIZE];
-             target_float_convert (value_contents (arg) + argoffset,
+             target_float_convert (value_contents (arg).data () + argoffset,
                                    float_elt_type, to,
                                    ia64_ext_type (gdbarch));
              regcache->cooked_write (floatreg, to);
@@ -3870,10 +3876,10 @@ ia64_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
   bsp = extract_unsigned_integer (buf, 8, byte_order);
 
   if (gdbarch_debug >= 1)
-    fprintf_unfiltered (gdb_stdlog,
-                       "dummy frame id: code %s, stack %s, special %s\n",
-                       paddress (gdbarch, get_frame_pc (this_frame)),
-                       paddress (gdbarch, sp), paddress (gdbarch, bsp));
+    gdb_printf (gdb_stdlog,
+               "dummy frame id: code %s, stack %s, special %s\n",
+               paddress (gdbarch, get_frame_pc (this_frame)),
+               paddress (gdbarch, sp), paddress (gdbarch, bsp));
 
   return frame_id_build_special (sp, get_frame_pc (this_frame), bsp);
 }
@@ -3913,14 +3919,13 @@ static struct gdbarch *
 ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
   struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
 
   /* If there is already a candidate, use it.  */
   arches = gdbarch_list_lookup_by_info (arches, &info);
   if (arches != NULL)
     return arches->gdbarch;
 
-  tdep = XCNEW (struct gdbarch_tdep);
+  ia64_gdbarch_tdep *tdep = new ia64_gdbarch_tdep;
   gdbarch = gdbarch_alloc (&info, tdep);
 
   tdep->size_of_register_frame = ia64_size_of_register_frame;