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, master has been updated
via 322fdd37d307a12c913be78cebcc348a77731dd3 (commit)
from c725f1deaef5bbfb22c83fbfc221a86255a3072b (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 -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
extra/Configs/Config.arm | 8 +++
extra/Configs/Config.in | 1 -
libc/sysdeps/linux/arm/clone.S | 14 ++---
.../linuxthreads.old/sysdeps/arm/pt-machine.h | 56 +++++++++++++++++---
4 files changed, 65 insertions(+), 14 deletions(-)
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
index a16c919..00cf982 100644
--- a/extra/Configs/Config.arm
+++ b/extra/Configs/Config.arm
@@ -28,6 +28,7 @@ config CONFIG_ARM_EABI
config COMPILE_IN_THUMB_MODE
bool "Build using Thumb mode"
select USE_BX
+ select USE_LDREXSTREX
help
Say 'y' here to force building uClibc in thumb mode.
Say 'n' to use your compiler's default mode.
@@ -38,3 +39,10 @@ config USE_BX
Say 'y' to use BX to return from functions on your thumb-aware
processor. Say 'y' if you need to use interworking. Say 'n' if not.
It is safe to say 'y' even if you're not doing interworking.
+
+config USE_LDREXSTREX
+ bool "Use load-store exclusive ASM ops (not supported in SmartFusion)"
+ depends on COMPILE_IN_THUMB_MODE
+ default n
+ help
+ Say 'y' to use LDREX/STREX ASM ops.
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index c7a3b2d..31944be 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -524,7 +524,6 @@ config LINUXTHREADS_OLD
# linuxthreads and linuxthreads.old need nanosleep()
select UCLIBC_HAS_REALTIME
depends on !TARGET_arc && \
- !TARGET_arm && \
!TARGET_i386 && \
!TARGET_metag && \
!TARGET_mips && \
diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
index 29045ef..d1c9239 100644
--- a/libc/sysdeps/linux/arm/clone.S
+++ b/libc/sysdeps/linux/arm/clone.S
@@ -26,7 +26,10 @@
#include <sys/syscall.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
+
+#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
#include <sysdep-cancel.h>
+#endif
#define CLONE_VM 0x00000100
#define CLONE_THREAD 0x00010000
@@ -57,23 +60,22 @@ __clone:
@ get flags
mov r0, r2
@ new sp is already in r1
- @ load remaining arguments off the stack
- stmfd sp!, {r4}
- ldr r2, [sp, #4]
- ldr r3, [sp, #8]
- ldr r4, [sp, #12]
DO_CALL (clone)
movs a1, a1
blt __error
- ldmnefd sp!, {r4}
beq 1f
bx lr
1:
@ pick the function arg and call address off the stack and execute
ldr r0, [sp, #4]
+#if defined(__USE_BX__)
ldr r1, [sp]
bl 2f @ blx r1
+#else
+ mov lr, pc
+ ldr pc, [sp]
+#endif
@ and we are done, passing the return value through r0
bl HIDDEN_JUMPTARGET(_exit)
diff --git a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
index 438c12a..2b877f9 100644
--- a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
+++ b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
@@ -21,12 +21,50 @@
#ifndef _PT_MACHINE_H
#define _PT_MACHINE_H 1
-#include <features.h>
+#include <sys/syscall.h>
+#include <unistd.h>
#ifndef PT_EI
# define PT_EI __extern_always_inline
#endif
+#if defined(__thumb__)
+#if defined(__USE_LDREXSTREX__)
+PT_EI long int ldrex(int *spinlock)
+{
+ long int ret;
+ __asm__ __volatile__(
+ "ldrex %0, [%1]\n"
+ : "=r"(ret)
+ : "r"(spinlock) : "memory");
+ return ret;
+}
+
+PT_EI long int strex(int val, int *spinlock)
+{
+ long int ret;
+ __asm__ __volatile__(
+ "strex %0, %1, [%2]\n"
+ : "=r"(ret)
+ : "r" (val), "r"(spinlock) : "memory");
+ return ret;
+}
+
+/* Spinlock implementation; required. */
+PT_EI long int
+testandset (int *spinlock)
+{
+ register unsigned int ret;
+
+ do {
+ ret = ldrex(spinlock);
+ } while (strex(1, spinlock));
+
+ return ret;
+}
+
+#else /* __USE_LDREXSTREX__ */
+
/* This will not work on ARM1 or ARM2 because SWP is lacking on those
machines. Unfortunately we have no way to detect this at compile
time; let's hope nobody tries to use one. */
@@ -36,8 +74,6 @@ PT_EI long int testandset (int *spinlock);
PT_EI long int testandset (int *spinlock)
{
register unsigned int ret;
-
-#if defined(__thumb__)
void *pc;
__asm__ __volatile__(
".align 0\n"
@@ -50,15 +86,21 @@ PT_EI long int testandset (int *spinlock)
"\t.force_thumb"
: "=r"(ret), "=r"(pc)
: "0"(1), "r"(spinlock));
-#else
+ return ret;
+}
+#endif
+#else /* __thumb__ */
+
+PT_EI long int testandset (int *spinlock);
+PT_EI long int testandset (int *spinlock)
+{
+ register unsigned int ret;
__asm__ __volatile__("swp %0, %1, [%2]"
: "=r"(ret)
: "0"(1), "r"(spinlock));
-#endif
-
return ret;
}
-
+#endif
/* Get some notion of the current stack. Need not be exactly the top
of the stack, just something somewhere in the current frame. */
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
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 322fdd37d307a12c913be78cebcc348a77731dd3 (commit)
via c725f1deaef5bbfb22c83fbfc221a86255a3072b (commit)
via ee1800ca1a614fabbeb20ebb6b8c90cc3eaf243b (commit)
from cfdddb3c53213ab6af35364b683de2bf8e8ab05a (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 -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
extra/Configs/Config.arm | 8 +++
extra/Configs/Config.in | 1 -
libc/sysdeps/linux/arm/clone.S | 14 ++---
.../linuxthreads.old/sysdeps/arm/pt-machine.h | 56 +++++++++++++++++---
4 files changed, 65 insertions(+), 14 deletions(-)
diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm
index a16c919..00cf982 100644
--- a/extra/Configs/Config.arm
+++ b/extra/Configs/Config.arm
@@ -28,6 +28,7 @@ config CONFIG_ARM_EABI
config COMPILE_IN_THUMB_MODE
bool "Build using Thumb mode"
select USE_BX
+ select USE_LDREXSTREX
help
Say 'y' here to force building uClibc in thumb mode.
Say 'n' to use your compiler's default mode.
@@ -38,3 +39,10 @@ config USE_BX
Say 'y' to use BX to return from functions on your thumb-aware
processor. Say 'y' if you need to use interworking. Say 'n' if not.
It is safe to say 'y' even if you're not doing interworking.
+
+config USE_LDREXSTREX
+ bool "Use load-store exclusive ASM ops (not supported in SmartFusion)"
+ depends on COMPILE_IN_THUMB_MODE
+ default n
+ help
+ Say 'y' to use LDREX/STREX ASM ops.
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index c7a3b2d..31944be 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -524,7 +524,6 @@ config LINUXTHREADS_OLD
# linuxthreads and linuxthreads.old need nanosleep()
select UCLIBC_HAS_REALTIME
depends on !TARGET_arc && \
- !TARGET_arm && \
!TARGET_i386 && \
!TARGET_metag && \
!TARGET_mips && \
diff --git a/libc/sysdeps/linux/arm/clone.S b/libc/sysdeps/linux/arm/clone.S
index 29045ef..d1c9239 100644
--- a/libc/sysdeps/linux/arm/clone.S
+++ b/libc/sysdeps/linux/arm/clone.S
@@ -26,7 +26,10 @@
#include <sys/syscall.h>
#include <bits/arm_asm.h>
#include <bits/arm_bx.h>
+
+#if defined __UCLIBC_HAS_THREADS__ && !defined __LINUXTHREADS_OLD__
#include <sysdep-cancel.h>
+#endif
#define CLONE_VM 0x00000100
#define CLONE_THREAD 0x00010000
@@ -57,23 +60,22 @@ __clone:
@ get flags
mov r0, r2
@ new sp is already in r1
- @ load remaining arguments off the stack
- stmfd sp!, {r4}
- ldr r2, [sp, #4]
- ldr r3, [sp, #8]
- ldr r4, [sp, #12]
DO_CALL (clone)
movs a1, a1
blt __error
- ldmnefd sp!, {r4}
beq 1f
bx lr
1:
@ pick the function arg and call address off the stack and execute
ldr r0, [sp, #4]
+#if defined(__USE_BX__)
ldr r1, [sp]
bl 2f @ blx r1
+#else
+ mov lr, pc
+ ldr pc, [sp]
+#endif
@ and we are done, passing the return value through r0
bl HIDDEN_JUMPTARGET(_exit)
diff --git a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
index 438c12a..2b877f9 100644
--- a/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
+++ b/libpthread/linuxthreads.old/sysdeps/arm/pt-machine.h
@@ -21,12 +21,50 @@
#ifndef _PT_MACHINE_H
#define _PT_MACHINE_H 1
-#include <features.h>
+#include <sys/syscall.h>
+#include <unistd.h>
#ifndef PT_EI
# define PT_EI __extern_always_inline
#endif
+#if defined(__thumb__)
+#if defined(__USE_LDREXSTREX__)
+PT_EI long int ldrex(int *spinlock)
+{
+ long int ret;
+ __asm__ __volatile__(
+ "ldrex %0, [%1]\n"
+ : "=r"(ret)
+ : "r"(spinlock) : "memory");
+ return ret;
+}
+
+PT_EI long int strex(int val, int *spinlock)
+{
+ long int ret;
+ __asm__ __volatile__(
+ "strex %0, %1, [%2]\n"
+ : "=r"(ret)
+ : "r" (val), "r"(spinlock) : "memory");
+ return ret;
+}
+
+/* Spinlock implementation; required. */
+PT_EI long int
+testandset (int *spinlock)
+{
+ register unsigned int ret;
+
+ do {
+ ret = ldrex(spinlock);
+ } while (strex(1, spinlock));
+
+ return ret;
+}
+
+#else /* __USE_LDREXSTREX__ */
+
/* This will not work on ARM1 or ARM2 because SWP is lacking on those
machines. Unfortunately we have no way to detect this at compile
time; let's hope nobody tries to use one. */
@@ -36,8 +74,6 @@ PT_EI long int testandset (int *spinlock);
PT_EI long int testandset (int *spinlock)
{
register unsigned int ret;
-
-#if defined(__thumb__)
void *pc;
__asm__ __volatile__(
".align 0\n"
@@ -50,15 +86,21 @@ PT_EI long int testandset (int *spinlock)
"\t.force_thumb"
: "=r"(ret), "=r"(pc)
: "0"(1), "r"(spinlock));
-#else
+ return ret;
+}
+#endif
+#else /* __thumb__ */
+
+PT_EI long int testandset (int *spinlock);
+PT_EI long int testandset (int *spinlock)
+{
+ register unsigned int ret;
__asm__ __volatile__("swp %0, %1, [%2]"
: "=r"(ret)
: "0"(1), "r"(spinlock));
-#endif
-
return ret;
}
-
+#endif
/* Get some notion of the current stack. Need not be exactly the top
of the stack, just something somewhere in the current frame. */
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
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, master has been updated
via ee1800ca1a614fabbeb20ebb6b8c90cc3eaf243b (commit)
from 9728de1929812df84749c9fb044f6f584e044199 (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 ee1800ca1a614fabbeb20ebb6b8c90cc3eaf243b
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Sun Feb 8 22:01:23 2015 -0600
mark for development
-----------------------------------------------------------------------
Summary of changes:
Rules.mak | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Rules.mak b/Rules.mak
index 9ea92aa..8889d19 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -127,7 +127,7 @@ export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
MAJOR_VERSION := 1
MINOR_VERSION := 0
SUBLEVEL := 0
-EXTRAVERSION :=
+EXTRAVERSION := -git
VERSION := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
ABI_VERSION := $(MAJOR_VERSION)
ifneq ($(EXTRAVERSION),)
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
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 9728de1929812df84749c9fb044f6f584e044199 (commit)
from ff6ce3999db93a52d1cd22510f8508b660ddf54e (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 -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
extra/Configs/Config.in | 9 +++++++++
ldso/ldso/dl-elf.c | 12 ++++++++++++
2 files changed, 21 insertions(+)
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index cec06e4..c7a3b2d 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -420,6 +420,15 @@ config LDSO_RUNPATH
Usage of RUNPATH tags is not too common, so disabling this feature
should be safe for most people.
+config LDSO_RUNPATH_OF_EXECUTABLE
+ bool "Use executables RPATH/RUNPATH when searching for libraries."
+ depends on LDSO_RUNPATH
+ default n
+ help
+ Use the executables RPATH/RUNPATH to find to find libraries even
+ though this behavour is not standard. Setting this option causes
+ the uclibc dynamic linker behavour to match the glibc dynamic linker.
+
config LDSO_SAFE_RUNPATH
bool "Allow only RUNPATH beginning with /"
depends on LDSO_RUNPATH
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 6fc95b3..d42b912 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -266,6 +266,18 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp
if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt, NULL)) != NULL)
return tpnt1;
}
+#ifdef __LDSO_RUNPATH_OF_EXECUTABLE__
+ /*
+ * Try the DT_RPATH of the executable itself.
+ */
+ pnt = (char *) _dl_loaded_modules->dynamic_info[DT_RPATH];
+ if (pnt) {
+ pnt += (unsigned long) _dl_loaded_modules->dynamic_info[DT_STRTAB];
+ _dl_if_debug_dprint("\tsearching exe's RPATH='%s'\n", pnt);
+ if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt)) != NULL)
+ return tpnt1;
+ }
+#endif
#endif
/*
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
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, master has been updated
via 9728de1929812df84749c9fb044f6f584e044199 (commit)
via ff6ce3999db93a52d1cd22510f8508b660ddf54e (commit)
from 5d775f82cb4269a6967196e4c5fa63c2af71b769 (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 9728de1929812df84749c9fb044f6f584e044199
Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org>
Date: Sun Feb 8 15:06:11 2015 +0100
Use executables RPATH/RUNPATH when searching for libraries.
Patch by Steve Ellcey <sellcey(a)imgtec.com> on uClibc mailinglist.
-----------------------------------------------------------------------
Summary of changes:
extra/Configs/Config.in | 9 +++++++++
include/gnu-versions.h | 2 ++
ldso/ldso/dl-elf.c | 12 ++++++++++++
3 files changed, 23 insertions(+)
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index cec06e4..c7a3b2d 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -420,6 +420,15 @@ config LDSO_RUNPATH
Usage of RUNPATH tags is not too common, so disabling this feature
should be safe for most people.
+config LDSO_RUNPATH_OF_EXECUTABLE
+ bool "Use executables RPATH/RUNPATH when searching for libraries."
+ depends on LDSO_RUNPATH
+ default n
+ help
+ Use the executables RPATH/RUNPATH to find to find libraries even
+ though this behavour is not standard. Setting this option causes
+ the uclibc dynamic linker behavour to match the glibc dynamic linker.
+
config LDSO_SAFE_RUNPATH
bool "Allow only RUNPATH beginning with /"
depends on LDSO_RUNPATH
diff --git a/include/gnu-versions.h b/include/gnu-versions.h
index f67764c..9f53778 100644
--- a/include/gnu-versions.h
+++ b/include/gnu-versions.h
@@ -45,7 +45,9 @@
#define _GNU_OBSTACK_INTERFACE_VERSION 1 /* vs malloc/obstack.c */
#define _GNU_REGEX_INTERFACE_VERSION 1 /* vs posix/regex.c */
+#ifdef __UCLIBC_HAS_GNU_GLOB__
#define _GNU_GLOB_INTERFACE_VERSION 1 /* vs posix/glob.c */
+#endif
#define _GNU_GETOPT_INTERFACE_VERSION 2 /* vs posix/getopt.c and
posix/getopt1.c */
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 6fc95b3..d42b912 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -266,6 +266,18 @@ struct elf_resolve *_dl_load_shared_library(unsigned rflags, struct dyn_elf **rp
if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt, NULL)) != NULL)
return tpnt1;
}
+#ifdef __LDSO_RUNPATH_OF_EXECUTABLE__
+ /*
+ * Try the DT_RPATH of the executable itself.
+ */
+ pnt = (char *) _dl_loaded_modules->dynamic_info[DT_RPATH];
+ if (pnt) {
+ pnt += (unsigned long) _dl_loaded_modules->dynamic_info[DT_STRTAB];
+ _dl_if_debug_dprint("\tsearching exe's RPATH='%s'\n", pnt);
+ if ((tpnt1 = search_for_named_library(libname, rflags, pnt, rpnt)) != NULL)
+ return tpnt1;
+ }
+#endif
#endif
/*
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
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 created
at ff6ce3999db93a52d1cd22510f8508b660ddf54e (commit)
- Log -----------------------------------------------------------------
commit ff6ce3999db93a52d1cd22510f8508b660ddf54e
Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org>
Date: Sat Feb 7 09:54:24 2015 +0100
only advertise when choosen
As discussed on the uClibc mailinglist, do not advertise
when not activated.
See this thread:
http://lists.uclibc.org/pipermail/uclibc/2015-February/048766.html
-----------------------------------------------------------------------
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
Hi Embedded Hackers,
on Sunday I decided to prepare for 1.0.0 release.
I have tagged 1.0.0 and prepared tarballs on
http://downloads.uclibc-ng.org/releases/
I updated OpenADK and Embedded-Test to use 1.0.0.
Now I starting to get uClibc-ng included in buildroot and OpenWrt
projects.
If you find any bugs or have any suggestions, don't hesitate to mail
me.
The releases get funky belgian beer names as code names.
best regards
Waldemar
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 tag, v1.0.0 has been created
at 5d775f82cb4269a6967196e4c5fa63c2af71b769 (commit)
- Log -----------------------------------------------------------------
commit 5d775f82cb4269a6967196e4c5fa63c2af71b769
Author: Waldemar Brodkorb <wbx(a)uclibc-ng.org>
Date: Mon Feb 2 07:06:34 2015 +0100
mark 1.0.0 release
-----------------------------------------------------------------------
hooks/post-receive
--
uClibc-ng - small C library for embedded systems