uClibc-ng provides adjtimex() function only, but some programs(like
ntpd) requires it's alias - __adjtimex().
There were two methods to implement it:
1) OpenWRT way - just a simple #define
https://dev.openwrt.org/browser/trunk/toolchain/uClibc/patches-0.9.33.2/120…
2) glibc way - do it via strong alias
Should we implement __adjtimex() in uClibc-ng?
Which way is acceptable for mainstream?
Regards,
Leonid
Hi,
I would like to build uClibc-ng with DODEBUG=y, to analyze a problem
with Kodi on Raspberry PI2. But the compile fails:
/home/wbx/kodi-uclibc/toolchain_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/bin/arm-openadk-linux-uclibceabihf-gcc
-Wl,-EL -shared -Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc
-Wl,-z,relro -Wl,-z,now -Wl,-z,defs
-L/home/wbx/kodi-uclibc/target_raspberry-pi2_uclibc-ng_arm_hard_eabihf/lib
-L/home/wbx/kodi-uclibc/target_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/lib
-Wl,-O1 -Wl,-rpath -Wl,/usr/lib -Wl,-rpath-link
-Wl,/home/wbx/kodi-uclibc/target_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/lib
-Wl,-e,_start -Wl,-z,now -Wl,-Bsymbolic -Wl,--export-dynamic
-Wl,--sort-common -Wl,--discard-locals -Wl,--discard-all
-Wl,--no-undefined -Wl,-soname=ld-uClibc.so.1 -nostdlib
-nostartfiles -o lib/ld-uClibc-1.0.11.so -Wl,--whole-archive
ldso/ldso/ld-uClibc_so.a -Wl,--no-whole-archive
/home/wbx/kodi-uclibc/toolchain_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/lib/gcc/arm-openadk-linux-uclibceabihf/5.3.0/libgcc.a
/home/wbx/kodi-uclibc/toolchain_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/lib/gcc/arm-openadk-linux-uclibceabihf/5.3.0/libgcc.a(unwind-arm.o):
In function `unwind_phase2':
/home/wbx/kodi-uclibc/toolchain_build_raspberry-pi2_uclibc-ng_arm_hard_eabihf/w-gcc-5.3.0-1/gcc-5.3.0/libgcc/unwind-arm-common.inc:289:
undefined reference to `abort'
/home/wbx/kodi-uclibc/toolchain_raspberry-pi2_uclibc-ng_arm_hard_eabihf/usr/lib/gcc/arm-openadk-linux-uclibceabihf/5.3.0/libgcc.a(unwind-arm.o):
In function `unwind_phase2_forced':
/home/wbx/kodi-uclibc/toolchain_build_raspberry-pi2_uclibc-ng_arm_hard_eabihf/w-gcc-5.3.0-1/gcc-5.3.0/libgcc/unwind-arm-common.inc:346:
undefined reference to `memcpy'
collect2: error: ld returned 1 exit status
make[6]: *** [lib/ld-uClibc.so] Error 1
make[5]: ***
[/home/wbx/kodi-uclibc/toolchain_build_raspberry-pi2_uclibc-ng_arm_hard_eabihf/w-uClibc-ng-1.0.11-1/uClibc-ng-1.0.11/.compiled]
Error 2
make[4]: *** [uclibc-ng-compile] Error 2
make[3]: *** [toolchain/final] Error 2
make[2]: *** [world] Error 2
Does anybody have an idea what could be going wrong here?
It is a two-stage toolchain build, so only a gcc with
--disabled-shared is used to compile the C library.
best regards
Waldemar
Hi,
I originally reported this for uClibc but I think it might be
interesting for uclibc-ng as well (or even more since original uClibc
gets more and more stale):
See https://bugs.busybox.net/show_bug.cgi?id=8611
Maybe you also find a better approach as the one I implemented.
- ron
--
Ronald Wahl - ronald.wahl(a)raritan.com - Phone +49 375271349-0 Fax -99
Raritan Deutschland GmbH, Kornmarkt 7, 08056 Zwickau, Germany
USt-IdNr. DE813094160, Steuer-Nr. 227/117/01749
Amtsgericht Chemnitz HRB 23605
Geschäftsführung: Abdulrasul Damji, Ralf Ploenes
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 acffbf7d150101fe96c4fa1256fa73371049d4ff (commit)
from cc22effd6d4b8ecb3a5a5d50cb29ac77d38f74bb (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 acffbf7d150101fe96c4fa1256fa73371049d4ff
Author: Waldemar Brodkorb <wbx(a)openadk.org>
Date: Mon Jan 25 23:53:18 2016 +0100
hppa: unbreak toolchain building
At least allow to build a toolchain for hppa.
Sync some headers with glibc.
-----------------------------------------------------------------------
Summary of changes:
extra/Configs/Config.in | 4 +-
libc/sysdeps/linux/hppa/bits/atomic.h | 7 +-
libc/sysdeps/linux/hppa/bits/mman.h | 122 ++++++++++++--------
libc/sysdeps/linux/hppa/sys/procfs.h | 16 ++-
libc/sysdeps/linux/hppa/sys/user.h | 1 +
.../sysdeps/hppa/pspinlock.c | 0
.../sysdeps/hppa/pt-machine.h | 0
7 files changed, 87 insertions(+), 63 deletions(-)
create mode 100644 libc/sysdeps/linux/hppa/sys/user.h
copy libpthread/{linuxthreads => linuxthreads.old}/sysdeps/hppa/pspinlock.c (100%)
copy libpthread/{linuxthreads => linuxthreads.old}/sysdeps/hppa/pt-machine.h (100%)
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index 25b5126..3afc291 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -70,8 +70,8 @@ config TARGET_cris
config TARGET_h8300
bool "h8300"
-#config TARGET_hppa
-# bool "hppa"
+config TARGET_hppa
+ bool "hppa"
config TARGET_i386
bool "i386"
diff --git a/libc/sysdeps/linux/hppa/bits/atomic.h b/libc/sysdeps/linux/hppa/bits/atomic.h
index 0bf5a6a..9890af2 100644
--- a/libc/sysdeps/linux/hppa/bits/atomic.h
+++ b/libc/sysdeps/linux/hppa/bits/atomic.h
@@ -20,7 +20,7 @@
#include <errno.h>
#include <bits/kernel-features.h>
-#define ABORT_INSTRUCTION __asm__(__UCLIBC_ABORT_INSTRUCTION__)
+#define ABORT_INSTRUCTION __asm__("iitlbp %r0,(%sr0, %r0)")
/* We need EFAULT, ENOSYS */
#if !defined EFAULT && !defined ENOSYS
@@ -58,7 +58,6 @@ typedef uintmax_t uatomic_max_t;
#define LWS_CLOBBER "r1", "r26", "r25", "r24", "r23", "r22", "r21", "r20", "r28", "r31", "memory"
#define ASM_EAGAIN "11"
-#if __ASSUME_LWS_CAS
/* The only basic operation needed is compare and exchange. */
# define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
({ \
@@ -94,10 +93,6 @@ typedef uintmax_t uatomic_max_t;
/* Return 1 if it was already acquired */ \
(ret != oldval); \
})
-#else
-# error __ASSUME_LWS_CAS is required to build uClibc.
-#endif
-/* __ASSUME_LWS_CAS */
#endif
/* _BITS_ATOMIC_H */
diff --git a/libc/sysdeps/linux/hppa/bits/mman.h b/libc/sysdeps/linux/hppa/bits/mman.h
index ca2787f..cbde4b8 100644
--- a/libc/sysdeps/linux/hppa/bits/mman.h
+++ b/libc/sysdeps/linux/hppa/bits/mman.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX memory map interface. Linux/HPPA version.
- Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -13,19 +13,19 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
+ License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_MMAN_H
# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
#endif
-/* these are basically taken from the kernel definitions */
+/* These are taken from the kernel definitions. */
-#define PROT_READ 0x1 /* page can be read */
-#define PROT_WRITE 0x2 /* page can be written */
-#define PROT_EXEC 0x4 /* page can be executed */
-#define PROT_NONE 0x0 /* page can not be accessed */
+#define PROT_READ 0x1 /* Page can be read */
+#define PROT_WRITE 0x2 /* Page can be written */
+#define PROT_EXEC 0x4 /* Page can be executed */
+#define PROT_NONE 0x0 /* Page can not be accessed */
#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
growsdown vma (mprotect only). */
#define PROT_GROWSUP 0x02000000 /* Extend change to start of
@@ -33,61 +33,83 @@
#define MAP_SHARED 0x01 /* Share changes */
#define MAP_PRIVATE 0x02 /* Changes are private */
-#define MAP_TYPE 0x03 /* Mask for type of mapping */
+#ifdef __USE_MISC
+# define MAP_TYPE 0x03 /* Mask for type of mapping */
+#endif
+
+/* Other flags. */
#define MAP_FIXED 0x04 /* Interpret addr exactly */
-#define MAP_ANONYMOUS 0x10 /* don't use a file */
+#ifdef __USE_MISC
+# define MAP_FILE 0x0
+# define MAP_ANONYMOUS 0x10 /* Don't use a file */
+# define MAP_ANON MAP_ANONYMOUS
+# define MAP_VARIABLE 0
+/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size. */
+# define MAP_HUGE_SHIFT 26
+# define MAP_HUGE_MASK 0x3f
+#endif
+
+/* These are Linux-specific. */
+#ifdef __USE_MISC
+# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
+# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable */
+# define MAP_LOCKED 0x2000 /* Pages are locked */
+# define MAP_NORESERVE 0x4000 /* Don't check for reservations */
+# define MAP_GROWSDOWN 0x8000 /* Stack-like segment */
+# define MAP_POPULATE 0x10000 /* Populate (prefault) pagetables */
+# define MAP_NONBLOCK 0x20000 /* Do not block on IO */
+#endif
-#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
-#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
-#define MAP_LOCKED 0x2000 /* pages are locked */
-#define MAP_NORESERVE 0x4000 /* don't check for reservations */
-#define MAP_GROWSDOWN 0x8000 /* stack-like segment */
-#define MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
-#define MAP_NONBLOCK 0x20000 /* do not block on IO */
-#define MAP_UNINITIALIZED 0x4000000 /* For anonymous mmap, memory could
- be uninitialized. */
+/* Flags to "msync" */
+#define MS_SYNC 1 /* Synchronous memory sync */
+#define MS_ASYNC 2 /* Sync memory asynchronously */
+#define MS_INVALIDATE 4 /* Invalidate the caches */
-#define MS_SYNC 1 /* synchronous memory sync */
-#define MS_ASYNC 2 /* sync memory asynchronously */
-#define MS_INVALIDATE 4 /* invalidate the caches */
+/* Flags to "mlockall" */
+#define MCL_CURRENT 1 /* Lock all current mappings */
+#define MCL_FUTURE 2 /* Lock all future mappings */
-#define MCL_CURRENT 1 /* lock all current mappings */
-#define MCL_FUTURE 2 /* lock all future mappings */
+/* Flags for `mremap'. */
+#ifdef __USE_GNU
+# define MREMAP_MAYMOVE 1
+# define MREMAP_FIXED 2
+#endif
-/* Advice to "madvise" */
-#ifdef __USE_BSD
-# define MADV_NORMAL 0 /* no further special treatment */
-# define MADV_RANDOM 1 /* expect random page references */
-# define MADV_SEQUENTIAL 2 /* expect sequential page references */
-# define MADV_WILLNEED 3 /* will need these pages */
-# define MADV_DONTNEED 4 /* dont need these pages */
-# define MADV_SPACEAVAIL 5 /* insure that resources are reserved */
+/* Advice to "madvise" */
+#ifdef __USE_MISC
+# define MADV_NORMAL 0 /* No further special treatment */
+# define MADV_RANDOM 1 /* Expect random page references */
+# define MADV_SEQUENTIAL 2 /* Expect sequential page references */
+# define MADV_WILLNEED 3 /* Will need these pages */
+# define MADV_DONTNEED 4 /* Dont need these pages */
+# define MADV_SPACEAVAIL 5 /* Insure that resources are reserved */
# define MADV_VPS_PURGE 6 /* Purge pages from VM page cache */
# define MADV_VPS_INHERIT 7 /* Inherit parents page size */
# define MADV_REMOVE 9 /* Remove these pages and resources. */
# define MADV_DONTFORK 10 /* Do not inherit across fork. */
# define MADV_DOFORK 11 /* Do inherit across fork. */
+# define MADV_MERGEABLE 65 /* KSM may merge identical pages */
+# define MADV_UNMERGEABLE 66 /* KSM may not merge identical pages */
#endif
/* The range 12-64 is reserved for page size specification. */
-#define MADV_4K_PAGES 12 /* Use 4K pages */
-#define MADV_16K_PAGES 14 /* Use 16K pages */
-#define MADV_64K_PAGES 16 /* Use 64K pages */
-#define MADV_256K_PAGES 18 /* Use 256K pages */
-#define MADV_1M_PAGES 20 /* Use 1 Megabyte pages */
-#define MADV_4M_PAGES 22 /* Use 4 Megabyte pages */
-#define MADV_16M_PAGES 24 /* Use 16 Megabyte pages */
-#define MADV_64M_PAGES 26 /* Use 64 Megabyte pages */
-
-/* compatibility flags */
-#define MAP_ANON MAP_ANONYMOUS
-#define MAP_FILE 0
-#define MAP_VARIABLE 0
-
-/* Flags for `mremap'. */
-#ifdef __USE_GNU
-# define MREMAP_MAYMOVE 1
-# define MREMAP_FIXED 2
+/* These are Linux-specific. */
+#ifdef __USE_MISC
+# define MADV_4K_PAGES 12 /* Use 4K pages. */
+# define MADV_16K_PAGES 14 /* Use 16K pages. */
+# define MADV_64K_PAGES 16 /* Use 64K pages. */
+# define MADV_256K_PAGES 18 /* Use 256K pages. */
+# define MADV_1M_PAGES 20 /* Use 1 Megabyte pages. */
+# define MADV_4M_PAGES 22 /* Use 4 Megabyte pages. */
+# define MADV_16M_PAGES 24 /* Use 16 Megabyte pages. */
+# define MADV_64M_PAGES 26 /* Use 64 Megabyte pages. */
#endif
-
+/* The POSIX people had to invent similar names for the same things. */
+#ifdef __USE_XOPEN2K
+# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
+# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
+# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
+# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
+# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
+#endif
diff --git a/libc/sysdeps/linux/hppa/sys/procfs.h b/libc/sysdeps/linux/hppa/sys/procfs.h
index 24e4c31..8d12dfb 100644
--- a/libc/sysdeps/linux/hppa/sys/procfs.h
+++ b/libc/sysdeps/linux/hppa/sys/procfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -12,7 +12,7 @@
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
+ License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_PROCFS_H
@@ -28,15 +28,21 @@
GDB unless you know what you are doing. */
#include <features.h>
-#include <signal.h>
#include <sys/time.h>
#include <sys/types.h>
-#include <sys/ucontext.h>
#include <sys/user.h>
-#include <asm/elf.h>
__BEGIN_DECLS
+typedef unsigned long elf_greg_t;
+#define ELF_NGREG 80 /* We only need 64 at present, but leave space
+ for expansion. */
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+#define ELF_NFPREG 32
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+
struct elf_siginfo
{
int si_signo; /* Signal number. */
diff --git a/libc/sysdeps/linux/hppa/sys/user.h b/libc/sysdeps/linux/hppa/sys/user.h
new file mode 100644
index 0000000..c871f1a
--- /dev/null
+++ b/libc/sysdeps/linux/hppa/sys/user.h
@@ -0,0 +1 @@
+/* This file is not needed, but in practice gdb might try to include it. */
diff --git a/libpthread/linuxthreads/sysdeps/hppa/pspinlock.c b/libpthread/linuxthreads.old/sysdeps/hppa/pspinlock.c
similarity index 100%
copy from libpthread/linuxthreads/sysdeps/hppa/pspinlock.c
copy to libpthread/linuxthreads.old/sysdeps/hppa/pspinlock.c
diff --git a/libpthread/linuxthreads/sysdeps/hppa/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/hppa/pt-machine.h
similarity index 100%
copy from libpthread/linuxthreads/sysdeps/hppa/pt-machine.h
copy to libpthread/linuxthreads.old/sysdeps/hppa/pt-machine.h
hooks/post-receive
--
uClibc-ng - small C library for embedded systems
On Tue, Dec 29, 2015 at 9:18 PM, Alex Potapenko <opotapenko(a)gmail.com> wrote:
>
> I'm unable to get core dump due to system limitations (it's a router):
> I run `ulimit -c unlimited`, yet core dump is never to be found on the
> system after crash :(
Looks like your kernel config simply disables core dumps, just check
that CONFIG_ELF_CORE parameter is set to yes.
> Using gdb, I got this:
>
> #0 0x4004c05c in _dl_debug_state () from /opt/lib/ld-uClibc.so.1
> No symbol table info available.
> #1 0x40050394 in _dl_get_ready_to_run () from /opt/lib/ld-uClibc.so.1
> No symbol table info available.
> #2 0x40050864 in ?? () from /opt/lib/ld-uClibc.so.1
> No symbol table info available.
> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Just gdb notification, non informative.
> I then installed non-stripped uclibc-ng, libffi and openjdk8
> libraries, and got a more informative output (see gdb.log attached).
>
Yes, it is much better (gdb.log):
...
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x40ac24d0 (LWP 15709)]
0x4010c804 in initLocalIfs () from /opt/lib/openjdk8/arm/libnet.so
(gdb) bt full
#0 0x4010c804 in initLocalIfs () from /opt/lib/openjdk8/arm/libnet.so
No symbol table info available.
#1 0x4010b3f4 in JNI_OnLoad () from /opt/lib/openjdk8/arm/libnet.so
No symbol table info available.
#2 0x40135de0 in Java_java_lang_ClassLoader_00024NativeLibrary_load
() from /opt/lib/jvm/openjdk8/jre/lib/arm/libjava.so
No symbol table info available.
#3 0x401a433c in ffi_call_SYSV () from /opt/lib/libffi.so.6
No symbol table info available.
#4 0x401a5a54 in ffi_call () from /opt/lib/libffi.so.6
No symbol table info available.
#5 0x404c1640 in CppInterpreter::native_entry(Method*, int, Thread*)
() from /opt/lib/jvm/openjdk8/jre/lib/arm/server/libjvm.so
...
but points inside the OpenJDK native code. I'm found initLocalIfs()
function at jdk/src/solaris/native/java/net/net_util_md.c - very
strange for me, since you are running on linux. Probably, it is due
I'm not familiar with OpenJDK internals.
Anyway, are you able to:
1) update OpenJDK to latest jdk8u76-b01 & uClibc-ng to 1.0.10 ?
2) disable use of IPv6 at all, to exclude any chance of read of
"/proc/net/if_inet6" in initLocalIfs() ?
3) compile only libnet.so with -g3 switch to get a much more of debug info ?
P.S. You forgot to select "Reply all" to allow anyone see your mail in
mailing list
Leonid