[all-commits] [llvm/llvm-project] 31d588: [lld-macho] Partial support for weak definitions

Jez Ng via All-commits all-commits at lists.llvm.org
Fri Jul 24 16:16:39 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 31d58858425f6021d380eff879dd8983e25a5715
      https://github.com/llvm/llvm-project/commit/31d58858425f6021d380eff879dd8983e25a5715
  Author: Jez Ng <jezng at fb.com>
  Date:   2020-07-24 (Fri, 24 Jul 2020)

  Changed paths:
    M lld/MachO/Arch/X86_64.cpp
    M lld/MachO/ExportTrie.cpp
    M lld/MachO/InputFiles.cpp
    M lld/MachO/SymbolTable.cpp
    M lld/MachO/SymbolTable.h
    M lld/MachO/Symbols.h
    M lld/MachO/SyntheticSections.cpp
    A lld/test/MachO/weak-definition-direct-fetch.s
    A lld/test/MachO/weak-definition-indirect-fetch.s
    A lld/test/MachO/weak-definition-order.s
    A lld/test/MachO/weak-definition-over-dysym.s

  Log Message:
  -----------
  [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


  Commit: 06a0dd2467d5c4726699eea3589a6444e00a2eef
      https://github.com/llvm/llvm-project/commit/06a0dd2467d5c4726699eea3589a6444e00a2eef
  Author: Jez Ng <jezng at fb.com>
  Date:   2020-07-24 (Fri, 24 Jul 2020)

  Changed paths:
    M lld/MachO/Options.td
    M lld/test/MachO/silent-ignore.test

  Log Message:
  -----------
  [lld-macho] Ignore -dependency_info and its argument

XCode passes in this flag, which we do not yet implement. Skip
over the argument for now so we can at least successfully parse the
linker invocation.

Reviewed By: #lld-macho, compnerd

Differential Revision: https://reviews.llvm.org/D84485


Compare: https://github.com/llvm/llvm-project/compare/8bf4c1f4fb25...06a0dd2467d5


More information about the All-commits mailing list