aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/freebsd32/freebsd32_proto.h
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-06-09 16:43:23 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-06-09 16:43:23 +0000
commit58b552dcec00a8655cf93dd5b41056f860c35f96 (patch)
treefaa95c66e9d9171e70be05abd1bac361a6b0e216 /sys/compat/freebsd32/freebsd32_proto.h
parentb6f7bae40204aaa74e1f68d9f52d68ef4edddd93 (diff)
downloadsrc-58b552dcec00a8655cf93dd5b41056f860c35f96.tar.gz
src-58b552dcec00a8655cf93dd5b41056f860c35f96.zip
Refactor ptrace() ABI compatibility.
Add a freebsd32_ptrace() and move as many freebsd32 shims as possible to freebsd32_ptrace(). Aside from register sets, freebsd32 passes pointers to native structures to kern_ptrace() and converts to/from native/32-bit structure formats in freebsd32_ptrace() outside of kern_ptrace(). Reviewed by: kib Obtained from: CheriBSD Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D25195
Notes
Notes: svn path=/head/; revision=361975
Diffstat (limited to 'sys/compat/freebsd32/freebsd32_proto.h')
-rw-r--r--sys/compat/freebsd32/freebsd32_proto.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/compat/freebsd32/freebsd32_proto.h b/sys/compat/freebsd32/freebsd32_proto.h
index d58b899079cf..3df5285347f2 100644
--- a/sys/compat/freebsd32/freebsd32_proto.h
+++ b/sys/compat/freebsd32/freebsd32_proto.h
@@ -43,6 +43,12 @@ struct freebsd32_wait4_args {
char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)];
char rusage_l_[PADL_(struct rusage32 *)]; struct rusage32 * rusage; char rusage_r_[PADR_(struct rusage32 *)];
};
+struct freebsd32_ptrace_args {
+ char req_l_[PADL_(int)]; int req; char req_r_[PADR_(int)];
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)];
+ char data_l_[PADL_(int)]; int data; char data_r_[PADR_(int)];
+};
struct freebsd32_recvmsg_args {
char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
char msg_l_[PADL_(struct msghdr32 *)]; struct msghdr32 * msg; char msg_r_[PADR_(struct msghdr32 *)];
@@ -740,6 +746,7 @@ struct freebsd32___sysctlbyname_args {
#define PAD64_REQUIRED
#endif
int freebsd32_wait4(struct thread *, struct freebsd32_wait4_args *);
+int freebsd32_ptrace(struct thread *, struct freebsd32_ptrace_args *);
int freebsd32_recvmsg(struct thread *, struct freebsd32_recvmsg_args *);
int freebsd32_sendmsg(struct thread *, struct freebsd32_sendmsg_args *);
int freebsd32_recvfrom(struct thread *, struct freebsd32_recvfrom_args *);
@@ -1293,6 +1300,7 @@ int freebsd11_freebsd32_fstatat(struct thread *, struct freebsd11_freebsd32_fsta
#define FREEBSD32_SYS_AUE_freebsd32_wait4 AUE_WAIT4
#define FREEBSD32_SYS_AUE_freebsd4_freebsd32_getfsstat AUE_GETFSSTAT
#define FREEBSD32_SYS_AUE_ofreebsd32_lseek AUE_LSEEK
+#define FREEBSD32_SYS_AUE_freebsd32_ptrace AUE_PTRACE
#define FREEBSD32_SYS_AUE_freebsd32_recvmsg AUE_RECVMSG
#define FREEBSD32_SYS_AUE_freebsd32_sendmsg AUE_SENDMSG
#define FREEBSD32_SYS_AUE_freebsd32_recvfrom AUE_RECVFROM