[llvm] r315458 - Revert "[dsymutil] Timestmap verification for __swift_ast"

Jonas Devlieghere via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 11 06:51:30 PDT 2017


Author: jdevlieghere
Date: Wed Oct 11 06:51:30 2017
New Revision: 315458

URL: http://llvm.org/viewvc/llvm-project?rev=315458&view=rev
Log:
Revert "[dsymutil] Timestmap verification for __swift_ast"

This reverts commit r315456.

Removed:
    llvm/trunk/test/tools/dsymutil/ARM/swift-ast.test
    llvm/trunk/test/tools/dsymutil/Inputs/swift-ast.macho.fat
Modified:
    llvm/trunk/test/tools/dsymutil/X86/swift-ast-x86_64.test
    llvm/trunk/tools/dsymutil/BinaryHolder.h
    llvm/trunk/tools/dsymutil/DwarfLinker.cpp
    llvm/trunk/tools/dsymutil/dsymutil.cpp
    llvm/trunk/tools/dsymutil/dsymutil.h

Removed: llvm/trunk/test/tools/dsymutil/ARM/swift-ast.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/ARM/swift-ast.test?rev=315457&view=auto
==============================================================================
--- llvm/trunk/test/tools/dsymutil/ARM/swift-ast.test (original)
+++ llvm/trunk/test/tools/dsymutil/ARM/swift-ast.test (removed)
@@ -1,26 +0,0 @@
-RUN: llvm-dsymutil -oso-prepend-path %p/.. %p/../Inputs/swift-ast.macho.fat -o %T/swift-ast.dSYM -verbose -no-swiftmodule-timestamp | FileCheck %s --check-prefix=DSYMUTIL
-RUN: llvm-readobj -sections -section-data %T/swift-ast.dSYM/Contents/Resources/DWARF/swift-ast.macho.fat | FileCheck %s --check-prefix=READOBJ
-
-The tested object file has been created by the dummy Swift code:
-let x = 1
-
-Compiled with:
-  swiftc /tmp/test.swift -Onone -target armv7-apple-ios8.1 -c -o swift-ast-armv7.o
-  ld swift-ast-armv7.o -add_ast_path swift-ast.swiftmodule -arch armv7 -ios_version_min 8.1  -syslibroot /path/to/iPhoneOS.sdk -L/path/to/usr/lib/swift/iphoneos -lobjc -lSystem -o swift-ast.macho.armv7
-
-  swiftc /tmp/test.swift -Onone -target arm64-apple-ios8.1 -c -o swift-ast-arm64.o
-  ld swift-ast-arm64.o -add_ast_path swift-ast.swiftmodule -arch arm64 -ios_version_min 8.1  -syslibroot /path/to/iPhoneOS.sdk -L/path/to/usr/lib/swift/iphoneos -lobjc -lSystem -o swift-ast.macho.arm64
-
-  lipo -create swift-ast.macho.armv7 swift-ast.macho.arm64 -o swift-ast.macho.fat
-
-DSYMUTIL: filename:{{.*}}swift-ast.swiftmodule
-DSYMUTIL: DEBUG MAP OBJECT:{{.*}}swift-ast.swiftmodule
-
-READOBJ: Name:{{.*}}__swift_ast
-READOBJ: |SWIFTMODULE DATA|
-READOBJ-NEXT: |.|
-READOBJ: |SWIFTMODULE DATA|
-READOBJ-NEXT: |.|
-
-RUN: llvm-dsymutil -oso-prepend-path %p/.. %p/../Inputs/swift-ast.macho.fat -no-output -verbose 2>&1 | FileCheck %s --check-prefix=TIMESTAMP
-TIMESTAMP: Warning: Timestamp mismatch

Removed: llvm/trunk/test/tools/dsymutil/Inputs/swift-ast.macho.fat
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/Inputs/swift-ast.macho.fat?rev=315457&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/dsymutil/Inputs/swift-ast.macho.fat (original) and llvm/trunk/test/tools/dsymutil/Inputs/swift-ast.macho.fat (removed) differ

Modified: llvm/trunk/test/tools/dsymutil/X86/swift-ast-x86_64.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/dsymutil/X86/swift-ast-x86_64.test?rev=315458&r1=315457&r2=315458&view=diff
==============================================================================
--- llvm/trunk/test/tools/dsymutil/X86/swift-ast-x86_64.test (original)
+++ llvm/trunk/test/tools/dsymutil/X86/swift-ast-x86_64.test Wed Oct 11 06:51:30 2017
@@ -1,19 +1,14 @@
-RUN: llvm-dsymutil -oso-prepend-path %p/.. %p/../Inputs/swift-ast.macho.x86_64 -o %T/swift-ast.dSYM -verbose -no-swiftmodule-timestamp | FileCheck %s --check-prefix=DSYMUTIL
+RUN: llvm-dsymutil -oso-prepend-path %p/.. %p/../Inputs/swift-ast.macho.x86_64 -o %T/swift-ast.dSYM -verbose | FileCheck %s --check-prefix=DSYMUTIL
 RUN: llvm-readobj -sections -section-data %T/swift-ast.dSYM/Contents/Resources/DWARF/swift-ast.macho.x86_64 | FileCheck %s --check-prefix=READOBJ
 
 The tested object file has been created by the dummy Swift code:
 let x = 1
 
-Compiled with:
-  swiftc /tmp/test.swift -Onone -target x86_64-apple-macosx10.9 -c
-  ld swift-ast.o -add_ast_path Inputs/swift-ast.swiftmodule -arch x86_64 -lSystem -macosx_version_min 10.9.0
+Compiled with: swiftc /tmp/test.swift -Onone -target x86_64-apple-macosx10.9 -c
+Linked with: ld swift-ast.o -add_ast_path Inputs/swift-ast.swiftmodule -arch x86_64 -lSystem -macosx_version_min 10.9.0
 
 DSYMUTIL: filename:{{.*}}swift-ast.swiftmodule
 DSYMUTIL: DEBUG MAP OBJECT:{{.*}}swift-ast.swiftmodule
 
 READOBJ: Name:{{.*}}__swift_ast
 READOBJ: |SWIFTMODULE DATA|
-READOBJ-NEXT: |.|
-
-RUN: llvm-dsymutil -oso-prepend-path %p/.. %p/../Inputs/swift-ast.macho.x86_64 -no-output -verbose 2>&1 | FileCheck %s --check-prefix=TIMESTAMP
-TIMESTAMP: Warning: Timestamp mismatch

