diff mbox series

scripts/gcc-plugins: consistently use HOSTCC

Message ID 20210923152811.406516-1-ross.burton@arm.com (mailing list archive)
State Accepted, archived
Headers show
Series scripts/gcc-plugins: consistently use HOSTCC | expand

Commit Message

Ross Burton Sept. 23, 2021, 3:28 p.m. UTC
The GCC plugins are built using HOSTCC, but the path to the GCC plugins
headers is obtained using CC.  This can lead to interesting failures if
the host compiler and cross compiler are different versions, and the
host compiler uses the cross headers.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 scripts/gcc-plugins/Kconfig  | 2 +-
 scripts/gcc-plugins/Makefile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Kees Cook Sept. 23, 2021, 9:28 p.m. UTC | #1
On Thu, 23 Sep 2021 16:28:11 +0100, Ross Burton wrote:
> The GCC plugins are built using HOSTCC, but the path to the GCC plugins
> headers is obtained using CC.  This can lead to interesting failures if
> the host compiler and cross compiler are different versions, and the
> host compiler uses the cross headers.

(I changed this from HOSTCC to HOSTCXX to match the other invocations.)

Applied to for-next/gcc-plugins, thanks!

[1/1] scripts/gcc-plugins: consistently use HOSTCC
      https://git.kernel.org/kees/c/ef5ecb129791
Dmitry Osipenko Sept. 27, 2021, 3:10 p.m. UTC | #2
24.09.2021 00:28, Kees Cook пишет:
> On Thu, 23 Sep 2021 16:28:11 +0100, Ross Burton wrote:
>> The GCC plugins are built using HOSTCC, but the path to the GCC plugins
>> headers is obtained using CC.  This can lead to interesting failures if
>> the host compiler and cross compiler are different versions, and the
>> host compiler uses the cross headers.
> 
> (I changed this from HOSTCC to HOSTCXX to match the other invocations.)
> 
> Applied to for-next/gcc-plugins, thanks!
> 
> [1/1] scripts/gcc-plugins: consistently use HOSTCC
>       https://git.kernel.org/kees/c/ef5ecb129791
> 

I'm getting these errors when compiling ARM32 kernel using today's -next:

cc1: error: incompatible gcc/plugin versions
cc1: error: failed to initialize plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so

Both host and cross compiler are the same version:

# gcc-config -l
 [1] armv7a-hardfloat-linux-gnueabi-9.3.0
 [2] armv7a-hardfloat-linux-gnueabi-10.3.0
 [3] armv7a-hardfloat-linux-gnueabi-11.1.0 *

 [4] x86_64-pc-linux-gnu-11.1.0 *

# gcc -v
Используются внутренние спецификации.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/11.1.0/lto-wrapper
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-11.1.0-r2/work/gcc-11.1.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/11.1.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/g++-v11 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 11.1.0-r2 p3' --disable-esp --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
Модель многопоточности: posix
Supported LTO compression algorithms: zlib
gcc версия 11.1.0 (Gentoo 11.1.0-r2 p3)

# armv7a-hardfloat-linux-gnueabi-gcc -v
Используются внутренние спецификации.
COLLECT_GCC=armv7a-hardfloat-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/lto-wrapper
Целевая архитектура: armv7a-hardfloat-linux-gnueabi
Параметры конфигурации: /var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabi/gcc-11.1.0-r2/work/gcc-11.1.0/configure --host=x86_64-pc-linux-gnu --target=armv7a-hardfloat-linux-gnueabi --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/armv7a-hardfloat-linux-gnueabi/gcc-bin/11.1.0 --includedir=/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/include --datadir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0 --mandir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/man --infodir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/info --with-gxx-include-dir=/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/include/g++-v11 --with-python-dir=/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/python --enable-languages=c,c++ --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 11.1.0-r2 p3' --disable-esp --enable-libstdcxx-time --enable-poison-system-directories --with-sysroot=/usr/armv7a-hardfloat-linux-gnueabi --disable-bootstrap --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --disable-fixed-point --with-float=hard --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --enable-libgomp --disable-libssp --disable-libada --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
Модель многопоточности: posix
Supported LTO compression algorithms: zlib
gcc версия 11.1.0 (Gentoo 11.1.0-r2 p3) 


Please fix, thanks in advance.
Ross Burton Sept. 27, 2021, 3:30 p.m. UTC | #3
> I'm getting these errors when compiling ARM32 kernel using today's -next:

Hm, yes, I think I managed to misunderstand something and fixed one build whilst breaking another.

Kees, can you drop this?  I’ll come back with a v2.

Ross

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Kees Cook Sept. 27, 2021, 4:12 p.m. UTC | #4
On Mon, Sep 27, 2021 at 03:25:19PM +0000, Ross Burton wrote:
> Hm, yes, I think I managed to misunderstand something and fixed one build whilst breaking another.
> 
> Kees, can you drop this?  I’ll come back with a v2.

Sure! Dropped from -next.

-Kees

