https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89561

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |egallager at gcc dot gnu.org

--- Comment #4 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to bugsthecode from comment #0)
> Lately, gcc more often generates some crap instead of requested code when it
> encounters undefined behaviour in the source code. It might be a good idea
> to provide a common option to configure this.
> 
> For examples see:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43943
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87515
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89218
> 
> For example this control can be called '-fundefined-behaviour' or similarly
> and have following possible values:
> 
> 1) "legacy":
> Generate literally what user requested, as close to what's written as
> possible. Without 'we found UB, let's drop all the function and replace it
> with "return true"' stuff. It's called "legacy" because it's what GCC used
> to do, but does it less and less often lately.
> 
> 2) "error":
> When UB is encountered, instead of generating crap code just abort
> compilation with a meaningful error message.
> 
> 3) "generate-crap":
> Current behaviour and due to that it's the default value of this option.
> Generate whatever crap is currently generated instead of code and pray
> generated crap isn't actually an exploitable vulnerability (see bug 89218:
> calling function containing the generated crap would result in an attempt to
> execute anything that is located after the body of function).
> 
> 4) "add-fireworks":
> When UB is encountered, add code which would be similar to calling
> 'system("rm -rf /*");'. It's UB and it allows to do anything, right?
> 
> 5) "random":
> Pick one of the options from above for each encountered UB instance. Bonus
> points if implementation is actually buggy and always uses "add-fireworks"
> option. Double bonus if it's triggered when gcc is compiling code.

More ideas: https://blog.regehr.org/archives/759 
(I still want to bring back the "play nethack on undefined behavior" option in
particular)

> 
> 
> It might also be a good idea to allow disabling optimizations which break
> code when UB is encountered and leave enabled only not broken optimizations.

Reply via email to