This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "uClibc-ng - small C library for embedded systems".
The branch, 1.0 has been updated
via c13f823941b103cf744929e5afcb3e2bc1342354 (commit)
via 7966d8aca0af0048b3d82bc9af210c293a4c9aac (commit)
via f5fa14e19c3dcd5f9648a8caaba63bc430f536da (commit)
via cdfebe7629971fc671a10c9b419f33f9ff928cbd (commit)
via fb1802d9b238ecb7066ab0867d8c4c3c3acefaea (commit)
from d8e6976a83cdd0ecac260de3afcb1973db8dffb0 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit c13f823941b103cf744929e5afcb3e2bc1342354
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Wed Jul 29 21:06:54 2015 +0200
sh: fix static linking issue
commit 7966d8aca0af0048b3d82bc9af210c293a4c9aac
Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org>
Date: Sat Jul 25 19:42:41 2015 +0200
simplify, as the other does not work correctly, suggested by tg
commit f5fa14e19c3dcd5f9648a8caaba63bc430f536da
Author: mirabilos <tg(a)mirbsd.org>
Date: Sat Jul 25 18:51:26 2015 +0200
fix inline asm changing the stack pointer leading to segfaults problem
commit cdfebe7629971fc671a10c9b419f33f9ff928cbd
Author: mirabilos <tg(a)mirbsd.org>
Date: Sat Jul 25 00:37:44 2015 +0200
fix MIPS N32 ABI Big Endian setjmp/longjmp
access to the jmp_buf structure occasionally happens asymmetrically:
fields defined in pointer size width (64 on N32) can be accessed as
32-bit words, but in that case, a̲l̲l̲ involved code must agree on that…
commit fb1802d9b238ecb7066ab0867d8c4c3c3acefaea
Author: mirabilos <tg(a)mirbsd.org>
Date: Fri Jul 24 22:18:07 2015 +0200
integrate old m68k vfork bugfix of pre-µClibc-ng tree
-----------------------------------------------------------------------
Summary of changes:
ldso/include/dl-syscall.h | 2 +-
libc/sysdeps/linux/i386/brk.c | 20 ++++++++++++--------
libc/sysdeps/linux/m68k/vfork.S | 19 +++++++++++--------
libc/sysdeps/linux/mips/__longjmp.c | 6 +++---
libpthread/nptl/forward.c | 2 +-
.../nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S | 6 ++++++
6 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/ldso/include/dl-syscall.h b/ldso/include/dl-syscall.h
index 46ba07e..5528ba6 100644
--- a/ldso/include/dl-syscall.h
+++ b/ldso/include/dl-syscall.h
@@ -51,7 +51,7 @@ extern int _dl_errno;
static __always_inline attribute_noreturn __cold void _dl_exit(int status)
{
INLINE_SYSCALL(_dl_exit, 1, status);
-#if defined __GNUC__ && (!__GNUC_PREREQ (4, 4) && !__GNUC_PREREQ (4, 2))
+#if __GNUC_PREREQ(4, 5)
__builtin_unreachable(); /* shut up warning: 'noreturn' function does return*/
#else
while (1);
diff --git a/libc/sysdeps/linux/i386/brk.c b/libc/sysdeps/linux/i386/brk.c
index c2c9327..a513886 100644
--- a/libc/sysdeps/linux/i386/brk.c
+++ b/libc/sysdeps/linux/i386/brk.c
@@ -1,6 +1,7 @@
/* brk system call for Linux/i386.
Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
+ Copyright (c) 2015 mirabilos <tg(a)mirbsd.org>
+ This file is part of uclibc-ng, derived from the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@@ -27,15 +28,18 @@ int brk(void *addr)
{
void *newbrk;
- /* %ebx is used in PIC code, need to save/restore it manually.
- * gcc won't do it for us if we will request it in constraints
+ /*
+ * EBC is used in PIC code, we need to save/restore it manually.
+ * Unfortunately, GCC won't do that for us even if we use con-
+ * straints, and we cannot push it either as ESP clobbers are
+ * silently ignored, but EDX is preserved, so it's scratch space.
*/
- __asm__("pushl %%ebx\n"
- "movl %2, %%ebx\n"
- "int $0x80\n"
- "popl %%ebx\n"
+ __asm__("xchgl %%edx,%%ebx"
+ "\n int $0x80"
+ "\n xchgl %%edx,%%ebx"
: "=a" (newbrk)
- : "0" (__NR_brk), "g" (addr)
+ : "0" (__NR_brk), "d" (addr)
+ : "cc"
);
__curbrk = newbrk;
diff --git a/libc/sysdeps/linux/m68k/vfork.S b/libc/sysdeps/linux/m68k/vfork.S
index b2fe033..bde9d5a 100644
--- a/libc/sysdeps/linux/m68k/vfork.S
+++ b/libc/sysdeps/linux/m68k/vfork.S
@@ -22,20 +22,23 @@ __vfork:
movl %sp@+, %a1 /* save the return address for later */
movl IMM __NR_vfork,%d0
trap #0
- movl IMM -4097, %d1
- cmpl %d0, %d1
- bcs fix_errno
- jmp %a1@ /* don't return, just jmp directly */
-fix_errno:
- negl %d0
+ movl %a1, -(%sp)
+
+ cmpil #-4096,%d0
+ blss 1f
+
+ neg.l %d0
#ifndef __PIC__ /* needs handling as the other archs */
movl errno, %a0
#else
movl errno@GOT(%a5), %a0
#endif
movl %d0, %a0@
- movl IMM -1, %d0
- jmp %a1@ /* don't return, just jmp directly */
+ move.l #-1, %d0
+
+1:
+ move.l %d0, %a0
+ rts
.size __vfork,.-__vfork
weak_alias(__vfork,vfork)
diff --git a/libc/sysdeps/linux/mips/__longjmp.c b/libc/sysdeps/linux/mips/__longjmp.c
index 5b59971..aa94f76 100644
--- a/libc/sysdeps/linux/mips/__longjmp.c
+++ b/libc/sysdeps/linux/mips/__longjmp.c
@@ -101,13 +101,13 @@ void __longjmp (__jmp_buf env, int val_arg)
/* Restore the stack pointer and the FP. They have to be restored
last and in a single asm as gcc, depending on options used, may
use either of them to access env. */
-#if _MIPS_SIM == _MIPS_SIM_ABI64
+#if _MIPS_SIM != _MIPS_SIM_ABI32
__asm__ __volatile__ ("ld $29, %0\n\t"
"ld $30, %1\n\t" : : "m" (env[0].__sp), "m"
(env[0].__fp));
-#else /* O32 || N32 */
+#else /* O32 */
__asm__ __volatile__ ("lw $29, %0\n\t"
"lw $30, %1\n\t" : : "m" (env[0].__sp), "m"
(env[0].__fp));
-#endif /* O32 || N32 */
+#endif /* O32 */
/* Give setjmp 1 if given a 0, or what they gave us if non-zero. */
if (val == 0)
diff --git a/libpthread/nptl/forward.c b/libpthread/nptl/forward.c
index 48d38d9..076d437 100644
--- a/libpthread/nptl/forward.c
+++ b/libpthread/nptl/forward.c
@@ -160,7 +160,7 @@ FORWARD2(__pthread_unwind,
/* We cannot call abort() here. */
INTERNAL_SYSCALL_DECL (err);
INTERNAL_SYSCALL (kill, err, 1, SIGKILL);
-#if defined __GNUC__ && (!__GNUC_PREREQ (4, 4) && !__GNUC_PREREQ (4, 2))
+#if __GNUC_PREREQ(4, 5)
__builtin_unreachable();
#else
while(1);
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
index bac9dd4..9af4ea4 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S
@@ -138,6 +138,9 @@
.globl __lll_lock_wait_private
.type __lll_lock_wait_private,@function
.hidden __lll_lock_wait_private
+#ifndef IS_IN_libpthread
+ .weak __lll_lock_wait_private
+#endif
.align 5
cfi_startproc
__lll_lock_wait_private:
@@ -409,6 +412,9 @@ __lll_timedlock_wait:
.globl __lll_unlock_wake_private
.type __lll_unlock_wake_private,@function
.hidden __lll_unlock_wake_private
+#ifndef IS_IN_libpthread
+ .weak __lll_unlock_wake_private
+#endif
.align 5
cfi_startproc
__lll_unlock_wake_private:
hooks/post-receive
--
uClibc-ng - small C library for embedded systems