vsk created this revision.
vsk added reviewers: JDevlieghere, kastiglione, kledzik.
vsk requested review of this revision.

In macOS 12, dyld switched to using chained fixups. As a result, all symbols
are bound at launch and there are no lazy pointers any more. Since we wish to
import/dlopen() a dylib with missing symbols, we need to use a weak import.
This applies to all macOS 12-aligned OS releases, e.g. iOS 15, etc.

rdar://81295101


https://reviews.llvm.org/D112034

Files:
  lldb/test/API/functionalities/load_lazy/Makefile


Index: lldb/test/API/functionalities/load_lazy/Makefile
===================================================================
--- lldb/test/API/functionalities/load_lazy/Makefile
+++ lldb/test/API/functionalities/load_lazy/Makefile
@@ -5,9 +5,20 @@
 
 include Makefile.rules
 
+ifeq "$(OS)" "Darwin"
+       # In macOS 12, dyld switched to using chained fixups. As a result, all
+       # symbols are bound at launch and there are no lazy pointers any more.
+       # Since we wish to import/dlopen() a dylib with missing symbols, we need
+       # to use a weak import. This applies to all macOS 12-aligned OS 
releases,
+       # e.g. iOS 15, etc.
+       LINKFLAGS := "-Wl,-weak-lt2_0"
+else
+       LINKFLAGS := "-lt2_0"
+endif
+
 t1: t2_0
        $(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \
-               DYLIB_ONLY=YES DYLIB_C_SOURCES=t1.c DYLIB_NAME=t1 
LD_EXTRAS="-L. -lt2_0"
+               DYLIB_ONLY=YES DYLIB_C_SOURCES=t1.c DYLIB_NAME=t1 
LD_EXTRAS="-L. $(LINKFLAGS)"
 
 t2_0:
        $(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \


Index: lldb/test/API/functionalities/load_lazy/Makefile
===================================================================
--- lldb/test/API/functionalities/load_lazy/Makefile
+++ lldb/test/API/functionalities/load_lazy/Makefile
@@ -5,9 +5,20 @@
 
 include Makefile.rules
 
+ifeq "$(OS)" "Darwin"
+	# In macOS 12, dyld switched to using chained fixups. As a result, all
+	# symbols are bound at launch and there are no lazy pointers any more.
+	# Since we wish to import/dlopen() a dylib with missing symbols, we need
+	# to use a weak import. This applies to all macOS 12-aligned OS releases,
+	# e.g. iOS 15, etc.
+	LINKFLAGS := "-Wl,-weak-lt2_0"
+else
+	LINKFLAGS := "-lt2_0"
+endif
+
 t1: t2_0
 	$(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \
-		DYLIB_ONLY=YES DYLIB_C_SOURCES=t1.c DYLIB_NAME=t1 LD_EXTRAS="-L. -lt2_0"
+		DYLIB_ONLY=YES DYLIB_C_SOURCES=t1.c DYLIB_NAME=t1 LD_EXTRAS="-L. $(LINKFLAGS)"
 
 t2_0:
 	$(MAKE) VPATH=$(SRCDIR) -f $(MAKEFILE_RULES) \
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
  • [Lldb-commits] [PATCH] ... Vedant Kumar via Phabricator via lldb-commits

Reply via email to