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

             Bug #: 14339
           Summary: MinGW ld omits stubs when linking delay import library
                    and using __declspec(dllimport)
           Product: binutils
           Version: 2.22
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: unassig...@sourceware.org
        ReportedBy: thfa...@gmx.de
    Classification: Unclassified


Created attachment 6520
  --> http://sourceware.org/bugzilla/attachment.cgi?id=6520
Test case source

Delay import libraries contain stubs in the form of:
_WSAStartup@8:
  00000000: FF 25 00 00 00 00  jmp         dword ptr [.idata$5]
  00000006: B8 00 00 00 00     mov         eax,offset .idata$5
  0000000B: E9 00 00 00 00     jmp         ___tailMerge_libws2_32_delayed_a


These are then referenced in the corresponding .idata section à la:
RAW DATA #5
  00000000: 06 00 00 00                                      ....

RELOCATIONS #5
                                                Symbol    Symbol
 Offset    Type              Applied To         Index     Name
 --------  ----------------  -----------------  --------  ------
 00000000  DIR32                      00000006         0  .text


When using __declspec(dllimport), only the symbol in .idata$5
(__imp__WSAStartup@8) is referenced, not _WSAStartup@8 in the .text section.
This apparently causes the linker to omit the stub, and turn the corresponding
relocation into a no-op (i.e. the application will call the address 6).

--whole-archive has no effect on this, the stubs are still omitted.
Linking the individual object files as extracted from the library DOES produce
correct output, though.
Adding '-u _WSAStartup@8' to the command line also seems to work.

I've made a small test case including an analysis of the generated code.

The source for this test case is attached. It can also (including compiled
binaries and disassembly) be found at:
http://thfabba.ath.cx/~thfabba/pub/delaylib/

I've tested this with ld version 2.20.51.20091222 (ReactOS Build Environment),
as well as MinGW's 2.22 and MinGW-w64's 2.22.51.20111217.

Possibly, but not necessarily related to bug 12614.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

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

Reply via email to