[lld] r266935 - unbreak COFF/out.test after r266929

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 20 16:30:15 PDT 2016


Author: nico
Date: Wed Apr 20 18:30:14 2016
New Revision: 266935

URL: http://llvm.org/viewvc/llvm-project?rev=266935&view=rev
Log:
unbreak COFF/out.test after r266929

Modified:
    lld/trunk/COFF/DriverUtils.cpp
    lld/trunk/test/COFF/out.test

Modified: lld/trunk/COFF/DriverUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/DriverUtils.cpp?rev=266935&r1=266934&r2=266935&view=diff
==============================================================================
--- lld/trunk/COFF/DriverUtils.cpp (original)
+++ lld/trunk/COFF/DriverUtils.cpp Wed Apr 20 18:30:14 2016
@@ -559,6 +559,7 @@ static std::string getImplibPath() {
 }
 
 static std::unique_ptr<MemoryBuffer> createEmptyImportLibrary() {
+#if 0
   std::string S = (Twine("LIBRARY \"") +
                    llvm::sys::path::filename(Config->OutputFile) + "\"\n")
                       .str();
@@ -578,6 +579,27 @@ static std::unique_ptr<MemoryBuffer> cre
       MemoryBuffer::getFile(Path2, -1, false);
   error(BufOrErr, Twine("Failed to open ") + Path2);
   return MemoryBuffer::getMemBufferCopy((*BufOrErr)->getBuffer());
+#else
+  const char kMagic[] = "!<arch>\n";
+  size_t Size = sizeof(kMagic) + // Include trailing \0.
+                sizeof(object::ArchiveMemberHeader);
+  std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getNewUninitMemBuffer(
+    Size, getImplibPath());
+  char* B = const_cast<char*>(Buf->getBufferStart());
+  memcpy(B, kMagic, sizeof(kMagic)); // Include trailing \0.
+
+  auto *Hdr =
+      reinterpret_cast<object::ArchiveMemberHeader *>(B + sizeof(kMagic));
+  sprintf(Hdr->Name, "%-12s", "/");
+  sprintf(Hdr->LastModified, "%-12d", 0);
+  sprintf(Hdr->UID, "%-6d", 0);
+  sprintf(Hdr->GID, "%-6d", 0);
+  sprintf(Hdr->AccessMode, "%-8d", 0644);
+  sprintf(Hdr->Size, "%-10d", 0);
+  memcpy(Hdr->Terminator, "\n", 2);
+
+  return Buf;
+#endif
 }
 
 static std::vector<NewArchiveIterator>
@@ -594,7 +616,7 @@ readMembers(const object::Archive &Archi
 }
 
 // This class creates short import files which is described in
-// PE/COFF spec 7. Import Library Format.
+// PE/COFF spec 8. Import Library Format.
 class ShortImportCreator {
 public:
   ShortImportCreator(object::Archive *A, StringRef S) : Parent(A), DLLName(S) {}
@@ -675,6 +697,7 @@ void writeImportLibrary() {
   for (Export &E : Config->Exports) {
     if (E.Private)
       continue;
+fprintf(stderr, "export %s\n", E.SymbolName.str().c_str());
     if (E.ExtName.empty()) {
       Members.push_back(ShortImport.create(
           E.SymbolName, E.Ordinal, getNameType(E.SymbolName, E.Name), E.Data));
@@ -686,6 +709,7 @@ void writeImportLibrary() {
   }
 
   std::string Path = getImplibPath();
+fprintf(stderr, "writing implib to %s\n", Path.c_str());
   std::pair<StringRef, std::error_code> Result =
       writeArchive(Path, Members, /*WriteSymtab*/ true, object::Archive::K_GNU,
                    /*Deterministic*/ true, /*Thin*/ false);

Modified: lld/trunk/test/COFF/out.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/out.test?rev=266935&r1=266934&r2=266935&view=diff
==============================================================================
--- lld/trunk/test/COFF/out.test (original)
+++ lld/trunk/test/COFF/out.test Wed Apr 20 18:30:14 2016
@@ -1,3 +1,4 @@
+# REQUIRES: winlib
 # RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
 
 # RUN: mkdir -p %T/out/tmp




More information about the llvm-commits mailing list