bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/30367] New: Performance regression after updating to 2.40


From: streetster at gmail dot com
Subject: [Bug ld/30367] New: Performance regression after updating to 2.40
Date: Mon, 17 Apr 2023 21:12:12 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=30367

            Bug ID: 30367
           Summary: Performance regression after updating to 2.40
           Product: binutils
           Version: 2.40
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: streetster at gmail dot com
  Target Milestone: ---

Created attachment 14835
  --> https://sourceware.org/bugzilla/attachment.cgi?id=14835&action=edit
example linker file

We have found that the ld from binutils 2.40 is *significantly* slower to link
than binutils 2.39 for our use case (2+ orders of magnitude).

By bisecting the commits between 2.39 and 2.40 we identified that commit
b1eecf6f66a4a642f4cb35688213e6c1c1ffdc79 introduces the performance regression.

Our projects are N64 matching decompilations where we are linking a large
number of sections together. I have attached the .ld file used so you can see
an example of the input we are feeding to ld.

An example project can be found here: https://github.com/mkst/sssv - note that
you will need to provide your own N64 ROM.

Demonstrating the performance timings:

2.38 from Ubuntu 22.04 (same result when compiling binutils 2.38 source):

root@685e864fc2f7:/sssv# mips-linux-gnu-ld --version
GNU ld (GNU Binutils for Ubuntu) 2.38
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

root@685e864fc2f7:/sssv# time mips-linux-gnu-ld -T sssv.ld -T
undefined_syms.us.txt -T undefined_syms_auto.txt -Map build/sssv.us.map
--no-check-sections -Lbuild/lib -lultra_rom -u osViGetCurrentLine -o
build/sssv.us.elf

real    0m0.279s
user    0m0.198s
sys     0m0.081s


2.40 from Ubuntu 23.04 (same result when compiling binutils 2.40 source OR
master OR commit b1eecf6f66a4a642f4cb35688213e6c1c1ffdc79):

root@9086fed5cc72:/sssv# mips-linux-gnu-ld --version
GNU ld (GNU Binutils for Ubuntu) 2.40
Copyright (C) 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

root@9086fed5cc72:/sssv# time mips-linux-gnu-ld -T sssv.ld -T
undefined_syms.us.txt -T undefined_syms_auto.txt -Map build/sssv.us.map
--no-check-sections -Lbuild/lib -lultra_rom -u osViGetCurrentLine -o
build/sssv.us.elf

real    0m26.601s
user    0m26.516s
sys     0m0.080s


This is quite a significant performance regression, we have another example
where the time taken to link is over 5 minutes and is a blocker to using
binutils 2.40.

If there is a way to restructure our .ld file to avoid hitting this issue, we
would definitely be open to that.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]