[Lldb-commits] [lldb] r369374 - unittests: Use yaml2obj as a library instead of an external process

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Aug 20 05:28:36 PDT 2019


Author: labath
Date: Tue Aug 20 05:28:36 2019
New Revision: 369374

URL: http://llvm.org/viewvc/llvm-project?rev=369374&view=rev
Log:
unittests: Use yaml2obj as a library instead of an external process

Summary:
Recently, yaml2obj has been turned into a library. This means we can use
it from our unit tests directly, instead of shelling out to an external
process. This patch does just that.

Reviewers: JDevlieghere, aadsm, espindola, jdoerfert

Subscribers: emaste, mgorny, arichardson, MaskRay, jhenderson, abrachet, lldb-commits

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

Removed:
    lldb/trunk/unittests/Core/Inputs/mangled-function-names.yaml
    lldb/trunk/unittests/ObjectFile/ELF/Inputs/sections-resolve-consistently.yaml
    lldb/trunk/unittests/Symbol/Inputs/basic-call-frame-info.yaml
Modified:
    lldb/trunk/unittests/Core/CMakeLists.txt
    lldb/trunk/unittests/Core/MangledTest.cpp
    lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt
    lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
    lldb/trunk/unittests/Symbol/CMakeLists.txt
    lldb/trunk/unittests/Symbol/TestDWARFCallFrameInfo.cpp
    lldb/trunk/unittests/Symbol/TestLineEntry.cpp
    lldb/trunk/unittests/TestingSupport/CMakeLists.txt
    lldb/trunk/unittests/TestingSupport/TestUtilities.cpp
    lldb/trunk/unittests/TestingSupport/TestUtilities.h

Modified: lldb/trunk/unittests/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/CMakeLists.txt?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/CMakeLists.txt (original)
+++ lldb/trunk/unittests/Core/CMakeLists.txt Tue Aug 20 05:28:36 2019
@@ -15,8 +15,3 @@ add_lldb_unittest(LLDBCoreTests
   LINK_COMPONENTS
     Support
   )
-
-set(test_inputs
-  mangled-function-names.yaml
-  )
-add_unittest_inputs(LLDBCoreTests "${test_inputs}")

Removed: lldb/trunk/unittests/Core/Inputs/mangled-function-names.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/Inputs/mangled-function-names.yaml?rev=369373&view=auto
==============================================================================
--- lldb/trunk/unittests/Core/Inputs/mangled-function-names.yaml (original)
+++ lldb/trunk/unittests/Core/Inputs/mangled-function-names.yaml (removed)
@@ -1,129 +0,0 @@
---- !ELF
-FileHeader:      
-  Class:           ELFCLASS64
-  Data:            ELFDATA2LSB
-  Type:            ET_EXEC
-  Machine:         EM_X86_64
-Sections:        
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    AddressAlign:    0x0000000000000010
-    Content:         554889E58B0425A80000005DC30F1F00
-  - Name:            .anothertext
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x0000000000000010
-    AddressAlign:    0x0000000000000010
-    Content:         554889E54883EC20488D0425A8000000C745FC00000000488945F0488B45F08B08894DECE8C7FFFFFF8B4DEC01C189C84883C4205D746573742073747200C3
-  - Name:            .eh_frame
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC ]
-    Address:         0x0000000000000050
-    AddressAlign:    0x0000000000000008
-    Content:         1400000000000000017A5200017810011B0C0708900100001C0000001C00000090FFFFFF0D00000000410E108602430D06000000000000001C0000003C00000080FFFFFF3F00000000410E108602430D0600000000000000
-  - Name:            .data
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_WRITE, SHF_ALLOC ]
-    Address:         0x00000000000000A8
-    AddressAlign:    0x0000000000000004
-    Content:         '01000000'
-  - Name:            .comment
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_MERGE, SHF_STRINGS ]
-    AddressAlign:    0x0000000000000001
-    Content:         5562756E747520636C616E672076657273696F6E20332E352D317562756E74753120287472756E6B2920286261736564206F6E204C4C564D20332E352900
-Symbols:
-  - Type:            STT_SECTION
-    Section:         .text
-  - Type:            STT_SECTION
-    Section:         .anothertext
-    Value:           0x0000000000000010
-  - Type:            STT_SECTION
-    Section:         .eh_frame
-    Value:           0x0000000000000050
-  - Type:            STT_SECTION
-    Section:         .data
-    Value:           0x00000000000000A8
-  - Type:            STT_SECTION
-    Section:         .comment
-  - Name:            /tmp/a.c
-    Type:            STT_FILE
-  - Type:            STT_FILE          
-  - Name:            somedata
-    Type:            STT_OBJECT
-    Section:         .anothertext
-    Value:           0x0000000000000045
-    Binding:         STB_GLOBAL
-  - Name:            main
-    Type:            STT_FUNC
-    Section:         .anothertext
-    Value:           0x0000000000000010
-    Size:            0x000000000000003F
-    Binding:         STB_GLOBAL
-  - Name:            _Z3foov
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            puts at GLIBC_2.5
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            puts at GLIBC_2.6
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _Z5annotv at VERSION3
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZN1AC2Ev
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZN1AD2Ev
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZN1A3barEv
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZGVZN4llvm4dbgsEvE7thestrm
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZZN4llvm4dbgsEvE7thestrm
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _ZTVN5clang4DeclE
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            -[ObjCfoo]
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            +[B ObjCbar(WithCategory)]
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-  - Name:            _Z12undemangableEvx42
-    Type:            STT_FUNC
-    Section:         .text
-    Size:            0x000000000000000D
-    Binding:         STB_GLOBAL
-...

Modified: lldb/trunk/unittests/Core/MangledTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Core/MangledTest.cpp?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/Core/MangledTest.cpp (original)
+++ lldb/trunk/unittests/Core/MangledTest.cpp Tue Aug 20 05:28:36 2019
@@ -56,15 +56,113 @@ TEST(MangledTest, NameIndexes_FindFuncti
   ObjectFileELF::Initialize();
   SymbolFileSymtab::Initialize();
 
-  llvm::SmallString<128> Obj;
-  ASSERT_NO_ERROR(llvm::sys::fs::createTemporaryFile(
-      "mangled-function-names-%%%%%%", "obj", Obj));
-  llvm::FileRemover Deleter(Obj);
-  ASSERT_THAT_ERROR(ReadYAMLObjectFile("mangled-function-names.yaml", Obj),
-                    llvm::Succeeded());
+  auto ExpectedFile = TestFile::fromYaml(R"(
+--- !ELF
+FileHeader:      
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+Sections:        
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    AddressAlign:    0x0000000000000010
+    Size:            0x20
+  - Name:            .anothertext
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000000010
+    AddressAlign:    0x0000000000000010
+    Size:            0x40
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x00000000000000A8
+    AddressAlign:    0x0000000000000004
+    Content:         '01000000'
+Symbols:
+  - Name:            somedata
+    Type:            STT_OBJECT
+    Section:         .anothertext
+    Value:           0x0000000000000045
+    Binding:         STB_GLOBAL
+  - Name:            main
+    Type:            STT_FUNC
+    Section:         .anothertext
+    Value:           0x0000000000000010
+    Size:            0x000000000000003F
+    Binding:         STB_GLOBAL
+  - Name:            _Z3foov
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            puts at GLIBC_2.5
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            puts at GLIBC_2.6
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _Z5annotv at VERSION3
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZN1AC2Ev
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZN1AD2Ev
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZN1A3barEv
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZGVZN4llvm4dbgsEvE7thestrm
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZZN4llvm4dbgsEvE7thestrm
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _ZTVN5clang4DeclE
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            -[ObjCfoo]
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            +[B ObjCbar(WithCategory)]
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+  - Name:            _Z12undemangableEvx42
+    Type:            STT_FUNC
+    Section:         .text
+    Size:            0x000000000000000D
+    Binding:         STB_GLOBAL
+...
+)");
+  ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded());
 
