X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdbserver%2Fserver.cc;h=43962adc86c456c72a7a57aa8afe68cb8e5ff4ce;hb=b35db73327cf54445a20533305fcf705e88a520b;hp=f3dca8d3ce0e7c9218711abdb13bf7210085e71a;hpb=68119632a065f7d2a1bdd4c9524484c741544f24;p=deliverable%2Fbinutils-gdb.git diff --git a/gdbserver/server.cc b/gdbserver/server.cc index f3dca8d3ce..43962adc86 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -130,6 +130,7 @@ bool disable_packet_vCont; bool disable_packet_Tthread; bool disable_packet_qC; bool disable_packet_qfThreadInfo; +bool disable_packet_T; static unsigned char *mem_buf; @@ -740,7 +741,7 @@ handle_general_set (char *own_buf) } req_str = req ? "non-stop" : "all-stop"; - if (the_target->pt->start_non_stop (req == 1) != 0) + if (the_target->start_non_stop (req == 1) != 0) { fprintf (stderr, "Setting %s mode failed\n", req_str); write_enn (own_buf); @@ -1234,7 +1235,7 @@ handle_detach (char *own_buf) debug_printf ("Forcing non-stop mode\n"); non_stop = true; - the_target->pt->start_non_stop (true); + the_target->start_non_stop (true); } process->gdb_detached = 1; @@ -1442,13 +1443,13 @@ handle_qxfer_auxv (const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, LONGEST len) { - if (!the_target->pt->supports_read_auxv () || writebuf != NULL) + if (!the_target->supports_read_auxv () || writebuf != NULL) return -2; if (annex[0] != '\0' || current_thread == NULL) return -1; - return the_target->pt->read_auxv (offset, readbuf, len); + return the_target->read_auxv (offset, readbuf, len); } /* Handle qXfer:exec-file:read. */ @@ -1462,7 +1463,7 @@ handle_qxfer_exec_file (const char *annex, ULONGEST pid; int total_len; - if (the_target->pid_to_exec_file == NULL || writebuf != NULL) + if (!the_target->supports_pid_to_exec_file () || writebuf != NULL) return -2; if (annex[0] == '\0') @@ -1482,7 +1483,7 @@ handle_qxfer_exec_file (const char *annex, if (pid <= 0) return -1; - file = (*the_target->pid_to_exec_file) (pid); + file = the_target->pid_to_exec_file (pid); if (file == NULL) return -1; @@ -1574,10 +1575,12 @@ handle_qxfer_libraries_svr4 (const char *annex, if (writebuf != NULL) return -2; - if (current_thread == NULL || the_target->qxfer_libraries_svr4 == NULL) + if (current_thread == NULL + || !the_target->supports_qxfer_libraries_svr4 ()) return -1; - return the_target->qxfer_libraries_svr4 (annex, readbuf, writebuf, offset, len); + return the_target->qxfer_libraries_svr4 (annex, readbuf, writebuf, + offset, len); } /* Handle qXfer:osadata:read. */ @@ -1587,10 +1590,10 @@ handle_qxfer_osdata (const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, LONGEST len) { - if (!the_target->pt->supports_qxfer_osdata () || writebuf != NULL) + if (!the_target->supports_qxfer_osdata () || writebuf != NULL) return -2; - return the_target->pt->qxfer_osdata (annex, readbuf, NULL, offset, len); + return the_target->qxfer_osdata (annex, readbuf, NULL, offset, len); } /* Handle qXfer:siginfo:read and qXfer:siginfo:write. */ @@ -1600,13 +1603,13 @@ handle_qxfer_siginfo (const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, LONGEST len) { - if (!the_target->pt->supports_qxfer_siginfo ()) + if (!the_target->supports_qxfer_siginfo ()) return -2; if (annex[0] != '\0' || current_thread == NULL) return -1; - return the_target->pt->qxfer_siginfo (annex, readbuf, writebuf, offset, len); + return the_target->qxfer_siginfo (annex, readbuf, writebuf, offset, len); } /* Handle qXfer:statictrace:read. */ @@ -1792,13 +1795,13 @@ static int handle_qxfer_fdpic (const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, LONGEST len) { - if (!the_target->pt->supports_read_loadmap ()) + if (!the_target->supports_read_loadmap ()) return -2; if (current_thread == NULL) return -1; - return the_target->pt->read_loadmap (annex, offset, readbuf, len); + return the_target->read_loadmap (annex, offset, readbuf, len); } /* Handle qXfer:btrace:read. */ @@ -2193,7 +2196,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) tracepoint_look_up_symbols (); if (current_thread != NULL) - the_target->pt->look_up_symbols (); + the_target->look_up_symbols (); current_thread = save_thread; @@ -2234,13 +2237,13 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } } - if (the_target->pt->supports_read_offsets () + if (the_target->supports_read_offsets () && strcmp ("qOffsets", own_buf) == 0) { CORE_ADDR text, data; require_running_or_return (own_buf); - if (the_target->pt->read_offsets (&text, &data)) + if (the_target->read_offsets (&text, &data)) sprintf (own_buf, "Text=%lX;Data=%lX;Bss=%lX", (long)text, (long)data, (long)data); else @@ -2364,7 +2367,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) if (target_supports_catch_syscall ()) strcat (own_buf, ";QCatchSyscalls+"); - if (the_target->qxfer_libraries_svr4 != NULL) + if (the_target->supports_qxfer_libraries_svr4 ()) strcat (own_buf, ";qXfer:libraries-svr4:read+" ";augmented-libraries-svr4-read+"); else @@ -2374,13 +2377,13 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) strcat (own_buf, ";qXfer:libraries:read+"); } - if (the_target->pt->supports_read_auxv ()) + if (the_target->supports_read_auxv ()) strcat (own_buf, ";qXfer:auxv:read+"); - if (the_target->pt->supports_qxfer_siginfo ()) + if (the_target->supports_qxfer_siginfo ()) strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+"); - if (the_target->pt->supports_read_loadmap ()) + if (the_target->supports_read_loadmap ()) strcat (own_buf, ";qXfer:fdpic:read+"); /* We always report qXfer:features:read, as targets may @@ -2392,7 +2395,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) if (cs.transport_is_reliable) strcat (own_buf, ";QStartNoAckMode+"); - if (the_target->pt->supports_qxfer_osdata ()) + if (the_target->supports_qxfer_osdata ()) strcat (own_buf, ";qXfer:osdata:read+"); if (target_supports_multi_process ()) @@ -2450,7 +2453,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) if (target_supports_stopped_by_hw_breakpoint ()) strcat (own_buf, ";hwbreak+"); - if (the_target->pid_to_exec_file != NULL) + if (the_target->supports_pid_to_exec_file ()) strcat (own_buf, ";qXfer:exec-file:read+"); strcat (own_buf, ";vContSupported+"); @@ -2467,7 +2470,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } /* Thread-local storage support. */ - if (the_target->pt->supports_get_tls_address () + if (the_target->supports_get_tls_address () && startswith (own_buf, "qGetTLSAddr:")) { char *p = own_buf + 12; @@ -2513,8 +2516,8 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) if (thread == NULL) err = 2; else - err = the_target->pt->get_tls_address (thread, parts[0], parts[1], - &address); + err = the_target->get_tls_address (thread, parts[0], parts[1], + &address); } if (err == 0) @@ -2532,7 +2535,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) } /* Windows OS Thread Information Block address support. */ - if (the_target->get_tib_address != NULL + if (the_target->supports_get_tib_address () && startswith (own_buf, "qGetTIBAddr:")) { const char *annex; @@ -2540,7 +2543,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) CORE_ADDR tlb; ptid_t ptid = read_ptid (own_buf + 12, &annex); - n = (*the_target->get_tib_address) (ptid, &tlb); + n = the_target->get_tib_address (ptid, &tlb); if (n == 1) { strcpy (own_buf, paddress(tlb)); @@ -2577,7 +2580,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) write_ok (own_buf); - if (the_target->pt->handle_monitor_command (mon) == 0) + if (the_target->handle_monitor_command (mon) == 0) /* Default processing. */ handle_monitor_command (mon, own_buf); @@ -2846,7 +2849,7 @@ resume (struct thread_resume *actions, size_t num_actions) enable_async_io (); } - the_target->pt->resume (actions, num_actions); + the_target->resume (actions, num_actions); if (non_stop) write_ok (cs.own_buf); @@ -3087,7 +3090,7 @@ handle_v_requests (char *own_buf, int packet_len, int *new_packet_len) { if (strcmp (own_buf, "vCtrlC") == 0) { - the_target->pt->request_interrupt (); + the_target->request_interrupt (); write_ok (own_buf); return; } @@ -3217,7 +3220,7 @@ queue_stop_reply_callback (thread_info *thread) { /* For now, assume targets that don't have this callback also don't manage the thread's last_status field. */ - if (!the_target->pt->supports_thread_stopped ()) + if (!the_target->supports_thread_stopped ()) { struct vstop_notif *new_notif = new struct vstop_notif; @@ -3323,8 +3326,8 @@ handle_status (char *own_buf) { thread_info *thread = NULL; - pause_all (0); - stabilize_threads (); + target_pause_all (false); + target_stabilize_threads (); gdb_wants_all_threads_stopped (); /* We can only report one status, but we might be coming out of @@ -3647,6 +3650,8 @@ captured_main (int argc, char *argv[]) disable_packet_qC = true; else if (strcmp ("qfThreadInfo", tok) == 0) disable_packet_qfThreadInfo = true; + else if (strcmp ("T", tok) == 0) + disable_packet_T = true; else if (strcmp ("threads", tok) == 0) { disable_packet_vCont = true; @@ -3884,7 +3889,7 @@ captured_main (int argc, char *argv[]) down without informing GDB. */ if (!non_stop) { - if (the_target->pt->start_non_stop (true)) + if (the_target->start_non_stop (true)) non_stop = 1; /* Detaching implicitly resumes all threads;