On Fri, Nov 17, 2023 at 03:04:02PM +0900, ASOU Masato wrote: > ping > > I confermed the operation using snapshot created onfNovember 16th. > -- > ASOU Masato > > ---------- Forwarded message --------- > From: 朝生正人 <takeasou.mas...@gmail.com> > Date: 2023年11月2日(木) 10:45 > Subject: devel/valgrind: removal syscall(2) > To: <ports@openbsd.org> > > > I have moved my email address from a...@soum.co.jp to > takeasou.mas...@gmail.com.
Gmail doesn't accept my mails, hence me using your OpenBSD address. > > This is a diff to remove syscall(2) in Valgrind. > > ok? > -- > ASOU Masato > OK kn > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/valgrind/Makefile,v > diff -u -p -r1.33 Makefile > --- Makefile 18 Oct 2023 03:27:55 -0000 1.33 > +++ Makefile 2 Nov 2023 01:16:02 -0000 > @@ -5,7 +5,7 @@ CATEGORIES = devel > > V = 3.21.0 > DISTNAME = valgrind-${V} > -REVISION = 1 > +REVISION = 2 > EXTRACT_SUFX = .tar.bz2 > > SITES = https://sourceware.org/pub/valgrind/ > Index: patches/patch-coregrind_m_syswrap_syswrap_main_c > =================================================================== > RCS file: > /cvs/ports/devel/valgrind/patches/patch-coregrind_m_syswrap_syswrap_main_c,v > diff -u -p -r1.1 patch-coregrind_m_syswrap_syswrap_main_c > --- patches/patch-coregrind_m_syswrap_syswrap_main_c 18 Jul 2023 > 06:17:15 -0000 1.1 > +++ patches/patch-coregrind_m_syswrap_syswrap_main_c 2 Nov 2023 01:16:03 > -0000 > @@ -18,17 +18,12 @@ > Int real_syscallno; > # endif > # if defined(VGO_linux) > -@@ -369,6 +369,17 @@ > +@@ -369,6 +369,12 @@ > real_syscallno, &tst->arch.vex, > syscall_mask, &saved, sizeof(vki_sigset_t) > ); > +# elif defined(VGO_openbsd) > -+ if (tst->arch.vex.guest_SC_CLASS == VG_OPENBSD_SYSCALL0) > -+ real_syscallno = __NR_syscall; > -+ else if (tst->arch.vex.guest_SC_CLASS == VG_OPENBSD_SYSCALL198) > -+ real_syscallno = __NR___syscall; > -+ else > -+ real_syscallno = syscallno; > ++ real_syscallno = syscallno; > + err = ML_(do_syscall_for_client_WRK)( > + real_syscallno, &tst->arch.vex, > + syscall_mask, &saved, sizeof(vki_sigset_t) > @@ -36,7 +31,7 @@ > # elif defined(VGO_darwin) > switch (VG_DARWIN_SYSNO_CLASS(syscallno)) { > case VG_DARWIN_SYSCALL_CLASS_UNIX: > -@@ -623,6 +634,153 @@ > +@@ -623,6 +629,112 @@ > canonical->arg8 = stack[2]; > } > > @@ -117,23 +112,8 @@ > + VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; > + UWord *stack = (UWord *)gst->guest_ESP; > + > -+ // OpenBSD supports different calling conventions > -+ switch (gst->guest_EAX) { > -+ case __NR_syscall: > -+ canonical->class = VG_OPENBSD_SYSCALL0; > -+ canonical->sysno = stack[1]; > -+ stack += 1; > -+ break; > -+ case __NR___syscall: > -+ canonical->class = VG_OPENBSD_SYSCALL198; > -+ canonical->sysno = stack[1]; > -+ stack += 2; > -+ break; > -+ default: > -+ canonical->class = 0; > -+ canonical->sysno = gst->guest_EAX; > -+ break; > -+ } > ++ canonical->class = 0; > ++ canonical->sysno = gst->guest_EAX; > + // stack[0] is a (fake) return address > + canonical->arg1 = stack[1]; > + canonical->arg2 = stack[2]; > @@ -148,49 +128,23 @@ > + VexGuestAMD64State* gst = (VexGuestAMD64State*)gst_vanilla; > + UWord *stack = (UWord *)gst->guest_RSP; > + > -+ // OpenBSD supports different calling conventions > -+ switch (gst->guest_RAX) { > -+ case __NR_syscall: > -+ canonical->klass = VG_OPENBSD_SYSCALL0; > -+ canonical->sysno = gst->guest_RDI; > -+ break; > -+ case __NR___syscall: > -+ canonical->klass = VG_OPENBSD_SYSCALL198; > -+ canonical->sysno = gst->guest_RDI; > -+ break; > -+ default: > -+ canonical->klass = 0; > -+ canonical->sysno = gst->guest_RAX; > -+ break; > -+ } > -+ // stack[0] is a (fake) return address > -+ if (canonical->klass != VG_OPENBSD_SYSCALL0 && canonical->klass != > VG_OPENBSD_SYSCALL198) { > -+ // stack[0] is return address > -+ canonical->arg1 = gst->guest_RDI; > -+ canonical->arg2 = gst->guest_RSI; > -+ canonical->arg3 = gst->guest_RDX; > -+ canonical->arg4 = gst->guest_R10; > -+ canonical->arg5 = gst->guest_R8; > -+ canonical->arg6 = gst->guest_R9; > -+ canonical->arg7 = stack[1]; > -+ canonical->arg8 = stack[2]; > -+ } else { > -+ // stack[0] is return address > -+ canonical->arg1 = gst->guest_RSI; > -+ canonical->arg2 = gst->guest_RDX; > -+ canonical->arg3 = gst->guest_R10; > -+ canonical->arg4 = gst->guest_R8; > -+ canonical->arg5 = gst->guest_R9; > -+ canonical->arg6 = stack[1]; > -+ canonical->arg7 = stack[2]; > -+ canonical->arg8 = stack[3]; > -+ } > ++ canonical->klass = 0; > ++ canonical->sysno = gst->guest_RAX; > ++ // stack[0] is return address > ++ canonical->arg1 = gst->guest_RDI; > ++ canonical->arg2 = gst->guest_RSI; > ++ canonical->arg3 = gst->guest_RDX; > ++ canonical->arg4 = gst->guest_R10; > ++ canonical->arg5 = gst->guest_R8; > ++ canonical->arg6 = gst->guest_R9; > ++ canonical->arg7 = stack[1]; > ++ canonical->arg8 = stack[2]; > + > + > #elif defined(VGP_arm_linux) > VexGuestARMState* gst = (VexGuestARMState*)gst_vanilla; > canonical->sysno = gst->guest_R7; > -@@ -1015,6 +1173,79 @@ > +@@ -1015,6 +1127,36 @@ > stack[2] = canonical->arg8; > } > > @@ -199,21 +153,7 @@ > + UWord *stack = (UWord *)gst->guest_ESP; > + > + // stack[0] is a (fake) return address > -+ switch (canonical->klass) { > -+ case VG_OPENBSD_SYSCALL0: > -+ gst->guest_EAX = __NR_syscall; > -+ stack[1] = canonical->sysno; > -+ stack++; > -+ break; > -+ case VG_OPENBSD_SYSCALL198: > -+ gst->guest_EAX = __NR___syscall; > -+ stack[1] = canonical->sysno; > -+ stack += 2; > -+ break; > -+ default: > -+ gst->guest_EAX = canonical->sysno; > -+ break; > -+ } > ++ gst->guest_EAX = canonical->sysno; > + stack[1] = canonical->arg1; > + stack[2] = canonical->arg2; > + stack[3] = canonical->arg3; > @@ -228,49 +168,20 @@ > + UWord *stack = (UWord *)gst->guest_RSP; > + > + // stack[0] is a (fake) return address > -+ switch (canonical->klass) { > -+ case VG_OPENBSD_SYSCALL0: > -+ gst->guest_RAX = __NR_syscall; > -+ gst->guest_RDI = canonical->sysno; > -+ gst->guest_RSI = canonical->arg1; > -+ gst->guest_RDX = canonical->arg2; > -+ gst->guest_R10 = canonical->arg3; > -+ gst->guest_R8 = canonical->arg4; > -+ gst->guest_R9 = canonical->arg5; > -+ stack[1] = canonical->arg6; > -+ stack[2] = canonical->arg7; > -+ stack[3] = canonical->arg8; > -+ break; > -+ case VG_OPENBSD_SYSCALL198: > -+ gst->guest_RAX = __NR___syscall; > -+ gst->guest_RDI = canonical->sysno; > -+ gst->guest_RSI = canonical->arg1; > -+ gst->guest_RDX = canonical->arg2; > -+ gst->guest_R10 = canonical->arg3; > -+ gst->guest_R8 = canonical->arg4; > -+ gst->guest_R9 = canonical->arg5; > -+ stack[1] = canonical->arg6; > -+ stack[2] = canonical->arg7; > -+ stack[3] = canonical->arg8; > -+ break; > -+ default: > -+ gst->guest_RAX = canonical->sysno; > -+ gst->guest_RDI = canonical->arg1; > -+ gst->guest_RSI = canonical->arg2; > -+ gst->guest_RDX = canonical->arg3; > -+ gst->guest_R10 = canonical->arg4; > -+ gst->guest_R8 = canonical->arg5; > -+ gst->guest_R9 = canonical->arg6; > -+ stack[1] = canonical->arg7; > -+ stack[2] = canonical->arg8; > -+ break; > -+ } > -+ > ++ gst->guest_RAX = canonical->sysno; > ++ gst->guest_RDI = canonical->arg1; > ++ gst->guest_RSI = canonical->arg2; > ++ gst->guest_RDX = canonical->arg3; > ++ gst->guest_R10 = canonical->arg4; > ++ gst->guest_R8 = canonical->arg5; > ++ gst->guest_R9 = canonical->arg6; > ++ stack[1] = canonical->arg7; > ++ stack[2] = canonical->arg8; > + > #elif defined(VGP_arm_linux) > VexGuestARMState* gst = (VexGuestARMState*)gst_vanilla; > gst->guest_R7 = canonical->sysno; > -@@ -1209,6 +1440,15 @@ > +@@ -1209,6 +1351,15 @@ > (flags & 1) != 0 ? True : False); > canonical->what = SsComplete; > > @@ -286,7 +197,7 @@ > # elif defined(VGP_arm_linux) > VexGuestARMState* gst = (VexGuestARMState*)gst_vanilla; > canonical->sres = VG_(mk_SysRes_arm_linux)( gst->guest_R0 ); > -@@ -1248,6 +1488,14 @@ > +@@ -1248,6 +1399,14 @@ > (flags & 1) != 0 ? True : False); > canonical->what = SsComplete; > > @@ -301,7 +212,7 @@ > # elif defined(VGP_x86_darwin) > /* duplicates logic in m_signals.VG_UCONTEXT_SYSCALL_SYSRES */ > VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; > -@@ -1451,7 +1699,7 @@ > +@@ -1451,7 +1610,7 @@ > VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, > OFFSET_arm64_X0, sizeof(UWord) ); > > @@ -310,7 +221,7 @@ > VexGuestX86State* gst = (VexGuestX86State*)gst_vanilla; > vg_assert(canonical->what == SsComplete); > if (sr_isError(canonical->sres)) { > -@@ -1470,13 +1718,18 @@ > +@@ -1470,13 +1629,18 @@ > VG_TRACK( post_reg_write, Vg_CoreSysCall, tid, > offsetof(VexGuestX86State, guest_CC_DEP1), sizeof(UInt) ); > > @@ -330,7 +241,7 @@ > gst->guest_RAX = sr_Res(canonical->sres); > gst->guest_RDX = sr_ResHI(canonical->sres); > LibVEX_GuestAMD64_put_rflag_c(0, gst); > -@@ -1719,7 +1972,7 @@ > +@@ -1719,7 +1883,7 @@ > layout->o_arg7 = OFFSET_ppc64_GPR9; > layout->uu_arg8 = -1; /* impossible value */ > > @@ -339,7 +250,7 @@ > layout->o_sysno = OFFSET_x86_EAX; > // syscall parameters are on stack in C convention > layout->s_arg1 = sizeof(UWord) * 1; > -@@ -1731,7 +1984,7 @@ > +@@ -1731,7 +1895,7 @@ > layout->s_arg7 = sizeof(UWord) * 7; > layout->s_arg8 = sizeof(UWord) * 8; > > @@ -348,7 +259,7 @@ > layout->o_sysno = OFFSET_amd64_RAX; > layout->o_arg1 = OFFSET_amd64_RDI; > layout->o_arg2 = OFFSET_amd64_RSI; > -@@ -1923,6 +2176,9 @@ > +@@ -1923,6 +2087,9 @@ > # elif defined(VGO_freebsd) > sys = ML_(get_freebsd_syscall_entry)( syscallno ); > > @@ -358,7 +269,7 @@ > # elif defined(VGO_darwin) > Int idx = VG_DARWIN_SYSNO_INDEX(syscallno); > > -@@ -2564,7 +2820,7 @@ > +@@ -2564,7 +2731,7 @@ > /* These are addresses within ML_(do_syscall_for_client_WRK). See > syscall-$PLAT.S for details. > */ > @@ -367,7 +278,7 @@ > extern const Addr ML_(blksys_setup); > extern const Addr ML_(blksys_restart); > extern const Addr ML_(blksys_complete); > -@@ -2745,7 +3001,7 @@ > +@@ -2745,7 +2912,7 @@ > vg_assert(p[0] == 0x01 && p[1] == 0x00 && p[2] == 0x00 && p[3] == > 0xD4); > } > > @@ -376,7 +287,7 @@ > /* XXX: we support different syscall methods. */ > arch->vex.guest_EIP -= 2; // sizeof(int $0x80) > > -@@ -2765,7 +3021,7 @@ > +@@ -2765,7 +2932,7 @@ > vg_assert(p[0] == 0xcd && p[1] == 0x80); > } > > @@ -385,7 +296,7 @@ > /* XXX: we support different syscall methods. */ > arch->vex.guest_RIP -= 2; // sizeof(syscall) > > -@@ -3035,7 +3291,7 @@ > +@@ -3035,7 +3202,7 @@ > th_regs = &tst->arch; > sci = & syscallInfo[tid]; > > @@ -394,7 +305,7 @@ > outside_range > = ip < ML_(blksys_setup) || ip >= ML_(blksys_finished); > in_setup_to_restart > -@@ -3057,10 +3313,20 @@ > +@@ -3057,10 +3224,20 @@ > = (ip >= ML_(blksys_complete) && ip < ML_(blksys_committed)) || > ((ip+8) == ML_(blksys_complete)); > #else > Index: patches/patch-include_vki_vki_scnums_openbsd_h > =================================================================== > RCS file: > /cvs/ports/devel/valgrind/patches/patch-include_vki_vki_scnums_openbsd_h,v > diff -u -p -r1.3 patch-include_vki_vki_scnums_openbsd_h > --- patches/patch-include_vki_vki_scnums_openbsd_h 18 Jul 2023 > 06:17:15 -0000 1.3 > +++ patches/patch-include_vki_vki_scnums_openbsd_h 2 Nov 2023 01:16:03 > -0000 > @@ -1,6 +1,6 @@ > --- include/vki/vki-scnums-openbsd.h.orig > +++ include/vki/vki-scnums-openbsd.h > -@@ -0,0 +1,269 @@ > +@@ -0,0 +1,265 @@ > + > +/* > + This file is part of Valgrind, a dynamic binary instrumentation > @@ -31,12 +31,9 @@ > +#define __VKI_UNISTD_OPENBSD_H > + > +#define VG_OPENBSD_SYSCALL_STD 0 > -+#define VG_OPENBSD_SYSCALL0 1 > -+#define VG_OPENBSD_SYSCALL198 2 > + > +// From sys/syscall.h > + > -+#define __NR_syscall 0 > +#define __NR_exit 1 > +#define __NR_fork 2 > +#define __NR_read 3 > @@ -200,7 +197,6 @@ > +#define __NR_getrlimit 194 > +#define __NR_setrlimit 195 > +#define __NR_pad_mmap 197 > -+#define __NR___syscall 198 > +#define __NR_pad_lseek 199 > +#define __NR_pad_truncate 200 > +#define __NR_pad_ftruncate 201 > > 返信転送