diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/gcore.c | 2 | ||||
-rw-r--r-- | gdb/gdb.c | 1 | ||||
-rw-r--r-- | gdb/gdbtypes.c | 61 | ||||
-rw-r--r-- | gdb/gnu-nat.c | 56 | ||||
-rw-r--r-- | gdb/gnu-v2-abi.c | 8 | ||||
-rw-r--r-- | gdb/gnu-v3-abi.c | 3 |
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 @@ -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); |