Use only the filename when deciding if a file is a duplicate.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 20 Jun 2013 18:30:37 +0000 (18:30 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 20 Jun 2013 18:30:37 +0000 (18:30 +0000)
Matches gnu ar behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184448 91177308-0d34-0410-b5e6-96231b3b80d8

test/Archive/directory.ll
tools/llvm-ar/llvm-ar.cpp

index f88d604a23bb321dd2b841858f8bb99a1096d51e..297534522688f7b92bac6181d1011987c991ca7d 100644 (file)
@@ -4,7 +4,9 @@
 ;RUN: rm -f %T/test.a
 ;RUN: touch %T/a-very-long-file-name
 ;RUN: llvm-ar r %T/test.a %s %T/a-very-long-file-name
+;RUN: llvm-ar r %T/test.a %T/a-very-long-file-name
 ;RUN: llvm-ar t %T/test.a | FileCheck -check-prefix=MEMBERS %s
 ;MEMBERS-NOT: /
 ;MEMBERS: a-very-long-file-name
 ;MEMBERS: directory.ll
+;MEMBERS-NOT: a-very-long-file-name
index 941b6310804d3376c40765433f47a8ff18c41e1f..4c986715aec713890b3d0974d845aaf449d493fc 100644 (file)
@@ -563,7 +563,7 @@ doReplaceOrInsert(std::string* ErrMsg) {
     std::set<std::string>::iterator found = remaining.end();
     for (std::set<std::string>::iterator RI = remaining.begin(),
          RE = remaining.end(); RI != RE; ++RI ) {
-      std::string compare(*RI);
+      std::string compare(sys::path::filename(*RI));
       if (TruncateNames && compare.length() > 15) {
         const char* nm = compare.c_str();
         unsigned len = compare.length();