[llvm] r200357 - Make createObjectFile's signature a bit less error prone.
Rafael Espindola
rafael.espindola at gmail.com
Tue Jan 28 16:02:26 PST 2014
Author: rafael
Date: Tue Jan 28 18:02:26 2014
New Revision: 200357
URL: http://llvm.org/viewvc/llvm-project?rev=200357&view=rev
Log:
Make createObjectFile's signature a bit less error prone.
This will be better with c++11, but right now file_magic converts to bool,
which makes the api really easy to misuse.
Modified:
llvm/trunk/include/llvm/Object/ObjectFile.h
llvm/trunk/lib/Object/Binary.cpp
llvm/trunk/tools/llvm-ar/llvm-ar.cpp
Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=200357&r1=200356&r2=200357&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ObjectFile.h Tue Jan 28 18:02:26 2014
@@ -378,9 +378,13 @@ public:
/// return true.
/// @brief Create ObjectFile from path.
static ErrorOr<ObjectFile *> createObjectFile(StringRef ObjectPath);
- static ErrorOr<ObjectFile *>
- createObjectFile(MemoryBuffer *Object, bool BufferOwned = true,
- sys::fs::file_magic Type = sys::fs::file_magic::unknown);
+ static ErrorOr<ObjectFile *> createObjectFile(MemoryBuffer *Object,
+ bool BufferOwned,
+ sys::fs::file_magic Type);
+ static ErrorOr<ObjectFile *> createObjectFile(MemoryBuffer *Object) {
+ return createObjectFile(Object, true, sys::fs::file_magic::unknown);
+ }
+
static inline bool classof(const Binary *v) {
return v->isObject();
Modified: llvm/trunk/lib/Object/Binary.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/Binary.cpp?rev=200357&r1=200356&r2=200357&view=diff
==============================================================================
--- llvm/trunk/lib/Object/Binary.cpp (original)
+++ llvm/trunk/lib/Object/Binary.cpp Tue Jan 28 18:02:26 2014
@@ -67,7 +67,7 @@ ErrorOr<Binary *> object::createBinary(M
case sys::fs::file_magic::coff_object:
case sys::fs::file_magic::coff_import_library:
case sys::fs::file_magic::pecoff_executable:
- return ObjectFile::createObjectFile(scopedSource.take(), Type);
+ return ObjectFile::createObjectFile(scopedSource.take(), true, Type);
case sys::fs::file_magic::macho_universal_binary:
return MachOUniversalBinary::create(scopedSource.take());
case sys::fs::file_magic::unknown:
Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=200357&r1=200356&r2=200357&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Tue Jan 28 18:02:26 2014
@@ -703,7 +703,8 @@ static void writeSymbolTable(
I != E; ++I, ++MemberNum) {
MemoryBuffer *MemberBuffer = Buffers[MemberNum];
ErrorOr<object::ObjectFile *> ObjOrErr =
- object::ObjectFile::createObjectFile(MemberBuffer, false);
+ object::ObjectFile::createObjectFile(MemberBuffer, false,
+ sys::fs::file_magic::unknown);
if (!ObjOrErr)
continue; // FIXME: check only for "not an object file" errors.
object::ObjectFile *Obj = ObjOrErr.get();
More information about the llvm-commits
mailing list