-  ModuleSpec Spec{FileSpec(Obj)};
-  Spec.GetSymbolFileSpec().SetFile(Obj, FileSpec::Style::native);
+  ModuleSpec Spec{FileSpec(ExpectedFile->name())};
   auto M = std::make_shared<Module>(Spec);
 
   auto Count = [M](const char *Name, FunctionNameType Type) -> int {

Modified: lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt (original)
+++ lldb/trunk/unittests/ObjectFile/ELF/CMakeLists.txt Tue Aug 20 05:28:36 2019
@@ -11,6 +11,5 @@ add_lldb_unittest(ObjectFileELFTests
 
 set(test_inputs
   early-section-headers.so
-  sections-resolve-consistently.yaml
   )
 add_unittest_inputs(ObjectFileELFTests "${test_inputs}")

Removed: lldb/trunk/unittests/ObjectFile/ELF/Inputs/sections-resolve-consistently.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/Inputs/sections-resolve-consistently.yaml?rev=369373&view=auto
==============================================================================
--- lldb/trunk/unittests/ObjectFile/ELF/Inputs/sections-resolve-consistently.yaml (original)
+++ lldb/trunk/unittests/ObjectFile/ELF/Inputs/sections-resolve-consistently.yaml (removed)
@@ -1,52 +0,0 @@
---- !ELF
-FileHeader:
-  Class:           ELFCLASS64
-  Data:            ELFDATA2LSB
-  Type:            ET_EXEC
-  Machine:         EM_X86_64
-  Entry:           0x0000000000400180
-Sections:
-  - Name:            .note.gnu.build-id
-    Type:            SHT_NOTE
-    Flags:           [ SHF_ALLOC ]
-    Address:         0x0000000000400158
-    AddressAlign:    0x0000000000000004
-    Content:         040000001400000003000000474E55003F3EC29E3FD83E49D18C4D49CD8A730CC13117B6
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x0000000000400180
-    AddressAlign:    0x0000000000000010
-    Content:         554889E58B042500106000890425041060005DC3
-  - Name:            .data
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_WRITE, SHF_ALLOC ]
-    Address:         0x0000000000601000
-    AddressAlign:    0x0000000000000004
-    Content:         2F000000
-  - Name:            .bss
-    Type:            SHT_NOBITS
-    Flags:           [ SHF_WRITE, SHF_ALLOC ]
-    Address:         0x0000000000601004
-    AddressAlign:    0x0000000000000004
-    Size:            0x0000000000000004
-Symbols:
-  - Name:            Y
-    Type:            STT_OBJECT
-    Section:         .data
-    Value:           0x0000000000601000
-    Size:            0x0000000000000004
-    Binding:         STB_GLOBAL
-  - Name:            _start
-    Type:            STT_FUNC
-    Section:         .text
-    Value:           0x0000000000400180
-    Size:            0x0000000000000014
-    Binding:         STB_GLOBAL
-  - Name:            X
-    Type:            STT_OBJECT
-    Section:         .bss
-    Value:           0x0000000000601004
-    Size:            0x0000000000000004
-    Binding:         STB_GLOBAL
-...

Modified: lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp (original)
+++ lldb/trunk/unittests/ObjectFile/ELF/TestObjectFileELF.cpp Tue Aug 20 05:28:36 2019
@@ -48,16 +48,65 @@ protected:
 };
 
 TEST_F(ObjectFileELFTest, SectionsResolveConsistently) {
-  llvm::SmallString<128> obj;
-  ASSERT_NO_ERROR(llvm::sys::fs::createTemporaryFile(
-      "sections-resolve-consistently-%%%%%%", "obj", obj));
-  llvm::FileRemover remover(obj);
-  ASSERT_THAT_ERROR(
-      ReadYAMLObjectFile("sections-resolve-consistently.yaml", obj),
-      llvm::Succeeded());
+  auto ExpectedFile = TestFile::fromYaml(R"(
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_EXEC
+  Machine:         EM_X86_64
+  Entry:           0x0000000000400180
+Sections:
+  - Name:            .note.gnu.build-id
+    Type:            SHT_NOTE
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000400158
+    AddressAlign:    0x0000000000000004
+    Content:         040000001400000003000000474E55003F3EC29E3FD83E49D18C4D49CD8A730CC13117B6
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000400180
+    AddressAlign:    0x0000000000000010
+    Content:         554889E58B042500106000890425041060005DC3
+  - Name:            .data
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x0000000000601000
+    AddressAlign:    0x0000000000000004
+    Content:         2F000000
+  - Name:            .bss
+    Type:            SHT_NOBITS
+    Flags:           [ SHF_WRITE, SHF_ALLOC ]
+    Address:         0x0000000000601004
+    AddressAlign:    0x0000000000000004
+    Size:            0x0000000000000004
+Symbols:
+  - Name:            Y
+    Type:            STT_OBJECT
+    Section:         .data
+    Value:           0x0000000000601000
+    Size:            0x0000000000000004
+    Binding:         STB_GLOBAL
+  - Name:            _start
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x0000000000400180
+    Size:            0x0000000000000014
+    Binding:         STB_GLOBAL
+  - Name:            X
+    Type:            STT_OBJECT
+    Section:         .bss
+    Value:           0x0000000000601004
+    Size:            0x0000000000000004
+    Binding:         STB_GLOBAL
+...
+)");
+  ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded());
 
-  ModuleSpec spec{FileSpec(obj)};
-  spec.GetSymbolFileSpec().SetFile(obj, FileSpec::Style::native);
+  ModuleSpec spec{FileSpec(ExpectedFile->name())};
+  spec.GetSymbolFileSpec().SetFile(ExpectedFile->name(),
+                                   FileSpec::Style::native);
   auto module_sp = std::make_shared<Module>(spec);
   SectionList *list = module_sp->GetSectionList();
   ASSERT_NE(nullptr, list);

