www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Add pragma(stackStomp, [true|false]) to control -gx on per-function

reply Walter Bright <newshound2 digitalmars.com> writes:
Stomping the stack is important for detecting certain kinds of dangling 
reference bugs (shouldn't be possible in  safe code), but also for
cryptographic 
code that aims to prevent a function from leaking any information to its caller:

   http://www.cl.cam.ac.uk/~rja14/Papers/whatyouc.pdf

This should be controllable on a per-function basis, and the best way is 
analogous to the way the `pragma(inline)` works, i.e.:

   pragma(stackStomp) // default, meaning set to the setting of the -gx switch
   pragma(stackStomp, true)  // enable for this function
   pragma(stackStomp, false)  // disable for this function

References:

   https://dlang.org/dmd-windows.html#switch-gx
   https://dlang.org/spec/pragma.html#inline
   https://github.com/dlang/dmd/blob/master/src/dmd/backend/cod3.c#L3919

The stomp code should also be improved to overwrite all scratch registers 
modified by the function that are not part of the return value or the registers 
already preserved by the function.0
Apr 24 2018
parent Walter Bright <newshound2 digitalmars.com> writes:
https://issues.dlang.org/show_bug.cgi?id=18795
Apr 24 2018