]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Improve FreeBSD preadv/pwritev error messages
authorPaul Floyd <pjfloyd@wanadoo.fr>
Thu, 22 Dec 2022 22:38:54 +0000 (23:38 +0100)
committerPaul Floyd <pjfloyd@wanadoo.fr>
Thu, 22 Dec 2022 22:38:54 +0000 (23:38 +0100)
Also correct a copy paste error in generic readv.

coregrind/m_syswrap/syswrap-amd64-freebsd.c
coregrind/m_syswrap/syswrap-generic.c

index 2ef0f894511dbec8d3b1cb96f716b46774a435a8..3b2f9397d1508c3ad5754918b15f1a9b6b7a72d9 100644 (file)
@@ -321,6 +321,7 @@ PRE(sys_preadv)
 {
    Int i;
    struct vki_iovec * vec;
+   char buf[sizeof("preadv(iov[])") + 11];
    *flags |= SfMayBlock;
    PRINT("sys_preadv ( %" FMT_REGWORD "d, %#" FMT_REGWORD "x, %"
          FMT_REGWORD "d, %" FMT_REGWORD "d )", SARG1, ARG2, SARG3, SARG4);
@@ -333,12 +334,12 @@ PRE(sys_preadv)
       if ((Int)ARG3 > 0)
          PRE_MEM_READ( "preadv(iov)", ARG2, ARG3 * sizeof(struct vki_iovec) );
 
-      // @todo PJF improve this like readv
       if (ML_(safe_to_deref)((struct vki_iovec *)ARG2, ARG3 * sizeof(struct vki_iovec))) {
          vec = (struct vki_iovec *)(Addr)ARG2;
-         for (i = 0; i < (Int)ARG3; i++)
-            PRE_MEM_WRITE( "preadv(iov[...])",
-                           (Addr)vec[i].iov_base, vec[i].iov_len );
+         for (i = 0; i < (Int)ARG3; i++) {
+            VG_(sprintf)(buf, "preadv(iov[%d])", i);
+            PRE_MEM_WRITE(buf, (Addr)vec[i].iov_base, vec[i].iov_len);
+         }
       }
    }
 }
@@ -368,6 +369,7 @@ PRE(sys_pwritev)
 {
    Int i;
    struct vki_iovec * vec;
+   char buf[sizeof("pwritev(iov[])") + 11];
    *flags |= SfMayBlock;
    PRINT("sys_pwritev ( %" FMT_REGWORD "d, %#" FMT_REGWORD "x, %"
          FMT_REGWORD "d, %" FMT_REGWORD "d )", SARG1, ARG2, SARG3, SARG4);
@@ -383,9 +385,10 @@ PRE(sys_pwritev)
          PRE_MEM_READ( "pwritev(vector)", ARG2, ARG3 * sizeof(struct vki_iovec) );
       if (ML_(safe_to_deref)((struct vki_iovec *)ARG2, ARG3 * sizeof(struct vki_iovec))) {
          vec = (struct vki_iovec *)(Addr)ARG2;
-         for (i = 0; i < (Int)ARG3; i++)
-            PRE_MEM_READ( "pwritev(iov[...])",
-                          (Addr)vec[i].iov_base, vec[i].iov_len );
+         for (i = 0; i < (Int)ARG3; i++) {
+            VG_(sprintf)(buf, "pwritev(iov[%d])", i);
+            PRE_MEM_READ(buf, (Addr)vec[i].iov_base, vec[i].iov_len );
+         }
       }
    }
 }
index 4e10eea9fed5e7bd1b97e489f9d3c439cf491717..efdae60e10320cbcccd86415fabf6ef8fd7abf57 100644 (file)
@@ -4409,7 +4409,7 @@ PRE(sys_readv)
 {
    Int i;
    struct vki_iovec * vec;
-   char buf[sizeof("writev(vector[])") + 11];
+   char buf[sizeof("readv(vector[])") + 11];
    *flags |= SfMayBlock;
    PRINT("sys_readv ( %" FMT_REGWORD "u, %#" FMT_REGWORD "x, %"
          FMT_REGWORD "u )", ARG1, ARG2, ARG3);
@@ -4425,7 +4425,7 @@ PRE(sys_readv)
       if (ML_(safe_to_deref)((const void*)ARG2, ARG3*sizeof(struct vki_iovec *))) {
          vec = (struct vki_iovec *)(Addr)ARG2;
          for (i = 0; i < (Int)ARG3; i++) {
-            VG_(sprintf)(buf, "writev(vector[%d])", i);
+            VG_(sprintf)(buf, "readv(vector[%d])", i);
             PRE_MEM_WRITE(buf, (Addr)vec[i].iov_base, vec[i].iov_len );
          }
       }