commit | 6262787159c091f2f5b953fc95426e30af6c76de | [log] [tgz] |
---|---|---|
author | alx32 <103613512+alx32@users.noreply.github.com> | Wed Mar 27 17:27:51 2024 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Wed Mar 27 17:46:54 2024 -0700 |
tree | d4886cdc1ecc42f1c4902c3bfce5d652ac83a892 | |
parent | 6a0ea660792a7f7761890df2df379e26d6a76d53 [diff] |
[lld-macho] Fix bug in makeSyntheticInputSection when -dead_strip flag is specified (#86878) Previously, `makeSyntheticInputSection` would create a new `ConcatInputSection` without setting `live` explicitly for it. Without `-dead_strip` this would be OK since `live` would default to `true`. However, with `-dead_strip`, `live` would default to false, and it would remain set to `false`. This hasn't resulted in any issues so far since no code paths that exposed this issue were present. However a recent change - ObjC relative method lists (https://github.com/llvm/llvm-project/pull/86231) exposes this issue by creating relocations to the `SyntheticInputSection`. When these relocations are attempted to be written, this ends up with a crash(assert), since the `SyntheticInputSection` they refer to is marked as dead (`live` = `false`). With this change, we set the correct behavior - `live` will always be `true`. We add a test case that before this change would trigger an assert in the linker. GitOrigin-RevId: bbfa50696e43f337f55f8bacf739683b181debd5
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
.