r1517 - in glibc-package/branches/glibc-2.4/debian: . patches/sparc
Author: schizo
Date: 2006-05-23 04:13:10 +0000 (Tue, 23 May 2006)
New Revision: 1517
Added:
glibc-package/branches/glibc-2.4/debian/patches/sparc/local-linuxthreads.diff
Modified:
glibc-package/branches/glibc-2.4/debian/changelog
Log:
- debian/patches/sparc/local-linuxthreads.diff: fill in missing
preprocessor macros.
Modified: glibc-package/branches/glibc-2.4/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.4/debian/changelog 2006-05-23 01:52:58 UTC (rev 1516)
+++ glibc-package/branches/glibc-2.4/debian/changelog 2006-05-23 04:13:10 UTC (rev 1517)
@@ -27,6 +27,8 @@
- debian/sysdeps/mips.mk: build with linuxthreads instead of NPTL
- debian/sysdeps/i386.mk: disable sanity checks on linuxthreads build
- Build with gcc 4.1 on all architectures.
+ - debian/patches/sparc/local-linuxthreads.diff: fill in missing
+ preprocessor macros.
[ Denis Barbier ]
- Remove complex-collate.diff (merged upstream).
Added: glibc-package/branches/glibc-2.4/debian/patches/sparc/local-linuxthreads.diff
===================================================================
--- glibc-package/branches/glibc-2.4/debian/patches/sparc/local-linuxthreads.diff 2006-05-23 01:52:58 UTC (rev 1516)
+++ glibc-package/branches/glibc-2.4/debian/patches/sparc/local-linuxthreads.diff 2006-05-23 04:13:10 UTC (rev 1517)
@@ -0,0 +1,101 @@
+Index: glibc-2.4/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
+===================================================================
+--- glibc-2.4.orig/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2006-05-22 22:55:28.000000000 -0400
++++ glibc-2.4/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h 2006-05-22 22:55:32.000000000 -0400
+@@ -54,6 +54,96 @@
+ SYSCALL_ERROR_HANDLER \
+ SYSCALL_ERROR_HANDLER2
+
++#ifdef LINKER_HANDLES_R_SPARC_WDISP22
++/* Unfortunately, we cannot do this yet. Linker doesn't seem to
++ * handle R_SPARC_WDISP22 against non-STB_LOCAL symbols properly . */
++# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
++ .section .gnu.linkonce.t.handler,"ax",@progbits; \
++ .globl handler; \
++ .hidden handler; \
++ .type handler,@function; \
++handler:
++#else
++# define SYSCALL_ERROR_HANDLER_ENTRY(handler) \
++ .subsection 3; \
++handler:
++#endif
++
++#if RTLD_PRIVATE_ERRNO
++# define SYSCALL_ERROR_HANDLER \
++ .section .gnu.linkonce.t.__sparc_get_pic_l7,"ax",@progbits; \
++ .globl __sparc_get_pic_l7; \
++ .hidden __sparc_get_pic_l7; \
++ .type __sparc_get_pic_l7,@function; \
++__sparc_get_pic_l7: \
++ retl; \
++ add %o7, %l7, %l7; \
++ .previous; \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ save %sp,-96,%sp; \
++ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
++ call __sparc_get_pic_l7; \
++ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \
++ ld [%l7 + rtld_errno], %l0; \
++ st %i0, [%l0]; \
++ jmpl %i7+8, %g0; \
++ restore %g0, -1, %o0; \
++ .previous;
++#elif USE___THREAD
++# ifndef NOT_IN_libc
++# define SYSCALL_ERROR_ERRNO __libc_errno
++# else
++# define SYSCALL_ERROR_ERRNO errno
++# endif
++# ifdef SHARED
++# define SYSCALL_ERROR_HANDLER \
++ .section .gnu.linkonce.t.__sparc_get_pic_l7,"ax",@progbits; \
++ .globl __sparc_get_pic_l7; \
++ .hidden __sparc_get_pic_l7; \
++ .type __sparc_get_pic_l7,@function; \
++__sparc_get_pic_l7: \
++ retl; \
++ add %o7, %l7, %l7; \
++ .previous; \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ save %sp,-96,%sp; \
++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %l1; \
++ sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; \
++ call __sparc_get_pic_l7; \
++ add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; \
++ add %l1, %tie_lo10(SYSCALL_ERROR_ERRNO), %l1; \
++ ld [%l7 + %l1], %l1, %tie_ld(SYSCALL_ERROR_ERRNO); \
++ st %i0, [%g7 + %l1], %tie_add(SYSCALL_ERROR_ERRNO); \
++ jmpl %i7+8, %g0; \
++ restore %g0, -1, %o0; \
++ .previous;
++# else
++# define SYSCALL_ERROR_HANDLER \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \
++ sethi %hi(_GLOBAL_OFFSET_TABLE_), %g2; \
++ add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \
++ add %g2, %lo(_GLOBAL_OFFSET_TABLE_), %g2; \
++ ld [%g2 + %g1], %g1, %tie_ld(SYSCALL_ERROR_ERRNO); \
++ st %o0, [%g7 + %g1], %tie_add(SYSCALL_ERROR_ERRNO); \
++ jmpl %o7+8, %g0; \
++ mov -1, %o0; \
++ .previous;
++# endif
++#else
++# define SYSCALL_ERROR_HANDLER \
++SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
++ .global __errno_location; \
++ .type __errno_location,@function; \
++ save %sp, -96, %sp; \
++ call __errno_location; \
++ nop; \
++ st %i0, [%o0]; \
++ jmpl %i7+8, %g0; \
++ restore %g0, -1, %o0; \
++ .previous;
++#endif
++
+ #define SYSCALL_ERROR_HANDLER2 \
+ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2) \
+ .global __errno_location; \
Reply to: