From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 15 Oct 2012 03:49:25 +0200 Subject: [U-Boot] [PATCH 1/6 V3] common: Add symbol handling for generic lists into Makefile In-Reply-To: References: <1349568385-27173-1-git-send-email-marex@denx.de> <1350073626-17024-2-git-send-email-marex@denx.de> Message-ID: <201210150349.25232.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Dear Daniel Schwierzeck, > 2012/10/12 Marek Vasut : > > 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 > > Cc: Joe Hershberger > > Cc: Mike Frysinger > > > > 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`;\ I suspect this might break blackfin. > 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. About time to fix mips ... or throw it away altogether, until it learns to do stuff right (incl. relocation). > 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. I will check it, thanks. > 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` > > ;\ Good point. Best regards, Marek Vasut