Modified: lldb/trunk/unittests/Symbol/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/CMakeLists.txt?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/Symbol/CMakeLists.txt (original)
+++ lldb/trunk/unittests/Symbol/CMakeLists.txt Tue Aug 20 05:28:36 2019
@@ -18,7 +18,6 @@ add_lldb_unittest(SymbolTests
   )
 
 set(test_inputs
-  basic-call-frame-info.yaml
   inlined-functions.yaml
   )
 add_unittest_inputs(SymbolTests "${test_inputs}")

Removed: lldb/trunk/unittests/Symbol/Inputs/basic-call-frame-info.yaml
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/Inputs/basic-call-frame-info.yaml?rev=369373&view=auto
==============================================================================
--- lldb/trunk/unittests/Symbol/Inputs/basic-call-frame-info.yaml (original)
+++ lldb/trunk/unittests/Symbol/Inputs/basic-call-frame-info.yaml (removed)
@@ -1,140 +0,0 @@
---- !ELF
-FileHeader:
-  Class:           ELFCLASS64
-  Data:            ELFDATA2LSB
-  Type:            ET_DYN
-  Machine:         EM_X86_64
-  Entry:           0x0000000000000260
-Sections:
-  - Name:            .text
-    Type:            SHT_PROGBITS
-    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
-    Address:         0x0000000000000260
-    AddressAlign:    0x0000000000000010
-    Content:         554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC3
-#0000000000000260 <eh_frame>:
-# 260:	55                   	push   %rbp
-# 261:	48 89 e5             	mov    %rsp,%rbp
-# 264:	89 7d fc             	mov    %edi,-0x4(%rbp)
-# 267:	8b 45 fc             	mov    -0x4(%rbp),%eax
-# 26a:	5d                   	pop    %rbp
-# 26b:	c3                   	retq
-# 26c:	0f 1f 40 00          	nopl   0x0(%rax)
-#
-#0000000000000270 <debug_frame3>:
-# 270:	55                   	push   %rbp
-# 271:	48 89 e5             	mov    %rsp,%rbp
-# 274:	89 7d fc             	mov    %edi,-0x4(%rbp)
-# 277:	8b 45 fc             	mov    -0x4(%rbp),%eax
-# 27a:	5d                   	pop    %rbp
-# 27b:	c3                   	retq
-# 27c:	0f 1f 40 00          	nopl   0x0(%rax)
-#
-#0000000000000280 <debug_frame4>:
-# 280:	55                   	push   %rbp
-# 281:	48 89 e5             	mov    %rsp,%rbp
-# 284:	89 7d fc             	mov    %edi,-0x4(%rbp)
-# 287:	8b 45 fc             	mov    -0x4(%rbp),%eax
-# 28a:	5d                   	pop    %rbp
-# 28b:	c3                   	retq
-  - Name:            .eh_frame
-    Type:            SHT_X86_64_UNWIND
-    Flags:           [ SHF_ALLOC ]
-    Address:         0x0000000000000290
-    AddressAlign:    0x0000000000000008
-    Content:         1400000000000000017A5200017810011B0C0708900100001C0000001C000000B0FFFFFF0C00000000410E108602430D0600000000000000
-#00000000 0000000000000014 00000000 CIE
-#  Version:               1
-#  Augmentation:          "zR"
-#  Code alignment factor: 1
-#  Data alignment factor: -8
-#  Return address column: 16
-#  Augmentation data:     1b
-#
-#  DW_CFA_def_cfa: r7 (rsp) ofs 8
-#  DW_CFA_offset: r16 (rip) at cfa-8
-#  DW_CFA_nop
-#  DW_CFA_nop
-#
-#00000018 000000000000001c 0000001c FDE cie=00000000 pc=ffffffffffffffd0..ffffffffffffffdc
-#  DW_CFA_advance_loc: 1 to ffffffffffffffd1
-#  DW_CFA_def_cfa_offset: 16
-#  DW_CFA_offset: r6 (rbp) at cfa-16
-#  DW_CFA_advance_loc: 3 to ffffffffffffffd4
-#  DW_CFA_def_cfa_register: r6 (rbp)
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-  - Name:            .debug_frame
-    Type:            SHT_PROGBITS
-    AddressAlign:    0x0000000000000008
-    Content:         14000000FFFFFFFF03000178100C070890010000000000001C0000000000000070020000000000000C00000000000000410E108602430D0614000000FFFFFFFF040008000178100C07089001000000001C0000003800000080020000000000000C00000000000000410E108602430D06
-#00000000 0000000000000014 ffffffff CIE
-#  Version:               3
-#  Augmentation:          ""
-#  Code alignment factor: 1
-#  Data alignment factor: -8
-#  Return address column: 16
-#
-#  DW_CFA_def_cfa: r7 (rsp) ofs 8
-#  DW_CFA_offset: r16 (rip) at cfa-8
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#
-#00000018 000000000000001c 00000000 FDE cie=00000000 pc=0000000000000270..000000000000027c
-#  DW_CFA_advance_loc: 1 to 0000000000000271
-#  DW_CFA_def_cfa_offset: 16
-#  DW_CFA_offset: r6 (rbp) at cfa-16
-#  DW_CFA_advance_loc: 3 to 0000000000000274
-#  DW_CFA_def_cfa_register: r6 (rbp)
-#
-#00000038 0000000000000014 ffffffff CIE
-#  Version:               4
-#  Augmentation:          ""
-#  Pointer Size:          8
-#  Segment Size:          0
-#  Code alignment factor: 1
-#  Data alignment factor: -8
-#  Return address column: 16
-#
-#  DW_CFA_def_cfa: r7 (rsp) ofs 8
-#  DW_CFA_offset: r16 (rip) at cfa-8
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#  DW_CFA_nop
-#
-#00000050 000000000000001c 00000038 FDE cie=00000038 pc=0000000000000280..000000000000028c
-#  DW_CFA_advance_loc: 1 to 0000000000000281
-#  DW_CFA_def_cfa_offset: 16
-#  DW_CFA_offset: r6 (rbp) at cfa-16
-#  DW_CFA_advance_loc: 3 to 0000000000000284
-#  DW_CFA_def_cfa_register: r6 (rbp)
-Symbols:
-  - Name:            eh_frame
-    Type:            STT_FUNC
-    Section:         .text
-    Value:           0x0000000000000260
-    Size:            0x000000000000000C
-    Binding:         STB_GLOBAL
-  - Name:            debug_frame3
-    Type:            STT_FUNC
-    Section:         .text
-    Value:           0x0000000000000270
-    Size:            0x000000000000000C
-    Binding:         STB_GLOBAL
-  - Name:            debug_frame4
-    Type:            STT_FUNC
-    Section:         .text
-    Value:           0x0000000000000280
-    Size:            0x000000000000000C
-    Binding:         STB_GLOBAL
-...

