[uClibc 0001874]: Problem with i386 syscall gcc-constraints

bugs at busybox.net bugs at busybox.net
Sat Jan 5 05:55:38 UTC 2008


The following issue has been CLOSED 
====================================================================== 
http://busybox.net/bugs/view.php?id=1874 
====================================================================== 
Reported By:                michael_d
Assigned To:                uClibc
====================================================================== 
Project:                    uClibc
Issue ID:                   1874
Category:                   Architecture Specific
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     closed
Resolution:                 fixed
Fixed in Version:           
====================================================================== 
Date Submitted:             01-04-2008 06:39 PST
Last Modified:              01-04-2008 21:55 PST
====================================================================== 
Summary:                    Problem with i386 syscall gcc-constraints
Description: 
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).

I've attached a patch that changes those "C"s into "S"s, permitting
compilation.
====================================================================== 

---------------------------------------------------------------------- 
 vapier - 01-04-08 21:55  
---------------------------------------------------------------------- 
thanks, i've applied the patch to svn trunk 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
01-04-08 06:39  michael_d      New Issue                                    
01-04-08 06:39  michael_d      Status                   new => assigned     
01-04-08 06:39  michael_d      Assigned To               => uClibc          
01-04-08 06:39  michael_d      File Added: uClibc-0.9.29-syscall.diff           
        
01-04-08 21:55  vapier         Note Added: 0003374                          
01-04-08 21:55  vapier         Status                   assigned => closed  
01-04-08 21:55  vapier         Resolution               open => fixed       
======================================================================




More information about the uClibc-cvs mailing list