[lld] r371778 - [COFF] Fix to not add archive name to buffer identifiers when they come

Amy Huang via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 12 15:04:57 PDT 2019


Author: akhuang
Date: Thu Sep 12 15:04:56 2019
New Revision: 371778

URL: http://llvm.org/viewvc/llvm-project?rev=371778&view=rev
Log:
[COFF] Fix to not add archive name to buffer identifiers when they come
from thin archives.

Currently lld adds the archive name to MemoryBufferRef identifiers in order to
ensure they are unique. For thin archives, since the file name is already unique and we
want to keep the original path to the file, don't add the archive name.

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

Modified:
    lld/trunk/COFF/Driver.cpp
    lld/trunk/test/COFF/thinlto-index-only.ll

Modified: lld/trunk/COFF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Driver.cpp?rev=371778&r1=371777&r2=371778&view=diff
==============================================================================
--- lld/trunk/COFF/Driver.cpp (original)
+++ lld/trunk/COFF/Driver.cpp Thu Sep 12 15:04:56 2019
@@ -310,9 +310,10 @@ void LinkerDriver::enqueueArchiveMember(
     auto mbOrErr = future->get();
     if (mbOrErr.second)
       reportBufferError(errorCodeToError(mbOrErr.second), childName);
+    // Pass empty string as archive name so that the original filename is
+    // used as the buffer identifier.
     driver->addArchiveBuffer(takeBuffer(std::move(mbOrErr.first)),
-                             toCOFFString(sym), parentName,
-                             /*OffsetInArchive=*/0);
+                             toCOFFString(sym), "", /*OffsetInArchive=*/0);
   });
 }
 

Modified: lld/trunk/test/COFF/thinlto-index-only.ll
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/thinlto-index-only.ll?rev=371778&r1=371777&r2=371778&view=diff
==============================================================================
--- lld/trunk/test/COFF/thinlto-index-only.ll (original)
+++ lld/trunk/test/COFF/thinlto-index-only.ll Thu Sep 12 15:04:56 2019
@@ -41,6 +41,17 @@
 ; BACKEND2-NEXT: <COMBINED
 ; BACKEND2-NEXT: </GLOBALVAL_SUMMARY_BLOCK
 
+; Thin archive tests. Check that the module paths point to the original files.
+; RUN: rm -rf %t
+; RUN: mkdir %t
+; RUN: opt -thinlto-bc -o %t/foo.obj < %s
+; RUN: opt -thinlto-bc -o %t/bar.obj < %p/Inputs/thinlto.ll
+; RUN: llvm-ar rcsT %t5.lib %t/bar.obj %t3.obj
+; RUN: lld-link -thinlto-index-only -entry:main %t/foo.obj %t5.lib
+; RUN: llvm-dis -o - %t/foo.obj.thinlto.bc | FileCheck %s --check-prefix=THINARCHIVE
+; THINARCHIVE: ^0 = module: (path: "{{.*}}foo.obj",
+; THINARCHIVE: ^1 = module: (path: "{{.*}}bar.obj",
+
 target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-pc-windows-msvc19.0.24215"
 




More information about the llvm-commits mailing list