On Mon, Jul 15, 2024 at 09:19:49AM +0200, Martin Uecker wrote: > The instrumentation is guarded by a new instrumentation flag -fvla-bounds, > but runtime overhead should generally be very low as most checks are > removed by the optimizer, e.g. > > void foo(int x, char (*buf)[x]) > { > bar(x, buf); > } > > does not have any overhead with -O1 (we also might want to filter out > some obvious cases already in the FE). So I think this flag could be > a good addition to -fhardened after some testing. Maybe it could even > be activated by default.
Just to clarify, but does any of this change the behavior of __builtin_object_size() or __builtin_dynamic_object_size() within functions that take array arguments? i.e. does this work now? void foo(int array[10]) { global = __builtin_object_size(array, 1); } (Currently "global" will be set to SIZE_MAX, rather than 40.) -- Kees Cook