extern const char *
target_xfer_status_to_string (enum target_xfer_status status);
-typedef struct static_tracepoint_marker *static_tracepoint_marker_p;
-DEF_VEC_P(static_tracepoint_marker_p);
-
typedef enum target_xfer_status
target_xfer_partial_ftype (struct target_ops *ops,
enum target_object object,
void (*progress) (ULONGEST, void *),
void *baton);
-/* Wrapper to perform a full read of unknown size. OBJECT/ANNEX will
- be read using OPS. The return value will be -1 if the transfer
- fails or is not supported; 0 if the object is empty; or the length
- of the object otherwise. If a positive value is returned, a
- sufficiently large buffer will be allocated using xmalloc and
- returned in *BUF_P containing the contents of the object.
+/* Wrapper to perform a full read of unknown size. OBJECT/ANNEX will be read
+ using OPS. The return value will be uninstantiated if the transfer fails or
+ is not supported.
This method should be used for objects sufficiently small to store
in a single xmalloc'd buffer, when no fixed bound on the object's
size is known in advance. Don't try to read TARGET_OBJECT_MEMORY
through this function. */
-extern LONGEST target_read_alloc (struct target_ops *ops,
- enum target_object object,
- const char *annex, gdb_byte **buf_p);
+extern gdb::optional<gdb::byte_vector> target_read_alloc
+ (struct target_ops *ops, enum target_object object, const char *annex);
-/* Read OBJECT/ANNEX using OPS. The result is NUL-terminated and
- returned as a string. If an error occurs or the transfer is
- unsupported, NULL is returned. Empty objects are returned as
- allocated but empty strings. A warning is issued if the result
- contains any embedded NUL bytes. */
+/* Read OBJECT/ANNEX using OPS. The result is a NUL-terminated character vector
+ (therefore usable as a NUL-terminated string). If an error occurs or the
+ transfer is unsupported, the return value will be uninstantiated. Empty
+ objects are returned as allocated but empty strings. Therefore, on success,
+ the returned vector is guaranteed to have at least one element. A warning is
+ issued if the result contains any embedded NUL bytes. */
-extern gdb::unique_xmalloc_ptr<char> target_read_stralloc
+extern gdb::optional<gdb::char_vector> target_read_stralloc
(struct target_ops *ops, enum target_object object, const char *annex);
/* See target_ops->to_xfer_partial. */
int, bool, int,
gdb::array_view<const int>)
TARGET_DEFAULT_RETURN (1);
- int (*to_has_exited) (struct target_ops *, int, int, int *)
- TARGET_DEFAULT_RETURN (0);
void (*to_mourn_inferior) (struct target_ops *)
TARGET_DEFAULT_FUNC (default_mourn_inferior);
/* Note that to_can_run is special and can be invoked on an
/* Read value of symbolic link FILENAME on the target, in the
filesystem as seen by INF. If INF is NULL, use the filesystem
seen by the debugger (GDB or, for remote targets, the remote
- stub). Return a null-terminated string allocated via xmalloc,
- or NULL if an error occurs (and set *TARGET_ERRNO). */
- char *(*to_fileio_readlink) (struct target_ops *,
- struct inferior *inf,
- const char *filename,
- int *target_errno);
+ stub). Return a string, or an empty optional if an error
+ occurs (and set *TARGET_ERRNO). */
+ gdb::optional<std::string> (*to_fileio_readlink) (struct target_ops *,
+ struct inferior *inf,
+ const char *filename,
+ int *target_errno);
/* Implement the "info proc" command. */
/* Send full details of a trace state variable to the target. */
void (*to_download_trace_state_variable) (struct target_ops *,
- struct trace_state_variable *tsv)
+ const trace_state_variable &tsv)
TARGET_DEFAULT_NORETURN (tcomplain ());
/* Enable a tracepoint on the target. */
TARGET_DEFAULT_IGNORE ();
/* Look for a static tracepoint marker at ADDR, and fill in MARKER
- with its details. Return 1 on success, 0 on failure. */
- int (*to_static_tracepoint_marker_at) (struct target_ops *, CORE_ADDR,
- struct static_tracepoint_marker *marker)
- TARGET_DEFAULT_RETURN (0);
+ with its details. Return true on success, false on failure. */
+ bool (*to_static_tracepoint_marker_at) (struct target_ops *, CORE_ADDR,
+ static_tracepoint_marker *marker)
+ TARGET_DEFAULT_RETURN (false);
/* Return a vector of all tracepoints markers string id ID, or all
markers if ID is NULL. */
- VEC(static_tracepoint_marker_p) *(*to_static_tracepoint_markers_by_strid) (struct target_ops *, const char *id)
+ std::vector<static_tracepoint_marker>
+ (*to_static_tracepoint_markers_by_strid) (struct target_ops *,
+ const char *id)
TARGET_DEFAULT_NORETURN (tcomplain ());
/* Return a traceframe info object describing the current
#define target_can_run_breakpoint_commands() \
(*current_target.to_can_run_breakpoint_commands) (¤t_target)
-extern int target_read_string (CORE_ADDR, char **, int, int *);
+extern int target_read_string (CORE_ADDR, gdb::unique_xmalloc_ptr<char> *,
+ int, int *);
/* For target_read_memory see target/target.h. */
pid, needed, any_count, \
syscall_counts)
-/* Returns TRUE if PID has exited. And, also sets EXIT_STATUS to the
- exit code of PID, if any. */
-
-#define target_has_exited(pid,wait_status,exit_status) \
- (*current_target.to_has_exited) (¤t_target, \
- pid,wait_status,exit_status)
-
/* The debugger has completed a blocking wait() call. There is now
some process event that must be processed. This function should
be defined by those targets that require the debugger to perform
by the debugger (GDB or, for remote targets, the remote stub).
Return a null-terminated string allocated via xmalloc, or NULL if
an error occurs (and set *TARGET_ERRNO). */
-extern char *target_fileio_readlink (struct inferior *inf,
- const char *filename,
- int *target_errno);
+extern gdb::optional<std::string> target_fileio_readlink
+ (struct inferior *inf, const char *filename, int *target_errno);
/* Read target file FILENAME, in the filesystem as seen by INF. If
INF is NULL, use the filesystem seen by the debugger (GDB or, for
struct target_ops *find_target_at (enum strata stratum);
-/* Read OS data object of type TYPE from the target, and return it in
- XML format. The result is NUL-terminated and returned as a string.
- If an error occurs or the transfer is unsupported, NULL is
- returned. Empty objects are returned as allocated but empty
- strings. */
+/* Read OS data object of type TYPE from the target, and return it in XML
+ format. The return value follows the same rules as target_read_stralloc. */
-extern gdb::unique_xmalloc_ptr<char> target_get_osdata (const char *type);
+extern gdb::optional<gdb::char_vector> target_get_osdata (const char *type);
-\f
/* Stuff that should be shared among the various remote targets. */
/* Debugging level. 0 is off, and non-zero values mean to print some debug