[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