[yocto] [linux-yocto-3.2][PATCH] arm: Fix linking errors with binutils 2.23

Bruce Ashfield bruce.ashfield at windriver.com
Wed Aug 22 12:24:20 PDT 2012


On 12-08-22 05:28 AM, Khem Raj wrote:
> We end up with linking errors on arm using latest binutils
> because we are linking asm generated objects which use -march=all
> generating different attributes into object and use some c objects
> e.g. misc.o which use different march therefore generating a
> different set of attributes into object. When linking is done
> the ld complains since it finds incompatible attributes and ends
> up with errors like
>
> error: DIV usage mismatch between arch/arm/boot/compressed/head.o and
> output
> error: DIV usage mismatch between arch/arm/boot/compressed/misc.o and
> output
> error: DIV usage mismatch between arch/arm/boot/compressed/decompress.o
> and output
> error: DIV usage mismatch between arch/arm/boot/compressed/lib1funcs.o
> and output
>
> This patch fixes it by providing correct march to assembly routines
> which than matches with output of ld.

Looks good to me. I'll queue it here with a few other fixes and do
a test build against my existing binutils.

I haven't looked yet, will 3.4+ need the same fix ?

Cheers,

Bruce

>
> Signed-off-by: Khem Raj<raj.khem at gmail.com>
> ---
>   arch/arm/boot/compressed/Makefile |    4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index 21f56ff..05d9cb3 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -5,7 +5,7 @@
>   #
>
>   OBJS		=
> -
> +plus_sec :=	$(call as-instr,.arch_extension sec,+sec)
>   # Ensure that MMCIF loader code appears early in the image
>   # to minimise that number of bocks that have to be read in
>   # order to load it.
> @@ -123,7 +123,7 @@ KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
>   endif
>
>   ccflags-y := -fpic -fno-builtin -I$(obj)
> -asflags-y := -Wa,-march=all
> +asflags-y := -Wa,-march=armv7-a$(plus_sec)
>
>   # Supply kernel BSS size to the decompressor via a linker symbol.
>   KBSS_SZ = $(shell size $(obj)/../../../../vmlinux | awk 'END{print $$3}')




More information about the yocto mailing list