[PATCH] [LLD] Add a new PE/COFF port

Rui Ueyama ruiu at google.com
Tue May 26 12:10:39 PDT 2015


This is an initial patch for a section-based COFF linker.

The patch is 2300 lines including comments and blank lines.
Before diving into details, you may want to start from reading
README because it should give you an overview of the design.

All important things are written in the README file, so I write
summary here.

- The linker is already able to self-link on Windows.

- It's significantly faster than the existing implementation.
  The existing one takes 5 seconds to link LLD on my machine,
  while the new one only takes 1.2 seconds, even though the new
  one is not multi-threaded yet. (And a proof-of-concept multi-
  threaded version was able to link it in 0.5 seconds.)

- It uses much less memory (250MB vs. 2GB virtual memory space
  to self-host).

- IMHO the new code is much simpler and easier to read than
  the existing PE/COFF port.

http://reviews.llvm.org/D10036

Files:
  CMakeLists.txt
  COFF/CMakeLists.txt
  COFF/Chunks.cpp
  COFF/Chunks.h
  COFF/Config.h
  COFF/Driver.cpp
  COFF/Driver.h
  COFF/InputFiles.cpp
  COFF/InputFiles.h
  COFF/Memory.h
  COFF/Options.td
  COFF/README.md
  COFF/SymbolTable.cpp
  COFF/SymbolTable.h
  COFF/Symbols.cpp
  COFF/Symbols.h
  COFF/Writer.cpp
  COFF/Writer.h
  include/lld/Driver/Driver.h
  lib/Driver/UniversalDriver.cpp
  test/COFF/Inputs/hello64.asm
  test/COFF/Inputs/hello64.obj
  test/COFF/Inputs/ret42.obj
  test/COFF/Inputs/std64.lib
  test/COFF/driver.test
  test/COFF/imports.test
  tools/lld/CMakeLists.txt
  unittests/DriverTests/CMakeLists.txt

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10036.26524.patch
Type: text/x-patch
Size: 96972 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150526/f1d1d5f0/attachment.bin>


More information about the llvm-commits mailing list