commit | 67a8eb23c2d0528f5751d85aad54b8a3255fa373 | [log] [tgz] |
---|---|---|
author | Jez Ng <jezng@fb.com> | Tue Feb 23 21:42:02 2021 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Feb 26 22:03:42 2021 -0800 |
tree | 1fe2df6266a864c4660647a9f391a568f290d738 | |
parent | 82e27a4301d4226917d6eb5c35626a9967674221 [diff] |
[lld-macho] Better deduplication of personality pointers {D95809} introduced a mechanism for synthetic symbol creation of personality pointers. When multiple section relocations referred to the same personality pointer, it would deduplicate them. However, it neglected to consider that we could have symbol relocations that also refer to the same personality pointer. This diff fixes it. In practice, this mix of relocations arises when there is a statically-linked personality routine that is referenced from multiple object files. Within the same object file, it will be referred to via section relocations, but (obviously) other object files will refer to it via symbol relocations. Failing to deduplicate these references resulted in us going over the 3-personality-pointer limit when linking some larger applications. Fixes llvm.org/PR48389. Reviewed By: #lld-macho, thakis, alexshap Differential Revision: https://reviews.llvm.org/D97245 GitOrigin-RevId: 4a5e111aea7ac78190211a2549f8d0d53ee2f01d
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
.