Dear Jean, Jean-Christophe PLAGNIOL-VILLARD wrote: > On 12:45 Tue 28 Oct , Ilko Iliev wrote: > >> Dear Jean-Christophe, >> >> Jean-Christophe PLAGNIOL-VILLARD wrote: >> >>> On 22:20 Mon 27 Oct , Wolfgang Denk wrote: >>> >>> >>>> Dear Jean-Christophe PLAGNIOL-VILLARD, >>>> >>>> In message <[EMAIL PROTECTED]> you wrote: >>>> >>>> >>>>>> I've found that weak functions are only overwritten if the overwriting >>>>>> function is in a file (not archive) that has strongly-linked symbols. >>>>>> Admittedly, I've only done this with C code but expect that the assembly >>>>>> equivalent works the same way. The idea of using weak functions seems >>>>>> great, but suffers from some pretty cumbersome weaknesses :) >>>>>> >>>>>> >>>>> I've found a solution but it's need to update the all u-boot linking >>>>> method. >>>>> >>>>> Move from AR to LD. >>>>> >>>>> >>>> Well, that is exactly what Ben just described. >>>> >>>> >>>> >>>>> Which need some work to fit on all boards. >>>>> >>>>> >>>> Well, actually only the file lowlevel_init.o needs to be treated that >>>> way, so the needed hcanges look not too complicated to me. >>>> >>>> >>> I'll send a patch to move cpu/at91 to it only and an example to use it with >>> board dir >>> >>> > Could you try this > > > diff --git a/config.mk b/config.mk > index 5a9334c..0d81ab3 100644 > --- a/config.mk > +++ b/config.mk > @@ -80,6 +80,9 @@ STRIP = $(CROSS_COMPILE)strip > OBJCOPY = $(CROSS_COMPILE)objcopy > OBJDUMP = $(CROSS_COMPILE)objdump > RANLIB = $(CROSS_COMPILE)RANLIB > +cmd_link_o_target = $(if $(strip $(2)),\ > + $(LD) $(PLATFORM_LDFLAGS) -r -o $(1) $(2) ,\ > + rm -f $@; $(AR) rcs $(1)) > > ######################################################################### > > diff --git a/cpu/arm926ejs/at91/Makefile b/cpu/arm926ejs/at91/Makefile > index 2d2a888..662657c 100644 > --- a/cpu/arm926ejs/at91/Makefile > +++ b/cpu/arm926ejs/at91/Makefile > @@ -36,7 +36,7 @@ OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS-y)) > all: $(obj).depend $(LIB) > > $(LIB): $(OBJS) > - $(AR) $(ARFLAGS) $@ $(OBJS) > + $(call cmd_link_o_target, $@, $(OBJS)) > > ######################################################################### > > > and modify your board lib build by > - $(AR) $(ARFLAGS) $@ $(OBJS) > + $(call cmd_link_o_target, $@, $(OBJS)) > > Best Regards, > J. >
Your patch doesn't resolve the problem - the lowlevel_init.o is still a part of libat91.s: arm-elf-ld -r -o libat91.a lowlevel_init.o timer.o spi.o usb.o make[1]: Leaving directory `/home/develop/u-boot-last/u-boot/u-boot-2008-11-03/u-boot/cpu/arm926ejs/at91' The attribute ".weak" works only if the file where is the weak function is not in a library. I'm not familiar with the makefile scripting, but I can't see a possibility to link both lowlevel_init.o files into the u-boot.elf without to change the main Makefile. I think my last patch is a possible solution, but I don't know if the following is a potential problem: - $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@)) + $(MAKE) -C cpu/$(CPU) I haven't the possibility to compile U-BOOT for all targets - maybe someone can test all targets with my last patch (email from 28.10.2008). -- Mit freundlichen Gruessen/With best regards, Ilko Iliev Ronetix Development Tools GmbH CPU Modules, JTAG/BDM Emulators and Flash Programmers Waidhausenstrasse 13/5, 1140 Vienna, Austria E-Mail: [EMAIL PROTECTED]; Web: www.ronetix.at _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot