
Hi,
2011/1/6 Nobuhiro Iwamatsu iwamatsu@nigauri.org:
Linker needs to use the proper endian/bfd flags even when doing partial linking. LDFLAGS_u-boot sets linker option which is called it when U-boot is built (u-boot final). LDFLAGS sets necessary option by partial linking (use in cmd_link_o_target).
CC: Mike Frysinger vapier@gentoo.org Signed-off-by: Nobuhiro Iwamatsu iwamatsu@nigauri.org
This patch breaks compilation for some ARM based boards, I get for example this error: =============================================================== make -C examples/standalone all make[1]: Entering directory `/home/bohm/Workarea/u-boot/examples/standalone' arm-none-eabi-gcc -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0x23f00000 -I/home/bohm/Workarea/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /home/bohm/x-tools/CodeSourcery/arm-2009q1/bin/../lib/gcc/arm-none-eabi/4.3.3/include -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork -march=armv5te -Wall -Wstrict-prototypes -fno-stack-protector -fno-toplevel-reorder -o hello_world.o hello_world.c -c arm-none-eabi-gcc -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0x23f00000 -I/home/bohm/Workarea/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /home/bohm/x-tools/CodeSourcery/arm-2009q1/bin/../lib/gcc/arm-none-eabi/4.3.3/include -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork -march=armv5te -Wall -Wstrict-prototypes -fno-stack-protector -fno-toplevel-reorder -o stubs.o stubs.c -c arm-none-eabi-ld -pie -r -o libstubs.o stubs.o
----> arm-none-eabi-ld: -r and -shared may not be used together
make[1]: *** [libstubs.o] Error 1 make[1]: Leaving directory `/home/bohm/Workarea/u-boot/examples/standalone' make: *** [examples/standalone] Error 2 ===============================================================
It seems that the ' -pie' and '-r' flags may not be used together.
The ' -r' flag is defined at line 263 in config.mk: cmd_link_o_target = $(if $(strip $1),\ $(LD) $(LDFLAGS) -r -o $@ $1,\ rm -f $@; $(AR) rcs $@ )
This patch now includes $(LDFLAGS) which was previously not included:
# Location of a usable BFD library, where we define "usable" as @@ -259,7 +261,7 @@ $(obj)%.s: %.c
# If the list of objects to link is empty, just create an empty built-in.o cmd_link_o_target = $(if $(strip $1),\
$(LD) -r -o $@ $1 ,\
$(LD) $(LDFLAGS) -r -o $@ $1,\ rm -f $@; $(AR) rcs $@ )
Since it is included the following flag is added from arch/arm/config.mk: PLATFORM_LDFLAGS += -pie
This results in the error as listed above.
Any suggestions how to fix it?
Kind regards,
Remy