From 57c68eeefe368a0da326af988714cfa203351c41 Mon Sep 17 00:00:00 2001 From: Frederic Riss Date: Wed, 3 Jun 2015 17:08:42 +0000 Subject: [PATCH] Revert "[dsymutil] Accept a YAML debug map as input instead of a binary." This reverts commit r238941 while I figure out the bot issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238943 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../tools/dsymutil/X86/basic-linking-x86.test | 2 - .../dsymutil/X86/basic-lto-linking-x86.test | 1 - tools/dsymutil/DebugMap.h | 48 +++++++------------ tools/dsymutil/MachODebugMapParser.cpp | 26 ++-------- tools/dsymutil/dsymutil.cpp | 8 +--- tools/dsymutil/dsymutil.h | 4 +- 6 files changed, 24 insertions(+), 65 deletions(-) diff --git a/test/tools/dsymutil/X86/basic-linking-x86.test b/test/tools/dsymutil/X86/basic-linking-x86.test index e6d42e464a9..1059e233f94 100644 --- a/test/tools/dsymutil/X86/basic-linking-x86.test +++ b/test/tools/dsymutil/X86/basic-linking-x86.test @@ -6,8 +6,6 @@ RUN: llvm-dsymutil -o %t2 -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_6 RUN: llvm-dwarfdump %t2 | FileCheck %s RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE -RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 | llvm-dsymutil -y -o - - | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=BASIC -RUN: llvm-dsymutil -dump-debug-map -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 | llvm-dsymutil -o - -oso-prepend-path=%p/.. -y - | llvm-dwarfdump - | FileCheck %s --check-prefix=CHECK --check-prefix=ARCHIVE CHECK: file format Mach-O 64-bit x86-64 diff --git a/test/tools/dsymutil/X86/basic-lto-linking-x86.test b/test/tools/dsymutil/X86/basic-lto-linking-x86.test index 44997ee523f..22b6e0808d8 100644 --- a/test/tools/dsymutil/X86/basic-lto-linking-x86.test +++ b/test/tools/dsymutil/X86/basic-lto-linking-x86.test @@ -1,6 +1,5 @@ REQUIRES: shell RUN: llvm-dsymutil -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump - | FileCheck %s -RUN: llvm-dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | llvm-dsymutil -o - -oso-prepend-path=%p/.. -y - | llvm-dwarfdump - | FileCheck %s CHECK: file format Mach-O 64-bit x86-64 diff --git a/tools/dsymutil/DebugMap.h b/tools/dsymutil/DebugMap.h index c2917db981e..8d76f113e91 100644 --- a/tools/dsymutil/DebugMap.h +++ b/tools/dsymutil/DebugMap.h @@ -69,7 +69,6 @@ class DebugMap { /// For YAML IO support. ///@{ - friend yaml::MappingTraits>; friend yaml::MappingTraits; DebugMap() = default; ///@} @@ -185,35 +184,33 @@ struct MappingTraits> { }; template <> struct MappingTraits { - // Normalize/Denormalize between YAML and a DebugMapObject. - struct YamlDMO { - YamlDMO(IO &io) {} + typedef StringMap SymbolMap; - YamlDMO(IO &io, dsymutil::DebugMapObject &Obj) { - Filename = Obj.Filename; - Entries.reserve(Obj.Symbols.size()); - for (auto &Entry : Obj.Symbols) + struct SequencedStringMap { + SequencedStringMap(IO &io) {} + + SequencedStringMap(IO &io, SymbolMap &Map) { + Entries.reserve(Map.size()); + for (auto &Entry : Map) Entries.push_back(std::make_pair(Entry.getKey(), Entry.getValue())); } - dsymutil::DebugMapObject denormalize(IO &) { - dsymutil::DebugMapObject Res(Filename); - for (auto &Entry : Entries) { - auto &Mapping = Entry.second; - Res.addSymbol(Entry.first, Mapping.ObjectAddress, Mapping.BinaryAddress, - Mapping.Size); - } + SymbolMap denormalize(IO &) { + SymbolMap Res; + + for (auto &Entry : Entries) + Res[Entry.first] = Entry.second; + return Res; } - std::string Filename; std::vector Entries; }; - static void mapping(IO &io, dsymutil::DebugMapObject &DMO) { - MappingNormalization Norm(io, DMO); - io.mapRequired("filename", Norm->Filename); - io.mapRequired("symbols", Norm->Entries); + static void mapping(IO &io, dsymutil::DebugMapObject &s) { + MappingNormalization seq(io, s.Symbols); + io.mapRequired("filename", s.Filename); + io.mapRequired("symbols", seq->Entries); } }; @@ -225,7 +222,7 @@ template <> struct ScalarTraits { static StringRef input(StringRef scalar, void *, Triple &value) { value = Triple(scalar); - return StringRef(); + return value.str(); } static bool mustQuote(StringRef) { return true; } @@ -256,15 +253,6 @@ template <> struct MappingTraits { io.mapOptional("objects", DM.Objects); } }; - - template <> struct MappingTraits> { - static void mapping(IO &io, std::unique_ptr &DM) { - if (!DM) - DM.reset(new DebugMap()); - io.mapRequired("triple", DM->BinaryTriple); - io.mapOptional("objects", DM->Objects); - } -}; } } diff --git a/tools/dsymutil/MachODebugMapParser.cpp b/tools/dsymutil/MachODebugMapParser.cpp index c8b48823f98..bf64303b9ea 100644 --- a/tools/dsymutil/MachODebugMapParser.cpp +++ b/tools/dsymutil/MachODebugMapParser.cpp @@ -242,32 +242,12 @@ void MachODebugMapParser::loadMainBinarySymbols() { } } -ErrorOr> -parseYAMLDebugMap(StringRef InputFile, bool Verbose) { - auto ErrOrFile = MemoryBuffer::getFileOrSTDIN(InputFile); - if (auto Err =ErrOrFile.getError()) - return Err; - - std::unique_ptr Res; - yaml::Input yin((*ErrOrFile)->getBuffer()); - yin >> Res; - - if (auto EC = yin.error()) - return EC; - - return std::move(Res); -} - namespace llvm { namespace dsymutil { llvm::ErrorOr> -parseDebugMap(StringRef InputFile, StringRef PrependPath, bool Verbose, bool InputIsYAML) { - if (!InputIsYAML) { - MachODebugMapParser Parser(InputFile, PrependPath, Verbose); - return Parser.parse(); - } else { - return parseYAMLDebugMap(InputFile, Verbose); - } +parseDebugMap(StringRef InputFile, StringRef PrependPath, bool Verbose) { + MachODebugMapParser Parser(InputFile, PrependPath, Verbose); + return Parser.parse(); } } } diff --git a/tools/dsymutil/dsymutil.cpp b/tools/dsymutil/dsymutil.cpp index 50091935a44..b4a480d7012 100644 --- a/tools/dsymutil/dsymutil.cpp +++ b/tools/dsymutil/dsymutil.cpp @@ -52,10 +52,6 @@ static opt DumpDebugMap( desc("Parse and dump the debug map to standard output. Not DWARF link " "will take place."), init(false)); - -static opt InputIsYAMLDebugMap( - "y", desc("Treat the input file is a YAML debug map rather than a binary."), - init(false)); } int main(int argc, char **argv) { @@ -65,9 +61,7 @@ int main(int argc, char **argv) { LinkOptions Options; llvm::cl::ParseCommandLineOptions(argc, argv, "llvm dsymutil\n"); - - auto DebugMapPtrOrErr = - parseDebugMap(InputFile, OsoPrependPath, Verbose, InputIsYAMLDebugMap); + auto DebugMapPtrOrErr = parseDebugMap(InputFile, OsoPrependPath, Verbose); Options.Verbose = Verbose; Options.NoOutput = NoOutput; diff --git a/tools/dsymutil/dsymutil.h b/tools/dsymutil/dsymutil.h index 0cbdaf5503a..e9f7cd95187 100644 --- a/tools/dsymutil/dsymutil.h +++ b/tools/dsymutil/dsymutil.h @@ -34,8 +34,8 @@ struct LinkOptions { /// \brief Extract the DebugMap from the given file. /// The file has to be a MachO object file. llvm::ErrorOr> -parseDebugMap(StringRef InputFile, StringRef PrependPath, - bool Verbose, bool InputIsYAML); +parseDebugMap(StringRef InputFile, StringRef PrependPath = "", + bool Verbose = false); /// \brief Link the Dwarf debuginfo as directed by the passed DebugMap /// \p DM into a DwarfFile named \p OutputFilename.