[PATCH] D105075: [lld-macho] Only emit one BIND_OPCODE_SET_SYMBOL per symbol

Jez Ng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 30 14:18:35 PDT 2021


int3 added inline comments.


================
Comment at: lld/MachO/SyntheticSections.cpp:357
+  std::vector<std::pair<const Sym *, std::vector<BindingEntry>>> bindingsVec(
+      bindingsMap.begin(), bindingsMap.end());
+  for (auto &p : bindingsVec) {
----------------
int3 wrote:
> thakis wrote:
> > Is it guaranteed that we have filtered out separate symbols pointing at the same address by now? If not, this has nondeterminism issues (here and in the sort below)
> These are binding address, not symbol addresses, and I don't think any well-formed program will have two bindings pointing to the same address. I'm not even sure how you would generate that; I suppose you could use obj2yaml to hand-craft two relocations pointing at the same address, but I don't think it's possible if you're writing assembly.
> 
> Also FWIW I double-checked with `-DLLVM_ENABLE_EXPENSIVE_CHECKS`, and our test cases don't find any issues with this
ICF could cause two binds to point to the same dedup'ed address, but that gets fixed by {D105044} :)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105075/new/

https://reviews.llvm.org/D105075



More information about the llvm-commits mailing list