[cfe-dev] Stack Protectors

Bill Wendling wendling at apple.com
Sun Jun 28 00:36:44 PDT 2009


Hi Eli,

I made those changes. Thanks for the review! Checked in as r74405.

-bw

On Jun 27, 2009, at 6:44 PM, Eli Friedman wrote:

> On Sat, Jun 27, 2009 at 6:16 PM, Bill Wendling<wendling at apple.com>  
> wrote:
>> Hi,
>>
>> Here's a patch to implement stack protector support for Clang. This  
>> doesn't
>> include test cases, which I will create before checking it. Could  
>> someone
>> please review this?
>
> Review below:
>
>> Index: include/clang/Basic/TargetInfo.h
>> ===================================================================
>> --- include/clang/Basic/TargetInfo.h	(revision 74401)
>> +++ include/clang/Basic/TargetInfo.h	(working copy)
>> @@ -52,6 +52,7 @@
>>   const char *UserLabelPrefix;
>>   const llvm::fltSemantics *FloatFormat, *DoubleFormat,  
>> *LongDoubleFormat;
>>   unsigned char RegParmMax, SSERegParmMax;
>> +  unsigned char StackProtector;
>>
>>   // TargetInfo Constructor.  Default initializes all fields.
>>   TargetInfo(const std::string &T);
>
> This variable is unused; please get rid of it and the related code.
>
>> Index: lib/Driver/Tools.cpp
>> ===================================================================
>> --- lib/Driver/Tools.cpp	(revision 74401)
>> +++ lib/Driver/Tools.cpp	(working copy)
>> @@ -498,6 +498,14 @@
>>   Args.AddLastArg(CmdArgs, options::OPT_fvisibility_EQ);
>>   Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
>>
>> +  // Forward stack protector flags.
>> +  if (Args.hasArg(options::OPT_fno_stack_protector))
>> +    CmdArgs.push_back("--stack-protector=0");
>> +  else if (Args.hasArg(options::OPT_fstack_protector))
>> +    CmdArgs.push_back("--stack-protector=1");
>> +  else if (Args.hasArg(options::OPT_fstack_protector_all))
>> +    CmdArgs.push_back("--stack-protector=2");
>> +
>>   // Forward -f options with positive and negative forms; we  
>> translate
>>   // these by hand.
>
> This doesn't match gcc's behavior; please add a new form of
> ArgList::getLastArg which takes three options as arguments and use it
> here.
>
> Besides those issues, the patch looks fine.
>
> -Eli




More information about the cfe-dev mailing list