Modified: lldb/trunk/unittests/Symbol/TestDWARFCallFrameInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/TestDWARFCallFrameInfo.cpp?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/Symbol/TestDWARFCallFrameInfo.cpp (original)
+++ lldb/trunk/unittests/Symbol/TestDWARFCallFrameInfo.cpp Tue Aug 20 05:28:36 2019
@@ -87,14 +87,152 @@ static UnwindPlan::Row GetExpectedRow2()
 
 void DWARFCallFrameInfoTest::TestBasic(DWARFCallFrameInfo::Type type,
                                        llvm::StringRef symbol) {
-  llvm::SmallString<128> obj;
-  ASSERT_NO_ERROR(llvm::sys::fs::createTemporaryFile(
-      "basic-call-frame-info-%%%%%%", "obj", obj));
-  llvm::FileRemover obj_remover(obj);
-  ASSERT_THAT_ERROR(ReadYAMLObjectFile("basic-call-frame-info.yaml", obj),
-                    llvm::Succeeded());
+  auto ExpectedFile = TestFile::fromYaml(R"(
+--- !ELF
+FileHeader:
+  Class:           ELFCLASS64
+  Data:            ELFDATA2LSB
+  Type:            ET_DYN
+  Machine:         EM_X86_64
+  Entry:           0x0000000000000260
+Sections:
+  - Name:            .text
+    Type:            SHT_PROGBITS
+    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
+    Address:         0x0000000000000260
+    AddressAlign:    0x0000000000000010
+    Content:         554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC30F1F4000554889E5897DFC8B45FC5DC3
+#0000000000000260 <eh_frame>:
+# 260:	55                   	push   %rbp
+# 261:	48 89 e5             	mov    %rsp,%rbp
+# 264:	89 7d fc             	mov    %edi,-0x4(%rbp)
+# 267:	8b 45 fc             	mov    -0x4(%rbp),%eax
+# 26a:	5d                   	pop    %rbp
+# 26b:	c3                   	retq
+# 26c:	0f 1f 40 00          	nopl   0x0(%rax)
+#
+#0000000000000270 <debug_frame3>:
+# 270:	55                   	push   %rbp
+# 271:	48 89 e5             	mov    %rsp,%rbp
+# 274:	89 7d fc             	mov    %edi,-0x4(%rbp)
+# 277:	8b 45 fc             	mov    -0x4(%rbp),%eax
+# 27a:	5d                   	pop    %rbp
+# 27b:	c3                   	retq
+# 27c:	0f 1f 40 00          	nopl   0x0(%rax)
+#
+#0000000000000280 <debug_frame4>:
+# 280:	55                   	push   %rbp
+# 281:	48 89 e5             	mov    %rsp,%rbp
+# 284:	89 7d fc             	mov    %edi,-0x4(%rbp)
+# 287:	8b 45 fc             	mov    -0x4(%rbp),%eax
+# 28a:	5d                   	pop    %rbp
+# 28b:	c3                   	retq
+  - Name:            .eh_frame
+    Type:            SHT_X86_64_UNWIND
+    Flags:           [ SHF_ALLOC ]
+    Address:         0x0000000000000290
+    AddressAlign:    0x0000000000000008
+    Content:         1400000000000000017A5200017810011B0C0708900100001C0000001C000000B0FFFFFF0C00000000410E108602430D0600000000000000
+#00000000 0000000000000014 00000000 CIE
+#  Version:               1
+#  Augmentation:          "zR"
+#  Code alignment factor: 1
+#  Data alignment factor: -8
+#  Return address column: 16
+#  Augmentation data:     1b
+#
+#  DW_CFA_def_cfa: r7 (rsp) ofs 8
+#  DW_CFA_offset: r16 (rip) at cfa-8
+#  DW_CFA_nop
+#  DW_CFA_nop
+#
+#00000018 000000000000001c 0000001c FDE cie=00000000 pc=ffffffffffffffd0..ffffffffffffffdc
+#  DW_CFA_advance_loc: 1 to ffffffffffffffd1
+#  DW_CFA_def_cfa_offset: 16
+#  DW_CFA_offset: r6 (rbp) at cfa-16
+#  DW_CFA_advance_loc: 3 to ffffffffffffffd4
+#  DW_CFA_def_cfa_register: r6 (rbp)
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+  - Name:            .debug_frame
+    Type:            SHT_PROGBITS
+    AddressAlign:    0x0000000000000008
+    Content:         14000000FFFFFFFF03000178100C070890010000000000001C0000000000000070020000000000000C00000000000000410E108602430D0614000000FFFFFFFF040008000178100C07089001000000001C0000003800000080020000000000000C00000000000000410E108602430D06
+#00000000 0000000000000014 ffffffff CIE
+#  Version:               3
+#  Augmentation:          ""
+#  Code alignment factor: 1
+#  Data alignment factor: -8
+#  Return address column: 16
+#
+#  DW_CFA_def_cfa: r7 (rsp) ofs 8
+#  DW_CFA_offset: r16 (rip) at cfa-8
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#
+#00000018 000000000000001c 00000000 FDE cie=00000000 pc=0000000000000270..000000000000027c
+#  DW_CFA_advance_loc: 1 to 0000000000000271
+#  DW_CFA_def_cfa_offset: 16
+#  DW_CFA_offset: r6 (rbp) at cfa-16
+#  DW_CFA_advance_loc: 3 to 0000000000000274
+#  DW_CFA_def_cfa_register: r6 (rbp)
+#
+#00000038 0000000000000014 ffffffff CIE
+#  Version:               4
+#  Augmentation:          ""
+#  Pointer Size:          8
+#  Segment Size:          0
+#  Code alignment factor: 1
+#  Data alignment factor: -8
+#  Return address column: 16
+#
+#  DW_CFA_def_cfa: r7 (rsp) ofs 8
+#  DW_CFA_offset: r16 (rip) at cfa-8
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#  DW_CFA_nop
+#
+#00000050 000000000000001c 00000038 FDE cie=00000038 pc=0000000000000280..000000000000028c
+#  DW_CFA_advance_loc: 1 to 0000000000000281
+#  DW_CFA_def_cfa_offset: 16
+#  DW_CFA_offset: r6 (rbp) at cfa-16
+#  DW_CFA_advance_loc: 3 to 0000000000000284
+#  DW_CFA_def_cfa_register: r6 (rbp)
+Symbols:
+  - Name:            eh_frame
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x0000000000000260
+    Size:            0x000000000000000C
+    Binding:         STB_GLOBAL
+  - Name:            debug_frame3
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x0000000000000270
+    Size:            0x000000000000000C
+    Binding:         STB_GLOBAL
+  - Name:            debug_frame4
+    Type:            STT_FUNC
+    Section:         .text
+    Value:           0x0000000000000280
+    Size:            0x000000000000000C
+    Binding:         STB_GLOBAL
+...
+)");
+  ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded());
 
