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:
Daniel Malea 2012-11-26 21:21:11 +00:00
parent f8b24cf5f7
commit 179ff29811
3 changed files with 13 additions and 6 deletions

View File

@ -31,7 +31,6 @@ class LoadUnloadTestCase(TestBase):
if sys.platform.startswith("darwin"):
dylibName = 'libd.dylib'
dylibPath = 'DYLD_LIBRARY_PATH'
# The directory with the dynamic library we did not link to.
new_dir = os.path.join(os.getcwd(), "hidden")
@ -62,13 +61,13 @@ class LoadUnloadTestCase(TestBase):
# Obliterate traces of libd from the old location.
os.remove(old_dylib)
# 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():
print "Set environment to: ", env_cmd_string
self.runCmd(env_cmd_string)
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.runCmd("run")
@ -89,7 +88,6 @@ class LoadUnloadTestCase(TestBase):
if sys.platform.startswith("darwin"):
dylibName = 'libd.dylib'
dsymName = 'libd.dylib.dSYM'
dylibPath = 'DYLD_LIBRARY_PATH'
# The directory to relocate the dynamic library and its debugging info.
special_dir = "hidden"
@ -105,13 +103,13 @@ class LoadUnloadTestCase(TestBase):
# Try running with the DYLD_LIBRARY_PATH environment variable set, make sure
# 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():
print "Set environment to: ", env_cmd_string
self.runCmd(env_cmd_string)
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))
lldbutil.run_break_set_by_file_and_line (self, "d.c", self.line_d_function, num_expected_locations=1, loc_exact=True)

View File

@ -39,6 +39,9 @@ class SharedLibTestCase(TestBase):
TestBase.setUp(self)
# Find the line number to break inside main().
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):
exe = os.path.join(os.getcwd(), "a.out")

View File

@ -621,6 +621,12 @@ class Base(unittest2.TestCase):
# See HideStdout(self).
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):
"""Perform the run hooks to bring lldb debugger to the desired state.