2012/10/12 Marek Vasut <ma...@denx.de>: > This patch adds essential components for generation of the contents of > the linker section that is used by the linker-generated array. All of > the contents is held in a separate file, u-boot.lst, which is generated > at runtime just before U-Boot is linked. > > The purpose of this code is to especially generate the appropriate > boundary symbols around each subsection in the section carrying the > linker-generated arrays. Obviously, the interim linker code for actual > placement of the variables into the section is generated too. The > generated file, u-boot.lst, is included into u-boot.lds via the linker > INCLUDE directive in u-boot.lds . > > Adjustments are made in the Makefile and spl/Makefile so that the > u-boot.lds and u-boot-spl.lds depend on their respective .lst files. > > Signed-off-by: Marek Vasut <ma...@denx.de> > Cc: Joe Hershberger <joe.hershber...@gmail.com> > Cc: Mike Frysinger <vap...@gentoo.org> > > Cover-letter: > Linker-generated arrays (take 2) > > This is a second stab at the linker-generated array. Basically, this > concept is a generic abstraction of how u_boot_cmd works today. The > patch 2/4 contains a huge pile of documentation which should clarify > most of the questions. > > I don't see size growth, I see size fluctiation in the order of tens > of bytes with these patches applied. Subsequent patch added to this > series removes the __u_boot_cmd section completely. > --- > .gitignore | 1 + > Makefile | 19 ++++--- > config.mk | 2 + > helper.mk | 64 > ++++++++++++++++++++++++ > nand_spl/board/freescale/mpc8536ds/Makefile | 9 +++- > nand_spl/board/freescale/mpc8569mds/Makefile | 9 +++- > nand_spl/board/freescale/mpc8572ds/Makefile | 9 +++- > nand_spl/board/freescale/mx31pdk/Makefile | 9 +++- > nand_spl/board/freescale/p1010rdb/Makefile | 9 +++- > nand_spl/board/freescale/p1023rds/Makefile | 9 +++- > nand_spl/board/freescale/p1_p2_rdb/Makefile | 9 +++- > nand_spl/board/freescale/p1_p2_rdb_pc/Makefile | 9 +++- > nand_spl/board/karo/tx25/Makefile | 9 +++- > spl/.gitignore | 1 + > spl/Makefile | 8 ++- > 15 files changed, 150 insertions(+), 26 deletions(-) > create mode 100644 helper.mk > > V2: > - Rebase on top of testing/dm-kerneldoc > - Fix INCLUDE u-boot.lds in linker scripts. It didn't work with older LD, > use #include instead and make use of CPP. > - Fix placement of u-boot.lds for NAND SPL > V3: > - Rebase on top of u-boot/next > - Put u-boot.lst into include/ , so the CPP finds it easily. > > diff --git a/.gitignore b/.gitignore > index d91e91b..1ac43f2 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -38,6 +38,7 @@ > /u-boot.sha1 > /u-boot.dis > /u-boot.lds > +/u-boot.lst > /u-boot.ubl > /u-boot.ais > /u-boot.dtb > diff --git a/Makefile b/Makefile > index ab34fa7..66c8c77 100644 > --- a/Makefile > +++ b/Makefile > @@ -535,7 +535,10 @@ else > GEN_UBOOT = \ > UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \ > sed -n -e > 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\ > - cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM > $(__OBJS) \ > + UNDEF_LST=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \ > + sed -n -e > 's/.*\($(SYM_PREFIX)__u_boot_list_.*\)/-u\1/p'|sort|uniq`;\
this must be: > + sed -n -e > 's/.*\($(SYM_PREFIX)_u_boot_list_.*\)/-u\1/p'|sort|uniq`;\ otherwise $UNDEF_LST is always empty which breaks at least all MIPS boards because all _uboot_list_* symbols are discarded by the linker. I noticed that on ARM and PowerPC the content of $UNDEF_LST does not matter at all because those symbols are always linked into the final binary. I've pushed debug patches to git://git.denx.de/u-boot-mips.git test/dm-lgarray-fixed if you want to test it yourself. With those patches make and MAKEALL will fail if the _uboot_list_cmd_* symbols are missing in the System.map. BTW: you could actually drop this in patch 5/5 because it's not needed anymore: > UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \ > sed -n -e > 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\ -- Best regards, Daniel _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot