Hi, I've encountered a problem with cross-compiling strace - as a part of crosstool-ng on MacOS [1]. While compiling ioctlsort.c, strace uses CC_FOR_BUILD, so it wants to include <linux/ioctl.h> header from the host - which is obviously missing on MacOS. Googling suggested replacing <linux/ioctl.h> with <sys/ioctl.h> - but I think this is wrong, as this will pick up build definitions and MacOS uses incompatible definitions for IOC_* macros (different bit shifts and different values for IOC_{READ,WRITE,VOID}).
I worked this around by creating a temporary include directory and creating symlinks in that directory to {linux,asm,asm-generic} directories in *host* header directory [2], so that <linux/ioctl.h> is picked up from the host rather than from the build. This is a bit awkward, but it works. A better solution would be to modify strace makefiles to get these headers from the host (e.g. by running CC-for-host with -E to generate a "header" with the appropriate IOC_* definitions; or by adding these definitions to the stuff gleaned by ioctl_*.sh from the Linux kernel sources). Thoughts? Suggestions? Best regards, Alexey. [1] https://github.com/crosstool-ng/crosstool-ng/issues/469#issuecomment-259840807 [2] https://github.com/crosstool-ng/crosstool-ng/commit/c69e593a9272ad186b6669bc5b12886890cea7fe ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel