[all-commits] [llvm/llvm-project] 891490: [lld-macho] Add support for arm64_32

Jez Ng via All-commits all-commits at lists.llvm.org
Tue Apr 13 07:44:31 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8914902b01a3f8bdea9c71a0d9d23e4ee0ae80e4
      https://github.com/llvm/llvm-project/commit/8914902b01a3f8bdea9c71a0d9d23e4ee0ae80e4
  Author: Jez Ng <jezng at fb.com>
  Date:   2021-04-13 (Tue, 13 Apr 2021)

  Changed paths:
    M lld/MachO/Arch/ARM64.cpp
    A lld/MachO/Arch/ARM64Common.cpp
    A lld/MachO/Arch/ARM64Common.h
    A lld/MachO/Arch/ARM64_32.cpp
    M lld/MachO/CMakeLists.txt
    M lld/MachO/Driver.cpp
    M lld/MachO/MachOStructs.h
    M lld/MachO/Target.h
    M lld/MachO/Writer.cpp
    A lld/test/MachO/Inputs/WatchOS.sdk/usr/lib/libSystem.tbd
    A lld/test/MachO/Inputs/WatchOS.sdk/usr/lib/libc++.tbd
    A lld/test/MachO/Inputs/WatchOS.sdk/usr/lib/libc++abi.tbd
    A lld/test/MachO/arm64-32-stubs.s
    M lld/test/MachO/header.s
    M lld/test/MachO/lit.local.cfg
    M lld/test/MachO/segments.s

  Log Message:
  -----------
  [lld-macho] Add support for arm64_32

>From what I can tell, it's pretty similar to arm64. The two main differences
are:

1. No 64-bit relocations
2. Stub code writes to 32-bit registers instead of 64-bit

Plus of course the various on-disk structures like `segment_command` are using
the 32-bit instead of the 64-bit variants.

Reviewed By: #lld-macho, gkm

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


  Commit: 35a745d814e1cde3de25d0d959fddc31e1061a41
      https://github.com/llvm/llvm-project/commit/35a745d814e1cde3de25d0d959fddc31e1061a41
  Author: Jez Ng <jezng at fb.com>
  Date:   2021-04-13 (Tue, 13 Apr 2021)

  Changed paths:
    M lld/MachO/Relocations.h
    M lld/MachO/SyntheticSections.h
    M lld/MachO/UnwindInfoSection.cpp
    M lld/MachO/UnwindInfoSection.h
    M lld/MachO/Writer.cpp
    M lld/test/MachO/compact-unwind.s

  Log Message:
  -----------
  [lld-macho] Add 32-bit compact unwind support

This could probably have been part of D99633, but I split it up to make
things a bit more reviewable. I also fixed some bugs in the implementation that
were masked through integer underflows when operating in 64-bit mode.

Reviewed By: #lld-macho, gkm

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


  Commit: 3142fc3b5bba78663b7579a401683b0cda90243f
      https://github.com/llvm/llvm-project/commit/3142fc3b5bba78663b7579a401683b0cda90243f
  Author: Jez Ng <jezng at fb.com>
  Date:   2021-04-13 (Tue, 13 Apr 2021)

  Changed paths:
    M lld/MachO/InputFiles.cpp
    M lld/test/MachO/invalid/undefined-symbol.s
    M lld/test/MachO/u.s
    M lld/test/MachO/why-load.s

  Log Message:
  -----------
  [lld-macho] Have toString() emit full path to archive files

It doesn't make sense to take just the base filename for archives when we emit
the full path for object files. (LLD-ELF emits the full path too.)

This will also make it easier to write a proper test for {D100147}.

Reviewed By: #lld-macho, oontvoo

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


  Commit: 682d1dfe09436857aa3b64365b5cc6fcbf1f043b
      https://github.com/llvm/llvm-project/commit/682d1dfe09436857aa3b64365b5cc6fcbf1f043b
  Author: Jez Ng <jezng at fb.com>
  Date:   2021-04-13 (Tue, 13 Apr 2021)

  Changed paths:
    M lld/MachO/Arch/ARM64Common.cpp
    A lld/test/MachO/arm64-32-reloc-got-load.s

  Log Message:
  -----------
  [lld-macho] Make load relaxation work for arm64_32

arm64_32 uses 32-bit GOT loads, so we should accept those
instructions in `ARM64Common::relaxGotLoad()` too.

Reviewed By: #lld-macho, gkm

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


Compare: https://github.com/llvm/llvm-project/compare/29a4d7813c75...682d1dfe0943


More information about the All-commits mailing list