summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-07-12 22:22:34 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-07-12 22:22:34 +0000
commit6383ef98fae2bab4595c6c36394093b7ad4a5597 (patch)
tree8158b5866835964815da2fa8a676ef76c6ecfeda
parent16404cc817e8b8d3fbfbc9051394eb59d7c5ffb4 (diff)
downloadllvm-6383ef98fae2bab4595c6c36394093b7ad4a5597.tar.gz
llvm-6383ef98fae2bab4595c6c36394093b7ad4a5597.tar.bz2
llvm-6383ef98fae2bab4595c6c36394093b7ad4a5597.tar.xz
Fix a off by one error about which members need to use the string table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186216 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/Object/archive-format.test22
-rw-r--r--tools/llvm-ar/llvm-ar.cpp2
2 files changed, 23 insertions, 1 deletions
diff --git a/test/Object/archive-format.test b/test/Object/archive-format.test
new file mode 100644
index 0000000000..9ac2d63494
--- /dev/null
+++ b/test/Object/archive-format.test
@@ -0,0 +1,22 @@
+Test the exact archive format. In particular, test which file names use the
+string table or not.
+
+REQUIRES: shell
+
+RUN: mkdir -p %t
+RUN: cd %t
+
+RUN: echo bar > 0123456789abcde
+RUN: echo zed > 0123456789abcdef
+
+RUN: rm -f test.a
+RUN: llvm-ar rc test.a 0123456789abcde 0123456789abcdef
+RUN: cat test.a | FileCheck -strict-whitespace %s
+
+CHECK: !<arch>
+CHECK-NEXT: // 18 `
+CHECK-NEXT: 0123456789abcdef/
+CHECK-NEXT: 0123456789abcde/{{.*}} 1000 1000 100664 4 `
+CHECK-NEXT: bar
+CHECK-NEXT: /0 {{.*}} 1000 1000 100664 4 `
+CHECK-NEXT: zed
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp
index ab2a2f18ec..5f47654b24 100644
--- a/tools/llvm-ar/llvm-ar.cpp
+++ b/tools/llvm-ar/llvm-ar.cpp
@@ -419,7 +419,7 @@ StringRef NewArchiveIterator::getNew() const {
template <typename T>
void addMember(std::vector<NewArchiveIterator> &Members,
std::string &StringTable, T I, StringRef Name) {
- if (Name.size() < 15) {
+ if (Name.size() < 16) {
NewArchiveIterator NI(I, Twine(Name) + "/");
Members.push_back(NI);
} else {