Browse Source

fix a problem in the sparc64 removal patch

Waldemar Brodkorb 10 years ago
parent
commit
eee4fbb1c5

+ 17 - 8
toolchain/uclibc/patches/0.9.34-git/0004-sparc-remove-sparc64-sparcv9-code.patch

@@ -1,7 +1,7 @@
-From b0baf143cc3f8f081254e6073b47eeb837ca4470 Mon Sep 17 00:00:00 2001
+From b523318f205c88a1f9871b8acbda999150242e36 Mon Sep 17 00:00:00 2001
 From: Waldemar Brodkorb <wbx@openadk.org>
 Date: Sun, 31 Aug 2014 10:48:39 +0200
-Subject: [PATCH 4/4] sparc: remove sparc64/sparcv9 code
+Subject: [PATCH 4/5] sparc: remove sparc64/sparcv9 code
 
 The sparc64/sparcv9 code is incomplete. Furthermore there is
 no real embedded hardware for sparc64 available, so better remove
@@ -23,7 +23,7 @@ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
  libc/sysdeps/linux/sparc/bits/setjmp.h             |  31 -
  libc/sysdeps/linux/sparc/bits/sigcontext.h         |  35 -
  libc/sysdeps/linux/sparc/crt1.S                    |  11 -
- libc/sysdeps/linux/sparc/jmpbuf-unwind.h           |  18 -
+ libc/sysdeps/linux/sparc/jmpbuf-unwind.h           |  25 +-
  libc/sysdeps/linux/sparc/qp_ops.c                  |   8 -
  libc/sysdeps/linux/sparc/sparcv9/clone.S           | 101 ---
  libc/sysdeps/linux/sparc/sparcv9/rem.S             |  20 -
@@ -96,7 +96,7 @@ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
  .../sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S  |  48 --
  .../sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h  | 114 ++-
  .../nptl/sysdeps/unix/sysv/linux/sparc/vfork.S     |  53 +-
- 87 files changed, 1341 insertions(+), 6536 deletions(-)
+ 87 files changed, 1350 insertions(+), 6534 deletions(-)
  delete mode 100644 libc/string/sparc/sparc64/memchr.S
  delete mode 100644 libc/string/sparc/sparc64/memcpy.S
  delete mode 100644 libc/string/sparc/sparc64/memset.S
@@ -4260,10 +4260,10 @@ index 25b5ee5..77e9147 100644
  .size _start,.-_start
  
 diff --git a/libc/sysdeps/linux/sparc/jmpbuf-unwind.h b/libc/sysdeps/linux/sparc/jmpbuf-unwind.h
-index 40303f0..eabfad8 100644
+index 40303f0..90efb77 100644
 --- a/libc/sysdeps/linux/sparc/jmpbuf-unwind.h
 +++ b/libc/sysdeps/linux/sparc/jmpbuf-unwind.h
-@@ -6,26 +6,8 @@
+@@ -6,26 +6,19 @@
  #include <setjmp.h>
  #include <jmpbuf-offsets.h>
  
@@ -4283,13 +4283,22 @@ index 40303f0..eabfad8 100644
  
 -#endif
 -
--#ifdef __UCLIBC_HAS_THREADS_NATIVE__
+ #ifdef __UCLIBC_HAS_THREADS_NATIVE__
 -#if defined(__arch64__)
 -#include "sparc64/jmpbuf-unwind.h"
 -#else
 -#include "sparc32/jmpbuf-unwind.h"
 -#endif
--#endif
++#include <setjmp.h>
++#include <stdint.h>
++#include <unwind.h>
++
++#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
++  _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
++
++#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
++  ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[JB_SP] - (_adj))
+ #endif
 diff --git a/libc/sysdeps/linux/sparc/qp_ops.c b/libc/sysdeps/linux/sparc/qp_ops.c
 index 123be53..97f98da 100644
 --- a/libc/sysdeps/linux/sparc/qp_ops.c