<div dir="ltr">I've gone ahead and reverted this in r186234 after two hours with no update. =/<div><br></div><div>Please folks, watch the build bots after you commit.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Jul 12, 2013 at 5:07 PM, Quentin Colombet <span dir="ltr"><<a href="mailto:qcolombet@apple.com" target="_blank">qcolombet@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Hi Bill,<div><br></div><div>This breaks some buildbots:</div><div><a href="http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4328" target="_blank">http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4328</a></div>
<div><pre style="font-family:'Courier New',courier,monotype;font-size:medium"><span>******************** TEST 'LLVM :: DebugInfo/X86/dbg_value_direct.ll' FAILED ********************
Script:
--
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/Release+Asserts/bin/llc -filetype=obj -O0 -stack-protector-buffer-size=1 < /Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/llvm/test/DebugInfo/X86/dbg_value_direct.ll
--
Exit Code: 1
Command Output (stderr):
--
llc: Unknown command line argument '-stack-protector-buffer-size=1'.  Try: '/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin11-nobootstrap-RAincremental/clang-build/Release+Asserts/bin/llc -help'
llc: Did you mean '-debug-buffer-size=1'?
--

********************</span></pre><span class="HOEnZb"><font color="#888888"><div><br></div><div><br></div><div>
<div style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;text-transform:none;white-space:normal;font-family:Helvetica;word-wrap:break-word;word-spacing:0px">
-Quentin</div>

</div></font></span><div><div class="h5">
<br><div><div>On Jul 12, 2013, at 3:25 PM, Bill Wendling <<a href="mailto:isanbard@gmail.com" target="_blank">isanbard@gmail.com</a>> wrote:</div><br><blockquote type="cite"><div style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
Author: void<br>Date: Fri Jul 12 17:25:20 2013<br>New Revision: 186217<br><br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project?rev=186217&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=186217&view=rev</a><br>
Log:<br>Use the function attributes to pass along the stack protector buffer size.<br><br>Now that we have robust function attributes, don't use a command line option to<br>specify the stack protecto buffer size.<br><br>
Modified:<br>   llvm/trunk/include/llvm/CodeGen/CommandFlags.h<br>   llvm/trunk/include/llvm/Target/TargetOptions.h<br>   llvm/trunk/lib/CodeGen/StackProtector.cpp<br>   llvm/trunk/tools/llc/llc.cpp<br>   llvm/trunk/tools/lto/LTOModule.cpp<br>
   llvm/trunk/tools/opt/opt.cpp<br><br>Modified: llvm/trunk/include/llvm/CodeGen/CommandFlags.h<br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/CommandFlags.h?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/CommandFlags.h?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/include/llvm/CodeGen/CommandFlags.h (original)<br>+++ llvm/trunk/include/llvm/CodeGen/CommandFlags.h Fri Jul 12 17:25:20 2013<br>
