llvm-ar: Don't write the directory in the string table.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 15 Jul 2015 23:15:33 +0000 (23:15 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 15 Jul 2015 23:15:33 +0000 (23:15 +0000)
We were already doing the right thing for short file names, but not long
ones.

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

lib/Object/ArchiveWriter.cpp
test/Object/archive-format.test

index bd372c37b8f6e461d888fd813ad68ab30d89778a..fd06c6e8687f50466f3561397a2f394b0c3cd551 100644 (file)
@@ -160,7 +160,7 @@ static void writeStringTable(raw_fd_ostream &Out,
                              bool Thin) {
   unsigned StartOffset = 0;
   for (const NewArchiveIterator &I : Members) {
-    StringRef Name = I.getName();
+    StringRef Name = sys::path::filename(I.getName());
     if (!useStringTable(Thin, Name))
       continue;
     if (StartOffset == 0) {
index 376eb053c6d2e3ca8aaa5a4a807a9e20842aded8..e40ec3327348fac88d5b741012f7b835da097784 100644 (file)
@@ -6,17 +6,26 @@ RUN: cd %t
 
 RUN: echo -n bar. > 0123456789abcde
 RUN: echo -n zed. > 0123456789abcdef
+RUN: mkdir -p foo
+RUN: echo -n bar2 > foo/0123456789abcde
+RUN: echo -n zed2 > foo/0123456789abcdef
 
 RUN: rm -f %t.a
-RUN: llvm-ar --format=gnu rc %t.a 0123456789abcde 0123456789abcdef
+RUN: llvm-ar --format=gnu rc %t.a 0123456789abcde 0123456789abcdef foo/0123456789abcde foo/0123456789abcdef
 RUN: cat %t.a | FileCheck -strict-whitespace %s
 
 CHECK:      !<arch>
-CHECK-NEXT: //                                              18        `
+CHECK-NEXT: //                                              36        `
+CHECK-NEXT: 0123456789abcdef/
 CHECK-NEXT: 0123456789abcdef/
 CHECK-NEXT: 0123456789abcde/0           0     0     644     4         `
-CHECK-NEXT: bar./0              0           0     0     644     4         `
+CHECK-NEXT: bar.
+CHECK-SAME: /0              0           0     0     644     4         `
 CHECK-NEXT: zed.
+CHECK-SAME: 0123456789abcde/0           0     0     644     4         `
+CHECK-NEXT: bar2
+CHECK-SAME: /18             0           0     0     644     4         `
+CHECK-NEXT: zed2
 
 RUN: rm -f %t.a
 RUN: llvm-ar --format=bsd rc %t.a 0123456789abcde 0123456789abcdef