aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/Archive.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-07-13 23:07:05 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-07-13 23:07:05 +0000
commitc60d0d2a159154bbcff75fabfdf558c411096713 (patch)
tree609aeb4242b4ebb6d140a59581d75af8618588e1 /llvm/lib/Object/Archive.cpp
parent15deb803b4af1914d0aed0f7215f8f75b9561554 (diff)
downloadllvm-c60d0d2a159154bbcff75fabfdf558c411096713.zip
llvm-c60d0d2a159154bbcff75fabfdf558c411096713.tar.gz
llvm-c60d0d2a159154bbcff75fabfdf558c411096713.tar.bz2
Fix reading archive members with / in the name.
This is important for thin archives. llvm-svn: 242082
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r--llvm/lib/Object/Archive.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index b9d949b..efcc2d6 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -162,10 +162,10 @@ ErrorOr<StringRef> Archive::Child::getName() const {
+ Parent->StringTable->getSize()))
return object_error::parse_failed;
- // GNU long file names end with a /.
+ // GNU long file names end with a "/\n".
if (Parent->kind() == K_GNU || Parent->kind() == K_MIPS64) {
- StringRef::size_type End = StringRef(addr).find('/');
- return StringRef(addr, End);
+ StringRef::size_type End = StringRef(addr).find('\n');
+ return StringRef(addr, End - 1);
}
return StringRef(addr);
} else if (name.startswith("#1/")) {