|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
0d5e2762 |
| 14-Mar-2022 |
Vy Nguyen <[email protected]> |
Reland "[lld-macho] Avoid using bump-alloc in TrieBuider""
This reverts commit ee7a286cd3e4364d2f7d5b6ba4b8a6fc0d524854.
|
| #
ee7a286c |
| 14-Mar-2022 |
Sterling Augustine <[email protected]> |
Revert "[lld-macho] Avoid using bump-alloc in TrieBuider"
This reverts commit e049a87f04cff8e81b4177097a6b2fdf37c7b148.
That commit breaks the build with errors of the form:
/usr/local/google/home
Revert "[lld-macho] Avoid using bump-alloc in TrieBuider"
This reverts commit e049a87f04cff8e81b4177097a6b2fdf37c7b148.
That commit breaks the build with errors of the form:
/usr/local/google/home/saugustine/llvm/llvm-project/lld/MachO/ExportTrie.cpp:148:11: error: definition of implicitly declared destructor TrieNode::~TrieNode() {
show more ...
|
| #
e049a87f |
| 14-Mar-2022 |
Vy Nguyen <[email protected]> |
[lld-macho] Avoid using bump-alloc in TrieBuider
The code can be used in multi-threads and the allocator is not thread safe.
fixes PR/54378
Reviewed By: int3, #lld-macho
Differential Revision: ht
[lld-macho] Avoid using bump-alloc in TrieBuider
The code can be used in multi-threads and the allocator is not thread safe.
fixes PR/54378
Reviewed By: int3, #lld-macho
Differential Revision: https://reviews.llvm.org/D121638
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4 |
|
| #
98fe9e41 |
| 10-Mar-2021 |
Greg McGary <[email protected]> |
[lld-macho][NFC] add const to pointer/reference induction variables of range-based for loops
Pointer and reference induction variables of range-based for loops are often const, and code authors ofte
[lld-macho][NFC] add const to pointer/reference induction variables of range-based for loops
Pointer and reference induction variables of range-based for loops are often const, and code authors often lax about qualifying them.
Differential Revision: https://reviews.llvm.org/D98317
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3 |
|
| #
163dcd85 |
| 03-Feb-2021 |
Jez Ng <[email protected]> |
[lld-macho] Associate each Symbol with an InputFile
This makes our error messages more informative. But the bigger motivation is for LTO symbol resolution, which will be in an upcoming diff. The cha
[lld-macho] Associate each Symbol with an InputFile
This makes our error messages more informative. But the bigger motivation is for LTO symbol resolution, which will be in an upcoming diff. The changes in this one are largely mechanical.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D94316
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
62a3f0c9 |
| 18-Sep-2020 |
Jez Ng <[email protected]> |
[lld-macho] Support absolute symbols
They operate like Defined symbols but with no associated InputSection.
Note that `ld64` seems to treat the weak definition flag like a no-op for absolute symbol
[lld-macho] Support absolute symbols
They operate like Defined symbols but with no associated InputSection.
Note that `ld64` seems to treat the weak definition flag like a no-op for absolute symbols, so I have replicated that behavior.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D87909
show more ...
|
| #
abd70fb3 |
| 16-Sep-2020 |
Jez Ng <[email protected]> |
[lld-macho] Export trie addresses should be relative to the image base
We didn't notice this earlier this we were only testing the export trie encoded in a dylib, whose image base starts at zero. Bu
[lld-macho] Export trie addresses should be relative to the image base
We didn't notice this earlier this we were only testing the export trie encoded in a dylib, whose image base starts at zero. But a regular executable contains `__PAGEZERO`, which means it has a non-zero image base. This bug was discovered after attempting to run some programs that performed `dlopen` on an executable.
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D87780
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2 |
|
| #
3c9100fb |
| 13-Aug-2020 |
Jez Ng <[email protected]> |
[lld-macho] Support dynamic linking of thread-locals
References to symbols in dylibs work very similarly regardless of whether the symbol is a TLV. The main difference is that we have a separate `__
[lld-macho] Support dynamic linking of thread-locals
References to symbols in dylibs work very similarly regardless of whether the symbol is a TLV. The main difference is that we have a separate `__thread_ptrs` section that acts as the GOT for these thread-locals.
We can identify thread-locals in dylibs by a flag in their export trie entries, and we cross-check it with the relocations that refer to them to ensure that we are not using a GOT relocation to reference a thread-local (or vice versa).
Reviewed By: #lld-macho, smeenai
Differential Revision: https://reviews.llvm.org/D85081
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc1 |
|
| #
31d58858 |
| 24-Jul-2020 |
Jez Ng <[email protected]> |
[lld-macho] Partial support for weak definitions
This diff adds support for weak definitions, though it doesn't handle weak symbols in dylibs quite correctly -- we need to emit binding opcodes for t
[lld-macho] Partial support for weak definitions
This diff adds support for weak definitions, though it doesn't handle weak symbols in dylibs quite correctly -- we need to emit binding opcodes for them in the weak binding section rather than the lazy binding section.
What *is* covered in this diff:
1. Reading the weak flag from symbol table / export trie, and writing it to the export trie 2. Refining the symbol table's rules for choosing one symbol definition over another. Wrote a few dozen test cases to make sure we were matching ld64's behavior.
We can now link basic C++ programs.
Reviewed By: #lld-macho, compnerd
Differential Revision: https://reviews.llvm.org/D83532
show more ...
|
|
Revision tags: llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2 |
|
| #
18db086d |
| 24-Jun-2020 |
Fangrui Song <[email protected]> |
[lld-macho] Use namespace qualifiers (macho::) instead of `namespace lld { namespace macho {`
See https://llvm.org/docs/CodingStandards.html#use-namespace-qualifiers-to-implement-previously-declared
[lld-macho] Use namespace qualifiers (macho::) instead of `namespace lld { namespace macho {`
See https://llvm.org/docs/CodingStandards.html#use-namespace-qualifiers-to-implement-previously-declared-functions Similar to D79982.
Reviewed By: #lld-macho, int3
Differential Revision: https://reviews.llvm.org/D82432
show more ...
|
|
Revision tags: llvmorg-10.0.1-rc1 |
|
| #
7bbdbacd |
| 23-Apr-2020 |
Jez Ng <[email protected]> |
[lld-macho] Use export trie instead of symtab when linking against dylibs
Summary: This allows us to link against stripped dylibs. Moreover, it's simply more correct: The symbol table includes symbo
[lld-macho] Use export trie instead of symtab when linking against dylibs
Summary: This allows us to link against stripped dylibs. Moreover, it's simply more correct: The symbol table includes symbols that the dylib uses but doesn't export.
This temporarily regresses our ability to do lazy symbol binding because dyld_stub_binder isn't in libSystem's export trie. Rather, it is in one of the sub-libraries libSystem re-exports. (This doesn't affect our tests since we are mocking out dyld_stub_binder there.) A follow-up diff will address this by adding support for sub-libraries.
Depends on D79114.
Reviewers: ruiu, pcc, MaskRay, smeenai, alexshap, gkm, Ktwu, christylee
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D79226
show more ...
|
| #
6cb07313 |
| 01-May-2020 |
Kellie Medlin <[email protected]> |
[lld] Merge Mach-O input sections
Summary: Similar to other formats, input sections in the MachO implementation are now grouped under output sections. This is primarily a refactor, although there's
[lld] Merge Mach-O input sections
Summary: Similar to other formats, input sections in the MachO implementation are now grouped under output sections. This is primarily a refactor, although there's some new logic (like resolving the output section's flags based on its inputs).
Differential Revision: https://reviews.llvm.org/D77893
show more ...
|
| #
df923778 |
| 29-Apr-2020 |
Jez Ng <[email protected]> |
[lld-macho] Have Symbol::getVA() return a non-relative virtual address
Currently, getVA() returns a virtual address with the assumption that the ImageBase is zero. As I understand, this is what lld-
[lld-macho] Have Symbol::getVA() return a non-relative virtual address
Currently, getVA() returns a virtual address with the assumption that the ImageBase is zero. As I understand, this is what lld-ELF is doing. However, under our current design, it seems like an awkward setup -- I'm finding that I have to add and subtract ImageBase in several places to make things work out.
As such, I think it's simpler to have getVA() return a non-relative VA, but I'm not sure if I'm missing something. Would love to hear more from folks familiar with lld-ELF.
Differential Revision: https://reviews.llvm.org/D78168
show more ...
|
| #
9854edd8 |
| 29-Apr-2020 |
Jez Ng <[email protected]> |
[lld-macho] Implement basic export trie
Build the trie by performing a three-way radix quicksort: We start by sorting the strings by their first characters, then sort the strings with the same first
[lld-macho] Implement basic export trie
Build the trie by performing a three-way radix quicksort: We start by sorting the strings by their first characters, then sort the strings with the same first characters by their second characters, and so on recursively. Each time the prefixes diverge, we add a node to the trie. Thanks to @ruiu for the idea.
I used llvm-mc's radix quicksort implementation as a starting point. The trie offset fixpoint code was taken from MachONormalizedFileBinaryWriter.cpp.
Differential Revision: https://reviews.llvm.org/D76977
show more ...
|