------- 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.


_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to