> 
> Ross
> 
> From: Dmitry Osipenko <digetx@gmail.com>
> Date: Monday, 27 September 2021 at 16:10
> To: Kees Cook <keescook@chromium.org>, Ross Burton <Ross.Burton@arm.com>, linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>, linux-hardening@vger.kernel.org <linux-hardening@vger.kernel.org>
> Subject: Re: [PATCH] scripts/gcc-plugins: consistently use HOSTCC
> 24.09.2021 00:28, Kees Cook пишет:
> > On Thu, 23 Sep 2021 16:28:11 +0100, Ross Burton wrote:
> >> The GCC plugins are built using HOSTCC, but the path to the GCC plugins
> >> headers is obtained using CC.  This can lead to interesting failures if
> >> the host compiler and cross compiler are different versions, and the
> >> host compiler uses the cross headers.
> >
> > (I changed this from HOSTCC to HOSTCXX to match the other invocations.)
> >
> > Applied to for-next/gcc-plugins, thanks!
> >
> > [1/1] scripts/gcc-plugins: consistently use HOSTCC
> >       https://git.kernel.org/kees/c/ef5ecb129791
> >
> 
> I'm getting these errors when compiling ARM32 kernel using today's -next:
> 
> cc1: error: incompatible gcc/plugin versions
> cc1: error: failed to initialize plugin ./scripts/gcc-plugins/arm_ssp_per_task_plugin.so
> 
> Both host and cross compiler are the same version:
> 
> # gcc-config -l
>  [1] armv7a-hardfloat-linux-gnueabi-9.3.0
>  [2] armv7a-hardfloat-linux-gnueabi-10.3.0
>  [3] armv7a-hardfloat-linux-gnueabi-11.1.0 *
> 
>  [4] x86_64-pc-linux-gnu-11.1.0 *
> 
> # gcc -v
> Используются внутренние спецификации.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-linux-gnu/11.1.0/lto-wrapper
> Целевая архитектура: x86_64-pc-linux-gnu
> Параметры конфигурации: /var/tmp/portage/sys-devel/gcc-11.1.0-r2/work/gcc-11.1.0/configure --host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/11.1.0 --includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include --datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0 --mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/man --infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/info --with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/include/g++-v11 --with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/11.1.0/python --enable-languages=c,c++,fortran --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 11.1.0-r2 p3' --disable-esp --enable-libstdcxx-time --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-multilib --with-multilib-list=m32,m64 --disable-fixed-point --enable-targets=all --enable-libgomp --disable-libssp --disable-libada --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
> Модель многопоточности: posix
> Supported LTO compression algorithms: zlib
> gcc версия 11.1.0 (Gentoo 11.1.0-r2 p3)
> 
> # armv7a-hardfloat-linux-gnueabi-gcc -v
> Используются внутренние спецификации.
> COLLECT_GCC=armv7a-hardfloat-linux-gnueabi-gcc
> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/lto-wrapper
> Целевая архитектура: armv7a-hardfloat-linux-gnueabi
> Параметры конфигурации: /var/tmp/portage/cross-armv7a-hardfloat-linux-gnueabi/gcc-11.1.0-r2/work/gcc-11.1.0/configure --host=x86_64-pc-linux-gnu --target=armv7a-hardfloat-linux-gnueabi --build=x86_64-pc-linux-gnu --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/armv7a-hardfloat-linux-gnueabi/gcc-bin/11.1.0 --includedir=/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/include --datadir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0 --mandir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/man --infodir=/usr/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/info --with-gxx-include-dir=/usr/lib/gcc/armv7a-hardfloat-linux-gnueabi/11.1.0/include/g++-v11 --with-python-dir=/share/gcc-data/armv7a-hardfloat-linux-gnueabi/11.1.0/python --enable-languages=c,c++ --enable-obsolete --enable-secureplt --disable-werror --with-system-zlib --enable-nls --without-included-gettext --disable-libunwind-exceptions --enable-checking=release --with-bugurl=https://bugs.gentoo.org/ --with-pkgversion='Gentoo 11.1.0-r2 p3' --disable-esp --enable-libstdcxx-time --enable-poison-system-directories --with-sysroot=/usr/armv7a-hardfloat-linux-gnueabi --disable-bootstrap --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --disable-fixed-point --with-float=hard --with-arch=armv7-a --with-float=hard --with-fpu=vfpv3-d16 --enable-libgomp --disable-libssp --disable-libada --disable-systemtap --disable-valgrind-annotations --disable-vtable-verify --disable-libvtv --without-zstd --enable-lto --with-isl --disable-isl-version-check --enable-default-pie --enable-default-ssp
> Модель многопоточности: posix
> Supported LTO compression algorithms: zlib
> gcc версия 11.1.0 (Gentoo 11.1.0-r2 p3)
> 
> 
> Please fix, thanks in advance.
> IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
diff mbox series

Patch

diff --git a/scripts/gcc-plugins/Kconfig b/scripts/gcc-plugins/Kconfig
index ab9eb4cbe33a..5dad6d780138 100644
--- a/scripts/gcc-plugins/Kconfig
+++ b/scripts/gcc-plugins/Kconfig
@@ -9,7 +9,7 @@  menuconfig GCC_PLUGINS
 	bool "GCC plugins"
 	depends on HAVE_GCC_PLUGINS
 	depends on CC_IS_GCC
-	depends on $(success,test -e $(shell,$(CC) -print-file-name=plugin)/include/plugin-version.h)
+	depends on $(success,test -e $(shell,$(HOSTCC) -print-file-name=plugin)/include/plugin-version.h)
 	default y
 	help
 	  GCC plugins are loadable modules that provide extra features to the
diff --git a/scripts/gcc-plugins/Makefile b/scripts/gcc-plugins/Makefile
index 1952d3bb80c6..a55363f84e19 100644
--- a/scripts/gcc-plugins/Makefile
+++ b/scripts/gcc-plugins/Makefile
@@ -19,7 +19,7 @@  targets += randomize_layout_seed.h randomize_layout_hash.h
 
 always-y += $(GCC_PLUGIN)
 
-GCC_PLUGINS_DIR = $(shell $(CC) -print-file-name=plugin)
+GCC_PLUGINS_DIR = $(shell $(HOSTCC) -print-file-name=plugin)
 
 plugin_cxxflags	= -Wp,-MMD,$(depfile) $(KBUILD_HOSTCXXFLAGS) -fPIC \
 		  -include $(srctree)/include/linux/compiler-version.h \