On Fri, Mar 17, 2017 at 08:08:29PM +0300, Victor Krapivensky wrote: <...> > --- /dev/null > +++ b/statx.c > @@ -0,0 +1,111 @@ > +/* > + * Copyright (c) 2017 The strace developers. > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * 3. The name of the author may not be used to endorse or promote products > + * derived from this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR > + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT > + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF > + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include "defs.h" > +#include "statx.h" > + > +#include <sys/stat.h> > + > +#include "xlat/statx_masks.h" > +#include "xlat/statx_attrs.h" > +#include "xlat/at_statx_sync_types.h" > + > +SYS_FUNC(statx) > +{ > + if (entering(tcp)) { > + print_dirfd(tcp, tcp->u_arg[0]); > + printpath(tcp, tcp->u_arg[1]); > + tprints(", "); > + if (printflags(at_flags, tcp->u_arg[2] & ~AT_STATX_SYNC_TYPE, > + NULL)) > + { > + tprints("|"); I haven't look at v7 of the patch yet, but coverage [1] shows that at least this line is not covered by the test.
> + } > + printxval(at_statx_sync_types, > + tcp->u_arg[2] & AT_STATX_SYNC_TYPE, "AT_STATX_???"); > + tprints(", "); > + printflags(statx_masks, tcp->u_arg[3], "STATX_???"); > + tprints(", "); > + } else { > +#define PRINT_FIELD_U(field) \ > + tprintf(", %s=%llu", #field, (unsigned long long) stx.field) > + > +#define PRINT_FIELD_TIME(field) > \ > + do { \ > + tprints(", " #field "="); \ > + tprints(sprinttime(stx.field.sec)); \ > + if (stx.field.nsec) \ Only one branch in regards of of stx.field.nsec value is covered in all instances of this macro. > + tprintf(".%09" PRId32, stx.field.nsec); \ > + } while (0) > + > + struct_statx stx; > + if (umove_or_printaddr(tcp, tcp->u_arg[4], &stx)) { > + return 0; > + } > + > + tprints("{stx_mask="); > + printflags(statx_masks, stx.stx_mask, "STATX_???"); > + > + if (!abbrev(tcp)) { Only branch with abbrev(tcp) == 0 is covered. > + PRINT_FIELD_U(stx_blksize); > + } > + > + tprints(", stx_attributes="); > + printflags(statx_attrs, stx.stx_attributes, "STATX_ATTR_???"); > + > + if (!abbrev(tcp)) { > + PRINT_FIELD_U(stx_nlink); > + printuid(", stx_uid=", stx.stx_uid); > + printuid(", stx_gid=", stx.stx_gid); > + } > + > + tprints(", stx_mode="); > + print_symbolic_mode_t(stx.stx_mode); > + > + if (!abbrev(tcp)) { > + PRINT_FIELD_U(stx_ino); > + } > + > + PRINT_FIELD_U(stx_size); > + > + if (!abbrev(tcp)) { > + PRINT_FIELD_U(stx_blocks); > + PRINT_FIELD_TIME(stx_atime); > + PRINT_FIELD_TIME(stx_btime); > + PRINT_FIELD_TIME(stx_ctime); > + PRINT_FIELD_TIME(stx_mtime); > + PRINT_FIELD_U(stx_rdev_major); > + PRINT_FIELD_U(stx_rdev_minor); > + PRINT_FIELD_U(stx_dev_major); > + PRINT_FIELD_U(stx_dev_minor); > + } else { > + tprints(", ..."); ... and this one, but this is a common problem of all current *stat* checks. > + } > + tprints("}"); > + } > + return 0; > +} [1] http://esyr.org/dump/strace-4.16.0.69.f1ea-dirty-coverage/strace_git/statx.c.gcov.html ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel