On Mo, 08 Mai 2017, R0b0t1 wrote:
> On Sat, May 6, 2017 at 8:45 PM, James McCoy <[email protected]> wrote:
> > On Fri, May 05, 2017 at 10:23:49PM +0200, Bram Moolenaar wrote:
> >> James McCoy wrote:
> >> > It would be nice for there to be defined behavior here for the user,
> >> > instead of exposing them to the whims of the compiler implementation.
> >>
> >> Unfortunately, that is quite difficult. I propose the compiler standard
> >> gets fixed. This means only the few compilers that exist need to take
> >> care of this, instead of the millions of C programs.
> >
> > Since that's unlikely to happen, how about fixing it in one editor
> > instead of passing it off to all the Vim users?
> >
>
> I'm willing to help implement it. Unfortunately, the most
> straightforward solution, using `-ftrapv` and catching the resulting
> SIGABRT when overflow occurs, suffers from a bug in GCC dating from
> '08: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35412. `-ftrapv`
> does seem to work in the current release of Cygwin, but did not work
> last I tried it on Linux.
>
> A possible workaround is the combination of `-fsanitize=undefined`,
> `-fsanitize=signed-integer-overflow`, and
> `-fsanitize-undefined-trap-on-error`. The last flag given does not
> seem to be documented. When it is used to compile a test program under
> Cygwin and that program executed I receive an illegal instruction core
> dump. I have yet to test it on a GNU/Linux toolchain.
>
> ```
> #include <signal.h>
> #include <stdio.h>
> #include <limits.h>
>
> void
> handler(int signum)
> {
> printf("Overflow detected.\n");
> }
>
> int
> main(int argc, char *argv[])
> {
> int i = INT_MAX;
> signal(SIGABRT, &handler);
> i++;
>
> return 0;
> }
> ```
>
> `gcc -ftrapv`
> `gcc --fsanitize=undefined -fsanitize=signed-integer-overflow
> -fsanitize-undefined-trap-on-error`
So what would you suggest to implement a sane behaviour?
Best,
Christian
--
Das Vorurteil ist ein Floß, an das sich der schiffbrüchige Geist
klammert und ins Sichere rudert.
-- Ben Hecht
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.