[U-Boot] [PATCH 2/2] x86: Allow 32-bit toolchain to compile 64-bit U-Boot

Andy Shevchenko andy.shevchenko at gmail.com
Sun Jul 23 10:01:01 UTC 2017


On Sun, Jul 23, 2017 at 12:37 PM, Bin Meng <bmeng.cn at gmail.com> wrote:
> Attempting to use a 32-bit toolchain (eg: kernel.org 4.9
> i386-linux-gcc) to compile 64-bit U-Boot (qemu-x86_64_defconfig)
> fails with the following errors:
>
>   arch/x86/cpu/intel_common/microcode.c:79:2: error: PIC register
>   clobbered by 'ebx' in 'asm'
>
> The issue is with 32-bit toolchain compiling sources for 64-bit.
> Using a 64-bit toolchain (eg: kernel.org 4.9 x86_64-linux-gcc)
> works out of the box. When compiling sources for 32-bit, '-m32' is
> passed to the toolchain (no matter it's 32-bit or 64-bit).
>
> Now do the same thing, passing '-m64' to the toolchain for 64-bit
> sources build.
>

The subject is a bit cofusing. As I read (and as I understand) we need
to have 64-bit toolchain available (multilib package and so on).
Basically what you do is "enforcing 64-bit toolchain to be used". Right?

> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
>  arch/x86/config.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/config.mk b/arch/x86/config.mk
> index 043425e..8835dcf 100644
> --- a/arch/x86/config.mk
> +++ b/arch/x86/config.mk
> @@ -26,7 +26,7 @@ endif
>  ifeq ($(IS_32BIT),y)
>  PLATFORM_CPPFLAGS += -march=i386 -m32
>  else
> -PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common
> +PLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -m64
>  endif
>
>  PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden
> --
> 2.9.2
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot



-- 
With Best Regards,
Andy Shevchenko


More information about the U-Boot mailing list