X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Fgdb%2Fcallback.h;h=6acc8ac7bb933c6d0db4cdcc03a7bc2093474cd3;hb=6d350754a32007465f9adbc11b87339e4493b358;hp=eb991f74eca36e80f67d0b75a54a59c2c980cbb8;hpb=eb639c500494ee8c4ca8978c50451dca10112744;p=deliverable%2Fbinutils-gdb.git diff --git a/include/gdb/callback.h b/include/gdb/callback.h index eb991f74ec..6acc8ac7bb 100644 --- a/include/gdb/callback.h +++ b/include/gdb/callback.h @@ -1,5 +1,5 @@ /* Remote target system call callback support. - Copyright 1997, 2007 Free Software Foundation, Inc. + Copyright (C) 1997-2020 Free Software Foundation, Inc. Contributed by Cygnus Solutions. This file is part of GDB. @@ -59,6 +59,7 @@ name of the symbol. */ typedef struct { + const char *name; int host_val; int target_val; } CB_TARGET_DEFS_MAP; @@ -72,59 +73,63 @@ typedef struct host_callback_struct host_callback; struct host_callback_struct { - int (*close) PARAMS ((host_callback *,int)); - int (*get_errno) PARAMS ((host_callback *)); - int (*isatty) PARAMS ((host_callback *, int)); - int (*lseek) PARAMS ((host_callback *, int, long , int)); - int (*open) PARAMS ((host_callback *, const char*, int mode)); - int (*read) PARAMS ((host_callback *,int, char *, int)); - int (*read_stdin) PARAMS (( host_callback *, char *, int)); - int (*rename) PARAMS ((host_callback *, const char *, const char *)); - int (*system) PARAMS ((host_callback *, const char *)); - long (*time) PARAMS ((host_callback *, long *)); - int (*unlink) PARAMS ((host_callback *, const char *)); - int (*write) PARAMS ((host_callback *,int, const char *, int)); - int (*write_stdout) PARAMS ((host_callback *, const char *, int)); - void (*flush_stdout) PARAMS ((host_callback *)); - int (*write_stderr) PARAMS ((host_callback *, const char *, int)); - void (*flush_stderr) PARAMS ((host_callback *)); - int (*stat) PARAMS ((host_callback *, const char *, struct stat *)); - int (*fstat) PARAMS ((host_callback *, int, struct stat *)); - int (*lstat) PARAMS ((host_callback *, const char *, struct stat *)); - int (*ftruncate) PARAMS ((host_callback *, int, long)); - int (*truncate) PARAMS ((host_callback *, const char *, long)); - int (*pipe) PARAMS ((host_callback *, int *)); + int (*close) (host_callback *,int); + int (*get_errno) (host_callback *); + int (*isatty) (host_callback *, int); + int (*lseek) (host_callback *, int, long , int); + int (*open) (host_callback *, const char*, int mode); + int (*read) (host_callback *,int, char *, int); + int (*read_stdin) ( host_callback *, char *, int); + int (*rename) (host_callback *, const char *, const char *); + int (*system) (host_callback *, const char *); + long (*time) (host_callback *, long *); + int (*unlink) (host_callback *, const char *); + int (*write) (host_callback *,int, const char *, int); + int (*write_stdout) (host_callback *, const char *, int); + void (*flush_stdout) (host_callback *); + int (*write_stderr) (host_callback *, const char *, int); + void (*flush_stderr) (host_callback *); + int (*to_stat) (host_callback *, const char *, struct stat *); + int (*to_fstat) (host_callback *, int, struct stat *); + int (*to_lstat) (host_callback *, const char *, struct stat *); + int (*ftruncate) (host_callback *, int, long); + int (*truncate) (host_callback *, const char *, long); + int (*pipe) (host_callback *, int *); /* Called by the framework when a read call has emptied a pipe buffer. */ - void (*pipe_empty) PARAMS ((host_callback *, int read_fd, int write_fd)); + void (*pipe_empty) (host_callback *, int read_fd, int write_fd); /* Called by the framework when a write call makes a pipe buffer non-empty. */ - void (*pipe_nonempty) PARAMS ((host_callback *, int read_fd, int write_fd)); + void (*pipe_nonempty) (host_callback *, int read_fd, int write_fd); /* When present, call to the client to give it the oportunity to poll any io devices for a request to quit (indicated by a nonzero return value). */ - int (*poll_quit) PARAMS ((host_callback *)); + int (*poll_quit) (host_callback *); /* Used when the target has gone away, so we can close open handles and free memory etc etc. */ - int (*shutdown) PARAMS ((host_callback *)); - int (*init) PARAMS ((host_callback *)); + int (*shutdown) (host_callback *); + int (*init) (host_callback *); /* depreciated, use vprintf_filtered - Talk to the user on a console. */ - void (*printf_filtered) PARAMS ((host_callback *, const char *, ...)); + void (*printf_filtered) (host_callback *, const char *, ...); /* Talk to the user on a console. */ - void (*vprintf_filtered) PARAMS ((host_callback *, const char *, va_list)); + void (*vprintf_filtered) (host_callback *, const char *, va_list); /* Same as vprintf_filtered but to stderr. */ - void (*evprintf_filtered) PARAMS ((host_callback *, const char *, va_list)); + void (*evprintf_filtered) (host_callback *, const char *, va_list); /* Print an error message and "exit". In the case of gdb "exiting" means doing a longjmp back to the main command loop. */ - void (*error) PARAMS ((host_callback *, const char *, ...)); + void (*error) (host_callback *, const char *, ...) +#ifdef __GNUC__ + __attribute__ ((__noreturn__)) +#endif + ; int last_errno; /* host format */ @@ -227,6 +232,11 @@ extern host_callback default_callback; #define CB_SYS_truncate 21 #define CB_SYS_ftruncate 22 #define CB_SYS_pipe 23 + +/* New ARGV support. */ +#define CB_SYS_argc 24 +#define CB_SYS_argnlen 25 +#define CB_SYS_argn 26 /* Struct use to pass and return information necessary to perform a system call. */ @@ -256,12 +266,12 @@ typedef struct cb_syscall { argument here. We mimic sim_{read,write} for now. Be careful to test any changes with -Wall -Werror, mixed signed comparisons will get you. */ - int (*read_mem) PARAMS ((host_callback * /*cb*/, struct cb_syscall * /*sc*/, - unsigned long /*taddr*/, char * /*buf*/, - int /*bytes*/)); - int (*write_mem) PARAMS ((host_callback * /*cb*/, struct cb_syscall * /*sc*/, - unsigned long /*taddr*/, const char * /*buf*/, - int /*bytes*/)); + int (*read_mem) (host_callback * /*cb*/, struct cb_syscall * /*sc*/, + unsigned long /*taddr*/, char * /*buf*/, + int /*bytes*/); + int (*write_mem) (host_callback * /*cb*/, struct cb_syscall * /*sc*/, + unsigned long /*taddr*/, const char * /*buf*/, + int /*bytes*/); /* For sanity checking, should be last entry. */ int magic; @@ -290,37 +300,48 @@ typedef enum { } CB_RC; /* Read in target values for system call numbers, errno values, signals. */ -CB_RC cb_read_target_syscall_maps PARAMS ((host_callback *, const char *)); +CB_RC cb_read_target_syscall_maps (host_callback *, const char *); /* Translate target to host syscall function numbers. */ -int cb_target_to_host_syscall PARAMS ((host_callback *, int)); +int cb_target_to_host_syscall (host_callback *, int); /* Translate host to target errno value. */ -int cb_host_to_target_errno PARAMS ((host_callback *, int)); +int cb_host_to_target_errno (host_callback *, int); /* Translate target to host open flags. */ -int cb_target_to_host_open PARAMS ((host_callback *, int)); +int cb_target_to_host_open (host_callback *, int); /* Translate target signal number to host. */ -int cb_target_to_host_signal PARAMS ((host_callback *, int)); +int cb_target_to_host_signal (host_callback *, int); /* Translate host signal number to target. */ -int cb_host_to_target_signal PARAMS ((host_callback *, int)); +int cb_host_to_gdb_signal (host_callback *, int); + +/* Translate symbols into human readable strings. */ +const char *cb_host_str_syscall (host_callback *, int); +const char *cb_host_str_errno (host_callback *, int); +const char *cb_host_str_signal (host_callback *, int); +const char *cb_target_str_syscall (host_callback *, int); +const char *cb_target_str_errno (host_callback *, int); +const char *cb_target_str_signal (host_callback *, int); /* Translate host stat struct to target. If stat struct ptr is NULL, just compute target stat struct size. Result is size of target stat struct or 0 if error. */ -int cb_host_to_target_stat PARAMS ((host_callback *, const struct stat *, PTR)); +int cb_host_to_target_stat (host_callback *, const struct stat *, PTR); /* Translate a value to target endian. */ -void cb_store_target_endian PARAMS ((host_callback *, char *, int, long)); +void cb_store_target_endian (host_callback *, char *, int, long); /* Tests for special fds. */ -int cb_is_stdin PARAMS ((host_callback *, int)); -int cb_is_stdout PARAMS ((host_callback *, int)); -int cb_is_stderr PARAMS ((host_callback *, int)); +int cb_is_stdin (host_callback *, int); +int cb_is_stdout (host_callback *, int); +int cb_is_stderr (host_callback *, int); + +/* Read a string out of the target. */ +int cb_get_string (host_callback *, CB_SYSCALL *, char *, int, unsigned long); /* Perform a system call. */ -CB_RC cb_syscall PARAMS ((host_callback *, CB_SYSCALL *)); +CB_RC cb_syscall (host_callback *, CB_SYSCALL *); #endif