forked from OSchip/llvm-project
Fix for TestSharedLib.py (on Linux)
- use lldb 'settings' command to help testcase find shared library - pull up dyldPath variable from TestLoadUnload.py to fixture base class (applicable in multiple cases) llvm-svn: 168612
This commit is contained in:
parent
f8b24cf5f7
commit
179ff29811
|
@ -31,7 +31,6 @@ class LoadUnloadTestCase(TestBase):
|
||||||
|
|
||||||
if sys.platform.startswith("darwin"):
|
if sys.platform.startswith("darwin"):
|
||||||
dylibName = 'libd.dylib'
|
dylibName = 'libd.dylib'
|
||||||
dylibPath = 'DYLD_LIBRARY_PATH'
|
|
||||||
|
|
||||||
# The directory with the dynamic library we did not link to.
|
# The directory with the dynamic library we did not link to.
|
||||||
new_dir = os.path.join(os.getcwd(), "hidden")
|
new_dir = os.path.join(os.getcwd(), "hidden")
|
||||||
|
@ -62,13 +61,13 @@ class LoadUnloadTestCase(TestBase):
|
||||||
# Obliterate traces of libd from the old location.
|
# Obliterate traces of libd from the old location.
|
||||||
os.remove(old_dylib)
|
os.remove(old_dylib)
|
||||||
# Inform dyld of the new path, too.
|
# Inform dyld of the new path, too.
|
||||||
env_cmd_string = "settings set target.env-vars " + dylibPath + "=" + new_dir
|
env_cmd_string = "settings set target.env-vars " + self.dylibPath + "=" + new_dir
|
||||||
if self.TraceOn():
|
if self.TraceOn():
|
||||||
print "Set environment to: ", env_cmd_string
|
print "Set environment to: ", env_cmd_string
|
||||||
self.runCmd(env_cmd_string)
|
self.runCmd(env_cmd_string)
|
||||||
self.runCmd("settings show target.env-vars")
|
self.runCmd("settings show target.env-vars")
|
||||||
|
|
||||||
remove_dyld_path_cmd = "settings remove target.env-vars " + dylibPath
|
remove_dyld_path_cmd = "settings remove target.env-vars " + self.dylibPath
|
||||||
self.addTearDownHook(lambda: self.runCmd(remove_dyld_path_cmd))
|
self.addTearDownHook(lambda: self.runCmd(remove_dyld_path_cmd))
|
||||||
|
|
||||||
self.runCmd("run")
|
self.runCmd("run")
|
||||||
|
@ -89,7 +88,6 @@ class LoadUnloadTestCase(TestBase):
|
||||||
if sys.platform.startswith("darwin"):
|
if sys.platform.startswith("darwin"):
|
||||||
dylibName = 'libd.dylib'
|
dylibName = 'libd.dylib'
|
||||||
dsymName = 'libd.dylib.dSYM'
|
dsymName = 'libd.dylib.dSYM'
|
||||||
dylibPath = 'DYLD_LIBRARY_PATH'
|
|
||||||
|
|
||||||
# The directory to relocate the dynamic library and its debugging info.
|
# The directory to relocate the dynamic library and its debugging info.
|
||||||
special_dir = "hidden"
|
special_dir = "hidden"
|
||||||
|
@ -105,13 +103,13 @@ class LoadUnloadTestCase(TestBase):
|
||||||
# Try running with the DYLD_LIBRARY_PATH environment variable set, make sure
|
# Try running with the DYLD_LIBRARY_PATH environment variable set, make sure
|
||||||
# we pick up the hidden dylib.
|
# we pick up the hidden dylib.
|
||||||
|
|
||||||
env_cmd_string = "settings set target.env-vars " + dylibPath + "=" + new_dir
|
env_cmd_string = "settings set target.env-vars " + self.dylibPath + "=" + new_dir
|
||||||
if self.TraceOn():
|
if self.TraceOn():
|
||||||
print "Set environment to: ", env_cmd_string
|
print "Set environment to: ", env_cmd_string
|
||||||
self.runCmd(env_cmd_string)
|
self.runCmd(env_cmd_string)
|
||||||
self.runCmd("settings show target.env-vars")
|
self.runCmd("settings show target.env-vars")
|
||||||
|
|
||||||
remove_dyld_path_cmd = "settings remove target.env-vars " + dylibPath
|
remove_dyld_path_cmd = "settings remove target.env-vars " + self.dylibPath
|
||||||
self.addTearDownHook(lambda: self.runCmd(remove_dyld_path_cmd))
|
self.addTearDownHook(lambda: self.runCmd(remove_dyld_path_cmd))
|
||||||
|
|
||||||
lldbutil.run_break_set_by_file_and_line (self, "d.c", self.line_d_function, num_expected_locations=1, loc_exact=True)
|
lldbutil.run_break_set_by_file_and_line (self, "d.c", self.line_d_function, num_expected_locations=1, loc_exact=True)
|
||||||
|
|
|
@ -39,6 +39,9 @@ class SharedLibTestCase(TestBase):
|
||||||
TestBase.setUp(self)
|
TestBase.setUp(self)
|
||||||
# Find the line number to break inside main().
|
# Find the line number to break inside main().
|
||||||
self.line = line_number('main.c', '// Set breakpoint 0 here.')
|
self.line = line_number('main.c', '// Set breakpoint 0 here.')
|
||||||
|
if sys.platform.startswith("linux"):
|
||||||
|
self.runCmd("settings set target.env-vars " + self.dylibPath + "=" + os.getcwd())
|
||||||
|
self.addTearDownHook(lambda: self.runCmd("settings remove target.env-vars " + self.dylibPath))
|
||||||
|
|
||||||
def common_setup(self):
|
def common_setup(self):
|
||||||
exe = os.path.join(os.getcwd(), "a.out")
|
exe = os.path.join(os.getcwd(), "a.out")
|
||||||
|
|
|
@ -621,6 +621,12 @@ class Base(unittest2.TestCase):
|
||||||
# See HideStdout(self).
|
# See HideStdout(self).
|
||||||
self.sys_stdout_hidden = False
|
self.sys_stdout_hidden = False
|
||||||
|
|
||||||
|
# set environment variable names for finding shared libraries
|
||||||
|
if sys.platform.startswith("darwin"):
|
||||||
|
self.dylibPath = 'DYLD_LIBRARY_PATH'
|
||||||
|
elif sys.platform.startswith("linux") or sys.platform.startswith("freebsd"):
|
||||||
|
self.dylibPath = 'LD_LIBRARY_PATH'
|
||||||
|
|
||||||
def runHooks(self, child=None, child_prompt=None, use_cmd_api=False):
|
def runHooks(self, child=None, child_prompt=None, use_cmd_api=False):
|
||||||
"""Perform the run hooks to bring lldb debugger to the desired state.
|
"""Perform the run hooks to bring lldb debugger to the desired state.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue