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 |
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
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.
> 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.
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 --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 \
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(-)