[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