[RFC PATCH u-boot 00/12] U-Boot LTO (Sandbox + ARM Nokia RX-51)

Adam Ford aford173 at gmail.com
Sun Mar 7 04:45:02 CET 2021


On Sat, Mar 6, 2021 at 3:49 PM Marek Behun <marek.behun at nic.cz> wrote:
>
> On Sat, 6 Mar 2021 22:38:52 +0100
> Pali Rohár <pali at kernel.org> wrote:
>
> > On Saturday 06 March 2021 22:19:22 Marek Behun wrote:
> > > On Sat, 6 Mar 2021 22:00:45 +0100
> > > Pali Rohár <pali at kernel.org> wrote:
> > >
> > > > On Saturday 06 March 2021 21:54:00 Marek Behun wrote:
> > > > > On Sat, 6 Mar 2021 21:41:14 +0100
> > > > > Pali Rohár <pali at kernel.org> wrote:
> > > > >
> > > > > > On Saturday 06 March 2021 15:08:13 Tom Rini wrote:
> > > > > > > Perhaps we'll default to yes on some SoCs.  The omap3 thing is a bit
> > > > > > > odd, but we'll see what happens on real N900 hardware.
> > > > > >
> > > > > > Hello!
> > > > > >
> > > > > > Could you send me a link to git repo / branch and tell me from which
> > > > > > commit should I do tests on real N900 hardware? I will test it and let
> > > > > > you know results.
> > > > > >
> > > > > > Adding maemo ML to the loop as on the maemo list are more people with
> > > > > > N900 HW and U-Boot.
> > > > >
> > > > > https://github.com/elkablo/u-boot branch lto
> > > >
> > > > Sorry, compilation is failing :-(
> > > >
> > > > $ git clone https://github.com/elkablo/u-boot -b lto --depth=100
> > > > Cloning into 'u-boot'...
> > > > remote: Enumerating objects: 33644, done.
> > > > remote: Counting objects: 100% (33644/33644), done.
> > > > remote: Compressing objects: 100% (20116/20116), done.
> > > > remote: Total 33644 (delta 15838), reused 19947 (delta 13018), pack-reused 0
> > > > Receiving objects: 100% (33644/33644), 26.28 MiB | 10.21 MiB/s, done.
> > > > Resolving deltas: 100% (15838/15838), done.
> > > >
> > > > $ cd u-boot
> > > >
> > > > $ make CROSS_COMPILE=arm-linux-gnueabi- nokia_rx51_config
> > > >   HOSTCC  scripts/basic/fixdep
> > > >   HOSTCC  scripts/kconfig/conf.o
> > > >   YACC    scripts/kconfig/zconf.tab.c
> > > >   LEX     scripts/kconfig/zconf.lex.c
> > > >   HOSTCC  scripts/kconfig/zconf.tab.o
> > > >   HOSTLD  scripts/kconfig/conf
> > > > #
> > > > # configuration written to .config
> > > > #
> > > >
> > > > $ make CROSS_COMPILE=arm-linux-gnueabi- u-boot.bin
> > > > ...
> > > >   LTO     u-boot
> > > > /usr/lib/gcc-cross/arm-linux-gnueabi/8/../../../../arm-linux-gnueabi/bin/ld: /usr/lib/gcc-cross/arm-linux-gnueabi/8/../../../../arm-linux-gnueabi/bin/ld: DWARF error: offset (1258291444) greater than or equal to .debug_str size (676)
> > > > /usr/lib/gcc-cross/arm-linux-gnueabi/8/../../../../arm-linux-gnueabi/bin/ld: DWARF error: offset (1459618036) greater than or equal to .debug_str size (676)
> > > > /usr/lib/gcc-cross/arm-linux-gnueabi/8/../../../../arm-linux-gnueabi/bin/ld: DWARF error: could not find abbrev number 48028
> > > > /tmp/cc8l0QSQ.ltrans3.ltrans.o: in function `omap3_set_aux_cr_secure':
> > > > <artificial>:(.text+0x6eb8): undefined reference to `do_omap3_emu_romcode_call'
> > > > collect2: error: ld returned 1 exit status
> > > > make: *** [Makefile:1808: u-boot] Error 1
> > > >
> > > >
> > > > I'm using arm-linux-gnueabi-gcc version 8.3.0 which is available in
> > > > current Debian stable (Debian 10 Buster).
> > >
> > > Fixed and force-pushed, it seems ar needs the P flag that Bin Meng
> > > questioned.
> >
> > Problem is fixed, now compilation succeeded. u-boot.bin has size 243788
> > bytes.
> >
> > And seems that compiled U-Boot is working fine!
> >
> > Nokia RX-51 # version
> > U-Boot 2021.04-rc3-00338-g88d0a5042c97 (Mar 06 2021 - 22:19:08 +0100)
> >
> > arm-linux-gnueabi-gcc (Debian 8.3.0-2) 8.3.0
> > GNU ld (GNU Binutils for Debian) 2.31.1
> >
> > I can send binary files via usbtty and 'loadb' command. I can boot linux
> > kernel via 'bootm'. I can chainload to another U-Boot binary (loaded by
> > 'loadb') via 'go' command. Also 'ext4ls' and 'fatls' commands are
> > working. Also 'onenand dump bootloader' is working.
> >
> > Do you need something more to test?
> >
> > If not you can add my 'Tested-by: Pali Rohár <pali at kernel.org>' line for
> > all patches which are up to the commit 88d0a5042c97.
> >
> > Good job!
>
> Thanks.
>
> I am still working on these patches, since I have discovered some more
> defconfigs which fail to build for one reason or another.
>
> I will send a patch enabling LTO for Nokia N900 though.
>

I have my DM3730 booting now

diff --git a/arch/arm/mach-omap2/omap3/Makefile
b/arch/arm/mach-omap2/omap3/Makefile
index 91ed8ebc9f..4c96c81bf7 100644
--- a/arch/arm/mach-omap2/omap3/Makefile
+++ b/arch/arm/mach-omap2/omap3/Makefile
@@ -6,6 +6,8 @@
 # If clock.c is compiled for Thumb2, then it fails on OMAP3530
 CFLAGS_clock.o += -marm

+CFLAGS_REMOVE_board.o := $(LTO_CFLAGS)
+
 obj-y  := lowlevel_init.o

 obj-y  += board.o

The board.c file has a few functions with assembly code and some
functions called by assembly.  I wonder if there needs to be some
compiler flags added to it to ensure it boots.  I am not as
experienced with compiler directives and Makefile tweaks, but I am
willing to try stuff if people have suggestions.

However, at least for now, the omap3_logic board works.  I haven't
tried the AM3517 yet.  It's similar to the omap3 with a different
memory controller so I'm more concerned about it than the OMAP3530.
If I have time tomorrow, I'll run some tests on the AM3517.

adam

> marek


More information about the U-Boot mailing list