<div dir="ltr"><div class="gmail_extra">On Tue, May 21, 2013 at 1:39 AM, Nick Kledzik <span dir="ltr"><<a href="mailto:kledzik@apple.com" target="_blank">kledzik@apple.com</a>></span> wrote:<br><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
<span style="font-family:Helvetica;font-size:medium">Joe, Thanks for starting to help out with the mach-o part of lld.  Comments below:</span></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
<span style="font-family:Helvetica;font-size:medium"> </span></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco"><br></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
+std::string MachOTargetInfo::PackedVersion::unparse() const {</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+  std::string buffer;</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
+  llvm::raw_string_ostream str(buffer);</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+  str << llvm::format("%i.%i.%i", _value >> 16, (_value >> 8) & 0xFF,</div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+                      _value & 0xFF);</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
+  return str.str();</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+}</div><div><br></div><div>If you change this function to take a stream to write to, you won't need the stream and buffer temporaries.</div>
</div></blockquote><div><br></div><div style>Good point.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><span style="font-family:Monaco;font-size:14px">+  if (parsedArgs->getLastArg(OPT_</span><span style="font-family:Monaco;font-size:14px">dump_args)) {</span><br>
</div><div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+    info.dumpArgs(llvm::outs());</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
+    return true;</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">+  }</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font:normal normal normal 14px/normal Monaco">
+</div></div><div><br></div><div>This is called after validate() which sets up some defaults.  That will make for some unexpected output.  For instance, dumpArgs() will also add the -e option even if it was not specified.   We need to decide if dumpArgs() prints the minimal arguments or every possible argument with its default value (e.g. -image_base 0).  </div>
</div></blockquote><div><br></div><div style>My idea was that dumpArgs() should print out every possible argument so that it can also be used to test that validate() is doing the correct thing. For example, testing that -pie gets properly ignored if building a bundle or a dylib.</div>
<div style><br></div><div style>-- Joe Ranieri</div></div></div></div>