[U-Boot] [PATCH] at91: board specific lowlevel_init.S
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Thu Oct 30 21:47:15 CET 2008
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 <20081027164336.GA1778 at game.jcrosoft.org> 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.
More information about the U-Boot
mailing list