From 35e0e2924005de8ade2944d88cb710e8ecbb408e Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Wed, 11 Oct 2017 13:51:30 +0000 Subject: [PATCH] Revert "[dsymutil] Timestmap verification for __swift_ast" This reverts commit r315456. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315458 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/dsymutil/ARM/swift-ast.test | 26 -------------- .../tools/dsymutil/Inputs/swift-ast.macho.fat | Bin 131312 -> 0 bytes test/tools/dsymutil/X86/swift-ast-x86_64.test | 11 ++---- tools/dsymutil/BinaryHolder.h | 12 +++---- tools/dsymutil/DwarfLinker.cpp | 33 +++++------------- tools/dsymutil/dsymutil.cpp | 6 +--- tools/dsymutil/dsymutil.h | 9 +++-- 7 files changed, 23 insertions(+), 74 deletions(-) delete mode 100644 test/tools/dsymutil/ARM/swift-ast.test delete mode 100755 test/tools/dsymutil/Inputs/swift-ast.macho.fat diff --git a/test/tools/dsymutil/ARM/swift-ast.test b/test/tools/dsymutil/ARM/swift-ast.test deleted file mode 100644 index bd33e7af436..00000000000 --- a/test/tools/dsymutil/ARM/swift-ast.test +++ /dev/null @@ -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 diff --git a/test/tools/dsymutil/Inputs/swift-ast.macho.fat b/test/tools/dsymutil/Inputs/swift-ast.macho.fat deleted file mode 100755 index a3f8d369d02547c9b78b71043d2c135a58e596f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131312 zcmeI*O=whC6u|K_NtCgQMkr!YY!o6^G&71qC|yi!f{mXchN5n6Gnp5CG9Qw8qmx2u zHi8z!NGWt#=&n!@YoYC;PPeVJcGHcEs!?bcf(tiVt3Bs^B$H9mLaCeoh4b$BeRqEE zZRfrpAAR?|h_q=e(O4v@oMw%?dRdx^+O%kGKXh7~1_=QK5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009L4V}V~D+kyFxTP4b$?I~vXn_3a!uJTSc9TIZ*5 z^8BVJYPL?V4s>p0;NZyo?r{Fp{5FZ}3$)pyJ??fc@ajQa(X4g7(;r4ZW>Y-G>UOxn zZ0bl>j#``>tCXvA3%0IzDPAvGBdO1>*HUnH_6%+!+AleMFk z`B!uML&LfLzLCDBzNz@3<>EH2hbb3j=4Fwr?OY{)Y|Qzk(IcL1?OE%kqv>Kw$=sx= zIXAabsZvhbTGvbKe0#35>uEW8hBhaB=2nQ)+D0{+icA(^#lHiMD)SuJxR9x3wj|T`N`P091fmaXWe$86vU%4!j)%GiT#y~PB9NjUy zs?Hg!l&f=#w65_`*RZ({<8una`7M{Z{rC5c^fh%hw4BqJigINVi)1g(Rr1HioL?F} z;`!zAigQoSPwRM_pUkmpbF%%HN_sRwoLbjNH|#iuC^fHPdrp#-qvy6~aNq8M{=wO2 zpglS5Y>3>|%*Hj(Tczda!U#u~tVX4{3o_F*8!T~RE zS*l}JYuJ05sZ}R3ML(ahLm;%iO2hW>)BD-n`mf%+aqjiMfB)#>%wOHw)~O*W6;Cae zjY-|wG;Pq|YV+(}YEEml@~SoD;?T_QyG_H!+iw=RrIDK3i|)ssd{1AG?#j>Gh^Nfa z$2Nb?fyrv%m3nq0v)1c8+w-PI^o-w#>*h;B009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_Kdey7#7Z$xJFMGhNd%Bh$H=Mbqc5OZLp| z4mo?fO+LFJoo8>Sub#cR=5gkReVg4<&OXdeLI42-5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z0D+e$kaDs>+Fa?V^XlGME%4k?Z?xb|$lB7VUzYAR-CBoSd7P5)vRSKJHSTS{c4(L8 zYucvd;boC=D|d*b8zMGkS*lYH77$qxmUXUMV#=7;G0{4`Ay6~Qb$zs7(gIeC@ z{jzOkuzb80R5R6+{&=u?v>Nn;rBbC(D|)()3#)Fz8!viefnO=R6W&BsbL|_+ZnHJF L)DQS4?7sg1-&B4D diff --git a/test/tools/dsymutil/X86/swift-ast-x86_64.test b/test/tools/dsymutil/X86/swift-ast-x86_64.test index 98d3850efb0..72fc7520b73 100644 --- a/test/tools/dsymutil/X86/swift-ast-x86_64.test +++ b/test/tools/dsymutil/X86/swift-ast-x86_64.test @@ -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 diff --git a/tools/dsymutil/BinaryHolder.h b/tools/dsymutil/BinaryHolder.h index 5b2061d23aa..f4ca0b2bc3a 100644 --- a/tools/dsymutil/BinaryHolder.h +++ b/tools/dsymutil/BinaryHolder.h @@ -66,6 +66,12 @@ class BinaryHolder { MapArchiveAndGetMemberBuffers(StringRef Filename, sys::TimePoint Timestamp); + void changeBackingMemoryBuffer(std::unique_ptr &&MemBuf); + ErrorOr 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 Timestamp); - void changeBackingMemoryBuffer(std::unique_ptr &&MemBuf); - ErrorOr 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). diff --git a/tools/dsymutil/DwarfLinker.cpp b/tools/dsymutil/DwarfLinker.cpp index d96f6e1ba0e..4b3a336de0e 100644 --- a/tools/dsymutil/DwarfLinker.cpp +++ b/tools/dsymutil/DwarfLinker.cpp @@ -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 &Buffers); /// Emit debug_ranges for \p FuncRange by translating the /// original \p Entries. @@ -712,11 +712,12 @@ void DwarfStreamer::emitStrings(const NonRelocatableStringpool &Pool) { } /// Emit the swift_ast section stored in \p Buffers. -void DwarfStreamer::emitSwiftAST(StringRef Buffer) { +void DwarfStreamer::emitSwiftAST(const std::vector &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 &Map) { // 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; } diff --git a/tools/dsymutil/dsymutil.cpp b/tools/dsymutil/dsymutil.cpp index 975f8a5f095..51eb3ff2e39 100644 --- a/tools/dsymutil/dsymutil.cpp +++ b/tools/dsymutil/dsymutil.cpp @@ -68,10 +68,7 @@ static opt NoOutput("no-output", desc("Do the link in memory, but do not emit the result file."), init(false), cat(DsymCategory)); -static opt - NoTimestamp("no-swiftmodule-timestamp", - desc("Don't check timestamp for swiftmodule files."), - init(false), cat(DsymCategory)); + static list 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(); diff --git a/tools/dsymutil/dsymutil.h b/tools/dsymutil/dsymutil.h index 8f587421005..91cb3276612 100644 --- a/tools/dsymutil/dsymutil.h +++ b/tools/dsymutil/dsymutil.h @@ -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. -- 2.40.0