[llvm] 4050b01 - Fix GSYM tests to run the yaml files and fix test failures on some machines.

Greg Clayton via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 4 19:14:17 PST 2020


Author: Greg Clayton
Date: 2020-03-04T19:14:08-08:00
New Revision: 4050b01ba9ece02721ec496383baee219ca8cc2b

URL: https://github.com/llvm/llvm-project/commit/4050b01ba9ece02721ec496383baee219ca8cc2b
DIFF: https://github.com/llvm/llvm-project/commit/4050b01ba9ece02721ec496383baee219ca8cc2b.diff

LOG: Fix GSYM tests to run the yaml files and fix test failures on some machines.

YAML files were not being run during lit testing as there was no lit.local.cfg file. Once this was fixed, some buildbots would fail due to a StringRef that pointed to a std::string inside of a temporary llvm::Triple object. These issues are fixed here by making a local triple object that stays around long enough so the StringRef points to valid data. Fixed memory sanitizer bot bugs as well.

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

Added: 
    llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
    llvm/test/tools/llvm-gsymutil/ARM_AArch64/lit.local.cfg
    llvm/test/tools/llvm-gsymutil/X86/elf-dwarf.yaml
    llvm/test/tools/llvm-gsymutil/X86/lit.local.cfg
    llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml

Modified: 
    llvm/lib/DebugInfo/GSYM/GsymCreator.cpp
    llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp

Removed: 
    llvm/test/tools/llvm-gsymutil/elf-dwarf.yaml
    llvm/test/tools/llvm-gsymutil/fat-macho-dwarf.yaml
    llvm/test/tools/llvm-gsymutil/mach-dwarf.yaml


################################################################################
diff  --git a/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp b/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp
index 3a84ac41e86c..f7d7afec9d55 100644
--- a/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp
+++ b/llvm/lib/DebugInfo/GSYM/GsymCreator.cpp
@@ -74,7 +74,7 @@ llvm::Error GsymCreator::encode(FileWriter &O) const {
   Hdr.BaseAddress = MinAddr;
   Hdr.NumAddresses = static_cast<uint32_t>(Funcs.size());
   Hdr.StrtabOffset = 0; // We will fix this up later.
-  Hdr.StrtabOffset = 0; // We will fix this up later.
+  Hdr.StrtabSize = 0; // We will fix this up later.
   memset(Hdr.UUID, 0, sizeof(Hdr.UUID));
   if (UUID.size() > sizeof(Hdr.UUID))
     return createStringError(std::errc::invalid_argument,

diff  --git a/llvm/test/tools/llvm-gsymutil/fat-macho-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
similarity index 100%
rename from llvm/test/tools/llvm-gsymutil/fat-macho-dwarf.yaml
rename to llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml

diff  --git a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/lit.local.cfg b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/lit.local.cfg
new file mode 100644
index 000000000000..e06c15ef1413
--- /dev/null
+++ b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/lit.local.cfg
@@ -0,0 +1,4 @@
+if not ('ARM' in config.root.targets and 'AArch64' in config.root.targets):
+    config.unsupported = True
+
+config.suffixes = ['.test', '.yaml']

diff  --git a/llvm/test/tools/llvm-gsymutil/elf-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/X86/elf-dwarf.yaml
similarity index 100%
rename from llvm/test/tools/llvm-gsymutil/elf-dwarf.yaml
rename to llvm/test/tools/llvm-gsymutil/X86/elf-dwarf.yaml

diff  --git a/llvm/test/tools/llvm-gsymutil/X86/lit.local.cfg b/llvm/test/tools/llvm-gsymutil/X86/lit.local.cfg
new file mode 100644
index 000000000000..52c762f5cfb8
--- /dev/null
+++ b/llvm/test/tools/llvm-gsymutil/X86/lit.local.cfg
@@ -0,0 +1,4 @@
+if not 'X86' in config.root.targets:
+    config.unsupported = True
+
+config.suffixes = ['.test', '.yaml']

diff  --git a/llvm/test/tools/llvm-gsymutil/mach-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml
similarity index 100%
rename from llvm/test/tools/llvm-gsymutil/mach-dwarf.yaml
rename to llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml

diff  --git a/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp b/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
index 6ad200927270..2d75473a3fdf 100644
--- a/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
+++ b/llvm/tools/llvm-gsymutil/llvm-gsymutil.cpp
@@ -179,7 +179,8 @@ static bool filterArch(MachOObjectFile &Obj) {
   if (ArchFilters.empty())
     return true;
 
-  StringRef ObjArch = Obj.getArchTriple().getArchName();
+  Triple ObjTriple(Obj.getArchTriple());
+  StringRef ObjArch = ObjTriple.getArchName();
 
   for (auto Arch : ArchFilters) {
     // Match name.
@@ -350,7 +351,8 @@ static llvm::Error handleBuffer(StringRef Filename, MemoryBufferRef Buffer,
   error(Filename, errorToErrorCode(BinOrErr.takeError()));
 
   if (auto *Obj = dyn_cast<ObjectFile>(BinOrErr->get())) {
-    auto ArchName = Obj->makeTriple().getArchName();
+    Triple ObjTriple(Obj->makeTriple());
+    auto ArchName = ObjTriple.getArchName();
     outs() << "Output file (" << ArchName << "): " << OutFile << "\n";
     if (auto Err = handleObjectFile(*Obj, OutFile.c_str()))
       return Err;
@@ -374,7 +376,8 @@ static llvm::Error handleBuffer(StringRef Filename, MemoryBufferRef Buffer,
 
     // Now handle each architecture we need to convert.
     for (auto &Obj: FilterObjs) {
-      auto ArchName = Obj->getArchTriple().getArchName();
+      Triple ObjTriple(Obj->getArchTriple());
+      auto ArchName = ObjTriple.getArchName();
       std::string ArchOutFile(OutFile);
       // If we are only handling a single architecture, then we will use the
       // normal output file. If we are handling multiple architectures append


        


More information about the llvm-commits mailing list