This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [Proposed patch] Huge performance regression in ld -r since binutils >= 2.21
- From: Alan Modra <amodra at gmail dot com>
- To: Romain Geissler <romain dot geissler at amadeus dot com>
- Cc: binutils at sourceware dot org
- Date: Mon, 9 Nov 2015 21:11:07 +1030
- Subject: Re: [Proposed patch] Huge performance regression in ld -r since binutils >= 2.21
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LNX dot 2 dot 10 dot 1511061715270 dot 27094 at ncegcolnx273 dot nce dot amadeus dot net> <20151109021609 dot GI17177 at bubble dot grove dot modra dot org> <alpine dot LNX dot 2 dot 10 dot 1511090942340 dot 3815 at ncegcolnx273 dot nce dot amadeus dot net>
On Mon, Nov 09, 2015 at 10:04:42AM +0100, Romain Geissler wrote:
> What's the problem with partial linking ?
Section coalescing. What is joined together is not easily separated.
- Architectures with limited branch offsets may find text sections
become so large that a branch can't reach to a section boundary,
which is where trampolines are usually placed.
- Architectures with limited data addressing may find that tables of
constants and/or addresses are too large, and schemes that cope with
this by making multiple tables, fail when one section is too large
all by itself.
- Sections are combined in ways that lose code locality. eg. with
-ffunction-sections, all C static functions called "setup" will be
placed together.
- -gc-sections works on a section basis. Finer granularity allows
more junk to be discarded.
--
Alan Modra
Australia Development Lab, IBM