jankratochvil updated this revision to Diff 132668. jankratochvil added a comment.
Simplify the testcase using: lldbutil.run_to_name_breakpoint https://reviews.llvm.org/D42852 Files: packages/Python/lldbsuite/test/linux/buildidcase/Makefile packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py packages/Python/lldbsuite/test/linux/buildidcase/main.c source/Host/common/Symbols.cpp Index: source/Host/common/Symbols.cpp =================================================================== --- source/Host/common/Symbols.cpp +++ source/Host/common/Symbols.cpp @@ -245,6 +245,8 @@ // Some debug files are stored in the .build-id directory like this: // /usr/lib/debug/.build-id/ff/e7fe727889ad82bb153de2ad065b2189693315.debug uuid_str = module_uuid.GetAsString(""); + std::transform(uuid_str.begin(), uuid_str.end(), uuid_str.begin(), + ::tolower); uuid_str.insert(2, 1, '/'); uuid_str = uuid_str + ".debug"; } Index: packages/Python/lldbsuite/test/linux/buildidcase/main.c =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/main.c @@ -0,0 +1,3 @@ +int main() { + return 0; +} Index: packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py @@ -0,0 +1,25 @@ +""" Testing separate debug info loading by its .build-id. """ +import os +import time +import lldb +import sys +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestTargetSymbolsBuildidCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + self.source = 'main.c' + + @no_debug_info_test # Prevent the genaration of the dwarf version of this test + @skipUnlessPlatform(['linux']) + def test_target_symbols_buildid_case(self): + self.build(clean=True) + exe = self.getBuildArtifact("stripped.out") + + lldbutil.run_to_name_breakpoint(self, "main", exe_name = exe) Index: packages/Python/lldbsuite/test/linux/buildidcase/Makefile =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/Makefile @@ -0,0 +1,20 @@ +LEVEL = ../../make +C_SOURCES := main.c +LD_EXTRAS += -Wl,--build-id=sha1 + +all: stripped.out + +.PHONY: .build-id +stripped.out .build-id: a.out + $(OBJCOPY) -j .note.gnu.build-id -O binary $< tmp + rm -rf .build-id + fn=`od -An -tx1 <tmp|tr -d ' \n'|sed -e 's/^.\{32\}//' -e 's#^..#.build-id/&/#' -e 's#$$#.debug#'` && \ + mkdir -p `dirname $$fn` && \ + $(OBJCOPY) --only-keep-debug $< $$fn && \ + $(OBJCOPY) --strip-all --add-gnu-debuglink=$$fn $< stripped.out + $(RM) tmp + +clean:: + $(RM) -r stripped.out .build-id + +include $(LEVEL)/Makefile.rules
Index: source/Host/common/Symbols.cpp =================================================================== --- source/Host/common/Symbols.cpp +++ source/Host/common/Symbols.cpp @@ -245,6 +245,8 @@ // Some debug files are stored in the .build-id directory like this: // /usr/lib/debug/.build-id/ff/e7fe727889ad82bb153de2ad065b2189693315.debug uuid_str = module_uuid.GetAsString(""); + std::transform(uuid_str.begin(), uuid_str.end(), uuid_str.begin(), + ::tolower); uuid_str.insert(2, 1, '/'); uuid_str = uuid_str + ".debug"; } Index: packages/Python/lldbsuite/test/linux/buildidcase/main.c =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/main.c @@ -0,0 +1,3 @@ +int main() { + return 0; +} Index: packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py @@ -0,0 +1,25 @@ +""" Testing separate debug info loading by its .build-id. """ +import os +import time +import lldb +import sys +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestTargetSymbolsBuildidCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + TestBase.setUp(self) + self.source = 'main.c' + + @no_debug_info_test # Prevent the genaration of the dwarf version of this test + @skipUnlessPlatform(['linux']) + def test_target_symbols_buildid_case(self): + self.build(clean=True) + exe = self.getBuildArtifact("stripped.out") + + lldbutil.run_to_name_breakpoint(self, "main", exe_name = exe) Index: packages/Python/lldbsuite/test/linux/buildidcase/Makefile =================================================================== --- /dev/null +++ packages/Python/lldbsuite/test/linux/buildidcase/Makefile @@ -0,0 +1,20 @@ +LEVEL = ../../make +C_SOURCES := main.c +LD_EXTRAS += -Wl,--build-id=sha1 + +all: stripped.out + +.PHONY: .build-id +stripped.out .build-id: a.out + $(OBJCOPY) -j .note.gnu.build-id -O binary $< tmp + rm -rf .build-id + fn=`od -An -tx1 <tmp|tr -d ' \n'|sed -e 's/^.\{32\}//' -e 's#^..#.build-id/&/#' -e 's#$$#.debug#'` && \ + mkdir -p `dirname $$fn` && \ + $(OBJCOPY) --only-keep-debug $< $$fn && \ + $(OBJCOPY) --strip-all --add-gnu-debuglink=$$fn $< stripped.out + $(RM) tmp + +clean:: + $(RM) -r stripped.out .build-id + +include $(LEVEL)/Makefile.rules
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits