[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