bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/11168] ld.exe CPU time >75 hours


From: amodra at gmail dot com
Subject: [Bug ld/11168] ld.exe CPU time >75 hours
Date: 17 Jan 2010 14:59:34 -0000

------- Additional Comments From amodra at gmail dot com  2010-01-17 14:59 
-------
$ grep '\.section' main2.s | sort | uniq | wc -l
48940

So, we have a large number of sections.  COFF uses a 16 bit field in the file
symbol structure to store section numbers.  BFD code in various places tests
that the value is non-negative, so we only support 32k sections.  This results
in a large number of symbols not being recognised properly.  Symbols that are
defined are seen as undefined, and the linker emits a large number of errors, 
eg.
main2.o:main2.cpp:(.text$_ZN5ClassILi0ELi8EEC2Ev[__ZN5ClassILi0ELi8EEC2Ev]+0x8):
undefined reference to `vtable for Class<0, 8>'

It turns out that printing these errors takes a huge amount of time due to BFD
trying to find line numbers for the error.  This, and other parts of the COFF
support use algorithms that are O(num_syms)^2*O(num_sections).

I didn't leave my link process running long enough to see if it terminated. 
Obviously, we don't support more than 32k sections for COFF (and hence PE).

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=11168

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

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