aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/gdbserver/ChangeLog')
-rw-r--r--gdb/gdbserver/ChangeLog256
1 files changed, 256 insertions, 0 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 6d77af6..665556c 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,4 +1,260 @@
2010-06-01 Pedro Alves <pedro@codesourcery.com>
+ Stan Shebs <stan@codesourcery.com>
+
+ * Makefile.in (IPA_DEPFILES, extra_libraries): New.
+ (all): Depend on $(extra_libraries).
+ (install-only): Install the IPA.
+ (IPA_OBJS, IPA_LIB): New.
+ (clean): Remove the IPA lib.
+ (IPAGENT_CFLAGS): New.
+ (tracepoint-ipa.o, utils-ipa.o, remote-utils-ipa.o)
+ (regcache-ipa.o, i386-linux-ipa.o, linux-i386-ipa.o)
+ (linux-amd64-ipa.o, amd64-linux-ipa.o): New rules.
+ * linux-amd64-ipa.c, linux-i386-ipa.c: New files.
+ * configure.ac: Check for atomic builtins support in the compiler.
+ (IPA_DEPFILES, extra_libraries): Define.
+ * configure.srv (ipa_obj): Add description.
+ (ipa_i386_linux_regobj, ipa_amd64_linux_regobj): Define.
+ (i[34567]86-*-linux*): Set ipa_obj.
+ (x86_64-*-linux*): Set ipa_obj.
+ * linux-low.c (stabilizing_threads): New.
+ (supports_fast_tracepoints): New.
+ (linux_detach): Stabilize threads before detaching.
+ (handle_tracepoints): Handle internal tracing breakpoints. Assert
+ the lwp is either not stabilizing, or is moving out of a jump pad.
+ (linux_fast_tracepoint_collecting): New.
+ (maybe_move_out_of_jump_pad): New.
+ (enqueue_one_deferred_signal): New.
+ (dequeue_one_deferred_signal): New.
+ (linux_wait_for_event_1): If moving out of a jump pad, defer
+ pending signals to later.
+ (linux_stabilize_threads): New.
+ (linux_wait_1): Check if threads need moving out of jump pads, and
+ do it if so.
+ (stuck_in_jump_pad_callback): New.
+ (move_out_of_jump_pad_callback): New.
+ (lwp_running): New.
+ (linux_resume_one_lwp): Handle moving out of jump pads.
+ (linux_set_resume_request): Dequeue deferred signals.
+ (need_step_over_p): Also step over fast tracepoint jumps.
+ (start_step_over): Also uninsert fast tracepoint jumps.
+ (finish_step_over): Also reinsert fast tracepoint jumps.
+ (linux_install_fast_tracepoint_jump): New.
+ (linux_target_ops): Install linux_stabilize_threads and
+ linux_install_fast_tracepoint_jump_pad.
+ * linux-low.h (linux_target_ops) <get_thread_area,
+ install_fast_tracepoint_jump_pad>: New fields.
+ (struct lwp_info) <collecting_fast_tracepoint,
+ pending_signals_to_report, exit_jump_pad_bkpt>: New fields.
+ (linux_get_thread_area): Declare.
+ * linux-x86-low.c (jump_insn): New.
+ (x86_get_thread_area): New.
+ (append_insns): New.
+ (push_opcode): New.
+ (amd64_install_fast_tracepoint_jump_pad): New.
+ (i386_install_fast_tracepoint_jump_pad): New.
+ (x86_install_fast_tracepoint_jump_pad): New.
+ (the_low_target): Install x86_get_thread_area and
+ x86_install_fast_tracepoint_jump_pad.
+ * mem-break.c (set_raw_breakpoint_at): Use read_inferior_memory.
+ (struct fast_tracepoint_jump): New.
+ (fast_tracepoint_jump_insn): New.
+ (fast_tracepoint_jump_shadow): New.
+ (find_fast_tracepoint_jump_at): New.
+ (fast_tracepoint_jump_here): New.
+ (delete_fast_tracepoint_jump): New.
+ (set_fast_tracepoint_jump): New.
+ (uninsert_fast_tracepoint_jumps_at): New.
+ (reinsert_fast_tracepoint_jumps_at): New.
+ (set_breakpoint_at): Use write_inferior_memory.
+ (uninsert_raw_breakpoint): Use write_inferior_memory.
+ (check_mem_read): Mask out fast tracepoint jumps.
+ (check_mem_write): Mask out fast tracepoint jumps.
+ * mem-break.h (struct fast_tracepoint_jump): Forward declare.
+ (set_fast_tracepoint_jump): Declare.
+ (delete_fast_tracepoint_jump)
+ (fast_tracepoint_jump_here, uninsert_fast_tracepoint_jumps_at)
+ (reinsert_fast_tracepoint_jumps_at): Declare.
+ * regcache.c: Don't compile many functions when building the
+ in-process agent library.
+ (init_register_cache) [IN_PROCESS_AGENT]: Don't allow allocating
+ the register buffer in the heap.
+ (free_register_cache): If the register buffer isn't owned by the
+ regcache, don't free it.
+ (set_register_cache) [IN_PROCESS_AGENT]: Don't re-alocate
+ pre-existing register caches.
+ * remote-utils.c (convert_int_to_ascii): Constify `from' parameter
+ type.
+ (convert_ascii_to_int): : Constify `from' parameter type.
+ (decode_M_packet, decode_X_packet): Replace the `to' parameter by
+ a `to_p' pointer to pointer parameter. If TO_P is NULL, malloc
+ the needed buffer in-place.
+ (relocate_instruction): New.
+ * server.c (handle_query) <qSymbols>: If the target supports
+ tracepoints, give it a chance of looking up symbols. Report
+ support for fast tracepoints.
+ (handle_status): Stabilize threads.
+ (process_serial_event): Adjust.
+ * server.h (struct fast_tracepoint_jump): Forward declare.
+ (struct process_info) <fast_tracepoint_jumps>: New field.
+ (convert_ascii_to_int, convert_int_to_ascii): Adjust.
+ (decode_X_packet, decode_M_packet): Adjust.
+ (relocate_instruction): Declare.
+ (in_process_agent_loaded): Declare.
+ (tracepoint_look_up_symbols): Declare.
+ (struct fast_tpoint_collect_status): Declare.
+ (fast_tracepoint_collecting): Declare.
+ (force_unlock_trace_buffer): Declare.
+ (handle_tracepoint_bkpts): Declare.
+ (initialize_low_tracepoint)
+ (supply_fast_tracepoint_registers) [IN_PROCESS_AGENT]: Declare.
+ * target.h (struct target_ops) <stabilize_threads,
+ install_fast_tracepoint_jump_pad>: New fields.
+ (stabilize_threads, install_fast_tracepoint_jump_pad): New.
+ * tracepoint.c [HAVE_MALLOC_H]: Include malloc.h.
+ [HAVE_STDINT_H]: Include stdint.h.
+ (trace_debug_1): Rename to ...
+ (trace_vdebug): ... this.
+ (trace_debug): Rename to ...
+ (trace_debug_1): ... this. Add `level' parameter.
+ (trace_debug): New.
+ (ATTR_USED, ATTR_NOINLINE): New.
+ (IP_AGENT_EXPORT): New.
+ (gdb_tp_heap_buffer, gdb_jump_pad_buffer, gdb_jump_pad_buffer_end)
+ (collecting, gdb_collect, stop_tracing, flush_trace_buffer)
+ (about_to_request_buffer_space, trace_buffer_is_full)
+ (stopping_tracepoint, expr_eval_result, error_tracepoint)
+ (tracepoints, tracing, trace_buffer_ctrl, trace_buffer_ctrl_curr)
+ (trace_buffer_lo, trace_buffer_hi, traceframe_read_count)
+ (traceframe_write_count, traceframes_created)
+ (trace_state_variables)
+ New renaming defines.
+ (struct ipa_sym_addresses): New.
+ (STRINGIZE_1, STRINGIZE, IPA_SYM): New.
+ (symbol_list): New.
+ (ipa_sym_addrs): New.
+ (all_tracepoint_symbols_looked_up): New.
+ (in_process_agent_loaded): New.
+ (write_e_ipa_not_loaded): New.
+ (maybe_write_ipa_not_loaded): New.
+ (tracepoint_look_up_symbols): New.
+ (debug_threads) [IN_PROCESS_AGENT]: New.
+ (read_inferior_memory) [IN_PROCESS_AGENT]: New.
+ (UNKNOWN_SIDE_EFFECTS): New.
+ (stop_tracing): New.
+ (flush_trace_buffer): New.
+ (stop_tracing_bkpt): New.
+ (flush_trace_buffer_bkpt): New.
+ (read_inferior_integer): New.
+ (read_inferior_uinteger): New.
+ (read_inferior_data_pointer): New.
+ (write_inferior_data_pointer): New.
+ (write_inferior_integer): New.
+ (write_inferior_uinteger): New.
+ (struct collect_static_trace_data_action): Delete.
+ (enum tracepoint_type): New.
+ (struct tracepoint) <type>: New field `type'.
+ <actions_str, step_actions, step_actions_str>: Only include in GDBserver.
+ <orig_size, obj_addr_on_target, adjusted_insn_addr>
+ <adjusted_insn_addr_end, jump_pad, jump_pad_end>: New fields.
+ (tracepoints): Use IP_AGENT_EXPORT.
+ (last_tracepoint): Don't include in the IPA.
+ (stopping_tracepoint): Use IP_AGENT_EXPORT.
+ (trace_buffer_is_full): Use IP_AGENT_EXPORT.
+ (alloced_trace_state_variables): New.
+ (trace_state_variables): Use IP_AGENT_EXPORT.
+ (traceframe_t): Delete unused variable.
+ (circular_trace_buffer): Don't include in the IPA.
+ (trace_buffer_start): Delete.
+ (struct trace_buffer_control): New.
+ (trace_buffer_free): Delete.
+ (struct ipa_trace_buffer_control): New.
+ (GDBSERVER_FLUSH_COUNT_MASK, GDBSERVER_FLUSH_COUNT_MASK_PREV)
+ (GDBSERVER_FLUSH_COUNT_MASK_CURR, GDBSERVER_UPDATED_FLUSH_COUNT_BIT):
+ New.
+ (trace_buffer_ctrl): New.
+ (TRACE_BUFFER_CTRL_CURR): New.
+ (trace_buffer_start, trace_buffer_free, trace_buffer_end_free):
+ Reimplement as macros.
+ (trace_buffer_wrap): Delete.
+ (traceframe_write_count, traceframe_read_count)
+ (traceframes_created, tracing): Use IP_AGENT_EXPORT.
+ (struct tracepoint_hit_ctx) <type>: New field.
+ (struct fast_tracepoint_ctx): New.
+ (memory_barrier): New.
+ (cmpxchg): New.
+ (record_tracepoint_error): Update atomically in the IPA.
+ (clear_inferior_trace_buffer): New.
+ (about_to_request_buffer_space): New.
+ (trace_buffer_alloc): Handle GDBserver and inferior simulatenous
+ updating the same buffer.
+ (add_tracepoint): Default the tracepoint's type to trap
+ tracepoint, and orig_size to -1.
+ (get_trace_state_variable) [IN_PROCESS_AGENT]: Handle allocated
+ internal variables.
+ (create_trace_state_variable): New parameter `gdb'. Handle it.
+ (clear_installed_tracepoints): Clear fast tracepoint jumps.
+ (cmd_qtdp): Handle fast tracepoints.
+ (cmd_qtdv): Adjust.
+ (max_jump_pad_size): New.
+ (gdb_jump_pad_head): New.
+ (get_jump_space_head): New.
+ (claim_jump_space): New.
+ (sort_tracepoints): New.
+ (MAX_JUMP_SIZE): New.
+ (cmd_qtstart): Handle fast tracepoints. Sync tracepoints with the
+ IPA.
+ (stop_tracing) [IN_PROCESS_AGENT]: Don't include the tdisconnected
+ support. Upload fast traceframes, and delete internal IPA
+ breakpoints.
+ (stop_tracing_handler): New.
+ (flush_trace_buffer_handler): New.
+ (cmd_qtstop): Upload fast tracepoints.
+ (response_tracepoint): Handle fast tracepoints.
+ (tracepoint_finished_step): Upload fast traceframes. Set the
+ tracepoint hit context's tracepoint type.
+ (handle_tracepoint_bkpts): New.
+ (tracepoint_was_hit): Set the tracepoint hit context's tracepoint
+ type. Add comment about fast tracepoints.
+ (collect_data_at_tracepoint) [IN_PROCESS_AGENT]: Don't access the
+ non-existing action_str field.
+ (get_context_regcache): Handle fast tracepoints.
+ (do_action_at_tracepoint) [!IN_PROCESS_AGENT]: Don't write the PC
+ to the regcache.
+ (fast_tracepoint_from_jump_pad_address): New.
+ (fast_tracepoint_from_ipa_tpoint_address): New.
+ (collecting_t): New.
+ (force_unlock_trace_buffer): New.
+ (fast_tracepoint_collecting): New.
+ (collecting): New.
+ (gdb_collect): New.
+ (write_inferior_data_ptr): New.
+ (target_tp_heap): New.
+ (target_malloc): New.
+ (download_agent_expr): New.
+ (UALIGN): New.
+ (download_tracepoints): New.
+ (download_trace_state_variables): New.
+ (upload_fast_traceframes): New.
+ (IPA_FIRST_TRACEFRAME): New.
+ (IPA_NEXT_TRACEFRAME_1): New.
+ (IPA_NEXT_TRACEFRAME): New.
+ [IN_PROCESS_AGENT]: Include sys/mman.h and fcntl.h.
+ [IN_PROCESS_AGENT] (gdb_tp_heap_buffer, gdb_jump_pad_buffer)
+ (gdb_jump_pad_buffer_end): New.
+ [IN_PROCESS_AGENT] (initialize_tracepoint_ftlib): New.
+ (initialize_tracepoint): Adjust.
+ [IN_PROCESS_AGENT]: Allocate the IPA heap, and jump pad scratch
+ buffer. Initialize the low module.
+ * utils.c (PREFIX, TOOLNAME): New.
+ (malloc_failure): Use PREFIX.
+ (error): In the IPA, an error causes an exit.
+ (fatal, warning): Use PREFIX.
+ (internal_error): Use TOOLNAME.
+ (NUMCELLS): Increase to 10.
+ * configure, config.in: Regenerate.
+
+2010-06-01 Pedro Alves <pedro@codesourcery.com>
* server.c (handle_query) <qSupported>: Do two passes over the
qSupported string to avoid nesting strtok.