--- Ralf Habacker <[EMAIL PROTECTED]> wrote: > Hi, > this patch fixes an cygwin ld issue (GNU ld version 2.11.92 20011001) I've > encountered while analysing the runtime linking performance for kde. > > Background: > > The ld-auto-import stuff introduces additional symbols (_nm_...) in the > import > library which are only needed for data exports. > Unfortunally this symbols are generated for every export. > Additional ld rexports imported "_nm_" symbols from other dlls, so one get > symbols like "_nm___nm__scanf" for example. > > One can say this isn't a real problem and the answer is yes ... for little > dll's. > But if you look in the below mentioned import libraries, one can save about > 30% > of the import libraries size. > For the kde 2.2.2 devel libs and base package this would save about 26MB. > And this seems to be a fact for applying this fix. > > without patch > -rwxrwxrwx 1 1002 Kein 3190016 Apr 20 19:12 libkdecore.dll.a > -rwxrwxrwx 1 1002 Kein 7526 Apr 20 19:01 libkdefakes.dll.a > -rwxrwxrwx 1 1002 Kein 5693370 Apr 20 01:16 libkdeui.dll.a > > > with patch > -rwxrwxrwx 1 1002 Kein 2126660 Apr 25 10:48 libkdecore.dll.a > -rwxrwxrwx 1 1002 Kein 1448 Apr 25 10:45 libkdefakes.dll.a > -rwxrwxrwx 1 1002 Kein 3622512 Apr 25 11:06 libkdeui.dll.a > > > $ diff pe-dll.c.orig pe-dll.c -ubBp > --- pe-dll.c.orig Wed Apr 24 09:48:59 2002 > +++ pe-dll.c Thu Apr 25 08:33:08 2002 > @@ -248,6 +250,8 @@ static autofilter_entry_type autofilter_ > /* Do __imp_ explicitly to save time. */ > { "__rtti_", 7 }, > { "__builtin_", 10 }, > + // RH: prevent generating reimported functions > + { "_nm_", 4 }, > /* Don't export symbols specifying internal DLL layout. */ > { "_head_", 6 }, > { "_fmode", 6 }, > @@ -1789,6 +1793,8 @@ make_one (exp, parent) > quick_symbol (abfd, U ("_imp__"), exp->internal_name, "", id5, BSF_GLOBAL, > 0); > /* Symbol to reference ord/name of imported > symbol, used to implement auto-import. */ > + /* RH: only for auto-imported data */ > + if (exp->flag_data) > quick_symbol (abfd, U("_nm__"), exp->internal_name, "", id6, BSF_GLOBAL, > 0); > if (pe_dll_compat_implib) > quick_symbol (abfd, U ("__imp_"), exp->internal_name, "", > > Any comments ? > > Regards > Ralf Habacker > > Yes, this looks very nice, but does it works against current CVS? I hope you can say yes. Danny.
http://messenger.yahoo.com.au - Yahoo! Messenger - A great way to communicate long-distance for FREE!