Hi On Thu, Jul 30, 2015 at 3:50 PM, Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx> wrote: > On 2015-07-29 12:31 PM, David Herrmann wrote: >> Hi >> >> On Wed, Jul 29, 2015 at 6:19 PM, Paul Gortmaker >> <paul.gortmaker@xxxxxxxxxxxxx> wrote: >>> Hi David, >>> >>> Does it make sense to build this sample when cross compiling? >>> >>> The reason I ask is that it has been breaking the linux-next build of >>> allmodconfig for a while now, with: >>> >>> HOSTCC samples/kdbus/kdbus-workers >>> samples/kdbus/kdbus-workers.c: In function ‘prime_new’: >>> samples/kdbus/kdbus-workers.c:934:18: error: ‘__NR_memfd_create’ undeclared (first use in this function) >>> p->fd = syscall(__NR_memfd_create, "prime-area", MFD_CLOEXEC); >>> ^ >>> samples/kdbus/kdbus-workers.c:934:18: note: each undeclared identifier is reported only once for each function it appears in >>> scripts/Makefile.host:91: recipe for target 'samples/kdbus/kdbus-workers' failed >>> make[2]: *** [samples/kdbus/kdbus-workers] Error 1 >> >> mips does have this syscall, so I assume the problem is out-of-date >> kernel headers. You can fix this by running: >> >> $ make headers_install > > No, let me try and clarify. Please note the emphasis on cross compiling > and automated build coverage, i.e. there is no place for manual steps. User-space samples in ./samples/ are compiled with HOSTCC, which is the compiler for the _local_ machine. Regardless of cross-compiling the same local compiler is used. So I cannot understand why this is even remotely related to cross compiling. Please elaborate. Please note that this is HOSTCC running, so it does *NOT* require the toolchain for your cross-compiled architecture. Also, please tell me why your system has "linux/memfd.h" available, but __NR_memfd_create is undefined? Anyway, patch is attached. Can you verify it works? David diff --git a/samples/kdbus/Makefile b/samples/kdbus/Makefile index 137f842..dbd9de8 100644 --- a/samples/kdbus/Makefile +++ b/samples/kdbus/Makefile @@ -1,9 +1,13 @@ # kbuild trick to avoid linker error. Can be omitted if a module is built. obj- := dummy.o +ifndef CROSS_COMPILE + hostprogs-$(CONFIG_SAMPLE_KDBUS) += kdbus-workers always := $(hostprogs-y) HOSTCFLAGS_kdbus-workers.o += -I$(objtree)/usr/include HOSTLOADLIBES_kdbus-workers := -lrt + +endif