1 1.1 christos /* Target operations for the remote server for GDB. 2 1.1.1.3 christos Copyright (C) 2002-2024 Free Software Foundation, Inc. 3 1.1 christos 4 1.1 christos Contributed by MontaVista Software. 5 1.1 christos 6 1.1 christos This file is part of GDB. 7 1.1 christos 8 1.1 christos This program is free software; you can redistribute it and/or modify 9 1.1 christos it under the terms of the GNU General Public License as published by 10 1.1 christos the Free Software Foundation; either version 3 of the License, or 11 1.1 christos (at your option) any later version. 12 1.1 christos 13 1.1 christos This program is distributed in the hope that it will be useful, 14 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 15 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 1.1 christos GNU General Public License for more details. 17 1.1 christos 18 1.1 christos You should have received a copy of the GNU General Public License 19 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20 1.1 christos 21 1.1 christos #include "tracepoint.h" 22 1.1 christos #include "gdbsupport/byte-vector.h" 23 1.1 christos #include "hostio.h" 24 1.1 christos #include <fcntl.h> 25 1.1 christos #include <unistd.h> 26 1.1 christos #include <sys/types.h> 27 1.1 christos #include <sys/stat.h> 28 1.1 christos 29 1.1 christos process_stratum_target *the_target; 30 1.1 christos 31 1.1 christos /* See target.h. */ 32 1.1 christos 33 1.1.1.2 christos bool 34 1.1.1.2 christos set_desired_thread () 35 1.1 christos { 36 1.1 christos client_state &cs = get_client_state (); 37 1.1.1.2 christos thread_info *found = find_thread_ptid (cs.general_thread); 38 1.1 christos 39 1.1.1.2 christos if (found == nullptr) 40 1.1 christos { 41 1.1.1.2 christos process_info *proc = find_process_pid (cs.general_thread.pid ()); 42 1.1.1.2 christos if (proc == nullptr) 43 1.1 christos { 44 1.1.1.2 christos threads_debug_printf 45 1.1.1.2 christos ("did not find thread nor process for general_thread %s", 46 1.1.1.2 christos cs.general_thread.to_string ().c_str ()); 47 1.1 christos } 48 1.1.1.2 christos else 49 1.1.1.2 christos { 50 1.1.1.2 christos threads_debug_printf 51 1.1.1.2 christos ("did not find thread for general_thread %s, but found process", 52 1.1.1.2 christos cs.general_thread.to_string ().c_str ()); 53 1.1.1.2 christos } 54 1.1.1.2 christos switch_to_process (proc); 55 1.1 christos } 56 1.1.1.2 christos else 57 1.1.1.2 christos switch_to_thread (found); 58 1.1 christos 59 1.1.1.2 christos return (current_thread != NULL); 60 1.1 christos } 61 1.1 christos 62 1.1 christos /* See target.h. */ 63 1.1 christos 64 1.1.1.2 christos bool 65 1.1.1.2 christos set_desired_process () 66 1.1 christos { 67 1.1 christos client_state &cs = get_client_state (); 68 1.1 christos 69 1.1.1.2 christos process_info *proc = find_process_pid (cs.general_thread.pid ()); 70 1.1.1.2 christos if (proc == nullptr) 71 1.1.1.2 christos { 72 1.1.1.2 christos threads_debug_printf 73 1.1.1.2 christos ("did not find process for general_thread %s", 74 1.1.1.2 christos cs.general_thread.to_string ().c_str ()); 75 1.1.1.2 christos } 76 1.1.1.2 christos switch_to_process (proc); 77 1.1 christos 78 1.1.1.2 christos return proc != nullptr; 79 1.1 christos } 80 1.1 christos 81 1.1.1.3 christos /* See target.h. */ 82 1.1.1.3 christos 83 1.1 christos int 84 1.1 christos read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len) 85 1.1 christos { 86 1.1.1.2 christos /* At the time of writing, GDB only sends write packets with LEN==0, 87 1.1.1.2 christos not read packets (see comment in target_write_memory), but it 88 1.1.1.2 christos doesn't hurt to prevent problems if it ever does, or we're 89 1.1.1.2 christos connected to some client other than GDB that does. */ 90 1.1.1.2 christos if (len == 0) 91 1.1.1.2 christos return 0; 92 1.1.1.2 christos 93 1.1.1.2 christos int res = the_target->read_memory (memaddr, myaddr, len); 94 1.1 christos check_mem_read (memaddr, myaddr, len); 95 1.1 christos return res; 96 1.1 christos } 97 1.1 christos 98 1.1 christos /* See target/target.h. */ 99 1.1 christos 100 1.1 christos int 101 1.1 christos target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len) 102 1.1 christos { 103 1.1 christos return read_inferior_memory (memaddr, myaddr, len); 104 1.1 christos } 105 1.1 christos 106 1.1 christos /* See target/target.h. */ 107 1.1 christos 108 1.1 christos int 109 1.1 christos target_read_uint32 (CORE_ADDR memaddr, uint32_t *result) 110 1.1 christos { 111 1.1 christos return read_inferior_memory (memaddr, (gdb_byte *) result, sizeof (*result)); 112 1.1 christos } 113 1.1 christos 114 1.1 christos /* See target/target.h. */ 115 1.1 christos 116 1.1 christos int 117 1.1 christos target_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, 118 1.1 christos ssize_t len) 119 1.1 christos { 120 1.1.1.2 christos /* GDB may send X packets with LEN==0, for probing packet support. 121 1.1.1.2 christos If we let such a request go through, then buffer.data() below may 122 1.1.1.2 christos return NULL, which may confuse target implementations. Handle it 123 1.1.1.2 christos here to avoid lower levels having to care about this case. */ 124 1.1.1.2 christos if (len == 0) 125 1.1.1.2 christos return 0; 126 1.1.1.2 christos 127 1.1 christos /* Make a copy of the data because check_mem_write may need to 128 1.1 christos update it. */ 129 1.1 christos gdb::byte_vector buffer (myaddr, myaddr + len); 130 1.1 christos check_mem_write (memaddr, buffer.data (), myaddr, len); 131 1.1 christos return the_target->write_memory (memaddr, buffer.data (), len); 132 1.1 christos } 133 1.1 christos 134 1.1 christos ptid_t 135 1.1.1.2 christos mywait (ptid_t ptid, struct target_waitstatus *ourstatus, 136 1.1.1.2 christos target_wait_flags options, int connected_wait) 137 1.1 christos { 138 1.1 christos ptid_t ret; 139 1.1 christos 140 1.1 christos if (connected_wait) 141 1.1 christos server_waiting = 1; 142 1.1 christos 143 1.1 christos ret = target_wait (ptid, ourstatus, options); 144 1.1 christos 145 1.1 christos /* We don't expose _LOADED events to gdbserver core. See the 146 1.1 christos `dlls_changed' global. */ 147 1.1.1.2 christos if (ourstatus->kind () == TARGET_WAITKIND_LOADED) 148 1.1.1.2 christos ourstatus->set_stopped (GDB_SIGNAL_0); 149 1.1 christos 150 1.1 christos /* If GDB is connected through TCP/serial, then GDBserver will most 151 1.1 christos probably be running on its own terminal/console, so it's nice to 152 1.1 christos print there why is GDBserver exiting. If however, GDB is 153 1.1 christos connected through stdio, then there's no need to spam the GDB 154 1.1 christos console with this -- the user will already see the exit through 155 1.1 christos regular GDB output, in that same terminal. */ 156 1.1 christos if (!remote_connection_is_stdio ()) 157 1.1 christos { 158 1.1.1.2 christos if (ourstatus->kind () == TARGET_WAITKIND_EXITED) 159 1.1 christos fprintf (stderr, 160 1.1.1.2 christos "\nChild exited with status %d\n", ourstatus->exit_status ()); 161 1.1.1.2 christos else if (ourstatus->kind () == TARGET_WAITKIND_SIGNALLED) 162 1.1 christos fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n", 163 1.1.1.2 christos gdb_signal_to_host (ourstatus->sig ()), 164 1.1.1.2 christos gdb_signal_to_name (ourstatus->sig ())); 165 1.1 christos } 166 1.1 christos 167 1.1 christos if (connected_wait) 168 1.1 christos server_waiting = 0; 169 1.1 christos 170 1.1 christos return ret; 171 1.1 christos } 172 1.1 christos 173 1.1 christos /* See target/target.h. */ 174 1.1 christos 175 1.1 christos void 176 1.1 christos target_stop_and_wait (ptid_t ptid) 177 1.1 christos { 178 1.1 christos struct target_waitstatus status; 179 1.1 christos bool was_non_stop = non_stop; 180 1.1 christos struct thread_resume resume_info; 181 1.1 christos 182 1.1 christos resume_info.thread = ptid; 183 1.1 christos resume_info.kind = resume_stop; 184 1.1 christos resume_info.sig = GDB_SIGNAL_0; 185 1.1 christos the_target->resume (&resume_info, 1); 186 1.1 christos 187 1.1 christos non_stop = true; 188 1.1 christos mywait (ptid, &status, 0, 0); 189 1.1 christos non_stop = was_non_stop; 190 1.1 christos } 191 1.1 christos 192 1.1 christos /* See target/target.h. */ 193 1.1 christos 194 1.1 christos ptid_t 195 1.1.1.2 christos target_wait (ptid_t ptid, struct target_waitstatus *status, 196 1.1.1.2 christos target_wait_flags options) 197 1.1 christos { 198 1.1 christos return the_target->wait (ptid, status, options); 199 1.1 christos } 200 1.1 christos 201 1.1 christos /* See target/target.h. */ 202 1.1 christos 203 1.1 christos void 204 1.1 christos target_mourn_inferior (ptid_t ptid) 205 1.1 christos { 206 1.1 christos the_target->mourn (find_process_pid (ptid.pid ())); 207 1.1 christos } 208 1.1 christos 209 1.1 christos /* See target/target.h. */ 210 1.1 christos 211 1.1 christos void 212 1.1 christos target_continue_no_signal (ptid_t ptid) 213 1.1 christos { 214 1.1 christos struct thread_resume resume_info; 215 1.1 christos 216 1.1 christos resume_info.thread = ptid; 217 1.1 christos resume_info.kind = resume_continue; 218 1.1 christos resume_info.sig = GDB_SIGNAL_0; 219 1.1 christos the_target->resume (&resume_info, 1); 220 1.1 christos } 221 1.1 christos 222 1.1 christos /* See target/target.h. */ 223 1.1 christos 224 1.1 christos void 225 1.1 christos target_continue (ptid_t ptid, enum gdb_signal signal) 226 1.1 christos { 227 1.1 christos struct thread_resume resume_info; 228 1.1 christos 229 1.1 christos resume_info.thread = ptid; 230 1.1 christos resume_info.kind = resume_continue; 231 1.1 christos resume_info.sig = gdb_signal_to_host (signal); 232 1.1 christos the_target->resume (&resume_info, 1); 233 1.1 christos } 234 1.1 christos 235 1.1 christos /* See target/target.h. */ 236 1.1 christos 237 1.1 christos int 238 1.1 christos target_supports_multi_process (void) 239 1.1 christos { 240 1.1 christos return the_target->supports_multi_process (); 241 1.1 christos } 242 1.1 christos 243 1.1 christos void 244 1.1 christos set_target_ops (process_stratum_target *target) 245 1.1 christos { 246 1.1 christos the_target = target; 247 1.1 christos } 248 1.1 christos 249 1.1 christos /* Convert pid to printable format. */ 250 1.1 christos 251 1.1.1.2 christos std::string 252 1.1 christos target_pid_to_str (ptid_t ptid) 253 1.1 christos { 254 1.1 christos if (ptid == minus_one_ptid) 255 1.1.1.2 christos return string_printf("<all threads>"); 256 1.1 christos else if (ptid == null_ptid) 257 1.1.1.2 christos return string_printf("<null thread>"); 258 1.1 christos else if (ptid.tid () != 0) 259 1.1.1.2 christos return string_printf("Thread %d.0x%s", 260 1.1.1.2 christos ptid.pid (), 261 1.1.1.2 christos phex_nz (ptid.tid (), sizeof (ULONGEST))); 262 1.1 christos else if (ptid.lwp () != 0) 263 1.1.1.2 christos return string_printf("LWP %d.%ld", 264 1.1.1.2 christos ptid.pid (), ptid.lwp ()); 265 1.1 christos else 266 1.1.1.2 christos return string_printf("Process %d", 267 1.1.1.2 christos ptid.pid ()); 268 1.1 christos } 269 1.1 christos 270 1.1 christos int 271 1.1 christos kill_inferior (process_info *proc) 272 1.1 christos { 273 1.1 christos gdb_agent_about_to_close (proc->pid); 274 1.1 christos 275 1.1 christos return the_target->kill (proc); 276 1.1 christos } 277 1.1 christos 278 1.1 christos /* Define it. */ 279 1.1 christos 280 1.1 christos target_terminal_state target_terminal::m_terminal_state 281 1.1 christos = target_terminal_state::is_ours; 282 1.1 christos 283 1.1 christos /* See target/target.h. */ 284 1.1 christos 285 1.1 christos void 286 1.1 christos target_terminal::init () 287 1.1 christos { 288 1.1 christos /* Placeholder needed because of fork_inferior. Not necessary on 289 1.1 christos GDBserver. */ 290 1.1 christos } 291 1.1 christos 292 1.1 christos /* See target/target.h. */ 293 1.1 christos 294 1.1 christos void 295 1.1 christos target_terminal::inferior () 296 1.1 christos { 297 1.1 christos /* Placeholder needed because of fork_inferior. Not necessary on 298 1.1 christos GDBserver. */ 299 1.1 christos } 300 1.1 christos 301 1.1 christos /* See target/target.h. */ 302 1.1 christos 303 1.1 christos void 304 1.1 christos target_terminal::ours () 305 1.1 christos { 306 1.1 christos /* Placeholder needed because of fork_inferior. Not necessary on 307 1.1 christos GDBserver. */ 308 1.1 christos } 309 1.1 christos 310 1.1 christos /* See target/target.h. */ 311 1.1 christos 312 1.1 christos void 313 1.1 christos target_terminal::ours_for_output (void) 314 1.1 christos { 315 1.1 christos /* Placeholder. */ 316 1.1 christos } 317 1.1 christos 318 1.1 christos /* See target/target.h. */ 319 1.1 christos 320 1.1 christos void 321 1.1 christos target_terminal::info (const char *arg, int from_tty) 322 1.1 christos { 323 1.1 christos /* Placeholder. */ 324 1.1 christos } 325 1.1 christos 326 1.1 christos /* Default implementations of target ops. 327 1.1 christos See target.h for definitions. */ 328 1.1 christos 329 1.1 christos void 330 1.1 christos process_stratum_target::post_create_inferior () 331 1.1 christos { 332 1.1 christos /* Nop. */ 333 1.1 christos } 334 1.1 christos 335 1.1 christos void 336 1.1 christos process_stratum_target::look_up_symbols () 337 1.1 christos { 338 1.1 christos /* Nop. */ 339 1.1 christos } 340 1.1 christos 341 1.1 christos bool 342 1.1 christos process_stratum_target::supports_read_auxv () 343 1.1 christos { 344 1.1 christos return false; 345 1.1 christos } 346 1.1 christos 347 1.1 christos int 348 1.1.1.3 christos process_stratum_target::read_auxv (int pid, CORE_ADDR offset, 349 1.1.1.3 christos unsigned char *myaddr, unsigned int len) 350 1.1 christos { 351 1.1 christos gdb_assert_not_reached ("target op read_auxv not supported"); 352 1.1 christos } 353 1.1 christos 354 1.1 christos bool 355 1.1 christos process_stratum_target::supports_z_point_type (char z_type) 356 1.1 christos { 357 1.1 christos return false; 358 1.1 christos } 359 1.1 christos 360 1.1 christos int 361 1.1 christos process_stratum_target::insert_point (enum raw_bkpt_type type, 362 1.1 christos CORE_ADDR addr, 363 1.1 christos int size, raw_breakpoint *bp) 364 1.1 christos { 365 1.1 christos return 1; 366 1.1 christos } 367 1.1 christos 368 1.1 christos int 369 1.1 christos process_stratum_target::remove_point (enum raw_bkpt_type type, 370 1.1 christos CORE_ADDR addr, 371 1.1 christos int size, raw_breakpoint *bp) 372 1.1 christos { 373 1.1 christos return 1; 374 1.1 christos } 375 1.1 christos 376 1.1 christos bool 377 1.1 christos process_stratum_target::stopped_by_sw_breakpoint () 378 1.1 christos { 379 1.1 christos return false; 380 1.1 christos } 381 1.1 christos 382 1.1 christos bool 383 1.1 christos process_stratum_target::supports_stopped_by_sw_breakpoint () 384 1.1 christos { 385 1.1 christos return false; 386 1.1 christos } 387 1.1 christos 388 1.1 christos bool 389 1.1 christos process_stratum_target::stopped_by_hw_breakpoint () 390 1.1 christos { 391 1.1 christos return false; 392 1.1 christos } 393 1.1 christos 394 1.1 christos bool 395 1.1 christos process_stratum_target::supports_stopped_by_hw_breakpoint () 396 1.1 christos { 397 1.1 christos return false; 398 1.1 christos } 399 1.1 christos 400 1.1 christos bool 401 1.1 christos process_stratum_target::supports_hardware_single_step () 402 1.1 christos { 403 1.1 christos return false; 404 1.1 christos } 405 1.1 christos 406 1.1 christos bool 407 1.1 christos process_stratum_target::stopped_by_watchpoint () 408 1.1 christos { 409 1.1 christos return false; 410 1.1 christos } 411 1.1 christos 412 1.1 christos CORE_ADDR 413 1.1 christos process_stratum_target::stopped_data_address () 414 1.1 christos { 415 1.1 christos return 0; 416 1.1 christos } 417 1.1 christos 418 1.1 christos bool 419 1.1 christos process_stratum_target::supports_read_offsets () 420 1.1 christos { 421 1.1 christos return false; 422 1.1 christos } 423 1.1 christos 424 1.1.1.2 christos bool 425 1.1.1.2 christos process_stratum_target::supports_memory_tagging () 426 1.1.1.2 christos { 427 1.1.1.2 christos return false; 428 1.1.1.2 christos } 429 1.1.1.2 christos 430 1.1.1.2 christos bool 431 1.1.1.2 christos process_stratum_target::fetch_memtags (CORE_ADDR address, size_t len, 432 1.1.1.2 christos gdb::byte_vector &tags, int type) 433 1.1.1.2 christos { 434 1.1.1.2 christos gdb_assert_not_reached ("target op fetch_memtags not supported"); 435 1.1.1.2 christos } 436 1.1.1.2 christos 437 1.1.1.2 christos bool 438 1.1.1.2 christos process_stratum_target::store_memtags (CORE_ADDR address, size_t len, 439 1.1.1.2 christos const gdb::byte_vector &tags, int type) 440 1.1.1.2 christos { 441 1.1.1.2 christos gdb_assert_not_reached ("target op store_memtags not supported"); 442 1.1.1.2 christos } 443 1.1.1.2 christos 444 1.1 christos int 445 1.1 christos process_stratum_target::read_offsets (CORE_ADDR *text, CORE_ADDR *data) 446 1.1 christos { 447 1.1 christos gdb_assert_not_reached ("target op read_offsets not supported"); 448 1.1 christos } 449 1.1 christos 450 1.1 christos bool 451 1.1 christos process_stratum_target::supports_get_tls_address () 452 1.1 christos { 453 1.1 christos return false; 454 1.1 christos } 455 1.1 christos 456 1.1 christos int 457 1.1 christos process_stratum_target::get_tls_address (thread_info *thread, 458 1.1 christos CORE_ADDR offset, 459 1.1 christos CORE_ADDR load_module, 460 1.1 christos CORE_ADDR *address) 461 1.1 christos { 462 1.1 christos gdb_assert_not_reached ("target op get_tls_address not supported"); 463 1.1 christos } 464 1.1 christos 465 1.1 christos bool 466 1.1 christos process_stratum_target::supports_qxfer_osdata () 467 1.1 christos { 468 1.1 christos return false; 469 1.1 christos } 470 1.1 christos 471 1.1 christos int 472 1.1 christos process_stratum_target::qxfer_osdata (const char *annex, 473 1.1 christos unsigned char *readbuf, 474 1.1 christos unsigned const char *writebuf, 475 1.1 christos CORE_ADDR offset, int len) 476 1.1 christos { 477 1.1 christos gdb_assert_not_reached ("target op qxfer_osdata not supported"); 478 1.1 christos } 479 1.1 christos 480 1.1 christos bool 481 1.1 christos process_stratum_target::supports_qxfer_siginfo () 482 1.1 christos { 483 1.1 christos return false; 484 1.1 christos } 485 1.1 christos 486 1.1 christos int 487 1.1 christos process_stratum_target::qxfer_siginfo (const char *annex, 488 1.1 christos unsigned char *readbuf, 489 1.1 christos unsigned const char *writebuf, 490 1.1 christos CORE_ADDR offset, int len) 491 1.1 christos { 492 1.1 christos gdb_assert_not_reached ("target op qxfer_siginfo not supported"); 493 1.1 christos } 494 1.1 christos 495 1.1 christos bool 496 1.1 christos process_stratum_target::supports_non_stop () 497 1.1 christos { 498 1.1 christos return false; 499 1.1 christos } 500 1.1 christos 501 1.1 christos bool 502 1.1 christos process_stratum_target::async (bool enable) 503 1.1 christos { 504 1.1 christos return false; 505 1.1 christos } 506 1.1 christos 507 1.1 christos int 508 1.1 christos process_stratum_target::start_non_stop (bool enable) 509 1.1 christos { 510 1.1 christos if (enable) 511 1.1 christos return -1; 512 1.1 christos else 513 1.1 christos return 0; 514 1.1 christos } 515 1.1 christos 516 1.1 christos bool 517 1.1 christos process_stratum_target::supports_multi_process () 518 1.1 christos { 519 1.1 christos return false; 520 1.1 christos } 521 1.1 christos 522 1.1 christos bool 523 1.1 christos process_stratum_target::supports_fork_events () 524 1.1 christos { 525 1.1 christos return false; 526 1.1 christos } 527 1.1 christos 528 1.1 christos bool 529 1.1 christos process_stratum_target::supports_vfork_events () 530 1.1 christos { 531 1.1 christos return false; 532 1.1 christos } 533 1.1 christos 534 1.1.1.3 christos gdb_thread_options 535 1.1.1.3 christos process_stratum_target::supported_thread_options () 536 1.1.1.3 christos { 537 1.1.1.3 christos return 0; 538 1.1.1.3 christos } 539 1.1.1.3 christos 540 1.1 christos bool 541 1.1 christos process_stratum_target::supports_exec_events () 542 1.1 christos { 543 1.1 christos return false; 544 1.1 christos } 545 1.1 christos 546 1.1 christos void 547 1.1 christos process_stratum_target::handle_new_gdb_connection () 548 1.1 christos { 549 1.1 christos /* Nop. */ 550 1.1 christos } 551 1.1 christos 552 1.1 christos int 553 1.1 christos process_stratum_target::handle_monitor_command (char *mon) 554 1.1 christos { 555 1.1 christos return 0; 556 1.1 christos } 557 1.1 christos 558 1.1 christos int 559 1.1 christos process_stratum_target::core_of_thread (ptid_t ptid) 560 1.1 christos { 561 1.1 christos return -1; 562 1.1 christos } 563 1.1 christos 564 1.1 christos bool 565 1.1 christos process_stratum_target::supports_read_loadmap () 566 1.1 christos { 567 1.1 christos return false; 568 1.1 christos } 569 1.1 christos 570 1.1 christos int 571 1.1 christos process_stratum_target::read_loadmap (const char *annex, 572 1.1 christos CORE_ADDR offset, 573 1.1 christos unsigned char *myaddr, 574 1.1 christos unsigned int len) 575 1.1 christos { 576 1.1 christos gdb_assert_not_reached ("target op read_loadmap not supported"); 577 1.1 christos } 578 1.1 christos 579 1.1 christos void 580 1.1 christos process_stratum_target::process_qsupported 581 1.1 christos (gdb::array_view<const char * const> features) 582 1.1 christos { 583 1.1 christos /* Nop. */ 584 1.1 christos } 585 1.1 christos 586 1.1 christos bool 587 1.1 christos process_stratum_target::supports_tracepoints () 588 1.1 christos { 589 1.1 christos return false; 590 1.1 christos } 591 1.1 christos 592 1.1 christos CORE_ADDR 593 1.1 christos process_stratum_target::read_pc (regcache *regcache) 594 1.1 christos { 595 1.1 christos gdb_assert_not_reached ("process_target::read_pc: Unable to find PC"); 596 1.1 christos } 597 1.1 christos 598 1.1 christos void 599 1.1 christos process_stratum_target::write_pc (regcache *regcache, CORE_ADDR pc) 600 1.1 christos { 601 1.1 christos gdb_assert_not_reached ("process_target::write_pc: Unable to update PC"); 602 1.1 christos } 603 1.1 christos 604 1.1 christos bool 605 1.1 christos process_stratum_target::supports_thread_stopped () 606 1.1 christos { 607 1.1 christos return false; 608 1.1 christos } 609 1.1 christos 610 1.1 christos bool 611 1.1 christos process_stratum_target::thread_stopped (thread_info *thread) 612 1.1 christos { 613 1.1 christos gdb_assert_not_reached ("target op thread_stopped not supported"); 614 1.1 christos } 615 1.1 christos 616 1.1 christos bool 617 1.1.1.3 christos process_stratum_target::any_resumed () 618 1.1.1.3 christos { 619 1.1.1.3 christos return true; 620 1.1.1.3 christos } 621 1.1.1.3 christos 622 1.1.1.3 christos bool 623 1.1 christos process_stratum_target::supports_get_tib_address () 624 1.1 christos { 625 1.1 christos return false; 626 1.1 christos } 627 1.1 christos 628 1.1 christos int 629 1.1 christos process_stratum_target::get_tib_address (ptid_t ptid, CORE_ADDR *address) 630 1.1 christos { 631 1.1 christos gdb_assert_not_reached ("target op get_tib_address not supported"); 632 1.1 christos } 633 1.1 christos 634 1.1 christos void 635 1.1 christos process_stratum_target::pause_all (bool freeze) 636 1.1 christos { 637 1.1 christos /* Nop. */ 638 1.1 christos } 639 1.1 christos 640 1.1 christos void 641 1.1 christos process_stratum_target::unpause_all (bool unfreeze) 642 1.1 christos { 643 1.1 christos /* Nop. */ 644 1.1 christos } 645 1.1 christos 646 1.1 christos void 647 1.1 christos process_stratum_target::stabilize_threads () 648 1.1 christos { 649 1.1 christos /* Nop. */ 650 1.1 christos } 651 1.1 christos 652 1.1 christos bool 653 1.1 christos process_stratum_target::supports_fast_tracepoints () 654 1.1 christos { 655 1.1 christos return false; 656 1.1 christos } 657 1.1 christos 658 1.1 christos int 659 1.1 christos process_stratum_target::install_fast_tracepoint_jump_pad 660 1.1 christos (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector, 661 1.1 christos CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry, 662 1.1 christos CORE_ADDR *trampoline, ULONGEST *trampoline_size, 663 1.1 christos unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size, 664 1.1 christos CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end, 665 1.1 christos char *err) 666 1.1 christos { 667 1.1 christos gdb_assert_not_reached ("target op install_fast_tracepoint_jump_pad " 668 1.1 christos "not supported"); 669 1.1 christos } 670 1.1 christos 671 1.1 christos int 672 1.1 christos process_stratum_target::get_min_fast_tracepoint_insn_len () 673 1.1 christos { 674 1.1 christos return 0; 675 1.1 christos } 676 1.1 christos 677 1.1 christos struct emit_ops * 678 1.1 christos process_stratum_target::emit_ops () 679 1.1 christos { 680 1.1 christos return nullptr; 681 1.1 christos } 682 1.1 christos 683 1.1 christos bool 684 1.1 christos process_stratum_target::supports_disable_randomization () 685 1.1 christos { 686 1.1 christos return false; 687 1.1 christos } 688 1.1 christos 689 1.1 christos bool 690 1.1 christos process_stratum_target::supports_qxfer_libraries_svr4 () 691 1.1 christos { 692 1.1 christos return false; 693 1.1 christos } 694 1.1 christos 695 1.1 christos int 696 1.1 christos process_stratum_target::qxfer_libraries_svr4 (const char *annex, 697 1.1 christos unsigned char *readbuf, 698 1.1 christos unsigned const char *writebuf, 699 1.1 christos CORE_ADDR offset, int len) 700 1.1 christos { 701 1.1 christos gdb_assert_not_reached ("target op qxfer_libraries_svr4 not supported"); 702 1.1 christos } 703 1.1 christos 704 1.1 christos bool 705 1.1 christos process_stratum_target::supports_agent () 706 1.1 christos { 707 1.1 christos return false; 708 1.1 christos } 709 1.1 christos 710 1.1.1.2 christos bool 711 1.1.1.2 christos process_stratum_target::supports_btrace () 712 1.1.1.2 christos { 713 1.1.1.2 christos return false; 714 1.1.1.2 christos } 715 1.1.1.2 christos 716 1.1 christos btrace_target_info * 717 1.1.1.2 christos process_stratum_target::enable_btrace (thread_info *tp, 718 1.1.1.2 christos const btrace_config *conf) 719 1.1 christos { 720 1.1 christos error (_("Target does not support branch tracing.")); 721 1.1 christos } 722 1.1 christos 723 1.1 christos int 724 1.1 christos process_stratum_target::disable_btrace (btrace_target_info *tinfo) 725 1.1 christos { 726 1.1 christos error (_("Target does not support branch tracing.")); 727 1.1 christos } 728 1.1 christos 729 1.1 christos int 730 1.1 christos process_stratum_target::read_btrace (btrace_target_info *tinfo, 731 1.1.1.3 christos std::string *buffer, 732 1.1.1.3 christos enum btrace_read_type type) 733 1.1 christos { 734 1.1 christos error (_("Target does not support branch tracing.")); 735 1.1 christos } 736 1.1 christos 737 1.1 christos int 738 1.1 christos process_stratum_target::read_btrace_conf (const btrace_target_info *tinfo, 739 1.1.1.3 christos std::string *buffer) 740 1.1 christos { 741 1.1 christos error (_("Target does not support branch tracing.")); 742 1.1 christos } 743 1.1 christos 744 1.1 christos bool 745 1.1 christos process_stratum_target::supports_range_stepping () 746 1.1 christos { 747 1.1 christos return false; 748 1.1 christos } 749 1.1 christos 750 1.1 christos bool 751 1.1 christos process_stratum_target::supports_pid_to_exec_file () 752 1.1 christos { 753 1.1 christos return false; 754 1.1 christos } 755 1.1 christos 756 1.1.1.2 christos const char * 757 1.1 christos process_stratum_target::pid_to_exec_file (int pid) 758 1.1 christos { 759 1.1 christos gdb_assert_not_reached ("target op pid_to_exec_file not supported"); 760 1.1 christos } 761 1.1 christos 762 1.1 christos bool 763 1.1 christos process_stratum_target::supports_multifs () 764 1.1 christos { 765 1.1 christos return false; 766 1.1 christos } 767 1.1 christos 768 1.1 christos int 769 1.1 christos process_stratum_target::multifs_open (int pid, const char *filename, 770 1.1 christos int flags, mode_t mode) 771 1.1 christos { 772 1.1 christos return open (filename, flags, mode); 773 1.1 christos } 774 1.1 christos 775 1.1 christos int 776 1.1 christos process_stratum_target::multifs_unlink (int pid, const char *filename) 777 1.1 christos { 778 1.1 christos return unlink (filename); 779 1.1 christos } 780 1.1 christos 781 1.1 christos ssize_t 782 1.1 christos process_stratum_target::multifs_readlink (int pid, const char *filename, 783 1.1 christos char *buf, size_t bufsiz) 784 1.1 christos { 785 1.1 christos return readlink (filename, buf, bufsiz); 786 1.1 christos } 787 1.1 christos 788 1.1 christos int 789 1.1 christos process_stratum_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr) 790 1.1 christos { 791 1.1 christos /* The default behavior is to use the size of a breakpoint as the 792 1.1 christos kind. */ 793 1.1 christos int size = 0; 794 1.1 christos sw_breakpoint_from_kind (0, &size); 795 1.1 christos return size; 796 1.1 christos } 797 1.1 christos 798 1.1 christos int 799 1.1 christos process_stratum_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr) 800 1.1 christos { 801 1.1 christos return breakpoint_kind_from_pc (pcptr); 802 1.1 christos } 803 1.1 christos 804 1.1 christos const char * 805 1.1 christos process_stratum_target::thread_name (ptid_t thread) 806 1.1 christos { 807 1.1 christos return nullptr; 808 1.1 christos } 809 1.1 christos 810 1.1 christos bool 811 1.1 christos process_stratum_target::thread_handle (ptid_t ptid, gdb_byte **handle, 812 1.1 christos int *handle_len) 813 1.1 christos { 814 1.1 christos return false; 815 1.1 christos } 816 1.1 christos 817 1.1.1.2 christos thread_info * 818 1.1.1.2 christos process_stratum_target::thread_pending_parent (thread_info *thread) 819 1.1.1.2 christos { 820 1.1.1.2 christos return nullptr; 821 1.1.1.2 christos } 822 1.1.1.2 christos 823 1.1.1.2 christos thread_info * 824 1.1.1.3 christos process_stratum_target::thread_pending_child (thread_info *thread, 825 1.1.1.3 christos target_waitkind *kind) 826 1.1.1.2 christos { 827 1.1.1.2 christos return nullptr; 828 1.1.1.2 christos } 829 1.1.1.2 christos 830 1.1 christos bool 831 1.1 christos process_stratum_target::supports_software_single_step () 832 1.1 christos { 833 1.1 christos return false; 834 1.1 christos } 835 1.1 christos 836 1.1 christos bool 837 1.1 christos process_stratum_target::supports_catch_syscall () 838 1.1 christos { 839 1.1 christos return false; 840 1.1 christos } 841 1.1 christos 842 1.1 christos int 843 1.1 christos process_stratum_target::get_ipa_tdesc_idx () 844 1.1 christos { 845 1.1 christos return 0; 846 1.1 christos } 847