[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
Fri May 15 12:31:51 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG90af55d8a972: [LLD][ELF] Use offset in thin archives to disambiguate thinLTO members (authored by hoyFB).

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-thin-archive-collision.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*.0.preopt.bc
 
 ; NM1: T f
 ; NM2: T g
Index: lld/test/ELF/lto/thinlto-thin-archive-collision.ll
===================================================================
--- /dev/null
+++ lld/test/ELF/lto/thinlto-thin-archive-collision.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
@@ -1162,8 +1162,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.264314.patch
Type: text/x-patch
Size: 2342 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200515/91b55a64/attachment-0001.bin>


More information about the llvm-commits mailing list