components/llvm/patches/018-21870283-llvm-GetArgumentVector.patch
changeset 5434 9f55c805ce9d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/llvm/patches/018-21870283-llvm-GetArgumentVector.patch	Wed Feb 10 11:54:12 2016 -0800
@@ -0,0 +1,49 @@
+# 21870283 - llvm::sys::Process::GetArgumentVector should overload
+# for std::vector
+# For upstream - maybe.
+--- include/llvm/Support/Process.h	2014-12-04 08:59:36.000000000 -0800
++++ include/llvm/Support/Process.h	2015-09-20 16:56:49.207515143 -0700
+@@ -81,20 +81,26 @@
+                                              const std::string& FileName);
+ 
+   /// This function returns a SmallVector containing the arguments passed from
+   /// the operating system to the program.  This function expects to be handed
+   /// the vector passed in from main.
+   static std::error_code
+   GetArgumentVector(SmallVectorImpl<const char *> &Args,
+                     ArrayRef<const char *> ArgsFromMain,
+                     SpecificBumpPtrAllocator<char> &ArgAllocator);
+ 
++  /// Overload the above for a std::vector, and without the
++  // useless SpecificBumpPtrAllocator argument.
++  static std::error_code
++  GetArgumentVector(std::vector<const char *> &ArgsOut,
++                    ArrayRef<const char *> ArgsIn);
++
+   // This functions ensures that the standard file descriptors (input, output,
+   // and error) are properly mapped to a file descriptor before we use any of
+   // them.  This should only be called by standalone programs, library
+   // components should not call this.
+   static std::error_code FixupStandardFileDescriptors();
+ 
+   // This function safely closes a file descriptor.  It is not safe to retry
+   // close(2) when it returns with errno equivalent to EINTR; this is because
+   // *nixen cannot agree if the file descriptor is, in fact, closed when this
+   // occurs.
+--- lib/Support/Unix/Process.inc	2014-12-04 08:59:36.000000000 -0800
++++ lib/Support/Unix/Process.inc	2015-09-20 17:11:29.527153186 -0700
+@@ -180,6 +180,14 @@
+   return std::error_code();
+ }
+ 
++std::error_code
++Process::GetArgumentVector(std::vector<const char *> &ArgsOut,
++                           ArrayRef<const char *> ArgsIn) {
++  ArgsOut.insert(ArgsOut.end(), ArgsIn.begin(), ArgsIn.end());
++
++  return std::error_code();
++}
++
+ namespace {
+ class FDCloser {
+ public: