[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-cygwin
Subject: Re: ld seg fault while creating import library
From: Pieter Thysebaert <pieter.thysebaert () intec ! rug ! ac ! be>
Date: 2002-08-19 6:26:05
[Download RAW message or body]
On Friday 16 August 2002 13:37, Ralf Habacker wrote:
> Hi all,
>
> Nicholas Wourms has encountered a segfault on linking qt3, while ld creates
> the import library.
>
> Currently I'm investigating some time to fix this and the first results are
> the following:
>
> ld uses the function pe_dll_generate_implib (def, impfilename) in pe-dll.c
> to create the import library.
> For each object file in the import library a bfd object is created. In
> recent releases this function eats about 30 KB for each object file. The
> qt2 import library contains 12078 objectfile, which needs 350 MB only for
> generating the import library and causes the seg fault in the descripted
> case.
>
> $ nm /usr/local/lib/qt2/lib/libqt.dll.a | grep ".o:" | wc -l
> 12078
>
> The related functions are in pe-dll.c
>
> pe_dll_generate_implib(def, impfilename)
> make_one (exp, parent)
> bfd_create()
> _bfd_new_bfd()
> !!!!!!!!!!!!!!!!!!!!!!!!!!! These are the functions in which the memory is
> allocated
> bfd_zmalloc()
> objalloc_create()
> bfd_hash_table_init()
> !!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> With the help of a little malloc debugger under
> http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/kde-cygwin/tools/mem_watch/w
>hich i can see, that the memory used by make_one() and subfunctions need
> tweny kilo bytes more than the kde-cygwin binutils, which is based on the
> official 20011102 release. It seems that there are two additional malloc
> calls in the objalloc related functions in libiberty.
>
> make_one (exp, parent)
>
> new old
> malloc(4064)=1ade29d8 [00487a11] malloc(4064)=0e7e5ec8
> [0047bb95] malloc(20)=1ade39c0 [0047ea54] malloc(20)=0e7e6eb0
> [00472e1c] malloc(152)=1ade39d8 [00440fac] malloc(132)=0e7e6ec8
> [0043d7cc] malloc(12)=1ade3a78 [004878b0] malloc(12)=0e7e6f50
> [0047bad1] malloc(4064)=1ade3a88 [004878d1]
> malloc(4064)=0e7e6f60 [0047bae7] malloc(12)=1ade4a70 [004878b0]
>
> !malloc(4064)=1ade4a80 [004878d1]
> !malloc(16216)=1ade5a68 [004879b4]
>
> malloc(8)=1ade99c8 [00440f28] malloc(8)=0e7e7f48 [0043d748]
> malloc(44)=1ade99d8 [0047ea54] malloc(44)=0e7e7f58 [00472e1c]
> malloc(24)=1ade9a08 [0047ea54] malloc(35)=0e7e7f88 [00472e1c]
> malloc(18)=1ade9a28 [0047ea54] malloc(18)=0e7e7fb0 [00472e1c]
> malloc(30)=1ade9a40 [0047ea54] malloc(41)=0e7e7fc8 [00472e1c]
> malloc(8)=1ade9a68 [0047ea54] malloc(8)=0e7e7ff8 [00472e1c]
> malloc(160)=1ade9a78 [0047ea54] malloc(160)=0e7e8008 [00472e1c]
> malloc(8)=1ade9b20 [0047ea54] malloc(8)=0e7e80b0 [00472e1c]
> malloc(4)=1ade9b30 [0047ea54] malloc(4)=0e7e80c0 [00472e1c]
> malloc(160)=1ade9b40 [0047ea54] malloc(160)=0e7e80d0 [00472e1c]
> malloc(8)=1ade9be8 [0047ea54] malloc(8)=0e7e8178 [00472e1c]
> malloc(4)=1ade9bf8 [0047ea54] malloc(4)=0e7e8188 [00472e1c]
> malloc(160)=1ade9c08 [0047ea54] malloc(160)=0e7e8198 [00472e1c]
> malloc(8)=1ade9cb0 [0047ea54] malloc(8)=0e7e8240 [00472e1c]
> malloc(4)=1ade9cc0 [0047ea54] malloc(4)=0e7e8250 [00472e1c]
> malloc(160)=1ade9cd0 [0047ea54] malloc(160)=0e7e8260 [00472e1c]
> malloc(8)=1ade9d78 [0047ea54] malloc(8)=0e7e8308 [00472e1c]
> malloc(26)=1ade9d88 [0047ea54] malloc(36)=0e7e8318 [00472e1c]
>
> !malloc(384)=1ade9da8 [00440f67]
> !malloc(20)=1adea030 [00440f28]
>
> Any ideas ?
No ideas to solve this, but I wanted to say that I have encountered a similar
problem when I tried to build the wxWindows library from CVS using a
self-made linux-to-mingw32 cross-compiler (using gcc 3.1, mingw runtime 2.0 ,
binutils 2.12.90: ld uses a LOT of memory (300MB) when trying to link the dll
or import lib to the dll and then dies; gcc returns with an "internal
compiler error".
That and a whole binutils rant was on the crossgcc mailing list.
Pieter
_______________________________________________
kde-cygwin mailing list
kde-cygwin@mail.kde.org
http://mail.kde.org/mailman/listinfo/kde-cygwin
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic