[PATCH] D79880: [LLD][ELF] Use offset in thin archives to disambiguate thinLTO members

Hongtao Yu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 13 11:25:17 PDT 2020


hoyFB updated this revision to Diff 263794.
hoyFB marked 3 inline comments as done.
hoyFB edited the summary of this revision.
hoyFB added a comment.

Updating D79880 <https://reviews.llvm.org/D79880>: [LLD][ELF] Use offset in thin archives to disambiguate thinLTO members


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79880/new/

https://reviews.llvm.org/D79880

Files:
  lld/ELF/InputFiles.cpp
  lld/test/ELF/lto/thinlto-thinarchivecollision.ll
  lld/test/ELF/lto/thinlto.ll


Index: lld/test/ELF/lto/thinlto.ll
===================================================================
--- lld/test/ELF/lto/thinlto.ll
+++ lld/test/ELF/lto/thinlto.ll
@@ -62,7 +62,7 @@
 ; RUN: cp %t2.o %t.dir/t.o
 ; RUN: llvm-ar rcsT %t.dir/t.a %t.dir/t.o
 ; RUN: ld.lld -save-temps %t1.o %t.dir/t.a -o %t.null
-; RUN: ls '%t.dir/t.a(t.o at 0).0.preopt.bc'
+; RUN: ls %t.dir/t.a\(t.o\ at\ *\).0.preopt.bc
 
 ; NM1: T f
 ; NM2: T g
Index: lld/test/ELF/lto/thinlto-thinarchivecollision.ll
===================================================================
--- /dev/null
+++ lld/test/ELF/lto/thinlto-thinarchivecollision.ll
@@ -0,0 +1,27 @@
+; REQUIRES: x86
+; RUN: rm -fr %t && mkdir %t && cd %t
+; RUN: mkdir thinlto-archives thinlto-archives/a thinlto-archives/b
+; RUN: opt -thinlto-bc -o thinlto-archives/main.o %s
+; RUN: opt -thinlto-bc -o thinlto-archives/a/thin.o %S/Inputs/thin1.ll
+; RUN: opt -thinlto-bc -o thinlto-archives/b/thin.o %S/Inputs/thin2.ll
+; RUN: llvm-ar qcT thinlto-archives/thin.a thinlto-archives/a/thin.o thinlto-archives/b/thin.o
+; RUN: ld.lld thinlto-archives/main.o thinlto-archives/thin.a -o thinlto-archives/main.exe -save-temps
+; RUN: FileCheck %s < thinlto-archives/main.exe.resolution.txt
+
+; CHECK: thinlto-archives/main.o
+; CHECK: thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}})
+; CHECK-NEXT: -r=thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}),foo,pl
+; CHECK: thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}})
+; CHECK-NEXT: -r=thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}),blah,pl
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-scei-ps4"
+
+declare i32 @blah(i32 %meh)
+declare i32 @foo(i32 %goo)
+
+define i32 @_start() {
+  call i32 @foo(i32 0)
+  call i32 @blah(i32 0)
+  ret i32 0
+}
Index: lld/ELF/InputFiles.cpp
===================================================================
--- lld/ELF/InputFiles.cpp
+++ lld/ELF/InputFiles.cpp
@@ -1161,8 +1161,7 @@
   if (tar && c.getParent()->isThin())
     tar->append(relativeToRoot(CHECK(c.getFullName(), this)), mb.getBuffer());
 
-  InputFile *file = createObjectFile(
-      mb, getName(), c.getParent()->isThin() ? 0 : c.getChildOffset());
+  InputFile *file = createObjectFile(mb, getName(), c.getChildOffset());
   file->groupId = groupId;
   parseFile(file);
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79880.263794.patch
Type: text/x-patch
Size: 2350 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200513/a825a432/attachment.bin>


More information about the llvm-commits mailing list