Suppose we have an autotools project that looks like it is using the cross compiler but is actually reaching out to the host compiler instead. On an x86-64 build, you may not even notice. To be able to prevent this, this patch implements a new gcc warning "Wnot-cross-compiler". The intention here is to intentionally break a build if we are not using a cross-compiler when one is expected to be used.
Expected usage: " -Wnot-cross-compiler -Werror=not-cross-compiler " [YOCTO #11587] Signed-off-by: Juro Bystricky <juro.bystri...@intel.com> --- meta/recipes-devtools/gcc/gcc-7.1.inc | 1 + .../gcc/gcc-7.1/0051-warn-not-cross-compiler.patch | 39 ++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 meta/recipes-devtools/gcc/gcc-7.1/0051-warn-not-cross-compiler.patch diff --git a/meta/recipes-devtools/gcc/gcc-7.1.inc b/meta/recipes-devtools/gcc/gcc-7.1.inc index 3f1c06d..e9b1f21 100644 --- a/meta/recipes-devtools/gcc/gcc-7.1.inc +++ b/meta/recipes-devtools/gcc/gcc-7.1.inc @@ -75,6 +75,7 @@ SRC_URI = "\ file://0048-gcc-Enable-static-PIE.patch \ file://0049-libsanitizer-Use-stack_t-instead-of-struct-sigaltsta.patch \ file://0050-replace-struct-ucontext-with-ucontext_t.patch \ + file://0051-warn-not-cross-compiler.patch \ ${BACKPORTS} \ " BACKPORTS = "\ diff --git a/meta/recipes-devtools/gcc/gcc-7.1/0051-warn-not-cross-compiler.patch b/meta/recipes-devtools/gcc/gcc-7.1/0051-warn-not-cross-compiler.patch new file mode 100644 index 0000000..78671ed --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-7.1/0051-warn-not-cross-compiler.patch @@ -0,0 +1,39 @@ + +This patch implements an additional gcc command line option warning +"Wnot-cross-compiler". The option (if specified) will simply generate +a warning if gcc being used is not a cross-compiler. + +Upstream-Status: Pending +Signed-off-by: Juro Bystricky <juro.bystri...@intel.com> + + +diff --git a/gcc/common.opt b/gcc/common.opt +--- a/gcc/common.opt ++++ b/gcc/common.opt +@@ -801,6 +801,10 @@ + Common Var(warn_vector_operation_performance) Warning + Warn when a vector operation is compiled outside the SIMD. + ++Wnot-cross-compiler ++Common Warning ++Warn when not-cross-compiling. ++ + Xassembler + Driver Separate + +diff --git a/gcc/opts.c b/gcc/opts.c +--- a/gcc/opts.c ++++ b/gcc/opts.c +@@ -2334,6 +2334,12 @@ + opts->x_flag_ipa_icf_variables = value; + break; + ++ case OPT_Wnot_cross_compiler: ++#ifndef CROSS_DIRECTORY_STRUCTURE ++ warning (OPT_Wnot_cross_compiler, "Not using cross-compiler!"); ++#endif ++ break; ++ + default: + /* If the flag was handled in a standard way, assume the lack of + processing here is intentional. */ -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core