#include "tracepoint.h"
#include "gdbsupport/byte-vector.h"
#include "hostio.h"
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
process_stratum_target *the_target;
return the_target->pt->kill (proc);
}
-/* Default implementation for breakpoint_kind_for_pc.
-
- The default behavior for targets that don't implement breakpoint_kind_for_pc
- is to use the size of a breakpoint as the kind. */
-
-int
-default_breakpoint_kind_from_pc (CORE_ADDR *pcptr)
-{
- int size = 0;
-
- gdb_assert (the_target->sw_breakpoint_from_kind != NULL);
-
- (*the_target->sw_breakpoint_from_kind) (0, &size);
- return size;
-}
-
/* Define it. */
target_terminal_state target_terminal::m_terminal_state
{
/* Nop. */
}
+
+bool
+process_target::supports_fast_tracepoints ()
+{
+ return false;
+}
+
+int
+process_target::install_fast_tracepoint_jump_pad
+ (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
+ CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
+ CORE_ADDR *trampoline, ULONGEST *trampoline_size,
+ unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
+ CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
+ char *err)
+{
+ gdb_assert_not_reached ("target op install_fast_tracepoint_jump_pad "
+ "not supported");
+}
+
+int
+process_target::get_min_fast_tracepoint_insn_len ()
+{
+ return 0;
+}
+
+struct emit_ops *
+process_target::emit_ops ()
+{
+ return nullptr;
+}
+
+bool
+process_target::supports_disable_randomization ()
+{
+ return false;
+}
+
+bool
+process_target::supports_qxfer_libraries_svr4 ()
+{
+ return false;
+}
+
+int
+process_target::qxfer_libraries_svr4 (const char *annex,
+ unsigned char *readbuf,
+ unsigned const char *writebuf,
+ CORE_ADDR offset, int len)
+{
+ gdb_assert_not_reached ("target op qxfer_libraries_svr4 not supported");
+}
+
+bool
+process_target::supports_agent ()
+{
+ return false;
+}
+
+btrace_target_info *
+process_target::enable_btrace (ptid_t ptid, const btrace_config *conf)
+{
+ error (_("Target does not support branch tracing."));
+}
+
+int
+process_target::disable_btrace (btrace_target_info *tinfo)
+{
+ error (_("Target does not support branch tracing."));
+}
+
+int
+process_target::read_btrace (btrace_target_info *tinfo,
+ buffer *buffer,
+ enum btrace_read_type type)
+{
+ error (_("Target does not support branch tracing."));
+}
+
+int
+process_target::read_btrace_conf (const btrace_target_info *tinfo,
+ buffer *buffer)
+{
+ error (_("Target does not support branch tracing."));
+}
+
+bool
+process_target::supports_range_stepping ()
+{
+ return false;
+}
+
+bool
+process_target::supports_pid_to_exec_file ()
+{
+ return false;
+}
+
+char *
+process_target::pid_to_exec_file (int pid)
+{
+ gdb_assert_not_reached ("target op pid_to_exec_file not supported");
+}
+
+bool
+process_target::supports_multifs ()
+{
+ return false;
+}
+
+int
+process_target::multifs_open (int pid, const char *filename,
+ int flags, mode_t mode)
+{
+ return open (filename, flags, mode);
+}
+
+int
+process_target::multifs_unlink (int pid, const char *filename)
+{
+ return unlink (filename);
+}
+
+ssize_t
+process_target::multifs_readlink (int pid, const char *filename,
+ char *buf, size_t bufsiz)
+{
+ return readlink (filename, buf, bufsiz);
+}
+
+int
+process_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
+{
+ /* The default behavior is to use the size of a breakpoint as the
+ kind. */
+ int size = 0;
+ sw_breakpoint_from_kind (0, &size);
+ return size;
+}
+
+int
+process_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
+{
+ return breakpoint_kind_from_pc (pcptr);
+}
+
+const char *
+process_target::thread_name (ptid_t thread)
+{
+ return nullptr;
+}
+
+bool
+process_target::thread_handle (ptid_t ptid, gdb_byte **handle,
+ int *handle_len)
+{
+ return false;
+}
+
+bool
+process_target::supports_software_single_step ()
+{
+ return false;
+}