gdb/testsuite/
[binutils-gdb.git] / gdb / cp-abi.c
index 250f64b35e4c4192b787d437adb138f81722fc5f..14552d1e6d95309685eb13feb2a6ad72147ba7d5 100644 (file)
@@ -1,6 +1,6 @@
 /* Generic code for supporting multiple C++ ABI's
 
-   Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008
+   Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -92,6 +92,7 @@ value_rtti_type (struct value *v, int *full, int *top, int *using_enc)
 {
   struct type *ret = NULL;
   struct gdb_exception e;
+
   if ((current_cp_abi.rtti_type) == NULL)
     return NULL;
   TRY_CATCH (e, RETURN_MASK_ERROR)
@@ -113,19 +114,20 @@ cplus_print_method_ptr (const gdb_byte *contents, struct type *type,
 }
 
 int
-cplus_method_ptr_size (void)
+cplus_method_ptr_size (struct type *to_type)
 {
   if (current_cp_abi.method_ptr_size == NULL)
     error (_("GDB does not support pointers to methods on this target"));
-  return (*current_cp_abi.method_ptr_size) ();
+  return (*current_cp_abi.method_ptr_size) (to_type);
 }
 
 void
-cplus_make_method_ptr (gdb_byte *contents, CORE_ADDR value, int is_virtual)
+cplus_make_method_ptr (struct type *type, gdb_byte *contents,
+                      CORE_ADDR value, int is_virtual)
 {
   if (current_cp_abi.make_method_ptr == NULL)
     error (_("GDB does not support pointers to methods on this target"));
-  (*current_cp_abi.make_method_ptr) (contents, value, is_virtual);
+  (*current_cp_abi.make_method_ptr) (type, contents, value, is_virtual);
 }
 
 CORE_ADDR
@@ -237,8 +239,8 @@ list_cp_abis (int from_tty)
 {
   struct cleanup *cleanup_chain;
   int i;
-  ui_out_text (uiout, "The available C++ ABIs are:\n");
 
+  ui_out_text (uiout, "The available C++ ABIs are:\n");
   cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "cp-abi-list");
   for (i = 0; i < num_cp_abis; i++)
     {