[all-commits] [llvm/llvm-project] a876d0: [JITLink] Add support for moving blocks and symbol...

lhames via All-commits all-commits at lists.llvm.org
Tue Jul 20 16:12:54 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a876d09bc7fbb16ef38d50ce84059e50d6829f23
      https://github.com/llvm/llvm-project/commit/a876d09bc7fbb16ef38d50ce84059e50d6829f23
  Author: Lang Hames <lhames at gmail.com>
  Date:   2021-07-21 (Wed, 21 Jul 2021)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/JITLink/JITLink.h
    M llvm/lib/ExecutionEngine/JITLink/JITLink.cpp
    M llvm/unittests/ExecutionEngine/JITLink/LinkGraphTests.cpp

  Log Message:
  -----------
  [JITLink] Add support for moving blocks and symbols between sections.

LinkGraph::transferBlock can be used to move a block and all associated symbols
from one section to another.

LinkGraph::mergeSections moves all blocks and sections from a source section to
a destination section.


  Commit: ca4a9386170e656b22773b09f240d26f49a8877c
      https://github.com/llvm/llvm-project/commit/ca4a9386170e656b22773b09f240d26f49a8877c
  Author: Lang Hames <lhames at gmail.com>
  Date:   2021-07-21 (Wed, 21 Jul 2021)

  Changed paths:
    M llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.cpp
    M llvm/lib/ExecutionEngine/JITLink/MachOLinkGraphBuilder.h
    A llvm/test/ExecutionEngine/JITLink/X86/MachO_thread_bss.s

  Log Message:
  -----------
  [JITLink][MachO] Detect MachO::S_THREAD_LOCAL_ZEROFILL sections as zero-fill.

This will be used in upcoming MachO native TLV support patches to LLVM and
the ORC runtime.


  Commit: fe1fa43f16beac1506a2e73a9f7b3c81179744eb
      https://github.com/llvm/llvm-project/commit/fe1fa43f16beac1506a2e73a9f7b3c81179744eb
  Author: Lang Hames <lhames at gmail.com>
  Date:   2021-07-21 (Wed, 21 Jul 2021)

  Changed paths:
    M compiler-rt/lib/orc/CMakeLists.txt
    M compiler-rt/lib/orc/macho_platform.cpp
    M compiler-rt/lib/orc/macho_platform.h
    A compiler-rt/lib/orc/macho_tlv.x86-64.s
    A compiler-rt/test/orc/TestCases/Darwin/x86-64/trivial-tlv.S
    M llvm/include/llvm/ExecutionEngine/Orc/MachOPlatform.h
    M llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp
    M llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp

  Log Message:
  -----------
  [ORC][ORC-RT] Add initial native-TLV support to MachOPlatform.

Adds code to LLVM (MachOPlatform) and the ORC runtime to support native MachO
thread local variables. Adding new TLVs to a JITDylib at runtime is supported.

On the LLVM side MachOPlatform is updated to:

1. Identify thread local variables in the LinkGraph and lower them to GOT
accesses to data in the __thread_data or __thread_bss sections.

2. Merge and report the address range of __thread_data and thread_bss sections
to the runtime.

On the ORC runtime a MachOTLVManager class introduced which records the address
range of thread data/bss sections, and creates thread-local instances from the
initial data on demand. An orc-runtime specific tlv_get_addr implementation is
included which saves all register state then calls the MachOTLVManager to get
the address of the requested variable for the current thread.


Compare: https://github.com/llvm/llvm-project/compare/2fd1520247de...fe1fa43f16be


More information about the All-commits mailing list