-  auto module_sp = std::make_shared<Module>(ModuleSpec(FileSpec(obj)));
+  auto module_sp =
+      std::make_shared<Module>(ModuleSpec(FileSpec(ExpectedFile->name())));
   SectionList *list = module_sp->GetSectionList();
   ASSERT_NE(nullptr, list);
 

Modified: lldb/trunk/unittests/Symbol/TestLineEntry.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Symbol/TestLineEntry.cpp?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/Symbol/TestLineEntry.cpp (original)
+++ lldb/trunk/unittests/Symbol/TestLineEntry.cpp Tue Aug 20 05:28:36 2019
@@ -33,13 +33,7 @@ using namespace lldb;
 
 class LineEntryTest : public testing::Test {
 public:
-  void SetUp() override {
-    FileSystem::Initialize();
-    HostInfo::Initialize();
-    ObjectFileMachO::Initialize();
-    SymbolFileDWARF::Initialize();
-    ClangASTContext::Initialize();
-  }
+  void SetUp() override;
 
   void TearDown() override {
     ClangASTContext::Terminate();
@@ -50,44 +44,32 @@ public:
   }
 
 protected:
-  llvm::Expected<ModuleSP> GetModule();
   llvm::Expected<LineEntry> GetLineEntryForLine(uint32_t line);
+  llvm::Optional<TestFile> m_file;
   ModuleSP m_module_sp;
 };
 
