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.