https://github.com/jasonmolenda updated 
https://github.com/llvm/llvm-project/pull/129967

>From 6e258eb09b13776fc393a161225438baa92e5f87 Mon Sep 17 00:00:00 2001
From: Jason Molenda <jmole...@apple.com>
Date: Wed, 5 Mar 2025 17:27:20 -0800
Subject: [PATCH 1/4] [lldb][Mach-O] Don't read symbol table of specially
 marked binary

We have a binary image on Darwin that has no code, only metadata.
It has a large symbol table with many external symbol names that
will not be needed in the debugger.  And it is possible to not have
this binary on the debugger system - so lldb must read all of the
symbol names out of memory, one at a time, which can be quite slow.

We're adding a section __TEXT,__lldb_no_nlist, to this binary to
indicate that lldb should not read the nlist symbols for it when
we are reading out of memory.  If lldb is run with an on-disk version
of the binary, we will load the symbol table as we normally would,
there's no benefit to handling this binary differently.

I added a test where I create a dylib with this specially named
section, launch the process.  The main binary deletes the dylib
from the disk so lldb is forced to read it out of memory.  lldb
attaches to the binary, confirms that the dylib is present in
the process and is a memory Module.  If the binary is not present,
or lldb found the on-disk copy because it hasn't been deleted yet,
we delete the target, flush the Debugger's module cache, sleep and
retry, up to ten times.  I create the specially named section by
compiling an assembly file that puts a byte in the section which
makes for a bit of a messy Makefile (the pre-canned actions to
build a dylib don't quite handle this case) but I don't think it's
much of a problem.  This is a purely skipUnlessDarwin test case.

rdar://146167816
---
 .../ObjectFile/Mach-O/ObjectFileMachO.cpp     | 68 +++++++++++-------
 .../ObjectFile/Mach-O/ObjectFileMachO.h       |  1 +
 .../macosx/no-nlist-memory-module/Makefile    | 15 ++++
 .../TestNoNlistsDylib.py                      | 70 +++++++++++++++++++
 .../API/macosx/no-nlist-memory-module/main.c  | 37 ++++++++++
 .../no-nlist-memory-module/no-nlist-sect.s    |  3 +
 .../macosx/no-nlist-memory-module/no-nlists.c |  3 +
 7 files changed, 173 insertions(+), 24 deletions(-)
 create mode 100644 lldb/test/API/macosx/no-nlist-memory-module/Makefile
 create mode 100644 
lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
 create mode 100644 lldb/test/API/macosx/no-nlist-memory-module/main.c
 create mode 100644 lldb/test/API/macosx/no-nlist-memory-module/no-nlist-sect.s
 create mode 100644 lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c

diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp 
b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index a19322ff1e263..f31b56b9f81e6 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -918,6 +918,11 @@ ConstString ObjectFileMachO::GetSectionNameEHFrame() {
   return g_section_name_eh_frame;
 }
 
+ConstString ObjectFileMachO::GetSectionNameLLDBNoNlist() {
+  static ConstString g_section_name_lldb_no_nlist("__lldb_no_nlist");
+  return g_section_name_lldb_no_nlist;
+}
+
 bool ObjectFileMachO::MagicBytesMatch(DataBufferSP data_sp,
                                       lldb::addr_t data_offset,
                                       lldb::addr_t data_length) {
@@ -2394,8 +2399,39 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
   uint32_t memory_module_load_level = eMemoryModuleLoadLevelComplete;
   bool is_shared_cache_image = IsSharedCacheBinary();
   bool is_local_shared_cache_image = is_shared_cache_image && !IsInMemory();
+
+  ConstString g_segment_name_TEXT = GetSegmentNameTEXT();
+  ConstString g_segment_name_DATA = GetSegmentNameDATA();
+  ConstString g_segment_name_DATA_DIRTY = GetSegmentNameDATA_DIRTY();
+  ConstString g_segment_name_DATA_CONST = GetSegmentNameDATA_CONST();
+  ConstString g_segment_name_OBJC = GetSegmentNameOBJC();
+  ConstString g_section_name_eh_frame = GetSectionNameEHFrame();
+  ConstString g_section_name_lldb_no_nlist = GetSectionNameLLDBNoNlist();
+  SectionSP text_section_sp(
+      section_list->FindSectionByName(g_segment_name_TEXT));
+  SectionSP data_section_sp(
+      section_list->FindSectionByName(g_segment_name_DATA));
   SectionSP linkedit_section_sp(
       section_list->FindSectionByName(GetSegmentNameLINKEDIT()));
+  SectionSP data_dirty_section_sp(
+      section_list->FindSectionByName(g_segment_name_DATA_DIRTY));
+  SectionSP data_const_section_sp(
+      section_list->FindSectionByName(g_segment_name_DATA_CONST));
+  SectionSP objc_section_sp(
+      section_list->FindSectionByName(g_segment_name_OBJC));
+  SectionSP eh_frame_section_sp;
+  SectionSP lldb_no_nlist_section_sp;
+  if (text_section_sp.get()) {
+    eh_frame_section_sp = text_section_sp->GetChildren().FindSectionByName(
+        g_section_name_eh_frame);
+    lldb_no_nlist_section_sp = 
text_section_sp->GetChildren().FindSectionByName(
+        g_section_name_lldb_no_nlist);
+  } else {
+    eh_frame_section_sp =
+        section_list->FindSectionByName(g_section_name_eh_frame);
+    lldb_no_nlist_section_sp =
+        section_list->FindSectionByName(g_section_name_lldb_no_nlist);
+  }
 
   if (process && m_header.filetype != llvm::MachO::MH_OBJECT &&
       !is_local_shared_cache_image) {
@@ -2403,6 +2439,14 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
 
     memory_module_load_level = target.GetMemoryModuleLoadLevel();
 
+    // If __TEXT,__lldb_no_nlist section is present in this binary,
+    // and we're reading it out of memory, do not read any of the
+    // nlist entries.  They are not needed in lldb and it may be
+    // expensive to load these.  This is to handle a dylib consisting
+    // of only metadata, no code, but it has many nlist entries.
+    if (lldb_no_nlist_section_sp)
+      memory_module_load_level = eMemoryModuleLoadLevelMinimal;
+
     // Reading mach file from memory in a process or core file...
 
     if (linkedit_section_sp) {
@@ -2526,30 +2570,6 @@ void ObjectFileMachO::ParseSymtab(Symtab &symtab) {
 
   const bool have_strtab_data = strtab_data.GetByteSize() > 0;
 
-  ConstString g_segment_name_TEXT = GetSegmentNameTEXT();
-  ConstString g_segment_name_DATA = GetSegmentNameDATA();
-  ConstString g_segment_name_DATA_DIRTY = GetSegmentNameDATA_DIRTY();
-  ConstString g_segment_name_DATA_CONST = GetSegmentNameDATA_CONST();
-  ConstString g_segment_name_OBJC = GetSegmentNameOBJC();
-  ConstString g_section_name_eh_frame = GetSectionNameEHFrame();
-  SectionSP text_section_sp(
-      section_list->FindSectionByName(g_segment_name_TEXT));
-  SectionSP data_section_sp(
-      section_list->FindSectionByName(g_segment_name_DATA));
-  SectionSP data_dirty_section_sp(
-      section_list->FindSectionByName(g_segment_name_DATA_DIRTY));
-  SectionSP data_const_section_sp(
-      section_list->FindSectionByName(g_segment_name_DATA_CONST));
-  SectionSP objc_section_sp(
-      section_list->FindSectionByName(g_segment_name_OBJC));
-  SectionSP eh_frame_section_sp;
-  if (text_section_sp.get())
-    eh_frame_section_sp = text_section_sp->GetChildren().FindSectionByName(
-        g_section_name_eh_frame);
-  else
-    eh_frame_section_sp =
-        section_list->FindSectionByName(g_section_name_eh_frame);
-
   const bool is_arm = (m_header.cputype == llvm::MachO::CPU_TYPE_ARM);
   const bool always_thumb = GetArchitecture().IsAlwaysThumbInstructions();
 
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h 
b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
index 27b2078b5a3fc..7f67f5e04f1d6 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
@@ -286,6 +286,7 @@ class ObjectFileMachO : public lldb_private::ObjectFile {
   static lldb_private::ConstString GetSegmentNameDWARF();
   static lldb_private::ConstString GetSegmentNameLLVM_COV();
   static lldb_private::ConstString GetSectionNameEHFrame();
+  static lldb_private::ConstString GetSectionNameLLDBNoNlist();
 
   llvm::MachO::dysymtab_command m_dysymtab;
   std::vector<llvm::MachO::section_64> m_mach_sections;
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/Makefile 
b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
new file mode 100644
index 0000000000000..cb4f9968112cd
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
@@ -0,0 +1,15 @@
+C_SOURCES := main.c
+LD_EXTRAS = -Wl,-rpath "-Wl,$(shell pwd)" -L. -lno-nlists
+
+.PHONY: build-libno-nlists
+all: build-libno-nlists a.out
+
+include Makefile.rules
+
+build-libno-nlists: no-nlists.c no-nlist-sect.s
+       $(CC) $(CFLAGS) -c -o no-nlists.o $(<D)/no-nlists.c
+       $(CC) $(CFLAGS) -c -o no-nlist-sect.o $(<D)/no-nlist-sect.s
+       $(LD) -dynamiclib -o libno-nlists.dylib no-nlists.o no-nlist-sect.o 
-install_name "@executable_path/libno-nlists.dylib"
+
+clean::
+       rm -rf no-nlists.o no-nlist-sect.o main.o main.s a.out a.out.dSYM 
libno-nlists.dylib libno-nlists.dylib.dSYM
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py 
b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
new file mode 100644
index 0000000000000..73644a5f00531
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
@@ -0,0 +1,70 @@
+"""
+Test that we read don't read the nlist symbols for a specially marked dylib
+when read from memory.
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+from time import sleep
+
+
+class NoNlistsTestCase(TestBase):
+    NO_DEBUG_INFO_TESTCASE = True
+
+    @skipIfRemote
+    @skipUnlessDarwin
+    def test_no_nlist_symbols(self):
+        self.build()
+
+        exe = os.path.realpath(self.getBuildArtifact("a.out"))
+
+        popen = self.spawnSubprocess(exe)
+        pid = popen.pid
+
+        self.dbg.SetAsync(False)
+
+        m = lldb.SBModule()
+        target = lldb.SBTarget()
+        process = lldb.SBProcess()
+        reattach_count = 0
+
+        # Attach to the process, see if we have a memory module
+        # for libno-nlists.dylib.  If not, detach, delete the
+        # Target, and flush the orphaned modules from the Debugger
+        # so we don't hold on to a reference of the on-disk binary.
+
+        # If we haven't succeeded after ten attemps of attaching and
+        # detaching, fail the test.
+        while not m.IsValid() or m.IsFileBacked():
+            if process.IsValid():
+                process.Detach()
+                self.dbg.DeleteTarget(target)
+                self.dbg.MemoryPressureDetected()
+                time.sleep(2)
+
+            self.runCmd("process attach -p " + str(pid))
+            target = self.dbg.GetSelectedTarget()
+            process = target.GetProcess()
+            m = target.FindModule(lldb.SBFileSpec("libno-nlists.dylib"))
+
+            reattach_count = reattach_count + 1
+            if reattach_count > 10:
+                break
+
+        self.assertTrue(process, PROCESS_IS_VALID)
+
+        # Test that we found libno-nlists.dylib, it is a memory
+        # module, and that it has no symbols.
+        self.assertTrue(m.IsValid())
+        self.assertFalse(m.IsFileBacked())
+        self.assertEqual(m.GetNumSymbols(), 0)
+
+        # And as a sanity check, get the main binary's module,
+        # test that it is file backed and that it has more than
+        # zero symbols.
+        m = target.FindModule(lldb.SBFileSpec("a.out"))
+        self.assertTrue(m.IsValid())
+        self.assertTrue(m.IsFileBacked())
+        self.assertGreater(m.GetNumSymbols(), 0)
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/main.c 
b/lldb/test/API/macosx/no-nlist-memory-module/main.c
new file mode 100644
index 0000000000000..fb1451ccc99d1
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/main.c
@@ -0,0 +1,37 @@
+#include <libgen.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+int get_return_value();
+
+int main(int argc, char **argv) {
+
+  // Remove libno-nlists.dylib that we are linked against.
+  char executable_path[PATH_MAX];
+  realpath(argv[0], executable_path);
+  executable_path[PATH_MAX - 1] = '\0';
+
+  char *dir = dirname(executable_path);
+  char dylib_path[PATH_MAX];
+  snprintf(dylib_path, PATH_MAX, "%s/%s", dir, "libno-nlists.dylib");
+  dylib_path[PATH_MAX - 1] = '\0';
+  struct stat sb;
+  if (stat(dylib_path, &sb) == -1) {
+    printf("Could not find dylib %s to remove it\n", dylib_path);
+    exit(1);
+  }
+  if (unlink(dylib_path) == -1) {
+    printf("Could not remove dylib %s\n", dylib_path);
+    exit(2);
+  }
+
+  // This sleep will exit as soon as lldb attaches
+  // and interrupts it.
+  sleep(200);
+
+  int retval = get_return_value();
+  return retval;
+}
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/no-nlist-sect.s 
b/lldb/test/API/macosx/no-nlist-memory-module/no-nlist-sect.s
new file mode 100644
index 0000000000000..0a7c974f9362c
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/no-nlist-sect.s
@@ -0,0 +1,3 @@
+   .section __TEXT,__lldb_no_nlist,regular,pure_instructions
+   .p2align 2
+   .byte 0x10
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c 
b/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c
new file mode 100644
index 0000000000000..e75c5a5274bc0
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c
@@ -0,0 +1,3 @@
+int get_return_value() {
+  return 10;
+}

>From 350c01df32fa0b250b664c8d937f5830f7af2ea6 Mon Sep 17 00:00:00 2001
From: Jason Molenda <jmole...@apple.com>
Date: Wed, 5 Mar 2025 17:53:21 -0800
Subject: [PATCH 2/4] format

---
 lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c 
b/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c
index e75c5a5274bc0..ff81940087ab7 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c
+++ b/lldb/test/API/macosx/no-nlist-memory-module/no-nlists.c
@@ -1,3 +1 @@
-int get_return_value() {
-  return 10;
-}
+int get_return_value() { return 10; }

>From ae9d9e3820fbe577023b21886011c84aee792d04 Mon Sep 17 00:00:00 2001
From: Jason Molenda <jmole...@apple.com>
Date: Thu, 6 Mar 2025 00:54:36 -0800
Subject: [PATCH 3/4] Add an additional aspect to the API test

In addition to a memory Module which has the __TEXT,__lldb_no_nlist
section indicating that we do not read the symbol table for this
binary, I added a second library which is also a memory Module but
no section -- test that lldb did read the symbol table for this
binary.
---
 .../macosx/no-nlist-memory-module/Makefile    | 12 ++++--
 .../TestNoNlistsDylib.py                      | 37 ++++++++++++-------
 .../no-nlist-memory-module/has-nlists.c       |  1 +
 .../API/macosx/no-nlist-memory-module/main.c  | 13 ++++++-
 4 files changed, 45 insertions(+), 18 deletions(-)
 create mode 100644 lldb/test/API/macosx/no-nlist-memory-module/has-nlists.c

diff --git a/lldb/test/API/macosx/no-nlist-memory-module/Makefile 
b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
index cb4f9968112cd..bcc691022cc0d 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/Makefile
+++ b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
@@ -1,8 +1,8 @@
 C_SOURCES := main.c
-LD_EXTRAS = -Wl,-rpath "-Wl,$(shell pwd)" -L. -lno-nlists
+LD_EXTRAS = -Wl,-rpath "-Wl,$(shell pwd)" -L. -lno-nlists -lhas-nlists
 
-.PHONY: build-libno-nlists
-all: build-libno-nlists a.out
+.PHONY: build-libno-nlists build-libhas-nlists
+all: build-libno-nlists build-libhas-nlists a.out
 
 include Makefile.rules
 
@@ -11,5 +11,9 @@ build-libno-nlists: no-nlists.c no-nlist-sect.s
        $(CC) $(CFLAGS) -c -o no-nlist-sect.o $(<D)/no-nlist-sect.s
        $(LD) -dynamiclib -o libno-nlists.dylib no-nlists.o no-nlist-sect.o 
-install_name "@executable_path/libno-nlists.dylib"
 
+build-libhas-nlists: has-nlists.c
+       $(CC) $(CFLAGS) -c -o has-nlists.o $(<D)/has-nlists.c
+       $(LD) -dynamiclib -o libhas-nlists.dylib has-nlists.o  -install_name 
"@executable_path/libhas-nlists.dylib"
+
 clean::
-       rm -rf no-nlists.o no-nlist-sect.o main.o main.s a.out a.out.dSYM 
libno-nlists.dylib libno-nlists.dylib.dSYM
+       rm -rf has-nlists.o no-nlists.o no-nlist-sect.o main.o main.s a.out 
a.out.dSYM libno-nlists.dylib libno-nlists.dylib.dSYM libhas-nlists.dylib 
libhas-nlists.dylib.dSYM
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py 
b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
index 73644a5f00531..ad90c4fa38fac 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
+++ b/lldb/test/API/macosx/no-nlist-memory-module/TestNoNlistsDylib.py
@@ -25,19 +25,23 @@ def test_no_nlist_symbols(self):
 
         self.dbg.SetAsync(False)
 
-        m = lldb.SBModule()
+        m_no_nlist = lldb.SBModule()
+        m_has_nlist = lldb.SBModule()
         target = lldb.SBTarget()
         process = lldb.SBProcess()
         reattach_count = 0
 
         # Attach to the process, see if we have a memory module
-        # for libno-nlists.dylib.  If not, detach, delete the
-        # Target, and flush the orphaned modules from the Debugger
-        # so we don't hold on to a reference of the on-disk binary.
+        # for libno-nlists.dylib and libhas-nlists.dylib.
+        # If not, detach, delete the Target, and flush the orphaned
+        # modules from the Debugger so we don't hold on to a reference
+        # of the on-disk binary.
 
         # If we haven't succeeded after ten attemps of attaching and
         # detaching, fail the test.
-        while not m.IsValid() or m.IsFileBacked():
+        while (not m_no_nlist.IsValid() or m_no_nlist.IsFileBacked()) and (
+            not m_has_nlist.IsValid() or m_has_nlist.IsFileBacked()
+        ):
             if process.IsValid():
                 process.Detach()
                 self.dbg.DeleteTarget(target)
@@ -47,7 +51,8 @@ def test_no_nlist_symbols(self):
             self.runCmd("process attach -p " + str(pid))
             target = self.dbg.GetSelectedTarget()
             process = target.GetProcess()
-            m = target.FindModule(lldb.SBFileSpec("libno-nlists.dylib"))
+            m_no_nlist = 
target.FindModule(lldb.SBFileSpec("libno-nlists.dylib"))
+            m_has_nlist = 
target.FindModule(lldb.SBFileSpec("libhas-nlists.dylib"))
 
             reattach_count = reattach_count + 1
             if reattach_count > 10:
@@ -57,14 +62,20 @@ def test_no_nlist_symbols(self):
 
         # Test that we found libno-nlists.dylib, it is a memory
         # module, and that it has no symbols.
-        self.assertTrue(m.IsValid())
-        self.assertFalse(m.IsFileBacked())
-        self.assertEqual(m.GetNumSymbols(), 0)
+        self.assertTrue(m_no_nlist.IsValid())
+        self.assertFalse(m_no_nlist.IsFileBacked())
+        self.assertEqual(m_no_nlist.GetNumSymbols(), 0)
+
+        # Test that we found libhas-nlists.dylib, it is a memory
+        # module, and that it has more than zero symbols.
+        self.assertTrue(m_has_nlist.IsValid())
+        self.assertFalse(m_has_nlist.IsFileBacked())
+        self.assertGreater(m_has_nlist.GetNumSymbols(), 0)
 
         # And as a sanity check, get the main binary's module,
         # test that it is file backed and that it has more than
         # zero symbols.
-        m = target.FindModule(lldb.SBFileSpec("a.out"))
-        self.assertTrue(m.IsValid())
-        self.assertTrue(m.IsFileBacked())
-        self.assertGreater(m.GetNumSymbols(), 0)
+        m_exe = target.FindModule(lldb.SBFileSpec("a.out"))
+        self.assertTrue(m_exe.IsValid())
+        self.assertTrue(m_exe.IsFileBacked())
+        self.assertGreater(m_exe.GetNumSymbols(), 0)
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/has-nlists.c 
b/lldb/test/API/macosx/no-nlist-memory-module/has-nlists.c
new file mode 100644
index 0000000000000..5cfcb5118bbb7
--- /dev/null
+++ b/lldb/test/API/macosx/no-nlist-memory-module/has-nlists.c
@@ -0,0 +1 @@
+int get_return_value2() { return 20; }
diff --git a/lldb/test/API/macosx/no-nlist-memory-module/main.c 
b/lldb/test/API/macosx/no-nlist-memory-module/main.c
index fb1451ccc99d1..07ea011e92e6b 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/main.c
+++ b/lldb/test/API/macosx/no-nlist-memory-module/main.c
@@ -6,6 +6,7 @@
 #include <unistd.h>
 
 int get_return_value();
+int get_return_value2();
 
 int main(int argc, char **argv) {
 
@@ -27,11 +28,21 @@ int main(int argc, char **argv) {
     printf("Could not remove dylib %s\n", dylib_path);
     exit(2);
   }
+  snprintf(dylib_path, PATH_MAX, "%s/%s", dir, "libhas-nlists.dylib");
+  dylib_path[PATH_MAX - 1] = '\0';
+  if (stat(dylib_path, &sb) == -1) {
+    printf("Could not find dylib %s to remove it\n", dylib_path);
+    exit(1);
+  }
+  if (unlink(dylib_path) == -1) {
+    printf("Could not remove dylib %s\n", dylib_path);
+    exit(2);
+  }
 
   // This sleep will exit as soon as lldb attaches
   // and interrupts it.
   sleep(200);
 
   int retval = get_return_value();
-  return retval;
+  return retval + get_return_value2();
 }

>From ac2a8e86d7b7927641fe11909b17e653f88f79fa Mon Sep 17 00:00:00 2001
From: Jason Molenda <jmole...@apple.com>
Date: Thu, 6 Mar 2025 10:54:03 -0800
Subject: [PATCH 4/4] simplify makefile clean line

---
 lldb/test/API/macosx/no-nlist-memory-module/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lldb/test/API/macosx/no-nlist-memory-module/Makefile 
b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
index bcc691022cc0d..8271c3165ef07 100644
--- a/lldb/test/API/macosx/no-nlist-memory-module/Makefile
+++ b/lldb/test/API/macosx/no-nlist-memory-module/Makefile
@@ -16,4 +16,4 @@ build-libhas-nlists: has-nlists.c
        $(LD) -dynamiclib -o libhas-nlists.dylib has-nlists.o  -install_name 
"@executable_path/libhas-nlists.dylib"
 
 clean::
-       rm -rf has-nlists.o no-nlists.o no-nlist-sect.o main.o main.s a.out 
a.out.dSYM libno-nlists.dylib libno-nlists.dylib.dSYM libhas-nlists.dylib 
libhas-nlists.dylib.dSYM
+       rm -rf *.o *.dylib a.out *.dSYM

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to