[PATCH] D82033: [LTO] Nul-terminate options passed to LLVM

Momchil Velikov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 17 11:18:54 PDT 2020


chill created this revision.
chill added reviewers: thegameg, steven_wu, kledzik, dexonsmith, deadalnix.
Herald added subscribers: llvm-commits, hiraditya, inglorion.
Herald added a project: LLVM.

`setCodeGenDebugOptions` expect an array of nul-terminated strings and retains a copy of them.


https://reviews.llvm.org/D82033

Files:
  llvm/tools/lto/lto.cpp


Index: llvm/tools/lto/lto.cpp
===================================================================
--- llvm/tools/lto/lto.cpp
+++ llvm/tools/lto/lto.cpp
@@ -474,11 +474,16 @@
 }
 
 void lto_codegen_debug_options(lto_code_gen_t cg, const char *opt) {
-  std::vector<const char *> Options;
+  // Make a copy of the options, so we can nul-terminate them each individual
+  // one.
+  std::vector<std::string> Storage;
   for (std::pair<StringRef, StringRef> o = getToken(opt); !o.first.empty();
        o = getToken(o.second))
-    Options.push_back(o.first.data());
+    Storage.push_back(o.first.str());
 
+  std::vector<const char *> Options;
+  transform(Storage, back_inserter(Options),
+            [](const std::string &S) { return S.c_str(); });
   unwrap(cg)->setCodeGenDebugOptions(Options);
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82033.271416.patch
Type: text/x-patch
Size: 803 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200617/22d945b5/attachment.bin>


More information about the llvm-commits mailing list