summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-08-28test: NPTL: sync WRITE_BUFFER_SIZE with glibc testWaldemar Brodkorb
Test on Linux 3.16.1 in Qemu ARM fails with: TEST_EXEC nptl/ tst-cancel4 ret == 1 ; expected_ret == 0 make[1]: *** [tst-cancel4.exe] Error 1 The output of failed test is: minimum write buffer size too large ../Test.mak:89: recipe for target 'tst-cancel4.exe' failed Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-28sparc: add missing pthread_spin_lock/pthread_spin_trylockWaldemar Brodkorb
tst-spin1.c compile breaks with: test/nptl/tst-spin1.c:34: undefined reference to `pthread_spin_lock' pthread_spin_lock and pthread_spin_trylock is missing while building sparc. add the meta c files here. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-28sparc: remove unused subdirs variableWaldemar Brodkorb
For sparc TARGET_SUBARCH is never used. And there is a typo in the path. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-28Revert "sparc: disable cancellable system, as it fails in strange ways right ↵Waldemar Brodkorb
now" This reverts commit 1db4f8f8389f6a935ecd83aff7fcce5d1cf2c0f3. It is unclear in which way this is breaking sparc systems. With this change added you get following linking error: libpthread/nptl/libpthread_so.a(pt-system.oS): In function `__libc_system': libc/stdlib/system.c:64: undefined reference to `__wait4_nocancel' Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-28Revert "sparc: use HIDDEN_JUMPTARGET for errno"Waldemar Brodkorb
This reverts commit f51fb26dbcceee9e48d10facc830bd4a549f6cc2. This fixes linking error for sparc build. While building a sparc system you get following linking error: libc/sysdeps/linux/sparc/pipe.S:54: undefined reference to `__GI___errno_location' Removing the HIDDEN_JUMPTARGET fixes the issue, while using gcc 4.8.3/binutils 2.24. The definition of __errno_location was changed recently here: http://git.uclibc.org/uClibc/commit/?id=8f550715c2b211036fc273add3cb5219397ed312 Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-26timex: Sync with glibcKhem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-26Define IPTOS_CLASS_* macros according to RFC 2474Khem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-26buildsys: remove duplicate UCLIBC_EXTRA_CFLAGSBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-25microblaze: Remove duplicate F_{S,G}ETPIPE_SZBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-25fcntl.h: Define F_SETPIPE_SZ and F_GETPIPE_SZKhem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-25mathinline.h: Use __extern_inlineBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-25Add clock_adjtime syscallKhem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-20fix for pipe() on sparcWaldemar Brodkorb
When using something like this: $ echo foo|grep foo|wc -l with mksh shell, you get an runtime error. Glibc and klibc does not do these extra check. After removing this check using double pipes work fine. Tested with Qemu 2.1.0. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Thorsten Glaser <tg@mirbsd.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18libc: add issetugid()Anthony G. Basile
issetugid() returns 1 if the process environment or memory address space is considered tainted, and returns 0 otherwise. This happens, for example, when a process's privileges are elevated by the setuid or setgid flags on an executable belonging to root. This function first appeard in OpenBSD 2.0 and is needed for the LibreSSL. This patch follows the same logic as the equivalent musl commit. For more information see the commit message at http://git.musl-libc.org/cgit/musl/commit/?id=ddddec106fd17c3aca3287005d21e92f742aa9d4 Signed-off-by: Anthony G. Basile <blueness@gentoo.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18test/math: fix for MIPS that takes 32/64 suffix into accountAlexey Brodkin
This fixes a breakage for MIPS32/64 introduced in: http://git.uclibc.org/uClibc/commit/?id=c02bc5763ba9c8f8b464bca89fba28e091ce1ffc Now ULP_SUFFIX is taken into account when searching for existing libm-test-ulps-ARCH Signed-off-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com> Cc: Waldemar Brodkorb <wbx@openadk.org> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18test/math: fix for disabled long double mathAlexey Brodkin
Commit "test: cater for config" http://git.uclibc.org/uClibc/commit/test/math/Makefile.in?id=7598eeaa1defa2884adaa890bb115c493d69cc35 inverted check from ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),y) to ifeq ($(UCLIBC_HAS_LONG_DOUBLE_MATH),) with first branch indeed inverted - instead of adding tests they were excluded. But "else" branch was not moved up (remember check was inverted). This causes compile breakage when building basic-test.c: --->--- TEST_LINK math/ basic-test basic-test.c: In function 'ldouble_test': basic-test.c:111:1: warning: implicit declaration of function 'nanl' [-Wimplicit-function-declaration] TEST_FUNC (ldouble_test, long double, nanl, LDBL_EPSILON, HUGE_VALL) ^ basic-test.o: In function `main': basic-test.c:(.text.startup+0x834): undefined reference to `nanl' basic-test.c:(.text.startup+0x858): undefined reference to `nanl' basic-test.c:(.text.startup+0x880): undefined reference to `nanl' basic-test.c:(.text.startup+0x8a8): undefined reference to `nanl' basic-test.c:(.text.startup+0x8d4): undefined reference to `nanl' basic-test.o:basic-test.c:(.text.startup+0x8e0): more undefined references to `nanl' follow collect2: error: ld returned 1 exit status make[3]: *** [basic-test] Error 1 --->--- Fix is simple - merge "old else" branch with the first current one. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Cc: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18ARC: Enable OBSTACK in defconfig for ARCAnton Kolesov
OBSTACK is required for native builds of binutils and GDB. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18uclibc: nptl: fix __lll_lock_wait_private multiple definitionTony Wu
Mark non-pthread __lll_lock_wait_private weak to avoid multiple definition error in static link mode. Signed-off-by: Tony Wu <tung7970@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18lseek: Correct order of offset argumentsAnton Kolesov
There was a runtime error in systems without large file support. Call fseek(fd, 4096, SEEK_SET) has been failing with EINVAL, though it was succeeding for offset = 4092. This has been happening because llseek system call accepts 64-bit value as an offset argument and lseek function has been ordering 32-bits words that form this offset value, according to the endianness. However this ordering to match endianness is not required, because llseek doesn't accept one 64-bit offset argument, it accepts two 32-bit offset argument, then stitches them into one following its endianness. As a result on little endian system, order of words has been swapped two time: in libc and in kernel. Thus call to fseek with offset 4096 (0x1000) was doing a system call to llseek with offset 0x1000_0000_0000. I'm not entirely sure why then offset = 4092 hasn't been failing then. This patch removes malicious swap of words when calling llseek. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18libc: posix_fadvise: Fix build breakage for !LFSVineet Gupta
commit 00571b43df2e "libc: posix_fadvise: restore implementation for xtensa" enabled posix_fadvise() for all arches (it was just not generated before). However this also unearthed an issue introduced by ee84b8b400 "linux: posix_fadvise: use new SYSCALL_ALIGN_64BIT" which is to referencing LFS'ish code (off64_t) w/o proper checks which causes build to break for !LFS. Fix this by calling posix_fadvise64() only for LFS case and open-code it's equivalent for !LFS. Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Baruch Siach <baruch@tkos.co.il> Cc: Khem Raj <raj.khem@gmail.com> Cc: markos Chandras <markos.chandras@gmail.com> Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18unbreak networking code for sparcWaldemar Brodkorb
This commit 1e2e4ac6193ffe0900bd392fa3c596883771eb34 breaks networking on sparc systems. In Linux the socket functions are declared, but not implemented and must be routed through socketcall(). Tested via Qemu 2.0.0. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18test_nptl: replace __sigpause with sigpauseAlexey Brodkin
On attempt to build uClibc tests following error message appears: ========= TEST_LINK nptl/ tst-cancel4 tst-cancel4.c: In function 'tf_sigpause': tst-cancel4.c:765:3: warning: implicit declaration of function '__sigpause' [-Wimplicit-function-declaration] __sigpause (SIGCANCEL, 1); ^ tst-cancel4.o: In function `tf_sigpause': tst-cancel4.c:(.text+0x1054): undefined reference to `__sigpause' collect2: error: ld returned 1 exit status ========= This commit http://git.uclibc.org/uClibc/commit/?id=cef1f9517c319d86b4b426ecc14a10d0fa5494c7 makes __sigpause static limiting its scope to "libc/signal/sigpause.c". Switching to common implementation "sigpause()" fixes this issue. Signed-off-by: Alexey Brodkin <Alexey.Brodkin@synopsys.com> Suggested-by: Vineet Gupta <vgupta@synopsys.com> Cc: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18ARC/NPTL: clone to set TP if CLONE_SETTLSVineet Gupta
Typically kernel would set the TP register of newly created thread in clone syscall with CLONE_SETTLS. However this implies that: * kernel knows of the exact TP register (which is already different for ARCompact and ARCv2) and is a detail which becomes part of the ABI * kernel also needs to handle the unlikely but possible case of !TLS userspace (e.g. Android libc) case where TP reg is not reserved and thus need not be mucked with (using ELF personality based detection) It is better to confine this detail to userspace runtime and set TP reg right after clone syscall returns. Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18ARC/NPTL: Add testsVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18ARC/NPTL: Fix __libc_sigaction redefinition with static linksVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18NPTL: ARC supportVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-18ARC: ldso: Use @pcl syntax.Joern Rennecke
Signed-off-by: Joern Rennecke <joern.rennecke@embecosm.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-08-01bits/time.h: sync with latest glibcMike Frysinger
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2014-07-24test/math: add fallback to libm-test-ulps-generic logicJian Peng
Under test/math/, there is libm-test-ulps-generic used as fallback in case that libm-test-ulps-$(TARGET_ARCH) does not exist. This is required for arches that don't have ULPS yet. Original patch from Jian Peng was found here: http://lists.uclibc.org/pipermail/uclibc/2011-April/045172.html Signed-off-by: Jian Peng <jipeng2005@gmail.com> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-24Changelog: complete old data and cycleBernhard Reutner-Fischer
We switched to detailed per-release Changelog some time ago, available on the website. Move the old Changelog for historical reasons. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22ARC: Implement native GDB requirements in procfs.hAnton Kolesov
Native GDB requires elf_fpregset_t to be defined, even if floating point registers are absent. In this case we use empty structure. Additionally we redefined prfpregset_t to use this new type. And there has been an error: it was defined that user_regs_struct has 20 registers, while it has 40. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22ARC: clone: Ensure that @fn returns back to cloneVineet Gupta
This showed up due to longstanding test/unistd/clone failure where post clone, the callback was not exiting and rather falling thru in into main program. Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22ARC: ldso: Dont force frame pointer as it useless for unwinding on ARCVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22ARC: make sigaction inline with other archesVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22ARC: syscalls.h: code-reuse/fix-arg-annotationsVineet Gupta
- Use syscalls-common.h vers of INTERNAL_SYSCALL / INLINE_SYSCALL_NOERR - INLINE_SYSCALL takes syscall name (e.g. write) - {INLINE,INTERNAL}_SYSCALL_NCS macros take syscall num (__NR_write) Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-07-22syscalls-common.h: Rename some macro args for correct documentationVineet Gupta
Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Cc: Mike Frysinger <vapier@gentoo.org> Cc: Denys Vlasenko <vda.linux@googlemail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-24open64: ensure that openat check worksVineet Gupta
For ARC builds atleast, __NR_xxx was not trickling into in open64.c causing open64->openat a needless detour via open Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-12fix pthread_cancel lead to segmentation fault for x86_64.Zhang Pu
When x86_64 cpu contains 'cpu_has_xsave' flag(in kernel),call the pthread_cancel will have a segmentation fault. Because gcc could not find the end of stack in user signal stack. Signed-off-by: Zhang Pu <glen4linux@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-12arm: move check for BX to its own headerYann E. MORIN
As Will noticed, the header this check is currently done in is asm-only, and is not meant to be included from C code. This breaks compilation when compiled for a Thumb2-aware CPU. Move the BX check to its own header, and revert 7a246fd. Reported-by: Will Newton <will.newton@gmail.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Will Newton <will.newton@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-12NPTL: Fix undefined reference to PRIVATE_FUTEX with 2.6.18 kernelDan Moulding
When compiling against the 2.6.18 kernel headers, during linking of the NPTL library it runs into a "undefined reference to PRIVATE_FUTEX" error in pthread_cond_timedwait.S. This resolves the problem by ensuring that the definition for PRIVATE_FUTEX is made available to pthread_cond_timedwait.S. Signed-off-by: Dan Moulding <dan.moulding@rackwareinc.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-12arm/clone.S: Add missing IT instruction for Thumb2.Will Newton
The conditional load needs to be made part of an IT block on Thumb2 cores. Signed-off-by: Will Newton <will.newton@linaro.org> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-06-12buildsys: Do not install atomic.hBernhard Reutner-Fischer
Gregory Fong noted that we'd better not install atomic.h Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23resolv: try next server on SERVFAILMichel Stam
Commit e1420eca7374cd8f583e9d774c890645a205aaee fixed a bug where a response code should mean the next server is tried. However, it tries only the next search domain, and never skips to the next server. This fix makes sure we try the next server on SERVFAIL. Signed-off-by: Michel Stam <michel@reverze.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23test/math: Adjust arm tests for older ULPs formatGregory Fong
The ULPs format in glibc has changed slightly and now deviates from that in uClibc, so when using the files directly from glibc, for certain types of tests the ULPs values were incorrectly defaulting to 0 rather than using the values provided. This caused some tests to fail despite the max ULPs being correctly marked. Regenerated and updated part of the ULPs file to fix this issue. This also added values for exp and log. Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23ldso: Add remaining relocation types to the tableGregory Fong
The table format is thrown off a bit because some of these names are too long to fit the previous format so they were put on their own lines. Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23ldso/mips: Remove redundant LD_DEBUG printsGregory Fong
These should have been protected by if (_dl_debug_reloc && _dl_debug_detail) , but since the previous change "ldso/mips: actually print results of each relocation" makes this redundant, just eliminate these prints instead. I think this is the only item that is still printing regardless of the value of LD_DEBUG when uClibc is built with SUPPORT_LD_DEBUG=y. Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23ldso/mips: actually print results of each relocationGregory Fong
The patched line was outside of the body of the loop over relocations and so would only print the results of the last relocation, fix that. Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23ldso: Fix misplaced declarationBernhard Reutner-Fischer
Apparently i made a typo when applying 278a06d7abcc8774ba9bb9c15779749c7e2d68cd sorry.. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23weak symbols need to be "defined" weak but "declared" strongVineet Gupta
Patch "LT.old: Make __errno_location/__h_errno_location thread safe" uncovered yet another bug with static linking and errno (hopefully this is last of them all). Currently, __errno_location is declared weak but is defined strong. While this provides with the desired weak semantics in dso, it is subtly broken in static links. Quoting Joern Rennecke (ARC gcc expert): | I think the issue is that you declare the function as weak in the | header file. That is a rare instance where you want the reference | use declaration that differs a bit from the definition. | If the reference uses a weakly declared function, that creates a | weakref, i.e. the linker won't bother to look for this symbol at | all - if it gets linked in for some other reason, fine, | otherwise, it stays zero. So the solution to declare strong, define weak. Supporting data ----------------- orig code: ARM mmap wrapper (LT.old build + my prev patch for errno) _mmap: @ args = 8, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 stmfd sp!, {r4, r5, r7, lr} ldr r5, [sp, #20] movs ip, r5, asl #20 beq .L2 bl __errno_location(PLT) mov r3, #22 str r3, [r0, #0] mvn r0, #0 ... ... .weak __errno_location A statically linked hello world program which uses mmap too. As we can see__errno_location is completely gone - which is semantically wrong - we need functional errno. 00008274 <__GI_mmap>: 8274: e92d40b0 push {r4, r5, r7, lr} 8278: e59d5014 ldr r5, [sp, #20] 827c: e1b0ca05 lsls ip, r5, #20 8280: 0a000004 beq 8298 8284: e320f000 nop {0} ^^^^^^^^^^ 8288: e3a03016 mov r3, #22 828c: e5803000 str r3, [r0] 8290: e3e00000 mvn r0, #0 This in turn is due to a fixup in ARM ld which transforms branch-to-null into a nop. It is better than crashing but still wrong since errno handling is removed. With the patch, errno_location is restored back in test program. 00008274 <__GI_mmap>: 8274: e92d40b0 push {r4, r5, r7, lr} 8278: e59d5014 ldr r5, [sp, #20] 827c: e1b0ca05 lsls ip, r5, #20 8280: 0a000004 beq 8298 <__GI_mmap+0x24> 8284: eb000010 bl 82cc <__errno_location> 8288: e3a03016 mov r3, #22 828c: e5803000 str r3, [r0] Cc: Christian Ruppert <christian.ruppert@abilis.com> CC: Francois Bedard <Francois.Bedard@synopsys.com> Cc: Anton Kolesov <Anton.Kolesov@synopsys.com> Cc: Joern Rennecke <joern.rennecke@embecosm.com> Cc: Jeremy Bennett <jeremy.bennett@embecosm.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Khem Raj <raj.khem@gmail.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2014-04-23LT.old: Make __errno_location/__h_errno_location thread safeVineet Gupta
WHY: errno in uClibc is not thread safe HOW: __errno_location and it's sibling __h_errno_location need to be called via PLT - even from within libc. That way when linked with pthread, intra-uClibc callers will also use the thread safe version. This is achieved by removing the GI alias for these functions, ensuring that they get called normally (via PLT) Verified with ARC LT.old and ARM cubieboard2 buildroot (LT.old) NPTL is unaffected by this bug. ------------ History behind this patch --------------------- This is a long standing bug (https://bugs.busybox.net/show_bug.cgi?id=2089) Others have tried to fix it in past (alteast Peter Korsgaard's patch in 2010), but somehow failed to be merged (or were backed out afterwards). http://lists.uclibc.org/pipermail/uclibc/2010-July/044176.html One of the causes could be side effect of atleast one more bug related to pthreads and static link which has now been fixed. http://lists.uclibc.org/pipermail/uclibc/2013-October/047958.html I have solved this w/o looking at other pacthes but would like to give credit to Peter and others for confirming that it makes sense. Cc: Christian Ruppert <christian.ruppert@abilis.com> CC: Francois Bedard <Francois.Bedard@synopsys.com> Cc: Joern Rennecke <joern.rennecke@embecosm.com> Cc: Jeremy Bennett <jeremy.bennett@embecosm.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Khem Raj <raj.khem@gmail.com> Cc: buildroot@busybox.net Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>