diff --git a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp --- a/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp +++ b/lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp @@ -295,8 +295,15 @@ return false; // Only add shared libraries and not the executable. - if (!SOEntryIsMainExecutable(entry)) + if (!SOEntryIsMainExecutable(entry)) { m_soentries.push_back(entry); + // This function is called only once, at the very beginning + // of the program. Make sure to add all soentries that are + // already present at this point. This is necessary to cover + // DT_NEEDED on FreeBSD since (unlike Linux) it does not report + // loading these libraries separately. + m_added_soentries.push_back(entry); + } } m_loaded_modules = module_list; diff --git a/lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp b/lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp --- a/lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp +++ b/lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp @@ -485,9 +485,6 @@ Status NativeProcessFreeBSD::GetMemoryRegionInfo(lldb::addr_t load_addr, MemoryRegionInfo &range_info) { - // TODO: figure out why it breaks stuff - return Status("currently breaks determining module list"); - if (m_supports_mem_region == LazyBool::eLazyBoolNo) { // We're done. return Status("unsupported"); diff --git a/lldb/test/API/api/multithreaded/TestMultithreaded.py b/lldb/test/API/api/multithreaded/TestMultithreaded.py --- a/lldb/test/API/api/multithreaded/TestMultithreaded.py +++ b/lldb/test/API/api/multithreaded/TestMultithreaded.py @@ -31,7 +31,6 @@ @skipIfNoSBHeaders # clang-cl does not support throw or catch (llvm.org/pr24538) @skipIfWindows - @expectedFailureAll(oslist=['freebsd'], bugnumber='llvm.org/pr48370') def test_python_stop_hook(self): """Test that you can run a python command in a stop-hook when stdin is File based. """ self.build_and_test('driver.cpp test_stop-hook.cpp', diff --git a/lldb/test/API/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py b/lldb/test/API/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py --- a/lldb/test/API/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py +++ b/lldb/test/API/functionalities/breakpoint/global_constructor/TestBreakpointInGlobalConstructor.py @@ -15,7 +15,6 @@ mydir = TestBase.compute_mydir(__file__) NO_DEBUG_INFO_TESTCASE = True - @expectedFailureAll(oslist=["freebsd"], bugnumber='llvm.org/pr48373') @expectedFailureNetBSD def test(self): self.build() diff --git a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py --- a/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py +++ b/lldb/test/API/functionalities/memory-region/TestMemoryRegion.py @@ -23,7 +23,6 @@ 'main.cpp', '// Run here before printing memory regions') - @expectedFailureAll(oslist=["freebsd"]) def test(self): self.build() diff --git a/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py b/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py --- a/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py +++ b/lldb/test/API/tools/lldb-server/TestLldbGdbServer.py @@ -843,7 +843,6 @@ self.qMemoryRegionInfo_is_supported() @llgs_test - @expectedFailureAll(oslist=["freebsd"]) def test_qMemoryRegionInfo_is_supported_llgs(self): self.init_llgs_test() self.build() @@ -908,7 +907,6 @@ self.qMemoryRegionInfo_reports_code_address_as_executable() @skipIfWindows # No pty support to test any inferior output - @expectedFailureAll(oslist=["freebsd"]) @llgs_test def test_qMemoryRegionInfo_reports_code_address_as_executable_llgs(self): self.init_llgs_test() @@ -975,7 +973,6 @@ self.qMemoryRegionInfo_reports_stack_address_as_readable_writeable() @skipIfWindows # No pty support to test any inferior output - @expectedFailureAll(oslist=["freebsd"]) @llgs_test def test_qMemoryRegionInfo_reports_stack_address_as_readable_writeable_llgs( self): @@ -1042,7 +1039,6 @@ self.qMemoryRegionInfo_reports_heap_address_as_readable_writeable() @skipIfWindows # No pty support to test any inferior output - @expectedFailureAll(oslist=["freebsd"]) @llgs_test def test_qMemoryRegionInfo_reports_heap_address_as_readable_writeable_llgs( self): diff --git a/lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py b/lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py --- a/lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py +++ b/lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py @@ -120,7 +120,7 @@ @llgs_test @skipUnlessPlatform(["linux", "android", "freebsd", "netbsd"]) - @expectedFailureAll(oslist=["freebsd", "netbsd"]) + @expectedFailureNetBSD def test_libraries_svr4_load_addr(self): self.setup_test() self.libraries_svr4_has_correct_load_addr() diff --git a/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test b/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test --- a/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test +++ b/lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test @@ -3,7 +3,6 @@ # REQUIRES: target-x86_64 # UNSUPPORTED: system-windows -# XFAIL: system-freebsd # RUN: %clang_host %p/Inputs/call-asm.c -x assembler-with-cpp %p/Inputs/thread-step-out-ret-addr-check.s -o %t # RUN: not %lldb %t -s %s -b 2>&1 | FileCheck %s