Modified: llvm/trunk/tools/dsymutil/BinaryHolder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/BinaryHolder.h?rev=315458&r1=315457&r2=315458&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/BinaryHolder.h (original)
+++ llvm/trunk/tools/dsymutil/BinaryHolder.h Wed Oct 11 06:51:30 2017
@@ -66,6 +66,12 @@ class BinaryHolder {
   MapArchiveAndGetMemberBuffers(StringRef Filename,
                                 sys::TimePoint<std::chrono::seconds> Timestamp);
 
+  void changeBackingMemoryBuffer(std::unique_ptr<MemoryBuffer> &&MemBuf);
+  ErrorOr<const object::ObjectFile &> getObjfileForArch(const Triple &T);
+
+public:
+  BinaryHolder(bool Verbose) : Verbose(Verbose) {}
+
   /// Return the MemoryBufferRef that holds the memory mapping for the
   /// given \p Filename. This function will try to parse archive
   /// member specifications of the form /path/to/archive.a(member.o).
@@ -79,12 +85,6 @@ class BinaryHolder {
   GetMemoryBuffersForFile(StringRef Filename,
                           sys::TimePoint<std::chrono::seconds> Timestamp);
 
-  void changeBackingMemoryBuffer(std::unique_ptr<MemoryBuffer> &&MemBuf);
-  ErrorOr<const object::ObjectFile &> getObjfileForArch(const Triple &T);
-
-public:
-  BinaryHolder(bool Verbose) : Verbose(Verbose) {}
-
   /// Get the ObjectFiles designated by the \p Filename. This
   /// might be an archive member specification of the form
   /// /path/to/archive.a(member.o).

Modified: llvm/trunk/tools/dsymutil/DwarfLinker.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/DwarfLinker.cpp?rev=315458&r1=315457&r2=315458&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/DwarfLinker.cpp (original)
+++ llvm/trunk/tools/dsymutil/DwarfLinker.cpp Wed Oct 11 06:51:30 2017
@@ -525,8 +525,8 @@ public:
   /// Emit the string table described by \p Pool.
   void emitStrings(const NonRelocatableStringpool &Pool);
 
-  /// Emit the swift_ast section stored in \p Buffer.
-  void emitSwiftAST(StringRef Buffer);
+  /// Emit the swift_ast section stored in \p Buffers.
+  void emitSwiftAST(const std::vector<MemoryBufferRef> &Buffers);
 
   /// Emit debug_ranges for \p FuncRange by translating the
   /// original \p Entries.
@@ -712,11 +712,12 @@ void DwarfStreamer::emitStrings(const No
 }
 
 /// Emit the swift_ast section stored in \p Buffers.
-void DwarfStreamer::emitSwiftAST(StringRef Buffer) {
+void DwarfStreamer::emitSwiftAST(const std::vector<MemoryBufferRef> &Buffers) {
   MCSection *SwiftASTSection = MOFI->getDwarfSwiftASTSection();
   SwiftASTSection->setAlignment(1 << 5);
   MS->SwitchSection(SwiftASTSection);
-  MS->EmitBytes(Buffer);
+  for (auto Buf : Buffers)
+    MS->EmitBytes(Buf.getBuffer());
 }
 
 /// Emit the debug_range section contents for \p FuncRange by
@@ -3490,28 +3491,12 @@ bool DwarfLinker::link(const DebugMap &M
     // N_AST objects (swiftmodule files) should get dumped directly into the
     // appropriate DWARF section.
     if (Obj->getType() == MachO::N_AST) {
-      StringRef File = Obj->getObjectFilename();
-      auto ErrorOrMem = MemoryBuffer::getFile(File);
-      if (!ErrorOrMem) {
-        errs() << "Warning: Could not open " << File << "\n";
+      auto ErrOrMemBufferRefs = BinHolder.GetMemoryBuffersForFile(
+          Obj->getObjectFilename(), Obj->getTimestamp());
+      if (ErrOrMemBufferRefs.getError())
         continue;
-      }
-      sys::fs::file_status Stat;
-      if (auto errc = sys::fs::status(File, Stat)) {
-        errs() << "Warning: " << errc.message() << "\n";
-        continue;
-      }
-      if (!Options.NoTimestamp && Stat.getLastModificationTime() !=
-                                      sys::TimePoint<>(Obj->getTimestamp())) {
-        errs() << "Warning: Timestamp mismatch for " << File << ": "
-               << Stat.getLastModificationTime() << " and "
-               << sys::TimePoint<>(Obj->getTimestamp()) << "\n";
-        continue;
-      }
-
-      // Copy the module into the .swift_ast section.
       if (!Options.NoOutput)
-        Streamer->emitSwiftAST((*ErrorOrMem)->getBuffer());
+        Streamer->emitSwiftAST(ErrOrMemBufferRefs.get());
       continue;
     }
 

Modified: llvm/trunk/tools/dsymutil/dsymutil.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=315458&r1=315457&r2=315458&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/dsymutil.cpp (original)
+++ llvm/trunk/tools/dsymutil/dsymutil.cpp Wed Oct 11 06:51:30 2017
@@ -68,10 +68,7 @@ static opt<bool>
     NoOutput("no-output",
              desc("Do the link in memory, but do not emit the result file."),
              init(false), cat(DsymCategory));
-static opt<bool>
-    NoTimestamp("no-swiftmodule-timestamp",
-                desc("Don't check timestamp for swiftmodule files."),
-                init(false), cat(DsymCategory));
+
 static list<std::string> ArchFlags(
     "arch",
     desc("Link DWARF debug information only for specified CPU architecture\n"
@@ -269,7 +266,6 @@ int main(int argc, char **argv) {
   Options.Verbose = Verbose;
   Options.NoOutput = NoOutput;
   Options.NoODR = NoODR;
-  Options.NoTimestamp = NoTimestamp;
   Options.PrependPath = OsoPrependPath;
 
   llvm::InitializeAllTargetInfos();

Modified: llvm/trunk/tools/dsymutil/dsymutil.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.h?rev=315458&r1=315457&r2=315458&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/dsymutil.h (original)
+++ llvm/trunk/tools/dsymutil/dsymutil.h Wed Oct 11 06:51:30 2017
@@ -25,13 +25,12 @@ namespace llvm {
 namespace dsymutil {
 
 struct LinkOptions {
-  bool Verbose;            ///< Verbosity
-  bool NoOutput;           ///< Skip emitting output
-  bool NoODR;              ///< Do not unique types according to ODR
-  bool NoTimestamp;        ///< Do not check swiftmodule timestamp
+  bool Verbose;  ///< Verbosity
+  bool NoOutput; ///< Skip emitting output
+  bool NoODR;    ///< Do not unique types according to ODR
   std::string PrependPath; ///< -oso-prepend-path
 
-  LinkOptions() : Verbose(false), NoOutput(false), NoTimestamp(false) {}
+  LinkOptions() : Verbose(false), NoOutput(false) {}
 };
 
 /// \brief Extract the DebugMaps from the given file.




More information about the llvm-commits mailing list