On Tuesday 12 January 2010 00:22:07 Pedro Alves wrote: > On Monday 11 January 2010 21:01:08, Vladimir Prus wrote: > > Implement core awareness. > > > > gdb/ > > * bcache.c (compare_ints): Remove > > (print_percentage): Use compare_positive_ints. > > > > * defs.h (compare_positive_ints): Declare. > > * linux-nat.h (struct lin_lwp): New field core. > > (linux_nat_core_of_thread_1): Declare. > > * linux-nat.c (add_lwp): Init the 'core' field. > > (linux_nat_wait_1): Record the core. > > (linux_nat_core_of_thread_1, linux_nat_core_of_thread): New. > > (linux_nat_add_target): Register the above. > > * linux-thread-db.c (update_thread_core): New. > > (thread_db_find_new_threads): Update core information for > > every thread. > > * remote.c (struct private_thread_info): New. > > (free_private_thread_info, demand_private_info): New. > > (PACKET_qXfer_threads, use_osdata_threads): New. > > (struct thread_item, threads_parsing_context > > (start_thread, end_thread, thread_attributes) > > (thread_children, threads_children, threads_elements): New. > > (remote_threads_info): Try qXfer:threads before anything > > else. > > (remote_protocol_packets): Register qXfer:threads. > > (remote_open_1): Init use_osdata_threads. > > (struct stop_reply): New field 'core'. > > (remote_parse_stop_reply): Parse core number. > > (process_stop_reply): Record core number. > > (remote_xfer_partial): Handle qXfer:threads. > > (remote_core_of_thread): New. > > (init_remote_ops): Register remote_core_of_thread. > > (_initialize_remote): Register qXfer:read. > > * target.c (target_core_of_thread): New > > * target.h (enum target_object): New value TARGET_OBJECT_THREADS. > > (struct target_ops): New field to_core_of_threads. > > (target_core_of_thread): Declare. > > * gdbthread.h (struct thread_info): New field private_dtor. > > * thread.c (print_thread_info): Report the core. > > * ui-out.c (MAX_UI_OUT_LEVELS): Increase. > > * utils.c (compare_positive_ints): New. > > * features/threads.dtd: New. > > * mi/mi-interp.c (mi_on_normal_stop): Report the core. > > * mi/mi-main.c (struct collect_cores_data, collect_cores) > > (do_nothing, free_vector_of_osdata_items) > > (splay_tree_int_comparator, free_splay_tree): New. > > (print_one_inferior_data): Implemented printing of selected > > inferiors. Collect and print cores. > > (output_cores): New. > > (mi_cmd_list_thread_groups): Support --recurse. Permit specifying > > thread groups together with --available. > > > > gdbserver/ > > * linux-low.c (linux_core_of_thread): New. > > (compare_ints, show_process, list_threads): New. > > (linux_qxfer_osdata): Report threads and cores. > > (linux_target_op): Register linux_core_of_thread. > > * remote-utils.c (prepare_resume_reply): Report the core. > > (buffer_xml_printf): Support %d specifier. > > * server.c (handle_threads_qxfer_proper, handle_threads_qxfer): > > New. > > (handle_query): Handle qXfer:threads. Announce availability > > thereof. > > * target.h (struct target_ops): New field core_of_thread. > > This version is OK. Thanks. Thanks. Here's the version I've just checked in. Differs from above in: - mi-support.exp fix to make it not crash on the 'core' field - demand_private_info now initialized 'extra' to 0, and does not rely on luck. - Volodya > > - Volodya