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.

This is a diff to remove syscall(2) in Valgrind.

ok?
--
ASOU Masato

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

返信転送

Reply via email to