summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Object/Archive.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-08-03 18:44:32 +0000
committerVedant Kumar <vsk@apple.com>2016-08-03 18:44:32 +0000
commitbfb6072d84fbd6169d57afe9d812de1abca7b5d7 (patch)
treeca63aef2231c865815c8d3af447996f6e9c34b96 /llvm/lib/Object/Archive.cpp
parent23ee12e173762f977f1deeec14dccb32f6478204 (diff)
downloadbcm5719-llvm-bfb6072d84fbd6169d57afe9d812de1abca7b5d7.tar.gz
bcm5719-llvm-bfb6072d84fbd6169d57afe9d812de1abca7b5d7.zip
Revert "More fixes to get good error messages for bad archives."
This reverts commit r277540. It breaks the build with: ../lib/Object/Archive.cpp:264:41: error: return type of out-of-line definition of 'llvm::object::ArchiveMemberHeader::getUID' differs from that in the declaration Expected<unsigned> ArchiveMemberHeader::getUID() const { ~~~~~~~~~~~~~~~~~~ ^ include/llvm/Object/Archive.h:53:12: note: previous declaration is here unsigned getUID() const; ~~~~~~~~ ^ llvm-svn: 277627
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r--llvm/lib/Object/Archive.cpp62
1 files changed, 12 insertions, 50 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp
index 827affebf43..586f9c1da81 100644
--- a/llvm/lib/Object/Archive.cpp
+++ b/llvm/lib/Object/Archive.cpp
@@ -221,81 +221,43 @@ Expected<uint32_t> ArchiveMemberHeader::getSize() const {
return Ret;
}
-Expected<sys::fs::perms> ArchiveMemberHeader::getAccessMode() const {
+sys::fs::perms ArchiveMemberHeader::getAccessMode() const {
unsigned Ret;
if (StringRef(ArMemHdr->AccessMode,
- sizeof(ArMemHdr->AccessMode)).rtrim(' ').getAsInteger(8, Ret)) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- OS.write_escaped(llvm::StringRef(ArMemHdr->AccessMode,
- sizeof(ArMemHdr->AccessMode)).rtrim(" "));
- OS.flush();
- uint64_t Offset = reinterpret_cast<const char *>(ArMemHdr) -
- Parent->getData().data();
- return malformedError("characters in AccessMode field in archive header "
- "are not all decimal numbers: '" + Buf + "' for the "
- "archive member header at offset " + Twine(Offset));
- }
+ sizeof(ArMemHdr->AccessMode)).rtrim(' ').getAsInteger(8, Ret))
+ llvm_unreachable("Access mode is not an octal number.");
return static_cast<sys::fs::perms>(Ret);
}
-Expected<sys::TimeValue> ArchiveMemberHeader::getLastModified() const {
+sys::TimeValue ArchiveMemberHeader::getLastModified() const {
unsigned Seconds;
if (StringRef(ArMemHdr->LastModified,
sizeof(ArMemHdr->LastModified)).rtrim(' ')
- .getAsInteger(10, Seconds)) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- OS.write_escaped(llvm::StringRef(ArMemHdr->LastModified,
- sizeof(ArMemHdr->LastModified)).rtrim(" "));
- OS.flush();
- uint64_t Offset = reinterpret_cast<const char *>(ArMemHdr) -
- Parent->getData().data();
- return malformedError("characters in LastModified field in archive header "
- "are not all decimal numbers: '" + Buf + "' for the "
- "archive member header at offset " + Twine(Offset));
- }
+ .getAsInteger(10, Seconds))
+ llvm_unreachable("Last modified time not a decimal number.");
sys::TimeValue Ret;
Ret.fromEpochTime(Seconds);
return Ret;
}
-Expected<unsigned> ArchiveMemberHeader::getUID() const {
+unsigned ArchiveMemberHeader::getUID() const {
unsigned Ret;
StringRef User = StringRef(ArMemHdr->UID, sizeof(ArMemHdr->UID)).rtrim(' ');
if (User.empty())
return 0;
- if (User.getAsInteger(10, Ret)) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- OS.write_escaped(User);
- OS.flush();
- uint64_t Offset = reinterpret_cast<const char *>(ArMemHdr) -
- Parent->getData().data();
- return malformedError("characters in UID field in archive header "
- "are not all decimal numbers: '" + Buf + "' for the "
- "archive member header at offset " + Twine(Offset));
- }
+ if (User.getAsInteger(10, Ret))
+ llvm_unreachable("UID time not a decimal number.");
return Ret;
}
-Expected<unsigned> ArchiveMemberHeader::getGID() const {
+unsigned ArchiveMemberHeader::getGID() const {
unsigned Ret;
StringRef Group = StringRef(ArMemHdr->GID, sizeof(ArMemHdr->GID)).rtrim(' ');
if (Group.empty())
return 0;
- if (Group.getAsInteger(10, Ret)) {
- std::string Buf;
- raw_string_ostream OS(Buf);
- OS.write_escaped(Group);
- OS.flush();
- uint64_t Offset = reinterpret_cast<const char *>(ArMemHdr) -
- Parent->getData().data();
- return malformedError("characters in GID field in archive header "
- "are not all decimal numbers: '" + Buf + "' for the "
- "archive member header at offset " + Twine(Offset));
- }
+ if (Group.getAsInteger(10, Ret))
+ llvm_unreachable("GID time not a decimal number.");
return Ret;
}
OpenPOWER on IntegriCloud