All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eugeniu Rosca <roscaeugeniu@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] Making U-Boot smaller
Date: Wed, 22 May 2019 18:50:36 +0200	[thread overview]
Message-ID: <20190522165036.GA9229@x230> (raw)
In-Reply-To: <20190522150954.GT22232@bill-the-cat>

Hi Tom,

On Wed, May 22, 2019 at 11:09:54AM -0400, Tom Rini wrote:
> On Wed, May 22, 2019 at 04:15:47PM +0200, Eugeniu Rosca wrote:
> > cc: Yamada-san
> > 
> > I dream of a (Kconfig/Kbuild-assisted) bloaty-like output [1] which
> > would point out the culprit configs. This is hardly achievable, but
> > looks good on the paper!
> > 
> >       CONFIG           FILE SIZE
> >   ------------       --------------
> >   CONFIG_FEATURE_A    10.7Mi  37.1%
> >   CONFIG_FEATURE_B    5.39Mi  18.6%
> >   CONFIG_FEATURE_C    4.48Mi  15.5%
> >   CONFIG_FEATURE_D    1.86Mi   6.4%
> >   CONFIG_FEATURE_E    1.67Mi   5.8%
> >   CONFIG_FEATURE_F    1.61Mi   5.6%
> >   CONFIG_FEATURE_G     856Ki   2.9%
> >   CONFIG_FEATURE_H     470Ki   1.6%
> >   ....
> >   TOTAL               28.9Mi 100.0%
> > 
> > [1] https://github.com/google/bloaty
> 
> This is relatively easy to do today, with buildman and a local commit to
> enable/disable CONFIG_FEATURE_A.

Being a valid choice doesn't make it necessarily appealing, especially
with 512 [1] configurations enabled in sandbox and knowing that U-Boot
is not really randconfig-grade [2] (the latter is being improved).

What I was alluding to is embedding the Kconfig symbol names into the
ELF objects, such that utilities like 'nm' (currently producing a nice
output of symbol sizes [3]) can also be made capable to report the exact
Kconfig symbols contributing to the size of the objects passed as input.
That would be, in my opinion, mind-blowingly useful.

[1] grep "CONFIG.*=" .config | wc -l
512

[2] https://patchwork.ozlabs.org/patch/1074420/

[3] nm --print-size --size-sort --radix=d ./drivers/clk/clk-uclass.o
0000000000000421 0000000000000024 T clk_free
0000000000000961 0000000000000027 T clk_disable
0000000000000888 0000000000000027 T clk_enable
0000000000000000 0000000000000027 T clk_request
0000000000000503 0000000000000027 T clk_set_parent
0000000000000445 0000000000000029 T clk_get_rate
0000000000000474 0000000000000029 T clk_set_rate
...

-- 
Best regards,
Eugeniu.

  reply	other threads:[~2019-05-22 16:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-21 16:43 [U-Boot] Making U-Boot smaller Simon Glass
2019-05-21 16:56 ` Jagan Teki
2019-05-21 19:32   ` Marek Vasut
2019-05-21 19:53     ` Tom Rini
2019-05-21 19:54       ` Marek Vasut
2019-05-21 19:59         ` Tom Rini
2019-05-21 20:01           ` Marek Vasut
2019-05-21 20:10             ` Tom Rini
2019-05-21 20:13               ` Marek Vasut
2019-05-22 14:15                 ` Eugeniu Rosca
2019-05-22 15:09                   ` Tom Rini
2019-05-22 16:50                     ` Eugeniu Rosca [this message]
2019-05-22 18:50                       ` Tom Rini
2019-05-24 19:59                         ` Eugeniu Rosca
2019-05-21 19:31 ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190522165036.GA9229@x230 \
    --to=roscaeugeniu@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.