[Lldb-commits] [lldb] r326805 - Rewrite TestTargetSymbolsBuildidCase to be more focused

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Mar 6 07:56:20 PST 2018


Author: labath
Date: Tue Mar  6 07:56:20 2018
New Revision: 326805

URL: http://llvm.org/viewvc/llvm-project?rev=326805&view=rev
Log:
Rewrite TestTargetSymbolsBuildidCase to be more focused

Summary:
The test was failing in remote debugging scenario with windows as a host
as cmd.exe is not able to parse the complicated shell commands in the
Makefile.

The test seemed like a perfect candidate for a more focused testing
approach, so I have rewritten in on top of lldb-test's module-sections
functionality. The slight gotcha there was that the
Module::GetSectionList does not include the sections from the symbol
file until someone manually calls Module::GetSymbolVendor. Normally,
this is not an issue, because someone will have initialized the symbol
vendor by the time anyone starts looking at the sections. However, when
all one this is dump the section list, we run into this problem.

I've tried making this behavior more automatic, but it turns out it's
not that easy, so for now, I just manually initialize the Symbol Vendor
before dumping out the sections in lldb-test.

Reviewers: jankratochvil

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D42914

Added:
    lldb/trunk/lit/Modules/build-id-case.yaml
Removed:
    lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/Makefile
    lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py
    lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/main.c
Modified:
    lldb/trunk/tools/lldb-test/lldb-test.cpp

Added: lldb/trunk/lit/Modules/build-id-case.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Modules/build-id-case.yaml?rev=326805&view=auto
==============================================================================
--- lldb/trunk/lit/Modules/build-id-case.yaml (added)
+++ lldb/trunk/lit/Modules/build-id-case.yaml Tue Mar  6 07:56:20 2018
@@ -0,0 +1,42 @@
+# RUN: mkdir -p %t/.build-id/1b
+# RUN: yaml2obj %s > %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug
+# RUN: cd %t
+# RUN: llvm-objcopy --strip-all --add-gnu-debuglink=.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/.build-id/1b/8a73ac238390e32a7ff4ac8ebe4d6a41ecf5c9.debug %t/stripped.out
+# RUN: lldb-test module-sections %t/stripped.out | FileCheck %s
+
+# CHECK: Name: .debug_frame
+# CHECK-NEXT: VM size: 0
+# CHECK-NEXT: File size: 8
+
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x00000000004003D0
+Sections:
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400274
+    AddressAlign:    0x0000000000000004
+    Content:         040000001400000003000000474E55001B8A73AC238390E32A7FF4AC8EBE4D6A41ECF5C9
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x00000000004003D0
+    AddressAlign:    0x0000000000000010
+    Content:         DEADBEEFBAADF00D
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         DEADBEEFBAADF00D
+Symbols:
+  Local:
+    - Name:            main
+      Type:            STT_FUNC
+      Section:         .text
+      Value:           0x00000000004003D0
+      Size:            0x0000000000000008
+...

Removed: lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/Makefile?rev=326804&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/Makefile (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/Makefile (removed)
@@ -1,20 +0,0 @@
-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

Removed: lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py?rev=326804&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/TestTargetSymbolsBuildidCase.py (removed)
@@ -1,22 +0,0 @@
-""" 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__)
-
-    @no_debug_info_test  # Prevent the genaration of the dwarf version of this test
-    @skipUnlessPlatform(['linux'])
-    @skipIf(hostoslist=['windows'])
-    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)

Removed: lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/main.c?rev=326804&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/main.c (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/buildidcase/main.c (removed)
@@ -1,3 +0,0 @@
-int main() {
-  return 0;
-}

Modified: lldb/trunk/tools/lldb-test/lldb-test.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-test/lldb-test.cpp?rev=326805&r1=326804&r2=326805&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-test/lldb-test.cpp (original)
+++ lldb/trunk/tools/lldb-test/lldb-test.cpp Tue Mar  6 07:56:20 2018
@@ -191,9 +191,11 @@ static void dumpModules(Debugger &Dbg) {
 
   for (const auto &File : opts::module::InputFilenames) {
     ModuleSpec Spec{FileSpec(File, false)};
-    Spec.GetSymbolFileSpec().SetFile(File, false);
 
     auto ModulePtr = std::make_shared<lldb_private::Module>(Spec);
+    // Fetch symbol vendor before we get the section list to give the symbol
+    // vendor a chance to populate it.
+    ModulePtr->GetSymbolVendor();
     SectionList *Sections = ModulePtr->GetSectionList();
     if (!Sections) {
       llvm::errs() << "Could not load sections for module " << File << "\n";




More information about the lldb-commits mailing list