@@ -220,8 +220,4 @@ cl::opt<std::string> StartAfter("start-a<br>                          cl::value_desc("pass-name"),<br>                          cl::init(""));<br><br>-cl::opt<unsigned><br>
-SSPBufferSize("stack-protector-buffer-size", cl::init(8),<br>-              cl::desc("Lower bound for a buffer to be considered for "<br>-                       "stack protection"));<br>#endif<br>
<br>Modified: llvm/trunk/include/llvm/Target/TargetOptions.h<br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetOptions.h?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetOptions.h?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/include/llvm/Target/TargetOptions.h (original)<br>+++ llvm/trunk/include/llvm/Target/TargetOptions.h Fri Jul 12 17:25:20 2013<br>
@@ -48,7 +48,7 @@ namespace llvm {<br>          UseSoftFloat(false), NoZerosInBSS(false),<br>          JITEmitDebugInfo(false), JITEmitDebugInfoToDisk(false),<br>          GuaranteedTailCallOpt(false), DisableTailCalls(false),<br>
-          StackAlignmentOverride(0), RealignStack(true), SSPBufferSize(0),<br>+          StackAlignmentOverride(0), RealignStack(true),<br>          EnableFastISel(false), PositionIndependentExecutable(false),<br>          EnableSegmentedStacks(false), UseInitArray(false), TrapFuncName(""),<br>
          FloatABIType(FloatABI::Default), AllowFPOpFusion(FPOpFusion::Standard)<br>@@ -151,10 +151,6 @@ namespace llvm {<br>    /// automatically realigned, if needed.<br>    unsigned RealignStack : 1;<br><br>-    /// SSPBufferSize - The minimum size of buffers that will receive stack<br>
-    /// smashing protection when -fstack-protection is used.<br>-    unsigned SSPBufferSize;<br>-<br>    /// EnableFastISel - This flag enables fast-path instruction selection<br>    /// which trades away generated code quality in favor of reducing<br>
    /// compile time.<br>@@ -224,7 +220,6 @@ inline bool operator==(const TargetOptio<br>    ARE_EQUAL(DisableTailCalls) &&<br>    ARE_EQUAL(StackAlignmentOverride) &&<br>    ARE_EQUAL(RealignStack) &&<br>
-    ARE_EQUAL(SSPBufferSize) &&<br>    ARE_EQUAL(EnableFastISel) &&<br>    ARE_EQUAL(PositionIndependentExecutable) &&<br>    ARE_EQUAL(EnableSegmentedStacks) &&<br><br>Modified: llvm/trunk/lib/CodeGen/StackProtector.cpp<br>
URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StackProtector.cpp?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StackProtector.cpp?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/lib/CodeGen/StackProtector.cpp (original)<br>+++ llvm/trunk/lib/CodeGen/StackProtector.cpp Fri Jul 12 17:25:20 2013<br>@@ -33,6 +33,7 @@<br>
#include "llvm/Pass.h"<br>#include "llvm/Support/CommandLine.h"<br>#include "llvm/Target/TargetLowering.h"<br>+#include <cstdlib><br>using namespace llvm;<br><br>STATISTIC(NumFunProtected, "Number of functions protected");<br>
@@ -53,6 +54,10 @@ namespace {<br><br>    DominatorTree *DT;<br><br>+    /// \brief The minimum size of buffers that will receive stack smashing<br>+    /// protection when -fstack-protection is used.<br>+    unsigned SSPBufferSize;<br>
+<br>    /// VisitedPHIs - The set of PHI nodes visited when determining<br>    /// if a variable's reference has been taken.  This set<span> </span><br>    /// is maintained to ensure we don't visit the same PHI node multiple<br>
@@ -85,11 +90,12 @@ namespace {<br>    bool RequiresStackProtector();<br>  public:<br>    static char ID;             // Pass identification, replacement for typeid.<br>-    StackProtector() : FunctionPass(ID), TM(0), TLI(0) {<br>
+    StackProtector() : FunctionPass(ID), TM(0), TLI(0), SSPBufferSize(0) {<br>      initializeStackProtectorPass(*PassRegistry::getPassRegistry());<br>    }<br>    StackProtector(const TargetMachine *TM)<br>-      : FunctionPass(ID), TM(TM), TLI(0), Trip(TM->getTargetTriple()) {<br>
+      : FunctionPass(ID), TM(TM), TLI(0), Trip(TM->getTargetTriple()),<br>+        SSPBufferSize(8) {<br>      initializeStackProtectorPass(*PassRegistry::getPassRegistry());<br>    }<br><br>@@ -117,6 +123,12 @@ bool StackProtector::runOnFunction(Funct<br>
<br>  if (!RequiresStackProtector()) return false;<br><br>+  Attribute Attr =<br>+    Fn.getAttributes().getAttribute(AttributeSet::FunctionIndex,<br>+                                    "ssp-buffer-size");<br>+  if (Attr.isStringAttribute())<br>
+    SSPBufferSize = atoi(Attr.getValueAsString().data());<br>+<br>  ++NumFunProtected;<br>  return InsertStackProtectors();<br>}<br>@@ -132,7 +144,6 @@ bool StackProtector::ContainsProtectable<br>    // protector<br>    if (Strong)<br>
      return true;<br>-    const TargetMachine &TM = TLI->getTargetMachine();<br>    if (!AT->getElementType()->isIntegerTy(8)) {<br>      // If we're on a non-Darwin platform or we're inside of a structure, don't<br>
      // add stack protectors unless the array is a character array.<br>@@ -142,7 +153,7 @@ bool StackProtector::ContainsProtectable<br><br>    // If an array has more than SSPBufferSize bytes of allocated space, then we<br>
    // emit stack protectors.<br>-    if (TM.Options.SSPBufferSize <= TLI->getDataLayout()->getTypeAllocSize(AT))<br>+    if (SSPBufferSize <= TLI->getDataLayout()->getTypeAllocSize(AT))<br>      return true;<br>
  }<br><br>@@ -230,13 +241,14 @@ bool StackProtector::RequiresStackProtec<br><br>          if (const ConstantInt *CI =<br>               dyn_cast<ConstantInt>(AI->getArraySize())) {<br>-            unsigned BufferSize = TLI->getTargetMachine().Options.SSPBufferSize;<br>
-            if (CI->getLimitedValue(BufferSize) >= BufferSize)<br>+            if (CI->getLimitedValue(SSPBufferSize) >= SSPBufferSize)<br>              // A call to alloca with size >= SSPBufferSize requires<br>
              // stack protectors.<br>              return true;<br>-          } else // A call to alloca with a variable size requires protectors.<br>+          } else {<br>+            // A call to alloca with a variable size requires protectors.<br>
            return true;<br>+          }<br>        }<br><br>        if (ContainsProtectableArray(AI->getAllocatedType(), Strong))<br><br>Modified: llvm/trunk/tools/llc/llc.cpp<br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llc/llc.cpp?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/tools/llc/llc.cpp (original)<br>+++ llvm/trunk/tools/llc/llc.cpp Fri Jul 12 17:25:20 2013<br>@@ -280,7 +280,6 @@ static int compileModule(char **argv, LL<br>
  Options.PositionIndependentExecutable = EnablePIE;<br>  Options.EnableSegmentedStacks = SegmentedStacks;<br>  Options.UseInitArray = UseInitArray;<br>-  Options.SSPBufferSize = SSPBufferSize;<br><br>  OwningPtr<TargetMachine><br>
    target(TheTarget->createTargetMachine(TheTriple.getTriple(),<br><br>Modified: llvm/trunk/tools/lto/LTOModule.cpp<br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOModule.cpp?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/LTOModule.cpp?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/tools/lto/LTOModule.cpp (original)<br>+++ llvm/trunk/tools/lto/LTOModule.cpp Fri Jul 12 17:25:20 2013<br>@@ -151,11 +151,6 @@ UseInitArray("use-init-array",<br>
  cl::desc("Use .init_array instead of .ctors."),<br>  cl::init(false));<br><br>-static cl::opt<unsigned><br>-SSPBufferSize("stack-protector-buffer-size", cl::init(8),<br>-              cl::desc("Lower bound for a buffer to be considered for "<br>
-                       "stack protection"));<br>-<br>LTOModule::LTOModule(llvm::Module *m, llvm::TargetMachine *t)<br>  : _module(m), _target(t),<br>    _context(_target->getMCAsmInfo(), _target->getRegisterInfo(), NULL),<br>
@@ -261,7 +256,6 @@ void LTOModule::getTargetOptions(TargetO<br>  Options.PositionIndependentExecutable = EnablePIE;<br>  Options.EnableSegmentedStacks = SegmentedStacks;<br>  Options.UseInitArray = UseInitArray;<br>-  Options.SSPBufferSize = SSPBufferSize;<br>
}<br><br>LTOModule *LTOModule::makeLTOModule(MemoryBuffer *buffer,<br><br>Modified: llvm/trunk/tools/opt/opt.cpp<br>URL:<span> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=186217&r1=186216&r2=186217&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=186217&r1=186216&r2=186217&view=diff</a><br>
==============================================================================<br>--- llvm/trunk/tools/opt/opt.cpp (original)<br>+++ llvm/trunk/tools/opt/opt.cpp Fri Jul 12 17:25:20 2013<br>@@ -510,7 +510,6 @@ static TargetOptions GetTargetOptions()<br>
  Options.PositionIndependentExecutable = EnablePIE;<br>  Options.EnableSegmentedStacks = SegmentedStacks;<br>  Options.UseInitArray = UseInitArray;<br>-  Options.SSPBufferSize = SSPBufferSize;<br>  return Options;<br>}<br>
<br><br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></div>
</blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>