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 928ab832caa67c0c1a44e3a8e1483b0ed33cda50 (commit)
via f1f98784e65ce9621a570af50998b1940e7fb81d (commit)
via 6173ee4f61b1c7a9c2c670952f9a18345e614c90 (commit)
via e71fc570caec4f2d4bbe729dfe9eb41bfe5a732a (commit)
via 298f58e073b2782bd264edea969769b7b5e7cf41 (commit)
via 7c78a5c52b2db6bb0d6e163b38897a003a289958 (commit)
via 8e04c064c4cb39bae5e5bec166c762d2fc88cb11 (commit)
via 9058b43530b6be9146ea3448e8a5f642c09a1818 (commit)
from 74c69da52ad5029cd2fc2d3d41d581022ed0a7aa (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 928ab832caa67c0c1a44e3a8e1483b0ed33cda50
Merge: 74c69da f1f9878
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Fri Apr 24 19:57:28 2015 -0500
merge uClibc changes
-----------------------------------------------------------------------
Summary of changes:
Rules.mak | 2 ++
extra/Configs/defconfigs/arc/arcv2_defconfig | 6 +++++
extra/Configs/defconfigs/arc/defconfig | 6 +++++
extra/locale/Makefile.in | 4 +--
include/libc-symbols.h | 2 +-
ldso/include/ldsodefs.h | 2 ++
ldso/ldso/arm/dl-startup.h | 12 ++-------
ldso/ldso/arm/resolve.S | 18 +++++---------
ldso/ldso/dl-tls.c | 9 +++++--
ldso/ldso/ldso.c | 3 ++-
libc/misc/pthread/tsd.c | 11 +++++++--
libc/string/arm/_memcpy.S | 18 +++-----------
libc/string/arm/memcmp.S | 12 ++-------
libc/string/arm/memset.S | 13 ++--------
libc/string/arm/strcmp.S | 6 +----
libc/string/arm/strlen.S | 7 +-----
libc/sysdeps/linux/arm/__longjmp.S | 7 +-----
libc/sysdeps/linux/arm/bits/arm_asm.h | 12 ++++-----
libc/sysdeps/linux/arm/bits/arm_bx.h | 12 ++++++---
libc/sysdeps/linux/arm/bits/uClibc_arch_features.h | 26 ++++++++++++++++++++
libc/sysdeps/linux/arm/clone.S | 7 ++----
libc/sysdeps/linux/arm/mmap64.S | 6 +----
libc/sysdeps/linux/arm/syscall-eabi.S | 8 ++----
libc/sysdeps/linux/arm/sysdep.h | 14 +++--------
libc/sysdeps/linux/arm/vfork.S | 12 ++-------
25 files changed, 106 insertions(+), 129 deletions(-)
diff --git a/Rules.mak b/Rules.mak
index d87a4fb..548982b 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -293,6 +293,8 @@ CPU_CFLAGS-y := -funsigned-char -fno-builtin
$(eval $(call check-gcc-var,-fno-asm))
CPU_CFLAGS-y += $(CFLAG_-fno-asm)
+$(eval $(call check-gcc-var,-fmerge-all-constants))
+CPU_CFLAGS-y += $(CFLAG_-fmerge-all-constants)
ifeq ($(UCLIBC_HAS_SOFT_FLOAT),y)
ifneq ($(TARGET_ARCH),bfin)
diff --git a/extra/Configs/defconfigs/arc/arcv2_defconfig
b/extra/Configs/defconfigs/arc/arcv2_defconfig
index 7c4694e..1e204aa 100644
--- a/extra/Configs/defconfigs/arc/arcv2_defconfig
+++ b/extra/Configs/defconfigs/arc/arcv2_defconfig
@@ -10,16 +10,22 @@ LDSO_RUNPATH=y
UCLIBC_HAS_THREADS_NATIVE=y
PTHREADS_DEBUG_SUPPORT=y
UCLIBC_HAS_OBSTACK=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
UCLIBC_SUSV2_LEGACY=y
UCLIBC_SUSV3_LEGACY=y
UCLIBC_SUSV4_LEGACY=y
UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS_LIBUTIL=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
UCLIBC_SV4_DEPRECATED=y
UCLIBC_HAS_RPC=y
UCLIBC_HAS_FULL_RPC=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
UCLIBC_HAS_RESOLVER_SUPPORT=y
UCLIBC_HAS_LIBRESOLV_STUB=y
+UCLIBC_HAS_LIBNSL_STUB=y
UCLIBC_HAS_LOCALE=y
UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
UCLIBC_HAS_NFTW=y
diff --git a/extra/Configs/defconfigs/arc/defconfig
b/extra/Configs/defconfigs/arc/defconfig
index eebb115..994abeb 100644
--- a/extra/Configs/defconfigs/arc/defconfig
+++ b/extra/Configs/defconfigs/arc/defconfig
@@ -9,16 +9,22 @@ LDSO_RUNPATH=y
UCLIBC_HAS_THREADS_NATIVE=y
PTHREADS_DEBUG_SUPPORT=y
UCLIBC_HAS_OBSTACK=y
+UCLIBC_HAS_UTMPX=y
+UCLIBC_HAS_UTMP=y
UCLIBC_SUSV2_LEGACY=y
UCLIBC_SUSV3_LEGACY=y
UCLIBC_SUSV4_LEGACY=y
UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS_LIBUTIL=y
UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y
UCLIBC_SV4_DEPRECATED=y
UCLIBC_HAS_RPC=y
UCLIBC_HAS_FULL_RPC=y
+UCLIBC_USE_NETLINK=y
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
UCLIBC_HAS_RESOLVER_SUPPORT=y
UCLIBC_HAS_LIBRESOLV_STUB=y
+UCLIBC_HAS_LIBNSL_STUB=y
UCLIBC_HAS_LOCALE=y
UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
UCLIBC_HAS_NFTW=y
diff --git a/extra/locale/Makefile.in b/extra/locale/Makefile.in
index 3834c5c..1a2305b 100644
--- a/extra/locale/Makefile.in
+++ b/extra/locale/Makefile.in
@@ -46,7 +46,7 @@ locale_OBJ := $(locale_OUT)/locale_data.o
CFLAGS-locale_data.c := -D__WCHAR_ENABLED -I$(locale_OUT) -I$(locale_DIR)
-#headers-$(UCLIBC_HAS_LOCALE) += $(locale_headers-y)
+headers_dep += $(locale_headers-y)
headers: $(locale_headers-y)
libc-$(UCLIBC_HAS_LOCALE) += $(locale_OBJ)
@@ -68,7 +68,7 @@ $(locale_OUT)%.s: $(locale_OUT)%.S FORCE ; $(compile.s)
$(locale_OUT)%.dep:
-locale_headers: headers $(top_builddir)include/bits/uClibc_locale_data.h
+locale_headers: $(top_builddir)include/bits/uClibc_locale_data.h
# make sure that the host system has locales (this check is ok for uClibc/glibc)
# we do not know though which locales were really enabled for libc at build time
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index a87cde6..97463ac 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -111,7 +111,7 @@
/* Indirect stringification. Doing two levels allows
* the parameter to be a macro itself.
*/
-#define __stringify_1(x) #x
+#define __stringify_1(x...) #x
#define __stringify(x) __stringify_1(x)
#ifdef __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
diff --git a/ldso/include/ldsodefs.h b/ldso/include/ldsodefs.h
index f17ac0c..9ae645c 100644
--- a/ldso/include/ldsodefs.h
+++ b/ldso/include/ldsodefs.h
@@ -111,7 +111,9 @@ EXTERN size_t _dl_tls_static_used;
/* Alignment requirement of the static TLS block. */
EXTERN size_t _dl_tls_static_align;
/* Function pointer for catching TLS errors. */
+#if 1 /* def _LIBC_REENTRANT */
EXTERN void **(*_dl_error_catch_tsd) (void) __attribute__ ((const));
+#endif
/* Number of additional entries in the slotinfo array of each slotinfo
list element. A large number makes it almost certain take we never
diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h
index df2c824..eb2a9a2 100644
--- a/ldso/ldso/arm/dl-startup.h
+++ b/ldso/ldso/arm/dl-startup.h
@@ -47,11 +47,7 @@ __asm__(
" ldr r0, .L_FINI_PROC\n"
" ldr r0, [sl, r0]\n"
" @ jump to the user_s entry point\n"
-#if defined(__USE_BX__)
- " bx r6\n"
-#else
- " mov pc, r6\n"
-#endif
+ " " __stringify(BX(r6)) "\n"
".L_GET_GOT:\n"
" .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4\n"
".L_SKIP_ARGS:\n"
@@ -113,11 +109,7 @@ __asm__(
" ldr r0, .L_FINI_PROC\n"
" ldr r0, [r7, r0]\n"
" @ jump to the user_s entry point\n"
-#if defined(__USE_BX__)
- " bx r6\n"
-#else
- " mov pc, r6\n"
-#endif
+ " " __stringify(BX(r6)) "\n"
"\n\n"
".L_GET_GOT:\n"
" .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4\n"
diff --git a/ldso/ldso/arm/resolve.S b/ldso/ldso/arm/resolve.S
index c1caf9a..7e0058e 100644
--- a/ldso/ldso/arm/resolve.S
+++ b/ldso/ldso/arm/resolve.S
@@ -90,12 +90,10 @@
* dl-startup.c).
*/
-#include <sys/syscall.h>
+#include <features.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
-#include <features.h>
-
#define sl r10
#define fp r11
#define ip r12
@@ -114,8 +112,8 @@ _dl_linux_resolve:
@ function must branch to the real function, and that expects
@ r0-r3 and lr to be as they were before the whole PLT stuff -
@ ip can be trashed.
- @ This routine is called after pushing lr, so we must push an odd
- @ number of words to keep the stack correctly aligned.
+ @ This routine is called after pushing lr, so we must push an odd
+ @ number of words to keep the stack correctly aligned.
stmdb sp!, {r0, r1, r2, r3, r4}
ldr r0, [lr, #-4] @ r0 : = [lr-4] (GOT_TABLE[1])
@@ -124,16 +122,12 @@ _dl_linux_resolve:
@ ~x = -x-1, therefore ~(r1>>2) =
(-((lr-ip)>>2)-1)
@ = - ((lr-ip)/4) - 1 = (ip - lr - 4)/4, as required
- bl _dl_linux_resolver
+ bl _dl_linux_resolver
- mov ip, r0
+ mov ip, r0
ldmia sp!, {r0, r1, r2, r3, r4, lr}
-#if defined(__USE_BX__)
- bx ip
-#else
- mov pc,ip
-#endif
+ BX(ip)
#else
@ In the thumb case _dl_linux_resolver is thumb. If a bl is used
@ from arm code the linker will insert a stub call which, with
diff --git a/ldso/ldso/dl-tls.c b/ldso/ldso/dl-tls.c
index 5d6d3b9..ced20fa 100644
--- a/ldso/ldso/dl-tls.c
+++ b/ldso/ldso/dl-tls.c
@@ -963,8 +963,13 @@ static bool tls_init_tp_called;
void ** __attribute__ ((const))
_dl_initial_error_catch_tsd (void)
{
- static void *data;
- return &data;
+ static
+#if 0 /* def ARCH_NEEDS_BOOTSTRAP_RELOCS */
+ /* If we have to do bootstrap relocs anyway we might as well */
+ __thread
+# endif
+ void *__tsd_data;
+ return &__tsd_data;
}
#ifdef SHARED
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index 7367f17..0cdc91d 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -1208,6 +1208,7 @@ of this helper program; chances are you did not intend to run this
program.\n\
}
#endif
#ifdef __UCLIBC_HAS_SSP__
+ _dl_debug_early("Setting up SSP guards\n");
/* Set up the stack checker's canary. */
stack_chk_guard = _dl_setup_stack_chk_guard ();
# ifdef THREAD_SET_STACK_GUARD
@@ -1280,7 +1281,7 @@ of this helper program; chances are you did not intend to run this
program.\n\
}
- _dl_debug_early ("\nprelink checking: %s\n", prelinked ? "ok" :
"failed");
+ _dl_debug_early ("prelink checking: %s\n", prelinked ? "ok" :
"failed");
if (prelinked) {
if (_dl_loaded_modules->dynamic_info[DT_GNU_CONFLICT_IDX]) {
diff --git a/libc/misc/pthread/tsd.c b/libc/misc/pthread/tsd.c
index 586ead3..3598b89 100644
--- a/libc/misc/pthread/tsd.c
+++ b/libc/misc/pthread/tsd.c
@@ -1,11 +1,18 @@
+/*
+ * Copyright (C) 2006 by Steven J. Hill <sjhill(a)realitydiluted.com>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
/* libpthread sets _dl_error_catch_tsd to point to this function.
We define it here instead of in libpthread so that it doesn't
need to have a TLS segment of its own just for this one pointer. */
+#include <features.h>
+
void **__libc_dl_error_tsd(void) __attribute__ ((const));
void ** __attribute__ ((const))
__libc_dl_error_tsd (void)
{
- static __thread void *data __attribute__ ((tls_model ("initial-exec")));
- return &data;
+ static __thread void *__tsd_data attribute_tls_model_ie;
+ return &__tsd_data;
}
diff --git a/libc/string/arm/_memcpy.S b/libc/string/arm/_memcpy.S
index c59f5b8..2999e8e 100644
--- a/libc/string/arm/_memcpy.S
+++ b/libc/string/arm/_memcpy.S
@@ -111,11 +111,7 @@ _memcpy:
bcc .Lmemcpy_backwards
IT(t, eq) /* Quick abort for src=dst */
-#if defined(__USE_BX__)
- bxeq lr
-#else
- moveq pc, lr
-#endif
+ BXC(eq, lr)
stmdb sp!, {r0, lr} /* memcpy() returns dest addr */
subs r2, r2, #4
blt .Lmemcpy_fl4 /* less than 4 bytes */
@@ -455,11 +451,7 @@ _memcpy:
/* less than 4 bytes to go */
adds r2, r2, #4
IT(t, eq)
-#if defined(__USE_BX__)
- bxeq lr
-#else
- moveq pc, lr /* done */
-#endif
+ BXC(eq, lr) /* done */
/* copy the crud byte at a time */
cmp r2, #2
ldrb r3, [r1, #-1]!
@@ -477,11 +469,7 @@ _memcpy:
ldrgtb r3, [r1, #-1]!
strgtb r3, [r0, #-1]!
#endif
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc, lr
-#endif
+ BX(lr)
/* erg - unaligned destination */
.Lmemcpy_bdestul:
cmp r12, #2
diff --git a/libc/string/arm/memcmp.S b/libc/string/arm/memcmp.S
index 9f78415..5b9473c 100644
--- a/libc/string/arm/memcmp.S
+++ b/libc/string/arm/memcmp.S
@@ -67,11 +67,7 @@ memcmp:
subs r2, r2, #1
IT(tt, mi)
movmi r0, #0
-#if defined(__USE_BX__)
- bxmi lr
-#else
- movmi pc, lr
-#endif
+ BXC(mi, lr)
/* ip == last src address to compare */
add ip, r0, r2
1:
@@ -82,11 +78,7 @@ memcmp:
cmpcs r2, r3
beq 1b
sub r0, r2, r3
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc, lr
-#endif
+ BX(lr)
#endif
.size memcmp,.-memcmp
diff --git a/libc/string/arm/memset.S b/libc/string/arm/memset.S
index 8ddc47e..2be4850 100644
--- a/libc/string/arm/memset.S
+++ b/libc/string/arm/memset.S
@@ -17,7 +17,6 @@
<http://www.gnu.org/licenses/>. */
#include <features.h>
-#include <sys/syscall.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
@@ -109,11 +108,7 @@ memset:
2:
movs a3, a3 @ anything left?
IT(t, eq)
-#if defined(__USE_BX__)
- bxeq lr
-#else
- moveq pc, lr @ nope
-#endif
+ BXC(eq, lr) @ nope
#if defined (__thumb2__)
1:
strb a2, [a4], #1
@@ -131,11 +126,7 @@ memset:
strb a2, [a4], $1
strb a2, [a4], $1
strb a2, [a4], $1
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc, lr
-#endif
+ BX(lr)
#endif
#endif
diff --git a/libc/string/arm/strcmp.S b/libc/string/arm/strcmp.S
index 8b77ab0..81416a9 100644
--- a/libc/string/arm/strcmp.S
+++ b/libc/string/arm/strcmp.S
@@ -63,11 +63,7 @@ strcmp:
cmpcs r2, r3
beq 1b
sub r0, r2, r3
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc, lr
-#endif
+ BX(lr)
#endif
.size strcmp,.-strcmp
diff --git a/libc/string/arm/strlen.S b/libc/string/arm/strlen.S
index 0e7737e..9995d76 100644
--- a/libc/string/arm/strlen.S
+++ b/libc/string/arm/strlen.S
@@ -18,7 +18,6 @@
#include <features.h>
#include <endian.h>
-#include <sys/syscall.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
@@ -99,11 +98,7 @@ Llastword: @ drop through to here once we find a
IT(t, ne)
addne r0, r0, $1 @ must be zero)
#endif
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc,lr
-#endif
+ BX(lr)
#endif
.size strlen,.-strlen
diff --git a/libc/sysdeps/linux/arm/__longjmp.S b/libc/sysdeps/linux/arm/__longjmp.S
index 853b906..58ae8ab 100644
--- a/libc/sysdeps/linux/arm/__longjmp.S
+++ b/libc/sysdeps/linux/arm/__longjmp.S
@@ -98,12 +98,7 @@ __longjmp:
ldcl p1, cr14, [r12], #8
ldcl p1, cr15, [r12], #8
#endif
-
-#if defined(__USE_BX__)
- bx lr
-#else
- mov pc, lr
-#endif
+ BX(lr)
#endif
.size __longjmp,.-__longjmp
diff --git a/libc/sysdeps/linux/arm/bits/arm_asm.h
b/libc/sysdeps/linux/arm/bits/arm_asm.h
index 04664b3..898a78b 100644
--- a/libc/sysdeps/linux/arm/bits/arm_asm.h
+++ b/libc/sysdeps/linux/arm/bits/arm_asm.h
@@ -13,12 +13,12 @@
unified assembly syntax. */
#define IT(t, cond)
/* Code to return from a thumb function stub. */
-#ifdef __ARM_ARCH_4T__
-#define POP_RET pop {r2, pc}
-#else
-#define POP_RET pop {r2, r3}; bx r3
-#endif
-#endif
+# if defined __ARM_ARCH_4T__ && defined __THUMB_INTERWORK__
+# define POP_RET pop {r2, r3}; bx r3
+# else
+# define POP_RET pop {r2, pc}
+# endif
+#endif /* __thumb2__ */
#if defined(__ARM_ARCH_6M__)
/* Force arm mode to flush out errors on M profile cores. */
diff --git a/libc/sysdeps/linux/arm/bits/arm_bx.h b/libc/sysdeps/linux/arm/bits/arm_bx.h
index 321490e..2c29089 100644
--- a/libc/sysdeps/linux/arm/bits/arm_bx.h
+++ b/libc/sysdeps/linux/arm/bits/arm_bx.h
@@ -24,11 +24,17 @@
#endif /* features.h not yet included */
#if defined(__USE_BX__)
-# if ( defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \
- || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \
- )
+# if (__ARM_ARCH <= 4 && !defined __ARM_ARCH_4T__)
# error Use of BX was requested, but is not available on the target processor.
# endif /* ARCH level */
#endif /* __USE_BX__ */
+#if defined(__USE_BX__) && (__ARM_ARCH > 4 || (__ARM_ARCH == 4 &&
defined __ARM_ARCH_4T__))
+# define BX(reg) bx reg
+# define BXC(cond, reg) bx##cond reg
+#else
+# define BX(reg) mov pc, reg
+# define BXC(cond, reg) mov##cond pc, reg
+#endif
+
#endif /* _ARM_BX_H */
diff --git a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
index b01d79c..e85aa52 100644
--- a/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
+++ b/libc/sysdeps/linux/arm/bits/uClibc_arch_features.h
@@ -48,6 +48,32 @@
/* only weird assemblers generally need this */
#undef __UCLIBC_ASM_LINE_SEP__
+
+/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
+#ifndef __ARM_ARCH
+# ifdef __ARM_ARCH_2__
+# define __ARM_ARCH 2
+# elif defined (__ARM_ARCH_3__) || defined (__ARM_ARCH_3M__)
+# define __ARM_ARCH 3
+# elif defined (__ARM_ARCH_4__) || defined (__ARM_ARCH_4T__)
+# define __ARM_ARCH 4
+# elif defined (__ARM_ARCH_5__) || defined (__ARM_ARCH_5E__) \
+ || defined(__ARM_ARCH_5T__) || defined(__ARM_ARCH_5TE__) \
+ || defined(__ARM_ARCH_5TEJ__)
+# define __ARM_ARCH 5
+# elif defined (__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
+ || defined (__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
+ || defined (__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__)
+# define __ARM_ARCH 6
+# elif defined (__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
+ || defined(__ARM_ARCH_7EM__)
+# define __ARM_ARCH 7
+# else
+# error unknown arm architecture
+# endif
+#endif
+
#ifdef __GNUC__
# define __need_uClibc_config_h
# include <bits/uClibc_config.h>
diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
index d1c9239..b4c7d8a 100644
--- a/libc/sysdeps/linux/arm/clone.S
+++ b/libc/sysdeps/linux/arm/clone.S
@@ -128,11 +128,8 @@ __clone:
beq 1f
pop {r4, r7}
blt __error
-#if defined(__USE_BX__)
- bxne lr
-#else
- movne pc, lr
-#endif
+ IT(t, ne)
+ BXC(ne, lr)
cfi_startproc
.fnend
diff --git a/libc/sysdeps/linux/arm/mmap64.S b/libc/sysdeps/linux/arm/mmap64.S
index f4c491a..c9f2bd2 100644
--- a/libc/sysdeps/linux/arm/mmap64.S
+++ b/libc/sysdeps/linux/arm/mmap64.S
@@ -92,11 +92,7 @@ mmap64:
cmn r0, $4096
ldmfd sp!, {r4, r5}
IT(t, cc)
-#if defined(__USE_BX__)
- bxcc lr
-#else
- movcc pc, lr
-#endif
+ BXC(cc, lr)
b __syscall_error
.Linval:
mov r0, $-EINVAL
diff --git a/libc/sysdeps/linux/arm/syscall-eabi.S
b/libc/sysdeps/linux/arm/syscall-eabi.S
index 005cfe3..534c6e9 100644
--- a/libc/sysdeps/linux/arm/syscall-eabi.S
+++ b/libc/sysdeps/linux/arm/syscall-eabi.S
@@ -15,7 +15,7 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#include <sys/syscall.h>
+#include <features.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
@@ -62,11 +62,7 @@ syscall:
ldmfd sp!, {r4, r5, r6, r7}
cmn r0, #4096
IT(t, cc)
-#if defined(__USE_BX__)
- bxcc lr
-#else
- movcc pc, lr
-#endif
+ BXC(cc, lr)
b __syscall_error
#endif
diff --git a/libc/sysdeps/linux/arm/sysdep.h b/libc/sysdeps/linux/arm/sysdep.h
index 2d0a9cc..7f1e9c1 100644
--- a/libc/sysdeps/linux/arm/sysdep.h
+++ b/libc/sysdeps/linux/arm/sysdep.h
@@ -21,7 +21,6 @@
#include <common/sysdep.h>
#include <bits/arm_bx.h>
-
#include <sys/syscall.h>
/* For Linux we can use the system call table in the header file
/usr/include/asm/unistd.h
@@ -50,17 +49,10 @@
#ifdef __APCS_32__
#define LOADREGS(cond, base, reglist...)\
ldm##cond base,reglist
-#ifdef __USE_BX__
-#define RETINSTR(cond, reg) \
- bx##cond reg
-#define DO_RET(_reg) \
- bx _reg
-#else
-#define RETINSTR(cond, reg) \
- mov##cond pc, reg
+#define RETINSTR(cond, reg) \
+ BXC(cond, reg)
#define DO_RET(_reg) \
- mov pc, _reg
-#endif
+ BX(_reg)
#else /* APCS-26 */
#define LOADREGS(cond, base, reglist...) \
ldm##cond base,reglist^
diff --git a/libc/sysdeps/linux/arm/vfork.S b/libc/sysdeps/linux/arm/vfork.S
index 99fb6cb..221a90c 100644
--- a/libc/sysdeps/linux/arm/vfork.S
+++ b/libc/sysdeps/linux/arm/vfork.S
@@ -74,11 +74,7 @@ __vfork:
RESTORE_PID
cmn r0, #4096
IT(t, cc)
-#if defined(__USE_BX__)
- bxcc lr
-#else
- movcc pc, lr
-#endif
+ BXC(cc, lr)
/* Check if vfork even exists. */
ldr r1, =-ENOSYS
@@ -92,11 +88,7 @@ __vfork:
/* Syscall worked. Return to child/parent */
IT(t, cc)
-#if defined(__USE_BX__)
- bxcc lr
-#else
- movcc pc, lr
-#endif
+ BXC(cc, lr)
__error:
b __syscall_error
hooks/post-receive
--
uClibc-ng - small C library for embedded systems