This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH 0/2] Speed up direct linking with DLLs on Windows
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: binutils at sourceware dot org
- Date: Tue, 13 Mar 2018 18:53:27 +0100
- Subject: [PATCH 0/2] Speed up direct linking with DLLs on Windows
- Authentication-results: sourceware.org; auth=none
Hi,
linking with DLLs on Windows normally involves a couple of intermediate steps:
on the executable size, an indirection layer must be added, usually by means
of preprocessor macros based on the dllimport directive for C-based languages;
on the DLL side, an import library must be generated for the DLL.
The GNU linker makes it possible to bypass both steps independently, the 1st
one thanks to the "auto-import" feature (with support from the runtime) and
the 2nd one by generating the import library on the fly during the link.
But the implementation of both features is quite inefficient for large apps
linking with many DLLs and this couple of patches is aimed at fixing that.
Tested on i686-pc-mingw32 and x86_64-pc-mingw32. We have been using this in
production for the past couple of months on large C/C++/Ada applications for
both platforms. The speedup can be up to 15x for very large executables.
Eric Botcazou (2):
Speedup part #1.
Speedup part #2.
ld/deffile.h | 10 ++
ld/deffilep.y | 100 ++++++++++++--
ld/emultempl/pe.em | 143 ++------------------
ld/emultempl/pep.em | 121 ++---------------
ld/ld.texinfo | 19 +--
ld/pe-dll.c | 374 +++++++++++++++++++++++++++++++++------------------
ld/pe-dll.h | 6 +-
ld/pep-dll.c | 5 +-
ld/pep-dll.h | 7 +-
9 files changed, 385 insertions(+), 400 deletions(-)
--
Eric Botcazou