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
 
 /* 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.
    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;
 {
   struct type *ret = NULL;
   struct gdb_exception e;
+
   if ((current_cp_abi.rtti_type) == NULL)
     return NULL;
   TRY_CATCH (e, RETURN_MASK_ERROR)
   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
 }
 
 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"));
 {
   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
 }
 
 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"));
 {
   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
 }
 
 CORE_ADDR
@@ -237,8 +239,8 @@ list_cp_abis (int from_tty)
 {
   struct cleanup *cleanup_chain;
   int i;
 {
   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++)
     {
   cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "cp-abi-list");
   for (i = 0; i < num_cp_abis; i++)
     {