* [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
@ 2014-02-13 17:27 Markos Chandras
2014-02-13 17:30 ` Markos Chandras
2014-02-13 18:30 ` [PATCH] " David Daney
0 siblings, 2 replies; 8+ messages in thread
From: Markos Chandras @ 2014-02-13 17:27 UTC (permalink / raw)
To: linux-mips; +Cc: Markos Chandras, linux-next, linux-kernel
The Makefile is designed to use the host toolchain so it may be
unsafe to build the tests if the kernel has been configured and built
for another architecture. This fixes a build problem when the kernel has
been configured and built for the MIPS architecture but the host is
not MIPS (cross-compiled). The MIPS syscalls are only defined
if one of the following is true:
1) _MIPS_SIM == _MIPS_SIM_ABI64
2) _MIPS_SIM == _MIPS_SIM_ABI32
3) _MIPS_SIM == _MIPS_SIM_NABI32
Of course, none of these make sense on a non-MIPS toolchain and the
following build problem occurs when building on a non-MIPS host.
linux/usr/include/linux/kexec.h:50:
userspace cannot reference function or variable defined in the kernel
samples/seccomp/bpf-direct.c: In function ‘emulator’:
samples/seccomp/bpf-direct.c:76:17: error:
‘__NR_write’ undeclared (first use in this function)
Cc: linux-next@vger.kernel.org
Cc: linux-kernel@linux-mips.org
Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
---
This problem is only reproducible on the linux-next tree at the moment
---
samples/seccomp/Makefile | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
index 7203e66..f6bda1c 100644
--- a/samples/seccomp/Makefile
+++ b/samples/seccomp/Makefile
@@ -17,9 +17,14 @@ HOSTCFLAGS_bpf-direct.o += -I$(objtree)/usr/include
HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
bpf-direct-objs := bpf-direct.o
+# MIPS system calls are defined based on the -mabi that is passed
+# to the toolchain which may or may not be a valid option
+# for the host toolchain. So disable tests if target architecture
+# is mips but the host isn't.
+ifndef CONFIG_MIPS
# Try to match the kernel target.
-ifndef CONFIG_64BIT
ifndef CROSS_COMPILE
+ifndef CONFIG_64BIT
# s390 has -m31 flag to build 31 bit binaries
ifndef CONFIG_S390
@@ -40,3 +45,4 @@ endif
# Tell kbuild to always build the programs
always := $(hostprogs-y)
+endif
--
1.8.5.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-13 17:27 [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS Markos Chandras
@ 2014-02-13 17:30 ` Markos Chandras
2014-02-19 10:15 ` [PATCH v2] " Markos Chandras
2014-02-13 18:30 ` [PATCH] " David Daney
1 sibling, 1 reply; 8+ messages in thread
From: Markos Chandras @ 2014-02-13 17:30 UTC (permalink / raw)
To: linux-mips; +Cc: linux-next, linux-kernel
On 02/13/2014 05:27 PM, Markos Chandras wrote:
> The Makefile is designed to use the host toolchain so it may be
> unsafe to build the tests if the kernel has been configured and built
> for another architecture. This fixes a build problem when the kernel has
> been configured and built for the MIPS architecture but the host is
> not MIPS (cross-compiled). The MIPS syscalls are only defined
> if one of the following is true:
>
> 1) _MIPS_SIM == _MIPS_SIM_ABI64
> 2) _MIPS_SIM == _MIPS_SIM_ABI32
> 3) _MIPS_SIM == _MIPS_SIM_NABI32
>
> Of course, none of these make sense on a non-MIPS toolchain and the
> following build problem occurs when building on a non-MIPS host.
>
> linux/usr/include/linux/kexec.h:50:
> userspace cannot reference function or variable defined in the kernel
> samples/seccomp/bpf-direct.c: In function ‘emulator’:
> samples/seccomp/bpf-direct.c:76:17: error:
> ‘__NR_write’ undeclared (first use in this function)
>
> Cc: linux-next@vger.kernel.org
> Cc: linux-kernel@linux-mips.org
> Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
> ---
> This problem is only reproducible on the linux-next tree at the moment
> ---
> samples/seccomp/Makefile | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
> index 7203e66..f6bda1c 100644
> --- a/samples/seccomp/Makefile
> +++ b/samples/seccomp/Makefile
> @@ -17,9 +17,14 @@ HOSTCFLAGS_bpf-direct.o += -I$(objtree)/usr/include
> HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
> bpf-direct-objs := bpf-direct.o
>
> +# MIPS system calls are defined based on the -mabi that is passed
> +# to the toolchain which may or may not be a valid option
> +# for the host toolchain. So disable tests if target architecture
> +# is mips but the host isn't.
> +ifndef CONFIG_MIPS
> # Try to match the kernel target.
> -ifndef CONFIG_64BIT
> ifndef CROSS_COMPILE
> +ifndef CONFIG_64BIT
>
> # s390 has -m31 flag to build 31 bit binaries
> ifndef CONFIG_S390
> @@ -40,3 +45,4 @@ endif
>
> # Tell kbuild to always build the programs
> always := $(hostprogs-y)
> +endif
>
CC'ing the correct linux-kernel address. Sorry about that.
--
markos
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-13 17:27 [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS Markos Chandras
2014-02-13 17:30 ` Markos Chandras
@ 2014-02-13 18:30 ` David Daney
2014-02-14 1:33 ` Paul Gortmaker
1 sibling, 1 reply; 8+ messages in thread
From: David Daney @ 2014-02-13 18:30 UTC (permalink / raw)
To: Markos Chandras; +Cc: linux-mips, linux-next, linux-kernel
Really I think we should add a Kconfig item for this and disable the
whole directory for targets that do not support it.
David Daney
On 02/13/2014 09:27 AM, Markos Chandras wrote:
> The Makefile is designed to use the host toolchain so it may be
> unsafe to build the tests if the kernel has been configured and built
> for another architecture. This fixes a build problem when the kernel has
> been configured and built for the MIPS architecture but the host is
> not MIPS (cross-compiled). The MIPS syscalls are only defined
> if one of the following is true:
>
> 1) _MIPS_SIM == _MIPS_SIM_ABI64
> 2) _MIPS_SIM == _MIPS_SIM_ABI32
> 3) _MIPS_SIM == _MIPS_SIM_NABI32
>
> Of course, none of these make sense on a non-MIPS toolchain and the
> following build problem occurs when building on a non-MIPS host.
>
> linux/usr/include/linux/kexec.h:50:
> userspace cannot reference function or variable defined in the kernel
> samples/seccomp/bpf-direct.c: In function ‘emulator’:
> samples/seccomp/bpf-direct.c:76:17: error:
> ‘__NR_write’ undeclared (first use in this function)
>
> Cc: linux-next@vger.kernel.org
> Cc: linux-kernel@linux-mips.org
> Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
> ---
> This problem is only reproducible on the linux-next tree at the moment
> ---
> samples/seccomp/Makefile | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
> index 7203e66..f6bda1c 100644
> --- a/samples/seccomp/Makefile
> +++ b/samples/seccomp/Makefile
> @@ -17,9 +17,14 @@ HOSTCFLAGS_bpf-direct.o += -I$(objtree)/usr/include
> HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
> bpf-direct-objs := bpf-direct.o
>
> +# MIPS system calls are defined based on the -mabi that is passed
> +# to the toolchain which may or may not be a valid option
> +# for the host toolchain. So disable tests if target architecture
> +# is mips but the host isn't.
> +ifndef CONFIG_MIPS
> # Try to match the kernel target.
> -ifndef CONFIG_64BIT
> ifndef CROSS_COMPILE
> +ifndef CONFIG_64BIT
>
> # s390 has -m31 flag to build 31 bit binaries
> ifndef CONFIG_S390
> @@ -40,3 +45,4 @@ endif
>
> # Tell kbuild to always build the programs
> always := $(hostprogs-y)
> +endif
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-13 18:30 ` [PATCH] " David Daney
@ 2014-02-14 1:33 ` Paul Gortmaker
2014-02-17 13:22 ` Markos Chandras
0 siblings, 1 reply; 8+ messages in thread
From: Paul Gortmaker @ 2014-02-14 1:33 UTC (permalink / raw)
To: David Daney; +Cc: Markos Chandras, linux-mips, linux-next, linux-kernel
On Thu, Feb 13, 2014 at 1:30 PM, David Daney <ddaney.cavm@gmail.com> wrote:
> Really I think we should add a Kconfig item for this and disable the whole
> directory for targets that do not support it.
Can we do something based on CONFIG_CROSS_COMPILE vs. adding more Kconfig?
Paul.
--
>
> David Daney
>
>
>
> On 02/13/2014 09:27 AM, Markos Chandras wrote:
>>
>> The Makefile is designed to use the host toolchain so it may be
>> unsafe to build the tests if the kernel has been configured and built
>> for another architecture. This fixes a build problem when the kernel has
>> been configured and built for the MIPS architecture but the host is
>> not MIPS (cross-compiled). The MIPS syscalls are only defined
>> if one of the following is true:
>>
>> 1) _MIPS_SIM == _MIPS_SIM_ABI64
>> 2) _MIPS_SIM == _MIPS_SIM_ABI32
>> 3) _MIPS_SIM == _MIPS_SIM_NABI32
>>
>> Of course, none of these make sense on a non-MIPS toolchain and the
>> following build problem occurs when building on a non-MIPS host.
>>
>> linux/usr/include/linux/kexec.h:50:
>> userspace cannot reference function or variable defined in the kernel
>> samples/seccomp/bpf-direct.c: In function 'emulator':
>> samples/seccomp/bpf-direct.c:76:17: error:
>> '__NR_write' undeclared (first use in this function)
>>
>> Cc: linux-next@vger.kernel.org
>> Cc: linux-kernel@linux-mips.org
>> Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
>> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
>> ---
>> This problem is only reproducible on the linux-next tree at the moment
>> ---
>> samples/seccomp/Makefile | 8 +++++++-
>> 1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
>> index 7203e66..f6bda1c 100644
>> --- a/samples/seccomp/Makefile
>> +++ b/samples/seccomp/Makefile
>> @@ -17,9 +17,14 @@ HOSTCFLAGS_bpf-direct.o += -I$(objtree)/usr/include
>> HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
>> bpf-direct-objs := bpf-direct.o
>> +# MIPS system calls are defined based on the -mabi that is passed
>> +# to the toolchain which may or may not be a valid option
>> +# for the host toolchain. So disable tests if target architecture
>> +# is mips but the host isn't.
>> +ifndef CONFIG_MIPS
>> # Try to match the kernel target.
>> -ifndef CONFIG_64BIT
>> ifndef CROSS_COMPILE
>> +ifndef CONFIG_64BIT
>> # s390 has -m31 flag to build 31 bit binaries
>> ifndef CONFIG_S390
>> @@ -40,3 +45,4 @@ endif
>> # Tell kbuild to always build the programs
>> always := $(hostprogs-y)
>> +endif
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-next" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-14 1:33 ` Paul Gortmaker
@ 2014-02-17 13:22 ` Markos Chandras
2014-02-19 4:21 ` Paul Gortmaker
0 siblings, 1 reply; 8+ messages in thread
From: Markos Chandras @ 2014-02-17 13:22 UTC (permalink / raw)
To: Paul Gortmaker, David Daney; +Cc: linux-mips, linux-next
On 02/14/2014 01:33 AM, Paul Gortmaker wrote:
> On Thu, Feb 13, 2014 at 1:30 PM, David Daney <ddaney.cavm@gmail.com> wrote:
>> Really I think we should add a Kconfig item for this and disable the whole
>> directory for targets that do not support it.
>
> Can we do something based on CONFIG_CROSS_COMPILE vs. adding more Kconfig?
>
> Paul.
> --
Hi Paul,
I am not sure how this would solve anything. CONFIG_CROSS_COMPILE could
be empty, but you can still use 'make CROSS_COMPILE=mips-linux-foobar-'
or whatever to cross-compile for MIPS. So using this symbol to disable
tests does not seem right to me.
Another Kconfig symbol should be more appropriate but as far as I can
see MIPS is the only architecture which has this problem (or I may have
missed all{yes,mod}config failures from other architectures).
I still think that an "ifndef CONFIG_MIPS" is good enough for now until
more architectures suffer from this problem in the future. So far (and
looking at the git history of that file) other architectures managed to
workaround this.
--
markos
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-17 13:22 ` Markos Chandras
@ 2014-02-19 4:21 ` Paul Gortmaker
0 siblings, 0 replies; 8+ messages in thread
From: Paul Gortmaker @ 2014-02-19 4:21 UTC (permalink / raw)
To: Markos Chandras; +Cc: David Daney, linux-mips, linux-next
[Re: [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS] On 17/02/2014 (Mon 13:22) Markos Chandras wrote:
> On 02/14/2014 01:33 AM, Paul Gortmaker wrote:
> >On Thu, Feb 13, 2014 at 1:30 PM, David Daney <ddaney.cavm@gmail.com> wrote:
> >>Really I think we should add a Kconfig item for this and disable the whole
> >>directory for targets that do not support it.
> >
> >Can we do something based on CONFIG_CROSS_COMPILE vs. adding more Kconfig?
> >
> >Paul.
> >--
>
> Hi Paul,
>
> I am not sure how this would solve anything. CONFIG_CROSS_COMPILE
> could be empty, but you can still use 'make
> CROSS_COMPILE=mips-linux-foobar-' or whatever to cross-compile for
> MIPS. So using this symbol to disable tests does not seem right to
> me.
>
> Another Kconfig symbol should be more appropriate but as far as I
> can see MIPS is the only architecture which has this problem (or I
> may have missed all{yes,mod}config failures from other
> architectures).
>
> I still think that an "ifndef CONFIG_MIPS" is good enough for now
> until more architectures suffer from this problem in the future. So
> far (and looking at the git history of that file) other
> architectures managed to workaround this.
I don't have a specific preference to any one fix over another; I leave
that to the seccomp folks who review the fix. But I would like to see
it dealt with ASAP. The regression has been in linux-next for roughly a
week now, and doing that can mask us from seeing other build regressions
silently stacking up behind this one.
Thanks,
Paul.
--
>
> -- markos
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-13 17:30 ` Markos Chandras
@ 2014-02-19 10:15 ` Markos Chandras
2014-03-12 11:22 ` Markos Chandras
0 siblings, 1 reply; 8+ messages in thread
From: Markos Chandras @ 2014-02-19 10:15 UTC (permalink / raw)
To: linux-mips; +Cc: Markos Chandras, linux-next, linux-kernel
The Makefile is designed to use the host toolchain so it may be
unsafe to build the tests if the kernel has been configured and built
for another architecture. This fixes a build problem when the kernel has
been configured and built for the MIPS architecture but the host is
not MIPS (cross-compiled). The MIPS syscalls are only defined
if one of the following is true:
1) _MIPS_SIM == _MIPS_SIM_ABI64
2) _MIPS_SIM == _MIPS_SIM_ABI32
3) _MIPS_SIM == _MIPS_SIM_NABI32
Of course, none of these make sense on a non-MIPS toolchain and the
following build problem occurs when building on a non-MIPS host.
linux/usr/include/linux/kexec.h:50:
userspace cannot reference function or variable defined in the kernel
samples/seccomp/bpf-direct.c: In function ‘emulator’:
samples/seccomp/bpf-direct.c:76:17: error:
‘__NR_write’ undeclared (first use in this function)
Cc: linux-next@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
---
This build problem is only reproducible on the linux-next tree at the moment
Changes since v1:
- Rework code so native builds are allowed on MIPS
---
samples/seccomp/Makefile | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
index 7203e66..855051b 100644
--- a/samples/seccomp/Makefile
+++ b/samples/seccomp/Makefile
@@ -18,8 +18,8 @@ HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
bpf-direct-objs := bpf-direct.o
# Try to match the kernel target.
-ifndef CONFIG_64BIT
ifndef CROSS_COMPILE
+ifndef CONFIG_64BIT
# s390 has -m31 flag to build 31 bit binaries
ifndef CONFIG_S390
@@ -36,7 +36,13 @@ HOSTLOADLIBES_bpf-direct += $(MFLAG)
HOSTLOADLIBES_bpf-fancy += $(MFLAG)
HOSTLOADLIBES_dropper += $(MFLAG)
endif
-endif
-
-# Tell kbuild to always build the programs
always := $(hostprogs-y)
+else
+# MIPS system calls are defined based on the -mabi that is passed
+# to the toolchain which may or may not be a valid option
+# for the host toolchain. So disable tests if target architecture
+# is MIPS but the host isn't.
+ifndef CONFIG_MIPS
+always := $(hostprogs-y)
+endif
+endif
--
1.9.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS
2014-02-19 10:15 ` [PATCH v2] " Markos Chandras
@ 2014-03-12 11:22 ` Markos Chandras
0 siblings, 0 replies; 8+ messages in thread
From: Markos Chandras @ 2014-03-12 11:22 UTC (permalink / raw)
To: linux-mips; +Cc: linux-next, linux-kernel, akpm
On 02/19/2014 10:15 AM, Markos Chandras wrote:
> The Makefile is designed to use the host toolchain so it may be
> unsafe to build the tests if the kernel has been configured and built
> for another architecture. This fixes a build problem when the kernel has
> been configured and built for the MIPS architecture but the host is
> not MIPS (cross-compiled). The MIPS syscalls are only defined
> if one of the following is true:
>
> 1) _MIPS_SIM == _MIPS_SIM_ABI64
> 2) _MIPS_SIM == _MIPS_SIM_ABI32
> 3) _MIPS_SIM == _MIPS_SIM_NABI32
>
> Of course, none of these make sense on a non-MIPS toolchain and the
> following build problem occurs when building on a non-MIPS host.
>
> linux/usr/include/linux/kexec.h:50:
> userspace cannot reference function or variable defined in the kernel
> samples/seccomp/bpf-direct.c: In function ‘emulator’:
> samples/seccomp/bpf-direct.c:76:17: error:
> ‘__NR_write’ undeclared (first use in this function)
>
> Cc: linux-next@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Reported-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
> ---
> This build problem is only reproducible on the linux-next tree at the moment
>
> Changes since v1:
> - Rework code so native builds are allowed on MIPS
> ---
> samples/seccomp/Makefile | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile
> index 7203e66..855051b 100644
> --- a/samples/seccomp/Makefile
> +++ b/samples/seccomp/Makefile
> @@ -18,8 +18,8 @@ HOSTCFLAGS_bpf-direct.o += -idirafter $(objtree)/include
> bpf-direct-objs := bpf-direct.o
>
> # Try to match the kernel target.
> -ifndef CONFIG_64BIT
> ifndef CROSS_COMPILE
> +ifndef CONFIG_64BIT
>
> # s390 has -m31 flag to build 31 bit binaries
> ifndef CONFIG_S390
> @@ -36,7 +36,13 @@ HOSTLOADLIBES_bpf-direct += $(MFLAG)
> HOSTLOADLIBES_bpf-fancy += $(MFLAG)
> HOSTLOADLIBES_dropper += $(MFLAG)
> endif
> -endif
> -
> -# Tell kbuild to always build the programs
> always := $(hostprogs-y)
> +else
> +# MIPS system calls are defined based on the -mabi that is passed
> +# to the toolchain which may or may not be a valid option
> +# for the host toolchain. So disable tests if target architecture
> +# is MIPS but the host isn't.
> +ifndef CONFIG_MIPS
> +always := $(hostprogs-y)
> +endif
> +endif
>
CC'ing Andrew Morton as well
Ping? Is anyone willing to take this patch in his tree so we can restore
the build for allyes/allmod configs for MIPS on linux-next?
--
markos
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-03-12 11:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-13 17:27 [PATCH] samples/seccomp/Makefile: Do not build tests if cross-compiling for MIPS Markos Chandras
2014-02-13 17:30 ` Markos Chandras
2014-02-19 10:15 ` [PATCH v2] " Markos Chandras
2014-03-12 11:22 ` Markos Chandras
2014-02-13 18:30 ` [PATCH] " David Daney
2014-02-14 1:33 ` Paul Gortmaker
2014-02-17 13:22 ` Markos Chandras
2014-02-19 4:21 ` Paul Gortmaker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).