On Tue, May 30, 2017 at 05:43:15PM -0400, David Robins wrote:
> I compiled strace 4.17 release for MIPS with Linux 2.6.35 (which the 
> README says is supported) and ran into an error in util.c: 
> __NR_process_vm_readv not defined (the syscall was added in 3.2). 
> Proposed patch attached.
> 
> --- util.c.orig       2017-05-30 17:08:51.310510179 -0400
> +++ util.c    2017-05-30 17:25:40.624754865 -0400
> @@ -1116,7 +1116,12 @@
>                unsigned long riovcnt,
>                unsigned long flags)
>  {
> +#ifdef __NR_process_vm_readv
>       return syscall(__NR_process_vm_readv, (long)pid, lvec, liovcnt, rvec, 
> riovcnt, flags);
> +#else
> +     errno = ENOSYS;
> +     return -1;
> +#endif
>  }
>  # define process_vm_readv strace_process_vm_readv
>  #endif /* !HAVE_PROCESS_VM_READV */

Thanks for the bug report but the patch is not correct.

In commit v4.15-247-gb58f75c we deliberately removed all such __NR_*
checks assuming that scno.h provides definitions for all __NR_* constants
not provided by system header files.
Unfortunately, generation of scno.h was broken on mips.

I've just pushed a fix to strace.git; if you cannot build from the git
repository, here is the diff of two generated Makefile.in files:

--- Makefile.in
+++ Makefile.in
@@ -6660,8 +6660,8 @@
 ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h 
$(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h
        cat $^ > $@
 
-syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
-       $(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
+syscallent.i: $(top_builddir)/config.h $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
+       $(CPP) -P $(SCNO_CPPFLAGS) -include $^ -o $@
 
 scno.h: $(top_srcdir)/scno.head syscallent.i
        echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
--- tests/Makefile.in
+++ tests/Makefile.in
@@ -7014,8 +7014,8 @@
 clean-local-check:
        -rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
 
-syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
-       $(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
+syscallent.i: $(top_builddir)/config.h $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
+       $(CPP) -P $(SCNO_CPPFLAGS) -include $^ -o $@
 
 scno.h: $(top_srcdir)/scno.head syscallent.i
        echo '/* Generated by Makefile from $^; do not edit. */' > $@-t

> Also, the 4.16 archive (at 
> https://sourceforge.net/projects/strace/files/latest/download/strace-4.16.tar.xz)
>  
> actually has a strace-4.17 tree in it.

SF seems to be serving strace-4.17.tar.xz in response to
https://sourceforge.net/projects/strace/files/latest/download/any/thing/whatsoever
and there is nothing that could be done about it.


-- 
ldv

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
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

Reply via email to