aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Snyder <msnyder@vmware.com>2010-05-14 20:17:37 +0000
committerMichael Snyder <msnyder@vmware.com>2010-05-14 20:17:37 +0000
commitd8734c886e14a4840c59ad815f7b9dc81cc9276c (patch)
tree395ab2af286b87c99b9180d65d5356c99b8e9666
parentbb9bcb69cdddee8069bf24321f9a0e91ffd22f32 (diff)
downloadgdb-d8734c886e14a4840c59ad815f7b9dc81cc9276c.zip
gdb-d8734c886e14a4840c59ad815f7b9dc81cc9276c.tar.gz
gdb-d8734c886e14a4840c59ad815f7b9dc81cc9276c.tar.bz2
2010-05-14 Michael Snyder <msnyder@vmware.com>
* gcore.c: White space. * gdb.c: White space. * gdbtypes.c: White space. * gnu-nat.c: White space. * gnu-v2-abi.c: White space. * gnu-v3-abi.c: White space.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/gcore.c2
-rw-r--r--gdb/gdb.c1
-rw-r--r--gdb/gdbtypes.c61
-rw-r--r--gdb/gnu-nat.c56
-rw-r--r--gdb/gnu-v2-abi.c8
-rw-r--r--gdb/gnu-v3-abi.c3
7 files changed, 103 insertions, 35 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a602665..210f804 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2010-05-14 Michael Snyder <msnyder@vmware.com>
+ * gcore.c: White space.
+ * gdb.c: White space.
+ * gdbtypes.c: White space.
+ * gnu-nat.c: White space.
+ * gnu-v2-abi.c: White space.
+ * gnu-v3-abi.c: White space.
+
* findcmd.c: White space.
* findvar.c: White space.
* fork-child.c: White space.
diff --git a/gdb/gcore.c b/gdb/gcore.c
index 5c5816c..a38a5a3 100644
--- a/gdb/gcore.c
+++ b/gdb/gcore.c
@@ -52,6 +52,7 @@ bfd *
create_gcore_bfd (char *filename)
{
bfd *obfd = bfd_openw (filename, default_gcore_target ());
+
if (!obfd)
error (_("Failed to open '%s' for output."), filename);
bfd_set_format (obfd, bfd_core);
@@ -413,6 +414,7 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size,
asec);
bfd_vma start = obj_section_addr (objsec) & -align;
bfd_vma end = (obj_section_endaddr (objsec) + align - 1) & -align;
+
/* Match if either the entire memory region lies inside the
section (i.e. a mapping covering some pages of a large
segment) or the entire section lies inside the memory region
diff --git a/gdb/gdb.c b/gdb/gdb.c
index fa92e25..bc5e6cc 100644
--- a/gdb/gdb.c
+++ b/gdb/gdb.c
@@ -25,6 +25,7 @@ int
main (int argc, char **argv)
{
struct captured_main_args args;
+
memset (&args, 0, sizeof args);
args.argc = argc;
args.argv = argv;
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 3dc8176..b7fb110 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -443,6 +443,7 @@ extern int
address_space_name_to_int (struct gdbarch *gdbarch, char *space_identifier)
{
int type_flags;
+
/* Check for known address space delimiters. */
if (!strcmp (space_identifier, "code"))
return TYPE_INSTANCE_FLAG_CODE_SPACE;
@@ -852,6 +853,7 @@ lookup_array_range_type (struct type *element_type,
struct type *index_type = builtin_type (gdbarch)->builtin_int;
struct type *range_type
= create_range_type (NULL, index_type, low_bound, high_bound);
+
return create_array_type (NULL, element_type, range_type);
}
@@ -884,6 +886,7 @@ lookup_string_range_type (struct type *string_char_type,
int low_bound, int high_bound)
{
struct type *result_type;
+
result_type = lookup_array_range_type (string_char_type,
low_bound, high_bound);
TYPE_CODE (result_type) = TYPE_CODE_STRING;
@@ -903,6 +906,7 @@ create_set_type (struct type *result_type, struct type *domain_type)
if (!TYPE_STUB (domain_type))
{
LONGEST low_bound, high_bound, bit_length;
+
if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
low_bound = high_bound = 0;
bit_length = high_bound - low_bound + 1;
@@ -946,6 +950,7 @@ struct type *
init_vector_type (struct type *elt_type, int n)
{
struct type *array_type;
+
array_type = lookup_array_range_type (elt_type, 0, n - 1);
make_vector_type (array_type);
return array_type;
@@ -1167,6 +1172,7 @@ lookup_template_type (char *name, struct type *type,
struct symbol *sym;
char *nam = (char *)
alloca (strlen (name) + strlen (TYPE_NAME (type)) + 4);
+
strcpy (nam, name);
strcat (nam, "<");
strcat (nam, TYPE_NAME (type));
@@ -1246,8 +1252,9 @@ lookup_struct_elt_type (struct type *type, char *name, int noerr)
}
else if (!t_field_name || *t_field_name == '\0')
{
- struct type *subtype = lookup_struct_elt_type (
- TYPE_FIELD_TYPE (type, i), name, 1);
+ struct type *subtype
+ = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
+
if (subtype != NULL)
return subtype;
}
@@ -1419,6 +1426,7 @@ check_typedef (struct type *type)
{
char *name = type_name_no_tag (type);
struct type *newtype;
+
if (name == NULL)
{
stub_noname_complaint ();
@@ -1454,6 +1462,7 @@ check_typedef (struct type *type)
as appropriate? (this code was written before TYPE_NAME and
TYPE_TAG_NAME were separate). */
struct symbol *sym;
+
if (name == NULL)
{
stub_noname_complaint ();
@@ -1497,26 +1506,27 @@ check_typedef (struct type *type)
if (high_bound < low_bound)
len = 0;
- else {
- /* For now, we conservatively take the array length to be 0
- if its length exceeds UINT_MAX. The code below assumes
- that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1,
- which is technically not guaranteed by C, but is usually true
- (because it would be true if x were unsigned with its
- high-order bit on). It uses the fact that
- high_bound-low_bound is always representable in
- ULONGEST and that if high_bound-low_bound+1 overflows,
- it overflows to 0. We must change these tests if we
- decide to increase the representation of TYPE_LENGTH
- from unsigned int to ULONGEST. */
- ULONGEST ulow = low_bound, uhigh = high_bound;
- ULONGEST tlen = TYPE_LENGTH (target_type);
-
- len = tlen * (uhigh - ulow + 1);
- if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh
- || len > UINT_MAX)
- len = 0;
- }
+ else
+ {
+ /* For now, we conservatively take the array length to be 0
+ if its length exceeds UINT_MAX. The code below assumes
+ that for x < 0, (ULONGEST) x == -x + ULONGEST_MAX + 1,
+ which is technically not guaranteed by C, but is usually true
+ (because it would be true if x were unsigned with its
+ high-order bit on). It uses the fact that
+ high_bound-low_bound is always representable in
+ ULONGEST and that if high_bound-low_bound+1 overflows,
+ it overflows to 0. We must change these tests if we
+ decide to increase the representation of TYPE_LENGTH
+ from unsigned int to ULONGEST. */
+ ULONGEST ulow = low_bound, uhigh = high_bound;
+ ULONGEST tlen = TYPE_LENGTH (target_type);
+
+ len = tlen * (uhigh - ulow + 1);
+ if (tlen == 0 || (len / tlen - 1 + ulow) != uhigh
+ || len > UINT_MAX)
+ len = 0;
+ }
TYPE_LENGTH (type) = len;
TYPE_TARGET_STUB (type) = 0;
}
@@ -2980,6 +2990,7 @@ static hashval_t
type_pair_hash (const void *item)
{
const struct type_pair *pair = item;
+
return htab_hash_pointer (pair->old);
}
@@ -2987,6 +2998,7 @@ static int
type_pair_eq (const void *item_lhs, const void *item_rhs)
{
const struct type_pair *lhs = item_lhs, *rhs = item_rhs;
+
return lhs->old == rhs->old;
}
@@ -3251,6 +3263,7 @@ arch_complex_type (struct gdbarch *gdbarch,
char *name, struct type *target_type)
{
struct type *t;
+
t = arch_type (gdbarch, TYPE_CODE_COMPLEX,
2 * TYPE_LENGTH (target_type), name);
TYPE_TARGET_TYPE (t) = target_type;
@@ -3300,6 +3313,7 @@ struct type *
arch_composite_type (struct gdbarch *gdbarch, char *name, enum type_code code)
{
struct type *t;
+
gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
t = arch_type (gdbarch, code, 0, NULL);
TYPE_TAG_NAME (t) = name;
@@ -3315,6 +3329,7 @@ append_composite_type_field_raw (struct type *t, char *name,
struct type *field)
{
struct field *f;
+
TYPE_NFIELDS (t) = TYPE_NFIELDS (t) + 1;
TYPE_FIELDS (t) = xrealloc (TYPE_FIELDS (t),
sizeof (struct field) * TYPE_NFIELDS (t));
@@ -3332,6 +3347,7 @@ append_composite_type_field_aligned (struct type *t, char *name,
struct type *field, int alignment)
{
struct field *f = append_composite_type_field_raw (t, name, field);
+
if (TYPE_CODE (t) == TYPE_CODE_UNION)
{
if (TYPE_LENGTH (t) < TYPE_LENGTH (field))
@@ -3349,6 +3365,7 @@ append_composite_type_field_aligned (struct type *t, char *name,
if (alignment)
{
int left = FIELD_BITPOS (f[0]) % (alignment * TARGET_CHAR_BIT);
+
if (left)
{
FIELD_BITPOS (f[0]) += left;
diff --git a/gdb/gnu-nat.c b/gdb/gnu-nat.c
index 51dde6f..df84813 100644
--- a/gdb/gnu-nat.c
+++ b/gdb/gnu-nat.c
@@ -373,8 +373,9 @@ proc_get_state (struct proc *proc, int will_modify)
{
mach_msg_type_number_t state_size = THREAD_STATE_SIZE;
error_t err =
- thread_get_state (proc->port, THREAD_STATE_FLAVOR,
- (thread_state_t) &proc->state, &state_size);
+ thread_get_state (proc->port, THREAD_STATE_FLAVOR,
+ (thread_state_t) &proc->state, &state_size);
+
proc_debug (proc, "getting thread state");
proc->state_valid = !err;
}
@@ -749,6 +750,7 @@ inf_set_pid (struct inf *inf, pid_t pid)
else
{
error_t err = proc_pid2task (proc_server, pid, &task_port);
+
if (err)
error (_("Error getting task for pid %d: %s"), pid, safe_strerror (err));
}
@@ -796,8 +798,8 @@ inf_validate_procinfo (struct inf *inf)
mach_msg_type_number_t pi_len = 0;
int info_flags = 0;
error_t err =
- proc_getprocinfo (proc_server, inf->pid, &info_flags,
- (procinfo_t *) &pi, &pi_len, &noise, &noise_len);
+ proc_getprocinfo (proc_server, inf->pid, &info_flags,
+ (procinfo_t *) &pi, &pi_len, &noise, &noise_len);
if (!err)
{
@@ -883,6 +885,7 @@ inf_set_traced (struct inf *inf, int on)
error_t err =
INF_RESUME_MSGPORT_RPC (inf, msg_set_init_int (msgport, refport,
INIT_TRACEMASK, mask));
+
if (err == EIEIO)
{
if (on)
@@ -909,10 +912,10 @@ int
inf_update_suspends (struct inf *inf)
{
struct proc *task = inf->task;
+
/* We don't have to update INF->threads even though we're iterating over it
because we'll change a thread only if it already has an existing proc
entry. */
-
inf_debug (inf, "updating suspend counts");
if (task)
@@ -974,6 +977,7 @@ struct proc *
inf_port_to_thread (struct inf *inf, mach_port_t port)
{
struct proc *thread = inf->threads;
+
while (thread)
if (thread->port == port)
return thread;
@@ -1000,6 +1004,7 @@ inf_validate_procs (struct inf *inf)
if (task)
{
error_t err = task_threads (task->port, &threads, &num_threads);
+
inf_debug (inf, "fetching threads");
if (err)
/* TASK must be dead. */
@@ -1117,6 +1122,7 @@ inf_set_threads_resume_sc (struct inf *inf,
struct proc *run_thread, int run_others)
{
struct proc *thread;
+
inf_update_procs (inf);
for (thread = inf->threads; thread; thread = thread->next)
if (thread == run_thread)
@@ -1325,6 +1331,7 @@ inf_signal (struct inf *inf, enum target_signal sig)
extremely large)! */
{
struct inf_wait *w = &inf->wait;
+
if (w->status.kind == TARGET_WAITKIND_STOPPED
&& w->status.value.sig == sig
&& w->thread && !w->thread->aborted)
@@ -1335,6 +1342,7 @@ inf_signal (struct inf *inf, enum target_signal sig)
i.e., we pretend it's global. */
{
struct exc_state *e = &w->exc;
+
inf_debug (inf, "passing through exception:"
" task = %d, thread = %d, exc = %d"
", code = %d, subcode = %d",
@@ -1760,6 +1768,7 @@ do_mach_notify_dead_name (mach_port_t notify, mach_port_t dead_port)
else
{
struct proc *thread = inf_port_to_thread (inf, dead_port);
+
if (thread)
{
proc_debug (thread, "is dead");
@@ -1929,7 +1938,7 @@ port_msgs_queued (mach_port_t port)
{
struct mach_port_status status;
error_t err =
- mach_port_get_receive_status (mach_task_self (), port, &status);
+ mach_port_get_receive_status (mach_task_self (), port, &status);
if (err)
return 0;
@@ -2005,6 +2014,7 @@ gnu_resume (struct target_ops *ops,
/* Just allow a single thread to run. */
{
struct proc *thread = inf_tid_to_thread (inf, ptid_get_tid (ptid));
+
if (!thread)
error (_("Can't run single thread id %s: no such thread!"),
target_pid_to_str (ptid));
@@ -2033,6 +2043,7 @@ static void
gnu_kill_inferior (struct target_ops *ops)
{
struct proc *task = gnu_current_inf->task;
+
if (task)
{
proc_debug (task, "terminating...");
@@ -2203,6 +2214,7 @@ gnu_detach (struct target_ops *ops, char *args, int from_tty)
if (from_tty)
{
char *exec_file = get_exec_file (0);
+
if (exec_file)
printf_unfiltered ("Detaching from program `%s' pid %d\n",
exec_file, gnu_current_inf->pid);
@@ -2560,6 +2572,7 @@ char *
proc_string (struct proc *proc)
{
static char tid_str[80];
+
if (proc_is_task (proc))
sprintf (tid_str, "process %d", proc->inf->pid);
else
@@ -2580,6 +2593,7 @@ gnu_pid_to_str (struct target_ops *ops, ptid_t ptid)
else
{
static char tid_str[80];
+
sprintf (tid_str, "bogus thread id %d", tid);
return tid_str;
}
@@ -2663,6 +2677,7 @@ parse_int_arg (char *args, char *cmd_prefix)
{
char *arg_end;
int val = strtoul (args, &arg_end, 10);
+
if (*args && *arg_end == '\0')
return val;
}
@@ -2708,6 +2723,7 @@ static struct inf *
active_inf (void)
{
struct inf *inf = cur_inf ();
+
if (!inf->task)
error (_("No current process."));
return inf;
@@ -2732,6 +2748,7 @@ static void
show_task_pause_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
check_empty (args, "show task pause");
printf_unfiltered ("The inferior task %s suspended while gdb has control.\n",
inf->task
@@ -2758,6 +2775,7 @@ static void
set_thread_default_pause_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
inf->default_thread_pause_sc =
parse_bool_arg (args, "set thread default pause") ? 0 : 1;
}
@@ -2767,6 +2785,7 @@ show_thread_default_pause_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
int sc = inf->default_thread_pause_sc;
+
check_empty (args, "show thread default pause");
printf_unfiltered ("New threads %s suspended while gdb has control%s.\n",
sc ? "are" : "aren't",
@@ -2777,6 +2796,7 @@ static void
set_thread_default_run_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
inf->default_thread_run_sc =
parse_bool_arg (args, "set thread default run") ? 0 : 1;
}
@@ -2785,6 +2805,7 @@ static void
show_thread_default_run_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
check_empty (args, "show thread default run");
printf_unfiltered ("New threads %s allowed to run.\n",
inf->default_thread_run_sc == 0 ? "are" : "aren't");
@@ -2846,6 +2867,7 @@ static void
set_task_exc_port_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
if (!args)
error (_("No argument to \"set task exception-port\" command."));
steal_exc_port (inf->task, parse_and_eval_address (args));
@@ -2861,6 +2883,7 @@ static void
show_stopped_cmd (char *args, int from_tty)
{
struct inf *inf = active_inf ();
+
check_empty (args, "show stopped");
printf_unfiltered ("The inferior process %s stopped.\n",
inf->stopped ? "is" : "isn't");
@@ -2880,6 +2903,7 @@ set_sig_thread_cmd (char *args, int from_tty)
else
{
int tid = ptid_get_tid (thread_id_to_pid (atoi (args)));
+
if (tid < 0)
error (_("Thread ID %s not known. Use the \"info threads\" command to\n"
"see the IDs of currently known threads."), args);
@@ -2891,6 +2915,7 @@ static void
show_sig_thread_cmd (char *args, int from_tty)
{
struct inf *inf = active_inf ();
+
check_empty (args, "show signal-thread");
if (inf->signal_thread)
printf_unfiltered ("The signal thread is %s.\n",
@@ -2916,6 +2941,7 @@ static void
show_signals_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
check_empty (args, "show signals");
printf_unfiltered ("The inferior process's signals %s intercepted.\n",
inf->task
@@ -2940,6 +2966,7 @@ static void
show_exceptions_cmd (char *args, int from_tty)
{
struct inf *inf = cur_inf ();
+
check_empty (args, "show exceptions");
printf_unfiltered ("Exceptions in the inferior %s trapped.\n",
inf->task
@@ -3009,8 +3036,9 @@ info_port_rights (char *args, mach_port_type_t only)
struct value *val = parse_to_comma_and_eval (&args);
long right = value_as_long (val);
error_t err =
- print_port_info (right, 0, inf->task->port, PORTINFO_DETAILS,
- stdout);
+ print_port_info (right, 0, inf->task->port, PORTINFO_DETAILS,
+ stdout);
+
if (err)
error (_("%ld: %s."), right, safe_strerror (err));
}
@@ -3019,8 +3047,8 @@ info_port_rights (char *args, mach_port_type_t only)
/* Print all of them. */
{
error_t err =
- print_task_ports_info (inf->task->port, only, PORTINFO_DETAILS,
- stdout);
+ print_task_ports_info (inf->task->port, only, PORTINFO_DETAILS,
+ stdout);
if (err)
error (_("%s."), safe_strerror (err));
}
@@ -3193,6 +3221,7 @@ set_thread_pause_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
int old_sc = thread->pause_sc;
+
thread->pause_sc = parse_bool_arg (args, "set thread pause");
if (old_sc == 0 && thread->pause_sc != 0 && thread->inf->pause_sc == 0)
/* If the task is currently unsuspended, immediately suspend it,
@@ -3205,6 +3234,7 @@ show_thread_pause_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
int sc = thread->pause_sc;
+
check_empty (args, "show task pause");
printf_unfiltered ("Thread %s %s suspended while gdb has control%s.\n",
proc_string (thread),
@@ -3216,6 +3246,7 @@ static void
set_thread_run_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
thread->run_sc = parse_bool_arg (args, "set thread run") ? 0 : 1;
}
@@ -3223,6 +3254,7 @@ static void
show_thread_run_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
check_empty (args, "show thread run");
printf_unfiltered ("Thread %s %s allowed to run.",
proc_string (thread),
@@ -3240,6 +3272,7 @@ static void
show_thread_detach_sc_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
check_empty (args, "show thread detach-suspend-count");
printf_unfiltered ("Thread %s will be left with a suspend count"
" of %d when detaching.\n",
@@ -3251,6 +3284,7 @@ static void
set_thread_exc_port_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
if (!args)
error (_("No argument to \"set thread exception-port\" command."));
steal_exc_port (thread, parse_and_eval_address (args));
@@ -3261,6 +3295,7 @@ static void
show_thread_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
check_empty (args, "show thread");
show_thread_run_cmd (0, from_tty);
show_thread_pause_cmd (0, from_tty);
@@ -3273,6 +3308,7 @@ static void
thread_takeover_sc_cmd (char *args, int from_tty)
{
struct proc *thread = cur_thread ();
+
thread_basic_info_data_t _info;
thread_basic_info_t info = &_info;
mach_msg_type_number_t info_len = THREAD_BASIC_INFO_COUNT;
diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c
index 3f25e73..67bf097 100644
--- a/gdb/gnu-v2-abi.c
+++ b/gdb/gnu-v2-abi.c
@@ -113,6 +113,7 @@ gnuv2_virtual_fn_field (struct value **arg1p, struct fn_field * f, int j,
if (TYPE_TARGET_TYPE (context) != type1)
{
struct value *tmp = value_cast (context, value_addr (arg1));
+
arg1 = value_ind (tmp);
type1 = check_typedef (value_type (arg1));
}
@@ -359,8 +360,8 @@ gnuv2_baseclass_offset (struct type *type, int index,
if (vb_match (type, i, basetype))
{
CORE_ADDR addr
- = unpack_pointer (TYPE_FIELD_TYPE (type, i),
- valaddr + (TYPE_FIELD_BITPOS (type, i) / 8));
+ = unpack_pointer (TYPE_FIELD_TYPE (type, i),
+ valaddr + (TYPE_FIELD_BITPOS (type, i) / 8));
return addr - (LONGEST) address;
}
@@ -369,7 +370,8 @@ gnuv2_baseclass_offset (struct type *type, int index,
for (i = index + 1; i < n_baseclasses; i++)
{
int boffset =
- baseclass_offset (type, i, valaddr, address);
+ baseclass_offset (type, i, valaddr, address);
+
if (boffset)
return boffset;
}
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
index b1882a2..571b52a 100644
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -586,6 +586,7 @@ gnuv3_print_method_ptr (const gdb_byte *contents,
{
char *demangled_name = cplus_demangle (physname,
DMGL_ANSI | DMGL_PARAMS);
+
fprintf_filtered (stream, "&virtual ");
if (demangled_name == NULL)
fputs_filtered (physname, stream);
@@ -628,6 +629,7 @@ gnuv3_method_ptr_size (struct type *type)
{
struct type *domain_type = check_typedef (TYPE_DOMAIN_TYPE (type));
struct gdbarch *gdbarch = get_type_arch (domain_type);
+
return 2 * TYPE_LENGTH (builtin_type (gdbarch)->builtin_data_ptr);
}
@@ -710,6 +712,7 @@ gnuv3_method_ptr_to_value (struct value **this_p, struct value *method_ptr)
if (vbit)
{
LONGEST voffset;
+
voffset = ptr_value / TYPE_LENGTH (vtable_ptrdiff_type (gdbarch));
return gnuv3_get_virtual_fn (gdbarch, value_ind (*this_p),
method_type, voffset);