Revert "Make sure the interpreter module was loaded before making checks against it"

This reverts commit a83a825e99.
This commit is contained in:
António Afonso 2021-02-21 10:38:25 -08:00
parent 5fe23de5db
commit b19d3b092d
6 changed files with 0 additions and 80 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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")

View File

@ -1 +0,0 @@
extern void feature() {}

View File

@ -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
}