https://github.com/efriedma-quic commented:

> (a) pursue the GS buffer heuristic the way it's done here in this PR (adding 
> a new heuristic mode into LLVM), and then follow-up with the refactor of 
> removing the notion of the GS mode from LLVM in favor of marking all allocas 
> in Clang (I'm happy to take on that task).

Assume we extend `stack-protector` metadata to allow specifying whether an 
alloca counts as a large array, small array, or neither, similar to what like 
this patch does.  To simplify things, add an additional mode to explicitly mark 
an alloca as "protectable, but not a large alloca or a small alloca".  Then 
simplest mode we can could implement that allows matching the current semantics 
is the following:

- Determine whether an alloca is a 'large array', a 'small array', or neither 
based on `stack-protector` metadata.  Emit a stack protector if there's any any 
arrays, or any possibly-out-of-bounds use of any alloca not opted out.  Layout 
the stack based on the `stack-protector` metadata.

For functions where all allocas have `stack-protector` metadata, this is 
equivalent to sspstrong: all the decisions that distinguish sspstrong from any 
other mode are controlled by the metadata.  So I'm not sure we need a new mode, 
just new metadata.

https://github.com/llvm/llvm-project/pull/225626
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to