gcc cannot build correctly famous hello program, clang does it correctly
Alex Ernst
alex.ernst19@gmail.com
Wed Sep 7 10:36:22 GMT 2022
$ gcc -v
gcc version 10.2.1 20210110 (Debian 10.2.1-6)
$ clang -v
Debian clang version 11.0.1-2
$ cat hello.c
int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"Hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
$ gcc -ansi -o hello hello.c
$ strace hello
. . .
write(1, 0x416c9004, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9005, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9006, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9007, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9008, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9009, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900a, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900b, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900c, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900d, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900e, 1) = -1 EFAULT (Bad address)
write(1, 0x416c900f, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9010, 1) = -1 EFAULT (Bad address)
write(1, 0x416c9011, 1) = -1 EFAULT (Bad address)
exit_group(0) = ?
+++ exited with 0 +++
$ clang -ansi -o hello hello.c
$ strace hello
. . .
write(1, "H", 1H) = 1
write(1, "e", 1e) = 1
write(1, "l", 1l) = 1
write(1, "l", 1l) = 1
write(1, "o", 1o) = 1
write(1, ",", 1,) = 1
write(1, " ", 1 ) = 1
write(1, "w", 1w) = 1
write(1, "o", 1o) = 1
write(1, "r", 1r) = 1
write(1, "l", 1l) = 1
write(1, "d", 1d) = 1
write(1, "!", 1!) = 1
write(1, "\n", 1
) = 1
exit_group(0) = ?
+++ exited with 0 +++
More information about the Gcc-bugs
mailing list