This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
gcc failed to compile glibc/alpha
- From: "H. J. Lu" <hjl at lucon dot org>
- To: Dzung Nguyen <dunguyen at iol dot unh dot edu>
- Cc: gcc at gcc dot gnu dot org, clp at iol dot unh dot edu,GNU C Library <libc-alpha at sources dot redhat dot com>
- Date: Sat, 23 Nov 2002 11:30:37 -0800
- Subject: gcc failed to compile glibc/alpha
- References: <3DDE6B1A.5000004@iol.unh.edu>
On Fri, Nov 22, 2002 at 12:36:26PM -0500, Dzung Nguyen wrote:
> Hi. The following is the original error message when we built libc with
> bootstrap-gcc_3.2 on our alphaev56 machine.
> I have received help indicating there may be a bug with the compiler
> that caused the problem. Anybody could help me out?
> Thanks.
>
Here is a testcase.
# ./xgcc -B./ -O -S /tmp/x.c
/tmp/x.c: In function `__sigwait':
/tmp/x.c:21: inconsistent operand constraints in an `asm'
# ./xgcc -B./ -v
Reading specs from ./specs
Configured with: /net/gate/export/gnu/src/gcc-3.2-redhat-8/gcc/configure
--enable-clocale=gnu --with-system-zlib --enable-shared --enable-threads=posix
--enable-haifa --disable-checking --prefix=/usr/gcc-3.2-redhat-8
--with-local-prefix=/usr/local
Thread model: posix
gcc version 3.2 20021115 (Red Hat Linux 8.0 3.2-13)
I don't know if it is the correct asm code.
H.J.
----x.c--
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} sigset_t;
int
__sigwait (set, sig)
const sigset_t *set;
int *sig;
{
int ret;
long _sc_ret, _sc_err;
register long _sc_16 __asm__("$16");
register long _sc_17 __asm__("$17");
register long _sc_18 __asm__("$18");
register long _sc_19 __asm__("$19");
_sc_16 = (long) ((set));
_sc_17 = (long) (((void *)0));
_sc_18 = (long) (((void *)0));
_sc_19 = (long) (64 / 8);
__asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6" : "=v"(_sc_ret), "=r"(_sc_19), "=r"(_sc_16), "=r"(_sc_17), "=r"(_sc_18) : "0"(355), "2"(_sc_16), "3"(_sc_17), "4"(_sc_18), "1"(_sc_19) : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$22", "$23", "$24", "$25", "$27", "$28", "memory", "$20", "$21");
_sc_err = _sc_19;
ret = _sc_ret;
return ret;
}