Index: lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp =================================================================== --- lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp +++ lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp @@ -166,9 +166,11 @@ } if (executable_sp.get()) { - if (!SetRendezvousBreakpoint()) { + if (!SetRendezvousBreakpoint() || m_process->GetTarget().GetArchitecture().GetTriple().getOS() == llvm::Triple::FreeBSD) { // If we cannot establish rendezvous breakpoint right now we'll try again - // at entry point. + // at entry point. FreeBSD does not report loading the initial set + // of libraries (DT_NEEDED), so we need to scan them at entry point + // unconditionally. ProbeEntry(); } } @@ -195,9 +197,11 @@ LLDB_LOGF(log, "DynamicLoaderPOSIXDYLD::%s about to call ProbeEntry()", __FUNCTION__); - if (!SetRendezvousBreakpoint()) { + if (!SetRendezvousBreakpoint() || m_process->GetTarget().GetArchitecture().GetTriple().getOS() == llvm::Triple::FreeBSD) { // If we cannot establish rendezvous breakpoint right now we'll try again - // at entry point. + // at entry point. FreeBSD does not report loading the initial set + // of libraries (DT_NEEDED), so we need to scan them at entry point + // unconditionally. ProbeEntry(); } Index: lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp =================================================================== --- lldb/source/Plugins/Process/FreeBSDRemote/NativeProcessFreeBSD.cpp +++ 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"); Index: lldb/test/API/functionalities/memory-region/TestMemoryRegion.py =================================================================== --- lldb/test/API/functionalities/memory-region/TestMemoryRegion.py +++ 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() Index: lldb/test/API/tools/lldb-server/TestLldbGdbServer.py =================================================================== --- lldb/test/API/tools/lldb-server/TestLldbGdbServer.py +++ lldb/test/API/tools/lldb-server/TestLldbGdbServer.py @@ -918,7 +918,6 @@ self.qMemoryRegionInfo_is_supported() @llgs_test - @expectedFailureAll(oslist=["freebsd"]) def test_qMemoryRegionInfo_is_supported_llgs(self): self.init_llgs_test() self.build() @@ -983,7 +982,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() @@ -1050,7 +1048,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): @@ -1117,7 +1114,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): Index: lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py =================================================================== --- lldb/test/API/tools/lldb-server/libraries-svr4/TestGdbRemoteLibrariesSvr4Support.py +++ 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"]) + @expectedFailureAll(oslist=["netbsd"]) def test_libraries_svr4_load_addr(self): self.setup_test() self.libraries_svr4_has_correct_load_addr() Index: lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test =================================================================== --- lldb/test/Shell/Unwind/thread-step-out-ret-addr-check.test +++ 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