[Buildroot] [PATCH v2] package/uclibc: Enable compile in thumb mode configuration option

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Tue Dec 15 22:03:51 UTC 2015


Paul,

On Sun, 13 Dec 2015 19:28:40 -0600, Paul Enman wrote:
> From: penman <paul.enman at gmail.com>

This is still not good, it should be your full name here as well.

> 
> Signed-off-by: Paul Enman <paul.enman at gmail.com>
> ---
> 
> When buildroot is configured to build uClibc with thumb, it uses a workaround
>  for that relies on interworking between arm and thumb instructions and does
>  not set the config file to enable compile in thumb mode.
> 
> This patch enables buildroot to configure and compile uClibc in thumb mode.

Why do you put all these explanations after the "---" sign? They should
really be part of the commit log.

> 
>  arch/Config.in.arm       | 18 +++++++++---------
>  package/uclibc/uclibc.mk | 12 ++++++++++++
>  2 files changed, 21 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/Config.in.arm b/arch/Config.in.arm
> index 67ff384..2d318f2 100644
> --- a/arch/Config.in.arm
> +++ b/arch/Config.in.arm
> @@ -374,6 +374,15 @@ config BR2_ARM_INSTRUCTIONS_ARM
>  	  This option instructs the compiler to generate regular ARM
>  	  instructions, that are all 32 bits wide.
>  
> +config BR2_ARM_INSTRUCTIONS_THUMB2
> +	bool "Thumb2"
> +	depends on BR2_ARM_CPU_HAS_THUMB2
> +	help
> +	  This option instructions the compiler to generate Thumb2
> +	  instructions, which allows to mix 16 bits instructions and
> +	  32 bits instructions. This generally provides a much smaller
> +	  compiled binary size.
> +
>  config BR2_ARM_INSTRUCTIONS_THUMB
>  	bool "Thumb"
>  	depends on BR2_ARM_CPU_HAS_THUMB
> @@ -389,15 +398,6 @@ comment "Thumb1 is not compatible with VFP"
>  	depends on BR2_ARM_CPU_HAS_THUMB
>  	depends on !BR2_ARM_SOFT_FLOAT
>  
> -config BR2_ARM_INSTRUCTIONS_THUMB2
> -	bool "Thumb2"
> -	depends on BR2_ARM_CPU_HAS_THUMB2
> -	help
> -	  This option instructions the compiler to generate Thumb2
> -	  instructions, which allows to mix 16 bits instructions and
> -	  32 bits instructions. This generally provides a much smaller
> -	  compiled binary size.

I don't understand why you are re-ordering the options here. Why are
you doing this?

> +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2),y)
> +define UCLIBC_ARM_THUMB_CONFIG
> +	$(call KCONFIG_ENABLE_OPT,COMPILE_IN_THUMB_MODE,$(@D)/.config)

According to the help text of this uClibc option:

          Say 'y' here to force building uClibc in thumb mode.
          Say 'n' to use your compiler's default mode.

When you have BR2_ARM_INSTRUCTIONS_THUMB2, the compiler already
produces Thumb2 code by default, because the compiler is built with
--with-mode=thumb.

So could you be more specific on which cases this patch is fixing by
expanding the commit log?

> +	$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_CONTEXT_FUNCS,$(@D)/.config)

What is the relation between this and Thumb ?

Also, note that there is already some Thumb-related stuff in uclibc.mk,
which precisely forces to *not* use Thumb (1):

# Thumb build is broken with threads, build in ARM mode
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
UCLIBC_EXTRA_CFLAGS += -marm
endif

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


More information about the buildroot mailing list