bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/25374] New: linking to msvc import library results in invalid ID


From: draymond at foxvalley dot net
Subject: [Bug ld/25374] New: linking to msvc import library results in invalid IDT entry
Date: Sun, 12 Jan 2020 21:39:11 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=25374

            Bug ID: 25374
           Summary: linking to msvc import library results in invalid IDT
                    entry
           Product: binutils
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: draymond at foxvalley dot net
  Target Milestone: ---

I have a DLL that I built and linked with i686-w64-mingw32-gcc.  It imports
functions from two other images (an MSVC-built EXE and DLL).  I linked against
the import libraries of the MSVC images (foo.lib and bar.lib) using
'-lfoo -lbar' on the command line.  No errors were reported.  When I loaded
the MinGW DLL and called into it I experienced a crash.

The MinGW DLL was able to call functions in the MSVC DLL but when it tried to
call a function in the MSVC EXE the import library thunk pulled an invalid
address from the IAT (import address table).  It appears that the loader did
not fill in the IAT.

Examination of the .idata section in the MinGW DLL revealed that ILT and IAT
tables were present for both the MSVC DLL and EXE.  The IDT entry (which
contains pointers to the ILT and IAT) was correct for the MSVC DLL.  The IDT
entry for the MSVC EXE, however, was incorrect.  The ILT and IAT pointers
pointed to the NULL entries at the end of the tables rather than the first
entries.

For this reason 'objdump -p mingw.dll' shows the import table for the MSVC
EXE as empty.  This also explains why the loader did not fill in the IAT.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]