[PATCH] D29027: [Stack Protection] Add remark for reasons why Stack Protection has been applied

Richard Smith via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 23 11:24:50 PST 2017


rsmith added inline comments.


================
Comment at: include/clang/Basic/DiagnosticFrontendKinds.td:229
+def remark_ssp_applied_reason
+    : Remark<"SSP applied to function due to %select{an unknown reason|a "
+             "call to alloca|a stack allocated buffer or struct containing a "
----------------
Can this "unknown reason" case actually happen? It seems like a bug that SSP insertion would not know why it's doing what it's doing.


================
Comment at: include/clang/Basic/DiagnosticFrontendKinds.td:229
+def remark_ssp_applied_reason
+    : Remark<"SSP applied to function due to %select{an unknown reason|a "
+             "call to alloca|a stack allocated buffer or struct containing a "
----------------
rsmith wrote:
> Can this "unknown reason" case actually happen? It seems like a bug that SSP insertion would not know why it's doing what it's doing.
Rather than the potentially-opaque initialism SSP, could you say "stack protector" here? That would match the flag name better.


================
Comment at: include/clang/Basic/DiagnosticFrontendKinds.td:230
+    : Remark<"SSP applied to function due to %select{an unknown reason|a "
+             "call to alloca|a stack allocated buffer or struct containing a "
+             "buffer|the address of a local variable being taken|a function "
----------------
Do we actually know that the cause is a call to `alloca` rather than a VLA?


================
Comment at: include/clang/Basic/DiagnosticFrontendKinds.td:232
+             "buffer|the address of a local variable being taken|a function "
+             "attribute or use of -fstack-protector-all}0">,
+      InGroup<SSPReason>;
----------------
These two cases seem very easy to tell apart: if `-fstack-protector-all` is specified, use that diagnostic, otherwise the LLVM attribute must have been from a source-level attribute.


================
Comment at: include/clang/Basic/DiagnosticGroups.td:911
+// function.
+def SSPReason : DiagGroup<"ssp-reason">;
----------------
The flags to control this are `-fstack-protector*`, so `-Rstack-protector` (or something starting `-Rstack-protector`) should be used here.


https://reviews.llvm.org/D29027





More information about the cfe-commits mailing list