micompilation of autoconf stack growth test at -O > 0 on ARM
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| Linaro GCC |
Invalid
|
Undecided
|
Unassigned | ||
| gcc |
Invalid
|
Medium
|
|||
| gcc-4.7 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
| gcc-4.8 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
| librep (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bug Description
This autoconf test works on x86, but appears to fail on ARM when built with optimisation. It worked fine with gcc-4.6, and fails with 4.7. Versions here were all from current saucy:
gcc-4.6: 4.6.4-3ubuntu1
gcc-4.7: 4.7.3-6ubuntu1
gcc-4.8: 4.8.1-7ubuntu1
(saucy-
(saucy-
0
(saucy-
(saucy-
1
(saucy-
(saucy-
1
(saucy-
(saucy-
1
(saucy-
(saucy-
0
(saucy-
#include <stdlib.h>
void inner (char *foo) {
char bar;
exit (!(foo >= &bar));
}
void main () {
char foo;
inner (&foo);
}
| Changed in gcc: | |
| importance: | Unknown → Medium |
| status: | Unknown → Invalid |
| Changed in gcc-4.8 (Ubuntu): | |
| status: | New → Invalid |
| Changed in gcc-4.7 (Ubuntu): | |
| status: | New → Invalid |
| Changed in gcc-linaro: | |
| status: | New → Invalid |

seen on arm-linux- gnueabihf, as part of an autoconf test in librep:
$ cat stack.c
#include <stdlib.h>
void inner (char *foo) {
char bar;
exit (!(foo >= &bar));
}
void main () {
char foo;
inner (&foo);
}
$ gcc-4.6 -o conftest -O2 stack.c && ./conftest ; echo $?
0
$ gcc-4.7 -o conftest -O2 stack.c && ./conftest ; echo $?
1
$ gcc-4.8 -o conftest -O2 stack.c && ./conftest ; echo $?
1
$ gcc-4.8 -o conftest -O0 stack.c && ./conftest ; echo $?
0