Re: [Buildroot] Buildroot Compile Errors for SH4

2007-04-11 Thread Paul Mundt
On Tue, Apr 10, 2007 at 11:43:07PM +0200, Carmelo Amoroso wrote:
 Paul Mundt wrote:
 This is the syscall() definition in the __USE_MISC case, and it's
 certainly not limited to SH. There are hardly any users that implement
 syscall() using varargs, so this will break other places as well.
 
 Hi Paul,
 it's very strange, but I'm able to build the snapshot of trunk
 for sh4 without problems (with my last patch to fix procfs.h committed by 
 Mike).
 I'm using cross gcc4.1.1/binutils 2.17.50.0.5 on both MacOSX 10.4 (darvin 
 8.9.1)
 and RH Linux.
 I've checked that __USE_MISC is defined for me.
 
My guess would be that this is something that was introduced with gcc
4.2, I've not hit this with 4.1.1 in the past either..
___
uClibc mailing list
uClibc@uclibc.org
http://busybox.net/cgi-bin/mailman/listinfo/uclibc


Re: [Buildroot] Buildroot Compile Errors for SH4

2007-04-10 Thread Bernhard Fischer
Perhaps somebody on the uClibc list is better suited to help.

On Tue, Apr 10, 2007 at 03:43:32PM -0400, Bill Traynor wrote:
On 4/10/07, Bill Traynor [EMAIL PROTECTED] wrote:
 Hi All,

 Trying to compile Buildroot for SH4 (from April 10th snapshot
 http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2)
 with the following config:

 2.6.20 Kernel Headers
 uClibc - daily snapshot
 binutils 2.17.50.0.14
 GCC 4.2

 Received the following error:

 CC libc/sysdeps/linux/sh/syscall.os
 libc/sysdeps/linux/sh/syscall.c:11: error: conflicting types for 'syscall'
 ./include/unistd.h:1016: error: previous declaration of 'syscall' was here

So the offending code is:

syscall.c
long syscall(long sysnum,
 long arg1, long arg2, long arg3,
 long arg4, long arg5, long arg6)
{
register long __sc3 __asm__ (r3) = sysnum;
register long __sc4 __asm__ (r4) = (long) arg1;
register long __sc5 __asm__ (r5) = (long) arg2;
register long __sc6 __asm__ (r6) = (long) arg3;
register long __sc7 __asm__ (r7) = (long) arg4;
register long __sc0 __asm__ (r0) = (long) arg5;
register long __sc1 __asm__ (r1) = (long) arg6;
__asm__ __volatile__ (
trapa %1
: =z (__sc0) \
: i (__SH_SYSCALL_TRAP_BASE + 6),
  0 (__sc0), r (__sc4), r (__sc5), r (__sc6), r (__sc7), \
  r (__sc3), r (__sc1) \
: memory );
__syscall_return(long,__sc0);
}

and unistd.h:
extern long int syscall (long int __sysno, ...) __THROW;

The question now is how to fix this for SH.
___
uClibc mailing list
uClibc@uclibc.org
http://busybox.net/cgi-bin/mailman/listinfo/uclibc


Re: [Buildroot] Buildroot Compile Errors for SH4

2007-04-10 Thread Paul Mundt
On Tue, Apr 10, 2007 at 09:58:02PM +0200, Bernhard Fischer wrote:
 On Tue, Apr 10, 2007 at 03:43:32PM -0400, Bill Traynor wrote:
 On 4/10/07, Bill Traynor [EMAIL PROTECTED] wrote:
  CC libc/sysdeps/linux/sh/syscall.os
  libc/sysdeps/linux/sh/syscall.c:11: error: conflicting types for 'syscall'
  ./include/unistd.h:1016: error: previous declaration of 'syscall' was here
 
 So the offending code is:
 
 syscall.c
 long syscall(long sysnum,
  long arg1, long arg2, long arg3,
  long arg4, long arg5, long arg6)
 {
 register long __sc3 __asm__ (r3) = sysnum;
 register long __sc4 __asm__ (r4) = (long) arg1;
 register long __sc5 __asm__ (r5) = (long) arg2;
 register long __sc6 __asm__ (r6) = (long) arg3;
 register long __sc7 __asm__ (r7) = (long) arg4;
 register long __sc0 __asm__ (r0) = (long) arg5;
 register long __sc1 __asm__ (r1) = (long) arg6;
 __asm__ __volatile__ (
 trapa %1
 : =z (__sc0) \
 : i (__SH_SYSCALL_TRAP_BASE + 6),
   0 (__sc0), r (__sc4), r (__sc5), r (__sc6), r (__sc7), \
   r (__sc3), r (__sc1) \
 : memory );
 __syscall_return(long,__sc0);
 }
 
 and unistd.h:
 extern long int syscall (long int __sysno, ...) __THROW;
 
 The question now is how to fix this for SH.

This is the syscall() definition in the __USE_MISC case, and it's
certainly not limited to SH. There are hardly any users that implement
syscall() using varargs, so this will break other places as well.

We could convert syscall() to use varargs, though we'd have to take the
length of the arglist to add to __SH_SYSCALL_TRAP_BASE, though as
_syscall6() is the worst case, so perhaps that's fine in the general
case.

I suppose the question is why some are using varargs and others aren't. I
don't mind changing it if there's a consensus. In any event, this will
hit pretty much all of the other architectures, too..
___
uClibc mailing list
uClibc@uclibc.org
http://busybox.net/cgi-bin/mailman/listinfo/uclibc