[libcxx-commits] [lldb] [clang] [openmp] [lld] [compiler-rt] [libc] [flang] [libcxxabi] [llvm] [libcxx] [clang-tools-extra] [mlir] [llvm] Support IFuncs on Darwin platforms (PR #73686)

Ahmed Bougacha via libcxx-commits libcxx-commits at lists.llvm.org
Wed Dec 13 16:12:24 PST 2023


================
@@ -599,6 +599,26 @@ class AsmPrinter : public MachineFunctionPass {
   /// instructions in verbose mode.
   virtual void emitImplicitDef(const MachineInstr *MI) const;
 
+  /// getSubtargetInfo() cannot be used where this is needed because we don't
+  /// have a MachineFunction when we're lowering a GlobalIFunc, and
+  /// getSubtargetInfo requires one. Override the implementation in targets
+  /// that support the Mach-O IFunc lowering.
+  virtual const MCSubtargetInfo *getIFuncMCSubtargetInfo() const {
+    return nullptr;
+  }
+
+  virtual void emitMachOIFuncStubBody(Module &M, const GlobalIFunc &GI,
+                                      MCSymbol *LazyPointer) {
----------------
ahmedbougacha wrote:

Maybe pass the symbol string directly, since the implementations make their own symbol references anyway?  That way you also don't have to do the awkward de-mangle/re-mangle dance with the +1

https://github.com/llvm/llvm-project/pull/73686


More information about the libcxx-commits mailing list