[Buildroot] [PATCH] libnspr: only enable thumb if BR2_ARM_INSTRUCTIONS_THUMB2
Peter Korsgaard
peter at korsgaard.com
Tue Jan 19 22:00:35 UTC 2016
>>>>> "Arnout" == Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be> writes:
> libnspr currently passes --enable-thumb2 if the CPU has thumb
> instructions. This option will pass -mthumb to the compiler. However,
> if an external multilib toolchain is used that has a thumb-specific
> variant (e.g. Sourcery), it will try to use that one. But we only copy
> a single variant to the sysroot, so the build will fail with:
> .../arm-none-linux-gnueabi/bin/ld: cannot find crti.o: No such file or directory
> ...
> collect2: error: ld returned 1 exit status
> ../../config/rules.mk:303: recipe for target 'libnspr4.so' failed
> In order to fix this, only enable thumb2 when we are really using
> thumb2. Note that it is still necessary to pass this option, cfr.
> http://autobuild.buildroot.org/results/d7323831372050e425a34f5104a46d8cbd6be214
> We could have chosen to still enable thumb2 with the internal toolchain.
> However, that would mean we create a discrepancy between the result of
> building with the same (buildroot) toolchain when it is used as an
> internal one or as an external one. To avoid potentially surprising
> results, just stick to the option chosen for the rest of the rootfs.
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
> ---
> Build-tested with various combinations of thumb, thumb2, floating point,
> and external toolchains. I didn't test with an internal toolchain but
> what could go wrong there? :-)
> Changes v2: added missing build failure output to commit message
> ---
> package/libnspr/libnspr.mk | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff --git a/package/libnspr/libnspr.mk b/package/libnspr/libnspr.mk
> index 8e58986..c9bfa0c 100644
> --- a/package/libnspr/libnspr.mk
> +++ b/package/libnspr/libnspr.mk
> @@ -50,7 +50,7 @@ LIBNSPR_INSTALL_STAGING_OPTS = DESTDIR=$(STAGING_DIR) LIBRARY= install
> endif
> ifeq ($(BR2_arm),y)
> -ifeq ($(BR2_ARM_CPU_HAS_THUMB2),y)
> +ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB2),y)
> LIBNSPR_CONF_OPTS += --enable-thumb2
Thanks. The conclusion was that --enable-thumb2 just caused it to pass
-mthumb in CFLAGS (and --disable-thumb2 to pass -marm), right?
What should we do for classic ARM cores in thumb1 mode? There we afaik
also want to use --enable-thumb2, but it could potentially break in
future if the option is changed to do something more than this.
--
Bye, Peter Korsgaard
More information about the buildroot
mailing list