commit | 92e8412b9d3e1c129dc73c202959bdc151a74767 | [log] [tgz] |
---|---|---|
author | Jez Ng <jezng@fb.com> | Mon Feb 08 13:47:33 2021 -0500 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Feb 08 14:06:07 2021 -0800 |
tree | a5dd2f2c106bcd4823d8ae03b344a0dc88ca5879 | |
parent | e67fa18b443f48bad1e2b07ef29d635fcb4c329a [diff] |
[lld-macho] Emit personalities in compact unwind Note that there is a triple indirection involved with personalities and compact unwind: 1. Two bits of each CU encoding are used as an offset into the personality array. 2. Each entry of the personality array is an offset from the image base. The resulting address (after adding the image base) should point within the GOT. 3. The corresponding GOT entry contains the actual pointer to the personality function. To further complicate things, when the personality function is in the object file (as opposed to a dylib), its references in `__compact_unwind` may refer to it via a section + offset relocation instead of a symbol relocation. Since our GOT implementation can only create entries for symbols, we have to create a synthetic symbol at the given section offset. Reviewed By: clayborg Differential Revision: https://reviews.llvm.org/D95809 GitOrigin-RevId: 525bfa10ec1d4e3dfa3932a299cd67ffe59a5827
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
.