[Issue 18795] New: Add pragma(stackStomp, [true|false]) to control -gx on per-function basis
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Apr 24 23:22:08 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18795
Issue ID: 18795
Summary: Add pragma(stackStomp, [true|false]) to control -gx on
per-function basis
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: bugzilla at digitalmars.com
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
--
More information about the Digitalmars-d-bugs
mailing list