Make createObjectFile's signature a bit less error prone.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 29 Jan 2014 00:02:26 +0000 (00:02 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 29 Jan 2014 00:02:26 +0000 (00:02 +0000)
This will be better with c++11, but right now file_magic converts to bool,
which makes the api really easy to misuse.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200357 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ObjectFile.h
lib/Object/Binary.cpp
tools/llvm-ar/llvm-ar.cpp

index 806de34e76a8ced37894c6ae1a3578fba7854a5e..7533d625b12526d094ed3652a9694292d2a6362a 100644 (file)
@@ -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();
index a2f4ec9a0b8fe5ce6650bcec0b02782e54e2f94e..63898d277f355d8eeb650140bfe3ba083d77c7ce 100644 (file)
@@ -67,7 +67,7 @@ ErrorOr<Binary *> object::createBinary(MemoryBuffer *Source,
     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:
index 944cce408fa0dc76d29d361c31c3469d87d8ec3a..8917cd3801f80e066905eb9a7413efdae6a02d50 100644 (file)
@@ -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();