commit | 51b87d78f688e48adc24ad2a49b8edb65a8dba28 | [log] [tgz] |
---|---|---|
author | Rui Ueyama <ruiu@google.com> | Mon Jun 10 12:16:41 2019 +0000 |
committer | Rui Ueyama <ruiu@google.com> | Mon Jun 10 12:16:41 2019 +0000 |
tree | 5721fa8400838bab2b233d009bf6ef00a93782d2 | |
parent | 49269d597a13548b3fea01dd3fc328a71aec206f [diff] |
[LLD][COFF] Fix missing MergeChunk::Instances cleanup in COFF::link() Patch by Erik McClure with a modification to rebase to HEAD. When calling `COFF::link()` with `CanExitEarly` set to `false`, the function needs to clean up several global variable caches to ensure that the next invocation of the function starts from a clean slate. The `MergeChunk::Instances` cache is missing from this cleanup code, and as a result will create nondeterministic memory access errors and sometimes infinite loops due to invalid memory being referenced on the next call to `COFF::link()`. This fix simply clears `MergeChunk::Instances` before exiting the function. An additional review of the COFF library was made to try and find any other missing global caches, but I was unable to find any other than `MergeChunk`. Someone more familiar with the global variables might want to do their own check. This fix was made to support inNative <https://github.com/innative-sdk/innative>'s `.wast` script compiler, which must build multiple incremental builds. It relies on statically linking LLD because the entire compiler must be a single statically embeddable library, thus preventing it from being able to call LLD as a new process. Differential Revision: https://reviews.llvm.org/D63042 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@362930 91177308-0d34-0410-b5e6-96231b3b80d8
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.