April 24, 2018 Add pragma(stackStomp, [true|false]) to control -gx on per-function basis | ||||
---|---|---|---|---|
| ||||
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 |
April 24, 2018 Re: Add pragma(stackStomp, [true|false]) to control -gx on per-function basis | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | https://issues.dlang.org/show_bug.cgi?id=18795 |
Copyright © 1999-2021 by the D Language Foundation