// obsol vhangup 76
// obsol vlimit 77
GENXY(__NR_mincore, sys_mincore), // 78
- GENXY(__NR_getgroups, sys_getgroups), // 79
-
- GENX_(__NR_setgroups, sys_setgroups), // 80
+ #if defined(__NR_freebsd14_getgroups)
+ GENXY(__NR_freebsd14_getgroups, sys_getgroups), // 79
+ #else
+ GENXY(__NR_getgroups, sys_getgroups), // 79
+ #endif
+
+ #if defined(__NR_freebsd14_setgroups)
+ GENX_(__NR_freebsd14_setgroups, sys_setgroups), // 80
+ #else
+ GENX_(__NR_setgroups, sys_setgroups), // 80
+ #endif
GENX_(__NR_getpgrp, sys_getpgrp), // 81
GENX_(__NR_setpgid, sys_setpgid), // 82
GENXY(__NR_setitimer, sys_setitimer), // 83
BSDX_(__NR_exterrctl, sys_exterrctl), // 592
BSDX_(__NR_inotify_add_watch_at, sys_inotify_add_watch_at), // 593
- BSDX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 593
+ BSDX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 594
+
+#if defined(__NR_freebsd14_setgroups)
+ GENX_(__NR_setgroups, sys_setgroups), // 595
+#endif
+#if defined(__NR_freebsd14_getgroups)
+ GENXY(__NR_getgroups, sys_getgroups), // 596
+#endif
BSDX_(__NR_fake_sigreturn, sys_fake_sigreturn), // 1000, fake sigreturn
GO(SYS_mincore, "3s 1m");
SY(SYS_mincore, x0, x0+40960, x0); FAIL;
- /* SYS_getgroups 79 */
+ /* SYS_freeebsd14_getgroups 79 */
+#if defined(SYS_freebsd14_getgroups)
+ GO(SYS_freebsd14_getgroups, "2s 1m");
+ SY(SYS_freebsd14_getgroups, x0+1, x0+1); FAIL;
+#else
GO(SYS_getgroups, "2s 1m");
SY(SYS_getgroups, x0+1, x0+1); FAIL;
+#endif
- /* SYS_setgroups 80 */
+ /* SYS_freebsd14_setgroups 80 */
+#if defined(SYS_freebsd14_getgroups)
+ GO(SYS_freebsd14_getgroups, "2s 1m");
+ SY(SYS_freebsd14_getgroups, x0+1, x0+1); FAIL;
+#else
GO(SYS_setgroups, "2s 1m");
SY(SYS_setgroups, x0+1, x0+1); FAIL;
+#endif
/* SYS_getpgrp 81 */
GO(SYS_getpgrp, "0s 0m");
// __FreeBSD_version 1201522
// __FreeBSD_version 1300045
- /* SYS___sysctlbyname 570 */
+ /* SYS___sysctlbyname 570 */
GO(SYS___sysctlbyname, "(getoldlen) 3s 2m");
SY(SYS___sysctlbyname, x0, x0+1, NULL, x0+1, NULL, x0); FAIL;
SY(SYS___sysctlbyname, x0, x0+1, NULL, NULL, x0+1, x0+2); FAIL;
// FreeBSD 13 (and any backports)
- /* SYS_shm_open2 571 */
+ /* SYS_shm_open2 571 */
#if defined(SYS_shm_open2)
GO(SYS_shm_open2, " 5s 2m");
SY(SYS_shm_open2, x0+0xf00c, x0+1, x0+2, x0+3, x0+4); FAIL;
FAKE_SY("\n");
#endif
- /* SYS___realpathat 574 */
+ /* SYS___realpathat 574 */
#if defined(SYS___realpathat)
GO(SYS___realpathat, " 5s 2m");
SY(SYS___realpathat, x0+0xffff, x0, x0, x0+100, x0+2); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_close_range 575 */
+ /* SYS_close_range 575 */
#if defined(SYS_close_range)
GO(SYS_close_range, "3s 0m");
SY(SYS_close_range, x0+5, x0+10, x0+12345); FAIL;
#else
#endif
- /* SYS___specialfd 577 */
+ /* SYS___specialfd 577 */
#if defined(SYS___specialfd)
GO(SYS___specialfd, "3s 1m");
SY(SYS___specialfd, x0+0xf000, x0+1, x0+10); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_aio_writev 578 */
+ /* SYS_aio_writev 578 */
#if defined(SYS_aio_writev)
GO(SYS_aio_writev, "1s 1m");
SY(SYS_aio_writev, x0+1); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_aio_readv 579 */
+ /* SYS_aio_readv 579 */
#if defined(SYS_aio_readv)
GO(SYS_aio_readv, "1s 1m");
SY(SYS_aio_readv, x0+1); FAIL;
#endif
// FreeBSD 15 (and any backports)
- /* SYS_kqueuex 583 */
+ /* SYS_kqueuex 583 */
#if defined(SYS_kqueuex)
GO(SYS_kqueuex, " 1s 0m");
SY(SYS_kqueuex, x0+123); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_membarrier 584 */
+ /* SYS_membarrier 584 */
#if defined(SYS_membarrier)
GO(SYS_membarrier, " 3s 0m");
SY(SYS_membarrier, x0+123, x0+456, x0+789); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_timerfd_create 585 */
+ /* SYS_timerfd_create 585 */
#if defined(SYS_timerfd_create)
GO(SYS_timerfd_create, " 2s 0m");
SY(SYS_timerfd_create, x0+123, x0+23456); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_timerfd_gettime 586 */
+ /* SYS_timerfd_gettime 586 */
#if defined(SYS_timerfd_gettime)
GO(SYS_timerfd_gettime, " 2s 1m");
SY(SYS_timerfd_gettime, x0+100, x0); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_timerfd_settime 587 */
+ /* SYS_timerfd_settime 587 */
#if defined(SYS_timerfd_settime)
GO(SYS_timerfd_settime, "4s 2m");
SY(SYS_timerfd_settime, x0+321, x0, x0+10, x0+5); FAIL;
FAKE_SY("\n");
#endif
- /* SYS_kcmp 588 */
+ /* SYS_kcmp 588 */
#if defined(SYS_kcmp)
GO(SYS_kcmp, "5s 0m");
SY(SYS_kcmp, x0+1, x0+2, x0+3, x0+4, x0+5);
FAKE_SY("\n");
#endif
- /* SYS_getrlimitusage 589 */
+ /* SYS_getrlimitusage 589 */
#if defined(SYS_getrlimitusage)
GO(SYS_getrlimitusage, "3s, 1m");
SY(SYS_getrlimitusage, x0+3, x0, x0+2);
FAKE_SY("\n");
#endif
+ /* SYS_fchroot 590 */
#if defined(SYS_fchroot)
GO(SYS_fchroot, "1s, 0m");
SY(SYS_fchroot, x0+1000);
FAKE_SY("\n");
#endif
+ /* SYS_setcred 591 */
#if defined(SYS_setcred)
GO(SYS_setcred, "3s, 1m");
SY(SYS_setcred, x0+100, x0+3, x0+50);
FAKE_SY("\n");
#endif
+ /* SYS_wxterrctl 592 */
#if defined(SYS_exterrctl)
GO(SYS_exterrctl, "3s, 1m");
SY(SYS_exterrctl, x0, x0+1, x0+1);
FAKE_SY("\n");
#endif
+ /* SYS_inotify_add_watch_at 593 */
#if defined(SYS_inotify_add_watch_at)
GO(SYS_inotify_add_watch_at, "3s, 1m");
SY(SYS_inotify_add_watch_at, x0, x0+1, x0+1);
FAKE_SY("\n");
#endif
+ /* SYS_inotify_rm_watch 594 */
#if defined(SYS_inotify_rm_watch)
GO(SYS_inotify_rm_watch, "2s, 0m");
SY(SYS_inotify_rm_watch, x0+1000, x0+1000);
FAKE_SY("\n");
#endif
+ /* SYS_getgroups 595 */
+#if defined(SYS_freebsd14_getgroups)
+ GO(SYS_getgroups, "2s 1m");
+ SY(SYS_getgroups, x0+1, x0+1); FAIL;
+#else
+ FAKE_GO("595: SYS_getgroups 2s 1m");
+ FAKE_SY("Syscall param getgroups(size) contains uninitialised byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY("\n");
+ FAKE_SY("Syscall param getgroups(list) contains uninitialised byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY("\n");
+ FAKE_SY("Syscall param getgroups(list) points to unaddressable byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY(" Address 0x........ is not stack'd, malloc'd or (recently) free'd\n");
+ FAKE_SY("\n");
+#endif
+
+ /* SYS_setgroups 596 */
+#if defined(SYS_freebsd14_getgroups)
+ GO(SYS_getgroups, "2s 1m");
+ SY(SYS_getgroups, x0+1, x0+1); FAIL;
+#else
+ FAKE_GO("596: SYS_setgroups 2s 1m");
+ FAKE_SY("Syscall param setgroups(size) contains uninitialised byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY("\n");
+ FAKE_SY("Syscall param setgroups(list) contains uninitialised byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY("\n");
+ FAKE_SY("Syscall param setgroups(list) points to unaddressable byte(s)\n");
+ FAKE_SY(" ...\n");
+ FAKE_SY(" Address 0x........ is not stack'd, malloc'd or (recently) free'd\n");
+ FAKE_SY("\n");
+#endif
+
/* SYS_exit 1 */
GO(SYS_exit, "1s 0m");
SY(SYS_exit, x0); FAIL;