cross-compiling strace 4.20 for ARM

Felix von Leitner felix-strace at fefe.de
Wed Nov 22 09:49:12 UTC 2017


> thanks for the quick help!

> > > So I add an
> > > 
> > >   #ifndef IOV_MAX
> > >   #define IOV_MAX 1024
> > >   #endif
> > > 
> > > Same issue in msghdr.c.

> > IOV_MAX *must* be provided by <limits.h>; if it isn't, then your cross-compiling
> > environment is not quite functional.

> A-ha! That gets me somewhere. I'll investigate.

Interestingly enough, IOV_MAX is not even defined by limits.h on my
non-cross-setup that compiled strace just fine:

  $ gcc -E -
  #include <limits.h>
  IOV_MAX
  [Ctrl-D]

  ->

  [...]
  # 2 "<stdin>" 2

  IOV_MAX

Most bizarre. It does appear if I define _GNU_SOURCE — both on ARM and
on x86_64.

Are you sure about this?

> > All these constants are generated during build,
> > their definitions should be in sen.h file.

> All right! Turns out you run

>   cat -- linux/xtensa/syscallent.h

> and the -- is a GNU extension that my cat does not understand. I'll
> re-run the build with GNU cat now.

If I support "cat -- foo.c" in my cat, the build goes though (modulo the
IOV_MAX issue).

Thanks for the help!

Felix




More information about the Strace-devel mailing list