svn commit: r361020 - in stable: 11/lib/libsysdecode 11/sys/fs/procfs 11/sys/sys 11/usr.sbin/procctl 12/lib/libsysdecode 12/sys/fs/procfs 12/sys/sys
John Baldwin
jhb at FreeBSD.org
Wed May 13 21:16:03 UTC 2020
Author: jhb
Date: Wed May 13 21:16:02 2020
New Revision: 361020
URL: https://svnweb.freebsd.org/changeset/base/361020
Log:
MFC 359047,359054: Deprecate procfs-based process debugging.
359047:
Mark procfs-based process debugging as deprecated for FreeBSD 13.
Attempting to use ioctls on /proc/<pid>/mem to control a process will
trigger warnings on the console. The <sys/pioctl.h> include file will
also now emit a compile-time warning when used from userland.
359054:
Fix the workaround to ignore the #warning for GCC.
clang and gcc use different warning flags for #warning preprocessor
directives.
For both 12 and 11, adjust the GCC warning flags to only be added in
4.7 and later since 4.2.1 does not support -Wno-cpp. For 11, add the
needed warning suppression to procctl's build. procctl was removed in
12.0.
Modified:
stable/12/lib/libsysdecode/Makefile
stable/12/sys/fs/procfs/procfs_ioctl.c
stable/12/sys/sys/pioctl.h
Directory Properties:
stable/12/ (props changed)
Changes in other areas also in this revision:
Modified:
stable/11/lib/libsysdecode/Makefile
stable/11/sys/fs/procfs/procfs_ioctl.c
stable/11/sys/sys/pioctl.h
stable/11/usr.sbin/procctl/Makefile
Directory Properties:
stable/11/ (props changed)
Modified: stable/12/lib/libsysdecode/Makefile
==============================================================================
--- stable/12/lib/libsysdecode/Makefile Wed May 13 20:37:46 2020 (r361019)
+++ stable/12/lib/libsysdecode/Makefile Wed May 13 21:16:02 2020 (r361020)
@@ -120,6 +120,13 @@ CFLAGS+=-DPF
# Workaround duplicate declarations in <netinet/ip_compat.h>
CFLAGS.gcc.ioctl.c+= -Wno-redundant-decls
+# Ignore deprecation warning in <sys/pioctl.h>
+CFLAGS.clang.ioctl.c+= -Wno-\#warnings
+.if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40700
+CFLAGS.gcc.ioctl.c+= -Wno-cpp
+.endif
+
+CFLAGS.clang+= ${CFLAGS.clang.${.IMPSRC}}
CFLAGS.gcc+= ${CFLAGS.gcc.${.IMPSRC}}
DEPENDOBJS+= tables.h
Modified: stable/12/sys/fs/procfs/procfs_ioctl.c
==============================================================================
--- stable/12/sys/fs/procfs/procfs_ioctl.c Wed May 13 20:37:46 2020 (r361019)
+++ stable/12/sys/fs/procfs/procfs_ioctl.c Wed May 13 21:16:02 2020 (r361020)
@@ -69,10 +69,53 @@ procfs_ioctl(PFS_IOCTL_ARGS)
#ifdef COMPAT_FREEBSD6
int ival;
#endif
+ static struct timeval lasttime;
+ static struct timeval interval = { .tv_sec = 1, .tv_usec = 0 };
KASSERT(p != NULL,
("%s() called without a process", __func__));
PROC_LOCK_ASSERT(p, MA_OWNED);
+
+ switch (cmd) {
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+ case _IOC(IOC_IN, 'p', 1, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+ case _IO('p', 1):
+#endif
+ case PIOCBIS:
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+ case _IOC(IOC_IN, 'p', 2, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+ case _IO('p', 2):
+#endif
+ case PIOCBIC:
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+ case _IOC(IOC_IN, 'p', 3, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+ case _IO('p', 3):
+#endif
+ case PIOCSFL:
+ case PIOCGFL:
+ case PIOCWAIT:
+ case PIOCSTATUS:
+#ifdef COMPAT_FREEBSD32
+ case PIOCWAIT32:
+ case PIOCSTATUS32:
+#endif
+#if defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4) || defined(COMPAT_43)
+ case _IOC(IOC_IN, 'p', 5, 0):
+#endif
+#ifdef COMPAT_FREEBSD6
+ case _IO('p', 5):
+#endif
+ case PIOCCONT:
+ if (ratecheck(&lasttime, &interval) != 0)
+ gone_in(13, "procfs-based process debugging");
+ break;
+ }
error = 0;
switch (cmd) {
Modified: stable/12/sys/sys/pioctl.h
==============================================================================
--- stable/12/sys/sys/pioctl.h Wed May 13 20:37:46 2020 (r361019)
+++ stable/12/sys/sys/pioctl.h Wed May 13 21:16:02 2020 (r361020)
@@ -41,6 +41,10 @@
#ifndef _SYS_PIOCTL_H
# define _SYS_PIOCTL_H
+#ifndef _KERNEL
+#warning "<sys/pioctl.h> is deprecated, ptrace() should be used instead"
+#endif
+
# include <sys/ioccom.h>
struct procfs_status {
More information about the svn-src-all
mailing list