This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Proposed patch] Huge performance regression in ld -r since binutils >= 2.21


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]