Relocatable dll problems when generated by ld

Jon Thackray jont@harlequin.co.uk
Thu Jul 10 08:32:00 GMT 1997


It appears that relocatable dlls as produced by ld aren't quite right,
at least in some cases. Here is what dumpbin had to say about one I
produced.

dumpbin /imports threads.dll
Microsoft (R) COFF Binary File Dumper Version 4.20.6164
Copyright (C) Microsoft Corp 1992-1996. All rights reserved.


Dump of file threads.dll

File Type: DLL

         Section contains the following Imports

            dylan.dll
                407   KPresolve_symbolYdylan_hygiene_glitchesVdylanI
                416   KPtrueYinternalVdylan
                419   KPunboundYinternalVdylan
                 FE   KLbooleanGYdylanVdylan
                 FF   KLbooleanGYdylanVdylanW
                191   KLclassGYdylanVdylan
                192   KLclassGYdylanVdylanW
               1374   Kunbound_instance_slotYdylan_extensionsVdylanI
               15BA   _Init_dylan_
               1684   _dylan_init_thread_local
                27A   KLmm_wrapperGYinternalVdylan
                27B   KLmm_wrapperGYinternalVdylanW
               1A29   primitive_call_first_dylan_iep
               1A33   primitive_fixup_imported_dylan_data
               1A4F   primitive_register_traced_data
               1A50   primitive_remove_optionals
                3B6   KPfalseYinternalVdylan

            KPunboundYinternalVdylan
                50AC time date stamp Thu Jan 01 05:44:12 1970
                50E0 index of first forwarder reference
               threads.dll : fatal error LNK1106: invalid file or disk full: cannot seek to 0x4c4abcfe

Here's what it ought to say

dumpbin /imports j:/releases\pentium-kan/install\x86-win32\bin\threads.dll
Microsoft (R) COFF Binary File Dumper Version 4.20.6164
Copyright (C) Microsoft Corp 1992-1996. All rights reserved.


Dump of file j:/releases\pentium-kan/install\x86-win32\bin\threads.dll

File Type: DLL

         Section contains the following Imports

            dylan.dll
                1C0   KLbooleanGYdylanVdylanW
                4D7   KPtrueYinternalVdylan
               1A35   primitive_remove_optionals
                 59   Init_dylan_
                1BF   KLbooleanGYdylanVdylan
                252   KLclassGYdylanVdylan
                33B   KLmm_wrapperGYinternalVdylan
                33C   KLmm_wrapperGYinternalVdylanW
                253   KLclassGYdylanVdylanW
                477   KPfalseYinternalVdylan
                4C8   KPresolve_symbolYdylan_hygiene_glitchesVdylanI
                4DA   KPunboundYinternalVdylan
               1435   Kunbound_instance_slotYdylan_extensionsVdylanI
               19F8   primitive_call_first_dylan_iep
               1A2D   primitive_register_traced_data
               1A08   primitive_fixup_imported_dylan_data
               179E   dylan_init_thread_local

     Summary

        1000 .dyfix
        1000 .dyvar
        1000 .idata
        1000 .rdata
        1000 .reloc
        1000 .text

Apart from the problem of some funny names, and a pointer going
outside the file, there is a problem with the names Init_dylan_ and
dylan_init_thread_local both of which have an extra _ as produced by
ld. Given that these names do not appear anywhere in the input to link
or ld without the spare _, I can only assume that ld is doing some
mangling of the COFF symbol names when producing its import and export
tables, and that ld is not emulating this behaviour.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".



More information about the Cygwin mailing list