forked from OSchip/llvm-project
Revert "Make sure the interpreter module was loaded before making checks against it"
This reverts commit a83a825e99
.
This commit is contained in:
parent
5fe23de5db
commit
b19d3b092d
|
@ -622,10 +622,6 @@ def skipUnlessDarwin(func):
|
|||
"""Decorate the item to skip tests that should be skipped on any non Darwin platform."""
|
||||
return skipUnlessPlatform(lldbplatformutil.getDarwinOSTriples())(func)
|
||||
|
||||
def skipUnlessLinux(func):
|
||||
"""Decorate the item to skip tests that should be skipped on any non-Linux platform."""
|
||||
return skipUnlessPlatform(["linux"])(func)
|
||||
|
||||
def skipUnlessTargetAndroid(func):
|
||||
return unittest2.skipUnless(lldbplatformutil.target_is_android(),
|
||||
"requires target to be Android")(func)
|
||||
|
|
|
@ -441,7 +441,6 @@ void DynamicLoaderPOSIXDYLD::RefreshModules() {
|
|||
if (module_sp.get()) {
|
||||
if (module_sp->GetObjectFile()->GetBaseAddress().GetLoadAddress(
|
||||
&m_process->GetTarget()) == m_interpreter_base &&
|
||||
m_interpreter_module.lock() &&
|
||||
module_sp != m_interpreter_module.lock()) {
|
||||
// If this is a duplicate instance of ld.so, unload it. We may end up
|
||||
// with it if we load it via a different path than before (symlink
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
C_SOURCES := main.c
|
||||
LD_EXTRAS := -Wl,-rpath "-Wl,$(shell pwd)"
|
||||
USE_LIBDL := 1
|
||||
|
||||
feature:
|
||||
$(MAKE) -f $(MAKEFILE_RULES) \
|
||||
DYLIB_ONLY=YES DYLIB_NAME=feature DYLIB_C_SOURCES=feature.c
|
||||
all: feature
|
||||
|
||||
include Makefile.rules
|
|
@ -1,49 +0,0 @@
|
|||
import lldb
|
||||
from lldbsuite.test.decorators import *
|
||||
from lldbsuite.test.lldbtest import *
|
||||
from lldbsuite.test import lldbutil
|
||||
|
||||
class TestCase(TestBase):
|
||||
|
||||
mydir = TestBase.compute_mydir(__file__)
|
||||
|
||||
def build_launch_and_attach(self):
|
||||
self.build()
|
||||
# launch
|
||||
exe = self.getBuildArtifact("a.out")
|
||||
popen = self.spawnSubprocess(exe)
|
||||
# attach
|
||||
target = self.dbg.CreateTarget(exe)
|
||||
self.assertTrue(target, VALID_TARGET)
|
||||
listener = lldb.SBListener("my.attach.listener")
|
||||
error = lldb.SBError()
|
||||
process = target.AttachToProcessWithID(listener, popen.pid, error)
|
||||
self.assertTrue(error.Success() and process, PROCESS_IS_VALID)
|
||||
return process
|
||||
|
||||
def assertModuleIsLoaded(self, module_name):
|
||||
feature_module = self.dbg.GetSelectedTarget().FindModule(lldb.SBFileSpec(module_name))
|
||||
self.assertTrue(feature_module.IsValid(), f"Module {module_name} should be loaded")
|
||||
|
||||
def assertModuleIsNotLoaded(self, module_name):
|
||||
feature_module = self.dbg.GetSelectedTarget().FindModule(lldb.SBFileSpec(module_name))
|
||||
self.assertFalse(feature_module.IsValid(), f"Module {module_name} should not be loaded")
|
||||
|
||||
@skipIfRemote
|
||||
@skipUnlessLinux
|
||||
@no_debug_info_test
|
||||
def test(self):
|
||||
'''
|
||||
This test makes sure that after attach lldb still gets notifications
|
||||
about new modules being loaded by the process
|
||||
'''
|
||||
process = self.build_launch_and_attach()
|
||||
thread = process.GetSelectedThread()
|
||||
self.assertModuleIsNotLoaded("libfeature.so")
|
||||
thread.GetSelectedFrame().EvaluateExpression("flip_to_1_to_continue = 1")
|
||||
# Continue so that dlopen is called.
|
||||
breakpoint = self.target().BreakpointCreateBySourceRegex(
|
||||
"// break after dlopen", lldb.SBFileSpec("main.c"))
|
||||
self.assertNotEqual(breakpoint.GetNumResolvedLocations(), 0)
|
||||
stopped_threads = lldbutil.continue_to_breakpoint(self.process(), breakpoint)
|
||||
self.assertModuleIsLoaded("libfeature.so")
|
|
@ -1 +0,0 @@
|
|||
extern void feature() {}
|
|
@ -1,15 +0,0 @@
|
|||
#include <dlfcn.h>
|
||||
#include <assert.h>
|
||||
#include <unistd.h>
|
||||
|
||||
volatile int flip_to_1_to_continue = 0;
|
||||
|
||||
int main() {
|
||||
lldb_enable_attach();
|
||||
while (! flip_to_1_to_continue) // Wait for debugger to attach
|
||||
sleep(1);
|
||||
// dlopen the feature
|
||||
void *feature = dlopen("libfeature.so", RTLD_NOW);
|
||||
assert(feature && "dlopen failed?");
|
||||
return 0; // break after dlopen
|
||||
}
|
Loading…
Reference in New Issue