-llvm::Expected<ModuleSP> LineEntryTest::GetModule() {
-  if (m_module_sp)
-    return m_module_sp;
-
-  llvm::SmallString<128> obj;
-  if (auto ec = llvm::sys::fs::createTemporaryFile("source-%%%%%%", "obj", obj))
-    return llvm::errorCodeToError(ec);
-  llvm::FileRemover obj_remover(obj);
-  if (auto error = ReadYAMLObjectFile("inlined-functions.yaml", obj))
-    return llvm::Error(std::move(error));
-
-  m_module_sp = std::make_shared<Module>(ModuleSpec(FileSpec(obj)));
-  // Preload because the temporary file will be gone once we exit this function.
-  m_module_sp->PreloadSymbols();
-  return m_module_sp;
+void LineEntryTest::SetUp() {
+  FileSystem::Initialize();
+  HostInfo::Initialize();
+  ObjectFileMachO::Initialize();
+  SymbolFileDWARF::Initialize();
+  ClangASTContext::Initialize();
+  auto ExpectedFile = TestFile::fromYamlFile("inlined-functions.yaml");
+  ASSERT_THAT_EXPECTED(ExpectedFile, llvm::Succeeded());
+  m_file.emplace(std::move(*ExpectedFile));
+  m_module_sp = std::make_shared<Module>(ModuleSpec(FileSpec(m_file->name())));
 }
 
 llvm::Expected<LineEntry> LineEntryTest::GetLineEntryForLine(uint32_t line) {
-  auto expected_module_so = GetModule();
-
-  if (!expected_module_so)
-    return llvm::createStringError(llvm::inconvertibleErrorCode(),
-                                   "Not able to get module for test object.");
-
-  auto module = expected_module_so->get();
   bool check_inlines = true;
   bool exact = true;
   SymbolContextList sc_comp_units;
   SymbolContextList sc_line_entries;
   FileSpec file_spec("inlined-functions.cpp");
-  module->ResolveSymbolContextsForFileSpec(file_spec, line, check_inlines,
-                                           lldb::eSymbolContextCompUnit,
-                                           sc_comp_units);
+  m_module_sp->ResolveSymbolContextsForFileSpec(file_spec, line, check_inlines,
+                                                lldb::eSymbolContextCompUnit,
+                                                sc_comp_units);
   if (sc_comp_units.GetSize() == 0)
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
                                    "No comp unit found on the test object.");

Modified: lldb/trunk/unittests/TestingSupport/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/TestingSupport/CMakeLists.txt?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/TestingSupport/CMakeLists.txt (original)
+++ lldb/trunk/unittests/TestingSupport/CMakeLists.txt Tue Aug 20 05:28:36 2019
@@ -8,7 +8,5 @@ add_lldb_library(lldbUtilityHelpers
 
   LINK_COMPONENTS
     Support
+    ObjectYAML
   )
-
-add_dependencies(lldbUtilityHelpers yaml2obj)
-add_definitions(-DYAML2OBJ="$<TARGET_FILE:yaml2obj>")
\ No newline at end of file

Modified: lldb/trunk/unittests/TestingSupport/TestUtilities.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/TestingSupport/TestUtilities.cpp?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/TestingSupport/TestUtilities.cpp (original)
+++ lldb/trunk/unittests/TestingSupport/TestUtilities.cpp Tue Aug 20 05:28:36 2019
@@ -8,9 +8,14 @@
 
 #include "TestUtilities.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/ObjectYAML/yaml2obj.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Program.h"
+#include "llvm/Support/YAMLTraits.h"
+#include "gtest/gtest.h"
+
+using namespace lldb_private;
 
 extern const char *TestMainArgv0;
 
@@ -21,23 +26,39 @@ std::string lldb_private::GetInputFilePa
   return result.str();
 }
 
