cross-compiling strace 4.20 for ARM
Dmitry V. Levin
ldv at altlinux.org
Wed Nov 22 09:28:55 UTC 2017
On Wed, Nov 22, 2017 at 09:45:07AM +0100, Felix von Leitner wrote:
> Good morning!
> I'm trying to debug an embedded Linux box that does not come with an
> strace, so I figured I'd cross compile strace for it. It is not going so
> well. Any help appreciated.
> First obstacle:
> mmsghdr.c:97:14: error: 'IOV_MAX' undeclared here (not in a function); did you mean 'INT_MAX'?
> int namelen[IOV_MAX];
> (This is gcc 7.1 for arm-linux-gnueabi, with binutils 2.29 and a freshly compiled glibc 2.26).
> So I add an
> #ifndef IOV_MAX
> #define IOV_MAX 1024
> 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.
> So far so good, but the next one is stumping me:
> pathtrace.c: In function 'pathtrace_match_set':
> pathtrace.c:166:7: error: 'SEN_dup2' undeclared (first use in this function); did you mean 'sys_dup2'?
> case SEN_dup2:
> pathtrace.c:166:7: note: each undeclared identifier is reported only once for each function it appears in
> pathtrace.c:167:7: error: 'SEN_dup3' undeclared (first use in this function); did you mean 'SEN_dup2'?
> case SEN_dup3:
> (and so on for dozens of syscalls). Where are these symbols supposed to come from? What am I doing wrong?
All these constants are generated during build,
their definitions should be in sen.h file.
> For the record: compiling strace natively for x86_64 works with the same glibc.
> Kernel headers are from Linux 4.14 for both ARM and x86_64.
This configuration is among those I tested recently.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 801 bytes
Desc: not available
More information about the Strace-devel