Module Name: src Committed By: christos Date: Thu Oct 13 21:11:57 UTC 2011
Modified Files: src/external/gpl3/gdb/dist/gdb: nbsd-thread.c Log Message: fix core dump handling. In essence remove all the custom code that dealt with it, and use the gdb standard code. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gdb/dist/gdb/nbsd-thread.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gdb/dist/gdb/nbsd-thread.c diff -u src/external/gpl3/gdb/dist/gdb/nbsd-thread.c:1.4 src/external/gpl3/gdb/dist/gdb/nbsd-thread.c:1.5 --- src/external/gpl3/gdb/dist/gdb/nbsd-thread.c:1.4 Thu Oct 13 12:00:37 2011 +++ src/external/gpl3/gdb/dist/gdb/nbsd-thread.c Thu Oct 13 17:11:57 2011 @@ -71,10 +71,8 @@ static ptid_t main_ptid; /* Real proces static ptid_t cached_thread; struct target_ops nbsd_thread_ops; -struct target_ops nbsd_core_ops; struct td_proc_callbacks_t nbsd_thread_callbacks; -struct td_proc_callbacks_t nbsd_core_callbacks; static ptid_t find_active_thread (void); static void nbsd_find_new_threads (struct target_ops *); @@ -325,6 +323,10 @@ find_active_thread (void) (pl.pl_event != PL_EVENT_SIGNAL)) val = ptrace (PT_LWPINFO, GET_PID(inferior_ptid), (void *)&pl, sizeof(pl)); } + else + { + return inferior_ptid; + } cached_thread = BUILD_LWP (pl.pl_lwpid, main_ptid); return cached_thread; @@ -515,11 +517,7 @@ nbsd_add_to_thread_list (bfd *abfd, asec regval = atoi (bfd_section_name (abfd, asect) + 5); -#ifdef notyet - td_map_lwp2thr (main_ta, regval >> 16, &dummy); -#endif - - add_thread (BUILD_LWP(regval >> 16, main_ptid)); + add_thread (BUILD_LWP(regval, main_ptid)); } /* This routine is called whenever a new symbol table is read in, or when all @@ -535,7 +533,7 @@ nbsd_add_to_thread_list (bfd *abfd, asec void nbsd_thread_new_objfile (struct objfile *objfile) { - int val, core_pid; + int val; if (!objfile) { @@ -569,15 +567,6 @@ nbsd_thread_new_objfile (struct objfile nbsd_thread_activate(); } - core_pid = elf_tdata (core_bfd)->core_pid; - if (core_pid) - { - main_ptid = pid_to_ptid (core_pid); - nbsd_thread_active = 1; - init_thread_list (); - bfd_map_over_sections (core_bfd, nbsd_add_to_thread_list, NULL); - nbsd_find_new_threads (NULL); - } quit: return; } @@ -644,8 +633,6 @@ nbsd_find_new_threads_callback (td_threa if (td_thr_info (th, &ti) != 0) return -1; -printf("find new thread %d\n", ti.thread_id); - ptid = BUILD_THREAD (ti.thread_id, main_ptid); if (ti.thread_type == TD_TYPE_USER && ti.thread_state != TD_STATE_BLOCKED && @@ -980,54 +967,6 @@ nbsd_thread_tsd_cmd (char *exp, int from td_tsd_iter (main_ta, tsd_cb, NULL); } -static void -nbsd_core_open (char *filename, int from_tty) -{ - int val; - - nbsd_thread_core = 1; - - core_target->to_open (filename, from_tty); - - if (nbsd_thread_present) - { - val = td_open (&nbsd_thread_callbacks, NULL, &main_ta); - if (val == 0) - { - main_ptid = pid_to_ptid (elf_tdata (core_bfd)->core_pid); - nbsd_thread_active = 1; - init_thread_list (); - bfd_map_over_sections (core_bfd, nbsd_add_to_thread_list, NULL); - nbsd_find_new_threads (NULL); - } - else - error ("nbsd_core_open: td_open: %s", td_err_string (val)); - } -} - -static void -nbsd_core_close (int quitting) -{ - /* XXX Setting these here is a gross hack. It needs to be set to - * XXX the "current thread ID" when a core file is loaded, but there's - * XXX no hook that happens then. However, core_open() in corelow is - * XXX pretty likely to call this. - */ - inferior_ptid = minus_one_ptid; - - core_target->to_close (quitting); -} - -static void -nbsd_core_detach (struct target_ops *ops, char *args, int from_tty) -{ - struct target_ops *beneath = find_target_beneath (ops); - if (nbsd_thread_active) - nbsd_thread_deactivate (); - unpush_target (ops); - beneath->to_detach (beneath, args, from_tty); -} - /* * Process operation callbacks */ @@ -1208,8 +1147,6 @@ init_nbsd_thread_ops (void) nbsd_thread_ops.to_shortname = "netbsd-threads"; nbsd_thread_ops.to_longname = "NetBSD pthread."; nbsd_thread_ops.to_doc = "NetBSD pthread support."; - nbsd_thread_ops.to_open = 0; - nbsd_thread_ops.to_close = 0; nbsd_thread_ops.to_attach = nbsd_thread_attach; nbsd_thread_ops.to_post_attach = nbsd_thread_post_attach; nbsd_thread_ops.to_detach = nbsd_thread_detach; @@ -1217,7 +1154,6 @@ init_nbsd_thread_ops (void) nbsd_thread_ops.to_wait = nbsd_thread_wait; nbsd_thread_ops.to_fetch_registers = nbsd_thread_fetch_registers; nbsd_thread_ops.to_store_registers = nbsd_thread_store_registers; - nbsd_thread_ops.to_prepare_to_store = 0; nbsd_thread_ops.to_xfer_partial = nbsd_thread_xfer_partial; nbsd_thread_ops.to_files_info = nbsd_thread_files_info; nbsd_thread_ops.to_insert_breakpoint = memory_insert_breakpoint; @@ -1233,51 +1169,16 @@ init_nbsd_thread_ops (void) nbsd_thread_ops.to_pid_to_str = nbsd_pid_to_str; nbsd_thread_ops.to_find_new_threads = nbsd_find_new_threads; nbsd_thread_ops.to_stratum = thread_stratum; - nbsd_thread_ops.to_has_all_memory = one; - nbsd_thread_ops.to_has_memory = one; - nbsd_thread_ops.to_has_stack = one; - nbsd_thread_ops.to_has_registers = one; - nbsd_thread_ops.to_has_execution = oneptid; nbsd_thread_ops.to_has_thread_control = tc_none; nbsd_thread_ops.to_magic = OPS_MAGIC; } -static void -init_nbsd_core_ops (void) -{ - nbsd_core_ops.to_shortname = "netbsd-core"; - nbsd_core_ops.to_longname = "NetBSD core pthread."; - nbsd_core_ops.to_doc = "NetBSD pthread support for core files."; - nbsd_core_ops.to_open = nbsd_core_open; - nbsd_core_ops.to_close = nbsd_core_close; - nbsd_core_ops.to_detach = nbsd_core_detach; - nbsd_core_ops.to_fetch_registers = nbsd_thread_fetch_registers; - nbsd_core_ops.to_xfer_partial = nbsd_thread_xfer_partial; - nbsd_core_ops.to_files_info = nbsd_core_files_info; - nbsd_core_ops.to_create_inferior = nbsd_thread_create_inferior; - nbsd_core_ops.to_has_memory = one; - nbsd_core_ops.to_has_stack = one; - nbsd_core_ops.to_has_registers = one; - nbsd_core_ops.to_has_thread_control = tc_schedlock; - nbsd_core_ops.to_thread_alive = nbsd_core_thread_alive; - nbsd_core_ops.to_pid_to_str = nbsd_pid_to_str; - nbsd_core_ops.to_find_new_threads = nbsd_find_new_threads; - nbsd_core_ops.to_magic = OPS_MAGIC; -} - -/* we suppress the call to add_target of core_ops in corelow because - if there are two targets in the stratum core_stratum, find_core_target - won't know which one to return. see corelow.c for an additonal - comment on coreops_suppress_target. */ -int coreops_suppress_target = 1; - void _initialize_nbsd_thread (void) { static struct cmd_list_element *thread_examine_list = NULL; init_nbsd_thread_ops (); - init_nbsd_core_ops (); init_nbsd_proc_callbacks (); add_target (&nbsd_thread_ops);