-llvm::Error
-lldb_private::ReadYAMLObjectFile(const llvm::Twine &yaml_name,
-                                 llvm::SmallString<128> &object_file) {
-  std::string yaml = GetInputFilePath(yaml_name);
-  llvm::StringRef args[] = {YAML2OBJ, yaml};
-  llvm::StringRef obj_ref = object_file;
-  const llvm::Optional<llvm::StringRef> redirects[] = {llvm::None, obj_ref,
-                                                       llvm::None};
-  if (llvm::sys::ExecuteAndWait(YAML2OBJ, args, llvm::None, redirects) != 0)
-    return llvm::createStringError(llvm::inconvertibleErrorCode(),
-                                   "Error running yaml2obj %s.", yaml.c_str());
-  uint64_t size;
-  if (auto ec = llvm::sys::fs::file_size(object_file, size))
-    return llvm::errorCodeToError(ec);
-  if (size == 0)
-    return llvm::createStringError(
-        llvm::inconvertibleErrorCode(),
-        "Empty object file created from yaml2obj %s.", yaml.c_str());
-  return llvm::Error::success();
+llvm::Expected<TestFile> TestFile::fromYaml(llvm::StringRef Yaml) {
+  const auto *Info = testing::UnitTest::GetInstance()->current_test_info();
+  assert(Info);
+  llvm::SmallString<128> Name;
+  int FD;
+  if (std::error_code EC = llvm::sys::fs::createTemporaryFile(
+          llvm::Twine(Info->test_case_name()) + "-" + Info->name(), "test", FD,
+          Name))
+    return llvm::errorCodeToError(EC);
+  llvm::FileRemover Remover(Name);
+  {
+    llvm::raw_fd_ostream OS(FD, /*shouldClose*/ true);
+    llvm::yaml::Input YIn(Yaml);
+    if (llvm::Error E = llvm::yaml::convertYAML(YIn, OS))
+      return std::move(E);
+  }
+  return TestFile(Name, std::move(Remover));
+}
+
+llvm::Expected<TestFile> TestFile::fromYamlFile(const llvm::Twine &Name) {
+  auto BufferOrError =
+      llvm::MemoryBuffer::getFile(GetInputFilePath(Name), /*FileSize*/ -1,
+                                  /*RequiresNullTerminator*/ false);
+  if (!BufferOrError)
+    return llvm::errorCodeToError(BufferOrError.getError());
+  return fromYaml(BufferOrError.get()->getBuffer());
+}
+
+TestFile::~TestFile() {
+  if (!Name)
+    return;
+  if (std::error_code EC =
+          llvm::sys::fs::remove(*Name, /*IgnoreNonExisting*/ false))
+    GTEST_LOG_(WARNING) << "Failed to delete `" << Name->c_str()
+                        << "`: " << EC.message();
 }

Modified: lldb/trunk/unittests/TestingSupport/TestUtilities.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/TestingSupport/TestUtilities.h?rev=369374&r1=369373&r2=369374&view=diff
==============================================================================
--- lldb/trunk/unittests/TestingSupport/TestUtilities.h (original)
+++ lldb/trunk/unittests/TestingSupport/TestUtilities.h Tue Aug 20 05:28:36 2019
@@ -12,6 +12,7 @@
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/Twine.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/FileUtilities.h"
 #include <string>
 
 #define ASSERT_NO_ERROR(x)                                                     \
@@ -27,8 +28,28 @@
 
 namespace lldb_private {
 std::string GetInputFilePath(const llvm::Twine &name);
-llvm::Error ReadYAMLObjectFile(const llvm::Twine &yaml_name,
-                               llvm::SmallString<128> &obj);
+
+class TestFile {
+public:
+  static llvm::Expected<TestFile> fromYaml(llvm::StringRef Yaml);
+  static llvm::Expected<TestFile> fromYamlFile(const llvm::Twine &Name);
+
+  TestFile(TestFile &&RHS) : Name(std::move(RHS.Name)) {
+    RHS.Name = llvm::None;
+  }
+
+  ~TestFile();
+
+  llvm::StringRef name() { return *Name; }
+
+private:
+  TestFile(llvm::StringRef Name, llvm::FileRemover &&Remover) : Name(Name) {
+    Remover.releaseFile();
+  }
+  void operator=(const TestFile &) = delete;
+
+  llvm::Optional<std::string> Name;
+};
 }
 
 #endif




More information about the lldb-commits mailing list