OLD | NEW |
1 /* Abstraction of various C++ ABI's we support, and the info we need | 1 /* Abstraction of various C++ ABI's we support, and the info we need |
2 to get from them. | 2 to get from them. |
3 | 3 |
4 Contributed by Daniel Berlin <dberlin@redhat.com> | 4 Contributed by Daniel Berlin <dberlin@redhat.com> |
5 | 5 |
6 Copyright (C) 2001, 2005-2012 Free Software Foundation, Inc. | 6 Copyright (C) 2001, 2005-2012 Free Software Foundation, Inc. |
7 | 7 |
8 This file is part of GDB. | 8 This file is part of GDB. |
9 | 9 |
10 This program is free software; you can redistribute it and/or modify | 10 This program is free software; you can redistribute it and/or modify |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 struct value *cplus_method_ptr_to_value (struct value **this_p, | 166 struct value *cplus_method_ptr_to_value (struct value **this_p, |
167 struct value *method_ptr); | 167 struct value *method_ptr); |
168 | 168 |
169 /* Create the byte pattern in CONTENTS representing a pointer of type | 169 /* Create the byte pattern in CONTENTS representing a pointer of type |
170 TYPE to member function at ADDRESS (if IS_VIRTUAL is 0) or with | 170 TYPE to member function at ADDRESS (if IS_VIRTUAL is 0) or with |
171 virtual table offset ADDRESS (if IS_VIRTUAL is 1). This is the | 171 virtual table offset ADDRESS (if IS_VIRTUAL is 1). This is the |
172 opposite of cplus_method_ptr_to_value. */ | 172 opposite of cplus_method_ptr_to_value. */ |
173 void cplus_make_method_ptr (struct type *type, gdb_byte *CONTENTS, | 173 void cplus_make_method_ptr (struct type *type, gdb_byte *CONTENTS, |
174 CORE_ADDR address, int is_virtual); | 174 CORE_ADDR address, int is_virtual); |
175 | 175 |
| 176 /* Print the vtable for VALUE, if there is one. If there is no |
| 177 vtable, print a message, but do not throw. */ |
| 178 |
| 179 void cplus_print_vtable (struct value *value); |
| 180 |
176 /* Determine if we are currently in a C++ thunk. If so, get the | 181 /* Determine if we are currently in a C++ thunk. If so, get the |
177 address of the routine we are thunking to and continue to there | 182 address of the routine we are thunking to and continue to there |
178 instead. */ | 183 instead. */ |
179 | 184 |
180 CORE_ADDR cplus_skip_trampoline (struct frame_info *frame, | 185 CORE_ADDR cplus_skip_trampoline (struct frame_info *frame, |
181 CORE_ADDR stop_pc); | 186 CORE_ADDR stop_pc); |
182 | 187 |
183 /* Return non-zero if an argument of type TYPE should be passed by | 188 /* Return non-zero if an argument of type TYPE should be passed by |
184 reference instead of value. */ | 189 reference instead of value. */ |
185 extern int cp_pass_by_reference (struct type *type); | 190 extern int cp_pass_by_reference (struct type *type); |
(...skipping 20 matching lines...) Expand all Loading... |
206 const bfd_byte *valaddr, int embedded_offset, | 211 const bfd_byte *valaddr, int embedded_offset, |
207 CORE_ADDR address, const struct value *val); | 212 CORE_ADDR address, const struct value *val); |
208 void (*print_method_ptr) (const gdb_byte *contents, | 213 void (*print_method_ptr) (const gdb_byte *contents, |
209 struct type *type, | 214 struct type *type, |
210 struct ui_file *stream); | 215 struct ui_file *stream); |
211 int (*method_ptr_size) (struct type *); | 216 int (*method_ptr_size) (struct type *); |
212 void (*make_method_ptr) (struct type *, gdb_byte *, | 217 void (*make_method_ptr) (struct type *, gdb_byte *, |
213 CORE_ADDR, int); | 218 CORE_ADDR, int); |
214 struct value * (*method_ptr_to_value) (struct value **, | 219 struct value * (*method_ptr_to_value) (struct value **, |
215 struct value *); | 220 struct value *); |
| 221 void (*print_vtable) (struct value *); |
216 CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR); | 222 CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR); |
217 int (*pass_by_reference) (struct type *type); | 223 int (*pass_by_reference) (struct type *type); |
218 }; | 224 }; |
219 | 225 |
220 | 226 |
221 extern int register_cp_abi (struct cp_abi_ops *abi); | 227 extern int register_cp_abi (struct cp_abi_ops *abi); |
222 extern void set_cp_abi_as_auto_default (const char *short_name); | 228 extern void set_cp_abi_as_auto_default (const char *short_name); |
223 | 229 |
224 #endif | 230 #endif |
225 | 231 |
OLD | NEW |