svn commit: trunk/uClibc: ldso/include ldso/ldso/sparc libc/string etc...

vapier at uclibc.org vapier at uclibc.org
Sat Sep 15 07:50:59 UTC 2007


Author: vapier
Date: 2007-09-15 00:50:58 -0700 (Sat, 15 Sep 2007)
New Revision: 19840

Log:
Blue Swirl writes:
I got the library to compile with the attached patches, though dynamic
loader crashes early.

In buildroot I changed the architecture name by hand from sparc to
sparc64, otherwise the compiler produced 32-bit files with V9 (64-bit)
instructions. This configuration is not supported by QEMU, so I aimed
for pure 64-bit. I think Sparc64 option needs to be added to
buildroot.

The _Qp_ ops seem to be required by the ABI. This and setjmp patches
are just hacks to get the compilation further. The _Qp_ ops can be
found in glibc, would it be OK to use those?

V9 assembler requires declarations for global register use.

The mem* functions in sparc32 directory did not work. They are
actually used only by the hybrid 32-bit + V9 CPU configuration.


Modified:
   trunk/uClibc/ldso/include/dl-syscall.h
   trunk/uClibc/ldso/ldso/sparc/dl-startup.h
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memchr.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memcpy.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memset.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/stpcpy.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcat.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strchr.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcmp.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcpy.S
   trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strlen.S
   trunk/uClibc/libc/sysdeps/linux/sparc/Makefile.arch
   trunk/uClibc/libc/sysdeps/linux/sparc/__longjmp.S
   trunk/uClibc/libc/sysdeps/linux/sparc/_math_inc.h
   trunk/uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h


Changeset:
Modified: trunk/uClibc/ldso/include/dl-syscall.h
===================================================================
--- trunk/uClibc/ldso/include/dl-syscall.h	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/ldso/include/dl-syscall.h	2007-09-15 07:50:58 UTC (rev 19840)
@@ -16,7 +16,11 @@
 /* Pull in whatever this particular arch's kernel thinks the kernel version of
  * struct stat should look like.  It turns out that each arch has a different
  * opinion on the subject, and different kernel revs use different names... */
+#if defined(__sparc_v9__) && (__WORDSIZE == 64)
+#define kernel_stat64 stat
+#else
 #define kernel_stat stat
+#endif
 #include <bits/kernel_stat.h>
 #include <bits/kernel_types.h>
 

Modified: trunk/uClibc/ldso/ldso/sparc/dl-startup.h
===================================================================
--- trunk/uClibc/ldso/ldso/sparc/dl-startup.h	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/ldso/ldso/sparc/dl-startup.h	2007-09-15 07:50:58 UTC (rev 19840)
@@ -9,6 +9,7 @@
 	.global _start\n\
 	.type   _start,%function\n\
 	.align 32\n\
+	.register %g2, #scratch\n\
 _start:\n\
 	/* Allocate space for functions to drop their arguments. */\n\
 	sub	%sp, 6*4, %sp\n\

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memchr.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memchr.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memchr.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include "sparc64/memchr.S"
+#include "../../sparc64/memchr.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memcpy.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memcpy.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include "sparc64/sparcv9b/memcpy.S"
+#include "../../sparc64/sparcv9b/memcpy.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memset.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memset.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/memset.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/memset.S>
+#include "../../sparc64/memset.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/stpcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/stpcpy.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/stpcpy.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/stpcpy.S>
+#include "../../sparc64/stpcpy.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcat.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcat.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcat.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/strcat.S>
+#include "../../sparc64/strcat.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strchr.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strchr.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strchr.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/strchr.S>
+#include "../../sparc64/strchr.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcmp.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcmp.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcmp.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/strcmp.S>
+#include "../../sparc64/strcmp.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcpy.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcpy.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strcpy.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/strcpy.S>
+#include "../../sparc64/strcpy.S"

Modified: trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strlen.S
===================================================================
--- trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strlen.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/string/sparc/sparc32/sparcv9b/strlen.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -1,4 +1,4 @@
 #define ASI_PNF     0x82
 #define ASI_BLK_P   0xf0
 #define XCC icc
-#include <sparc64/strlen.S>
+#include "../../sparc64/strlen.S"

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/Makefile.arch
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/Makefile.arch	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/Makefile.arch	2007-09-15 07:50:58 UTC (rev 19840)
@@ -5,7 +5,7 @@
 # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
 #
 
-CSRC := brk.c __syscall_error.c
+CSRC := brk.c __syscall_error.c qp_ops.c
 
 SSRC := \
 	__longjmp.S fork.S vfork.S clone.S setjmp.S bsd-setjmp.S bsd-_setjmp.S \

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/__longjmp.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/__longjmp.S	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/__longjmp.S	2007-09-15 07:50:58 UTC (rev 19840)
@@ -30,7 +30,8 @@
 .type   __longjmp,%function
 .align 4
 __longjmp:
-
+	.register %g2, #scratch
+	.register %g3, #scratch
 	/* Store our arguments in global registers so we can still
 	 * use them while unwinding frames and their register windows.  */
 

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/_math_inc.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/_math_inc.h	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/_math_inc.h	2007-09-15 07:50:58 UTC (rev 19840)
@@ -7,7 +7,9 @@
 #include <bits/wordsize.h>
 
 #define __ASSEMBLY__
+#ifndef __sparc_v9__
 #include <asm/traps.h>
+#endif
 
 /* Is alignment really needed? */
 

Modified: trunk/uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h	2007-09-15 07:42:01 UTC (rev 19839)
+++ trunk/uClibc/libc/sysdeps/linux/sparc/bits/setjmp.h	2007-09-15 07:50:58 UTC (rev 19840)
@@ -25,7 +25,7 @@
 
 #include <bits/wordsize.h>
 
-#if __WORDSIZE == 64
+#if 0 /*__WORDSIZE == 64*/
 
 #ifndef _ASM
 typedef struct __sparc64_jmp_buf




More information about the uClibc-cvs mailing list