diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-01-05 05:55:23 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-01-05 05:55:23 +0000 |
commit | e6e3f570fa7dcd16eadc2cf51247ab91bc2aa9fe (patch) | |
tree | 71470afc59061118febd56d40ddb56f52bebbf39 /libc/sysdeps/linux/vax/sys/ucontext.h | |
parent | 434de2bfe0a74d4efc578e4da623d4ba783e9d8a (diff) |
michael_d writes in #1874:
On an i386 platform with no rt_sigsuspend syscall (ie: Linux 2.0), compilation will halt on libc/sysdeps/linux/common/sigsuspend.os with a cryptic error message:
"Error: non-constant expression in ".if" statement"
I've investigated and found that the cause is that a literal '0' is being passed into a block of complex assembler macrology that is only prepared to deal with register names - '%eax', etc.
In turn, that seems to be because of a typo in the GCC register constraints. The constraints for 2 and 3-argument syscalls includes a "C" constraint. To gcc, "C" means an SSE floating point constant -- an unlikely element in a syscall. I suspect the author meant to type "S" (%esi).
Diffstat (limited to 'libc/sysdeps/linux/vax/sys/ucontext.h')
0 files changed, 0 insertions, 0 deletions