Re: [patch] AVR: Sort .text.* input sections by their name.

Alan Modra <[email protected]> Wed, 22 Jul 2026 21:24:10 +0930
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
On Tue, Jul 21, 2026 at 01:32:44PM +0200, Georg-Johann Lay wrote:
> Am 21.07.26 um 07:46 schrieb Alan Modra:
> > On Mon, Jul 20, 2026 at 08:44:51PM +0200, Georg-Johann Lay via Binutils wrote:
> > > This patch sorts the .text.* input sections by their name
> > > in order to increase code locality, e.g. for code from
> > > libgcc and AVR-LibC.  For example, libgcc puts their
> > > multiplications and helpers in .text.libgcc.mul, but
> > > without SORT the linker may locate functions related by
> > > their input section far apart, inserting function from
> > > unrelated input sections in between them.
> > 
> > While you may have found one particular case where sorting by name
> > helps, I suspect this is generally not a good idea.  I believe in
> > general you will make -ffunction-sections code locality worse by using
> > this patch.  Consider an object file with lots of small functions,
> > calls mostly within that object file.  You don't want to sort them
> > such that functions from other object files separate them.
> 
> Maybe something like this would be more appropriate then?

Yes, I think thay would be better.

>     *(EXCLUDE_FILE(*/libgcc.a: */libm.a: */libc.a:) .text.*)
>     */libgcc.a:(SORT(.text.*))
>     */libc.a:(SORT(.text.*))
>     */libm.a:(SORT(.text.*))
> 
> What I don't know is whether / works as a dir separator on
> Window-ish hosts.  If not, maybe something like

Then you'll need to experiment, or look into the source.  I'm not sure
myself without doing a little digging.

-- 
Alan Modra