Convert dprintf to vtable ops
[binutils-gdb.git] / gdb / ia64-tdep.c
index b6816cb78b46db32da6b3a4b13b852ef9f038e38..dd6d5b199b251ceece14b0f3b5fbb11ba6073e48 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 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;
@@ -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 *
@@ -2177,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)
     {
@@ -2269,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 *
@@ -2335,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);
@@ -2484,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);
@@ -2505,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;
 
@@ -2522,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;
 }
 
@@ -2593,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;
 }
@@ -2691,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;
 }
 
@@ -2797,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
     {
@@ -2814,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,
@@ -2872,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;
            }
@@ -2913,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 *
@@ -3045,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 *
@@ -3448,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)
                {
@@ -3482,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)
@@ -3529,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;
@@ -3677,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;
@@ -3874,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);
 }
@@ -3917,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;