llvm-project/lld/COFF
Tom Tan 7c81649219 [COFF] Align ARM64 range extension thunks at instruction boundary
RangeExtensionThunkARM64 is created for out-of-range branches on Windows ARM64
because branch instructions has limited bits to encode target address.
Currently, RangeExtensionThunkARM64 is appended to its referencing COFF section
from object file at link time without any alignment requirement, so if size of
the preceding COFF section is not aligned to instruction boundary (4 bytes),
RangeExtensionThunkARM64 will emit thunk instructions at unaligned address
which is never a valid branch target on ARM64, and usually triggers invalid
instruction exception when branching to it.

This PR fixes it by requiring such thunks to align at 4 bytes.

Differential revision: https://reviews.llvm.org/D72473
2020-01-10 19:03:17 -08:00
..
CMakeLists.txt [ThinLTO] Pass CodeGenOpts like UnrollLoops/VectorizeLoop/VectorizeSLP 2020-01-09 21:13:11 -08:00
Chunks.cpp [COFF] Rename variale references in comments after VariableName -> variableName change 2019-07-16 08:26:38 +00:00
Chunks.h [COFF] Align ARM64 range extension thunks at instruction boundary 2020-01-10 19:03:17 -08:00
Config.h Implement /driver, /driver:wdm and /driver:uponly 2019-11-14 13:07:56 +09:00
DLL.cpp dummy comment typo fix commit to cycle the bots 2019-10-10 02:04:56 +00:00
DLL.h [COFF] Share the tail in delayimport symbol thunks 2019-07-11 21:19:11 +00:00
DebugTypes.cpp Use lld::make<T> to make TpiSource objects 2019-11-20 13:14:44 +09:00
DebugTypes.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Driver.cpp LLD: Don't use the stderrOS stream in link before it's reassigned. 2019-11-21 10:55:03 -05:00
Driver.h lld-link: Add a flag /lldignoreenv that makes lld-link ignore env vars. 2019-09-13 13:13:52 +00:00
DriverUtils.cpp LLD: Don't use the stderrOS stream in link before it's reassigned. 2019-11-21 10:55:03 -05:00
ICF.cpp dummy comment typo fix commit to cycle the bots 2019-10-10 02:04:56 +00:00
ICF.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
InputFiles.cpp [lld] Fix -Wrange-loop-analysis warnings 2020-01-01 15:41:20 -08:00
InputFiles.h [COFF] Avoid CodeView include in header 2019-11-14 14:27:48 -08:00
LTO.cpp [COFF] Wrap definitions in namespace lld { namespace coff {. NFC 2019-10-10 11:27:58 +00:00
LTO.h [lld-link] implement -thinlto-index-only 2019-07-11 18:03:14 +00:00
MapFile.cpp [COFF] Wrap definitions in namespace lld { namespace coff {. NFC 2019-10-10 11:27:58 +00:00
MapFile.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MarkLive.cpp Fix odd variable names. 2019-07-12 06:12:27 +00:00
MarkLive.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MinGW.cpp [COFF] Wrap definitions in namespace lld { namespace coff {. NFC 2019-10-10 11:27:58 +00:00
MinGW.h [COFF] Don't include llvm/LTO/LTO.h in a header 2019-11-14 13:47:18 -08:00
Options.td Implement /driver, /driver:wdm and /driver:uponly 2019-11-14 13:07:56 +09:00
PDB.cpp [PDB] Print the most redundant type record indices with /summary 2020-01-02 16:10:36 -08:00
PDB.h [LLD] [COFF] Wrap file location pair<StringRef,int> in Optional<>. NFC. 2019-10-15 09:18:18 +00:00
README.md
SymbolTable.cpp [LLD] [COFF] Fix post-commit suggestions for absolute symbol equality 2020-01-08 22:10:05 +02:00
SymbolTable.h [LLD] [COFF] Try to report source locations for duplicate symbols 2019-10-18 10:43:15 +00:00
Symbols.cpp [LLD] [COFF] Always demangle the __imp_ prefix to __declspec(dllimport) 2019-10-04 19:47:59 +00:00
Symbols.h [LLD] [COFF] Fix post-commit suggestions for absolute symbol equality 2020-01-08 22:10:05 +02:00
TypeMerger.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Writer.cpp Make it possible to redirect not only errs() but also outs() 2019-11-18 11:18:06 +09:00
Writer.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00

README.md

See docs/NewLLD.rst