summaryrefslogtreecommitdiff
path: root/libpthread
AgeCommit message (Collapse)Author
2011-03-05Allow ABIs where SP points below the stack frame.Bernd Schmidt
On C6X, the stack pointer points to a word that is not part of the current function's stack frame. It may be overwritten by callees. Take this into account when creating the stack for a cloned thread. Signed-off-by: Bernd Schmidt <bernds@codesourcery.com>
2011-03-05Add Makefile support for DSBT ELF.Bernd Schmidt bernds_cb1@t-online.de
This adds support for a new binary format, DSBT ELF, to the Makefiles. Every shared library is assigned a DSBT index, and the link.so macro is adjusted to ensure the correct linker argument is passed. Configuration and ldso support will follow in separate commits. Signed-off-by: Bernd Schmidt <bernds@codesourcery.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-03-04nptl: fix use of IS_IN_LIBPTHREAD macroCarmelo Amoroso
IS_IN_LIBPTHREAD should be IS_IN_libpthread instead. Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-03-03remove ucontext.h and guard sigstack structure with SUSV4_LEGACY and ↵Peter S. Mazinger
STRICT_HEADERS Remove ucontext.h if SUSV4_LEGACY is not set and fix it's references. Guard sigstack structure with SUSV4_LEGACY and STRICT_HEADERS. Disable sigstack function prototype, it is not provided by uClibc. Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-03-03add missing prototypesPeter S. Mazinger
Add some missing prototypes Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-03-03use common sigthread.hPeter S. Mazinger
NPTL build did not use the correct bits/sigthread.h, use a common version avoiding this. Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-03-03add missing prototypesPeter S. Mazinger
Add some missing prototypes Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-03-03syntax fixesPeter S. Mazinger
Avoid compile warnings about the use of undefined constants Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-03-03avoid warnings on _STACK_GROWS_* usagePeter S. Mazinger
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
2011-02-25nptl:arm: add a wrapper for .cfi_sections pseudo-opsCarmelo Amoroso
ARM disables by default the support for ASM CFI directives. Anyway using an old version of binutils that does not support some new pseudo-op, the build fails as below: AS libpthread/nptl/sysdeps/unix/sysv/linux/close.oS libpthread/nptl/sysdeps/unix/sysv/linux/close.S: Assembler messages: libpthread/nptl/sysdeps/unix/sysv/linux/close.S:9: Error: unknown pseudo-op: `.cfi_sections' The problem is that the .cfi_sections pseudo should be wrapped by a macro that expands to nothing when the CFI is off. Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com> CC: Khem Ray <ray.khem@gmail.com>
2011-02-24linuxthreads.old: fix nommu initial thread stack detectionMike Frysinger
Because the nommu address space is flat, and the application stack can literally be located anywhere, we cannot rely on the assumptions that the mmu port gets away with. Namely, that the first thread's stack lives at the top of memory and nothing will be created above it. Currently, the code rounds the current stack up a page and sets that as the "top" of the stack, and then marks the "bottom" of the stack as "1". Then as new threads are created, this assumption is further refined by slowly backing off the "bottom" when a new stack is created within the range of the initial stack. Simple ascii example (tid0 is the initial thread): 1 thread: [bos tid0 stack tos] 2 threads: [ tid0 stack ] [tid1 stack] 3 threads: [ tid0 stack ] [tid1 stack] [tid2 stack] As you can kind of see, this algorithm operates on one basic assumption: the initial top of stack calculation is the absolute top of the stack. While this assumption was fairly safe in the original nommu days of yore where the only file format was FLAT (which defaults to a 4KiB stack -- exactly 1 page), and memory was fairly tight, we can see that this falls apart pretty quickly as soon as the initial stack is larger than a page. The issue that crops up now is simple to hit: start an application with an 8KiB stack, execute some functions that put pressure on the stack so that it exceeds 4KiB, then start up some threads. The initial tos will be rounded up by a page, but this is actually the middle of the stack. Now when the initial thread returns from its functions (thus unwinding the stack) and tries to call something which calls back into libpthread, the thread_self() func fails to detect itself as the initial thread as the current stack is now above the tos. The __pthread_find_self() func kicks in, walks all the thread arrays, fails to find a hit, and then walks into uninitialized memory for the thread descriptor. Use of this garbage memory has obvious results -- things fall down & go boom. To address this, I extend the current algorithm to automatically scale back both the bottom and the top stack limits of the initial thread. We use the current stack pointer at "thread boot time" only as a single known point. The initial thread stack bottom is set to the bottom of memory and the initial thread stack top is set to the top of memory. Then as we create new stack threads, we figure out whether the new stack is above or below the single known good address, and then scale back either the tos or the bos accordingly. Reviewed-by: Steven J. Magnani <steve@digidescorp.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2011-02-09arm: mv nptl specific atomic impl to common placeBernhard Reutner-Fischer
Thanks to Nitin Garg for notincing! Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-02-02arm: fix the static link problem for ARM due to undefined __tls_get_addrNitin Garg
Signed-off-by: Nitin Garg <nitingarg98@gmail.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-01-29nptl/mips64: Fix build when using mips64 and ABIs other than o32Khem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2011-01-20nptl: Fix __USER_LABEL_PREFIX__ concatenatioWill Newton
The current C macro magic does not correctly concatenate the __USER_LABEL_PREFIX__ string on architectures where it has a non-empty value. We need to use __stringify to get the desired behaviour. Signed-off-by: Will Newton <will.newton@imgtec.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-01-20nptl: fix start_thread() for _STACK_GROWS_UPWill Newton
This patch adds a working implementation of pthread_create for architectures where STACK_GROWS_UP. Signed-off-by: Matt Fleming <matthew.fleming@imgtec.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-01-05nptl: get rid of the last preprocessor warning when __ASSUME_TGKILL is not ↵Carmelo Amoroso
defined A missing change in the previous commit. Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-01-04nptl: get rid of preprocessor warning when __ASSUME_TGKILL is not definedCarmelo Amoroso
A sample of the warning reported while building for ARM that has not __ASSUME_TGKILL defined. libpthread/nptl/sysdeps/unix/sysv/linux/raise.c: In function 'raise': libpthread/nptl/sysdeps/unix/sysv/linux/raise.c:33:5: warning: "__ASSUME_TGKILL" is not defined Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-12-29sparc: fix linking issue with __syscall_error.cAustin Foxley
Finally got around to testing out latest master and noticed that some buildsystem work last summer broke shared-builds of nptl on sparc. A version of __syscall_error.c needs to be linked into both libpthread and librt Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2010-12-23linuxthreads: Fix compilation breakageMatt Fleming
With commit "resolv.c: add support for per thread res_state" (aab4df0fb51660300559f5f29290709db2f7bfee) _res symbol is now marked as hidden in an attempt to make the resolver per-thread. Signed-off-by: Matt Fleming <matthew.fleming@imgtec.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-12-21libpthread/nptl_db: Append options to LDFLAGS based on if LD is set to gcc ↵Khem Raj
driver or ld itself Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-12-18sem_open.c/sem_unlink.c: Use INTUSE macro to get proper function call to ↵Khem Raj
__pthread_once We need to use __pthread_once_internal if available this macro is therefore used to notify that. Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-12-18nptl: If DOPIC is set then we missed a rule to generate .os variants for ↵Khem Raj
pt-*.c files Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-12-09nptl: fix Unwind_Resume PLT callsTimo Teräs
My change a49b3a18e463cbe8c94c41501e386e7f4c61609e fixed two Unwind_Resume calls to go via PLT to avoid text relocations for PIC builds. However, it looks the reason for upstream not using PLT calls is that ebx gets clobbered. So we need to reload it. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2010-12-01libc_sh: add __tls_get_addr to static libc (SH)Filippo Arcidiacono
Add __tls_get_addr function to static libc allowing to handle local dynamic TLS access model. On SH, linker optimizations are not required, so __tls_get_addr can be called even in statically linked binaries. Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-12-01Revert "libc_tls: Do not include generic libc-tls from arch specific ↵Carmelo Amoroso
implementation" This reverts commit 0c468129356f5ce6780e7369c271d74631ae03ba. Indeed recent updates into buildsys managed to filter-out generic implementation when arch specific one is defined, so duplicated symbols into the libc.a In the meanwhile, do a minor fix into mips version not using relative path to include <generic/libc-tls.c> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-11-29libc_tls: Do not include generic libc-tls from arch specific implementationCarmelo Amoroso
libpthread/nptl/sysdeps/generic/libc-tls.c is built as well, so it does not need that arch specific version of libc-tls.c (MIPS and ALPHA) includes it. The arch libc-tls.s is aimed to provide the implementation of __tls_get_addr for the static libc.a, because on these archs the linker relaxations are not required and it could be possible to have local-dynamic access models in static libraries as well. Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-11-11ntpl: fix static linking by not leaking SSP_ALL_CFLAGSNatanael Copa
The SSP_ALL_CFLAGS in nptl arch CFLAGS leaks out and forces things like dl-support.c, brk.c, sbrk.c memcpy, etc to be built with -fstack-protector-all. This is bad when linking statically since initializing TLS will call those functions before SSP is initialized. The libpthread itself will still be built with -fstack-protector-all due to CFLAGS-nptl has SSP_ALL_CFLAGS in libpthread/nptl/Makefile.in Thanks to Timo Teras for helping with this. Signed-off-by: Natanael Copa <natanael.copa@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-11-10microblaze: thread supportSteven J. Magnani
Header files needed to build linuxthreads.old for microblaze. Signed-off-by: Steven J. Magnani <steve@digidescorp.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-10-27mips: fix errno setting after syscallAlexander Gordeev
If there was an error during syscall then after it's completion a3 register holds a non-zero value and v0 holds an actual error code which should be saved in errno. This can be achieved by calling __syscall_error with the value from v0 as a parameter. So this value should be stored in a0, but the appropriate assembly instructions are missing. Fixed this now by adding "move a0, v0". I think it was once fixed by 58c5f8ba4cdf62342d05a546d15404cbbb3c4e07 but then something went wrong. Again... Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-10-22*: inline constant __sig{add,del}set and __sigismemberDenys Vlasenko
text data bss dec hex filename - 318 4 0 322 142 libc/pwd_grp/lckpwdf.o + 312 4 0 316 13c libc/pwd_grp/lckpwdf.o - 166 0 1 167 a7 libc/stdlib/abort.o + 157 0 1 158 9e libc/stdlib/abort.o - 42 0 0 42 2a libc/sysdeps/linux/common/pause.o + 27 0 0 27 1b libc/sysdeps/linux/common/pause.o Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
2010-09-09nptl: fix static linkingNatanael Copa
We need dl-tls.c for static libc or we will get missing symbols when linking thinkgs like openssl static. Signed-off-by: Natanael Copa <natanael.copa@gmail.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-08-17nptl: fix calling convention for __pthread_mutex_cond_lockTimo Teräs
The assembly versions of pthread_cond_wait calls __pthread_mutex_cond_lock and __pthread_mutex_cond_lock_adjust using internal calling convention (which differs from default calling convention at least on x86). Thus these two functions must be defined with internal_function or the call sequence goes wrong. __pthread_mutex_cond_lock resides in sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c, but it does evil macro definitions and includes pthread_mutex_lock.c, so we need to add some extra kludge to pthread_mutex_lock.c to get the prototypes correctly. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-08-05Revert "nptl i686: fix pthread_cond_wait.S compilation"Bernhard Reutner-Fischer
This reverts commit f71c0d8af11252f119fad04938ddd5501a7df21a.
2010-08-05nptl: fix x86 assembly PIC relocationsTimo Teräs
Unwind_Resume needs to be called via PLT. Most calls are already proper, this fix the remaining two problems. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-08-02nptl: _POSIX_IPV6 depends on UCLIBC_HAS_IPV6Bernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-30nptl: fix LFS handlingBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-30nptl: do not define _POSIX_SPAWN since its not implementedNatanael Copa
Building things like vlc checks if _POSIX_SPAWN is defined. Since posix_spawn is not implemented we dont define it. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
2010-07-15nptl: (librt) powerpc32's PSEUDO_RET needs __syscall_errorBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-14nptl: remove superfluous =1 from definesBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-14nptl: x86_64: fix compilation of unwinderBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-14nptl i686: fix pthread_cond_wait.S compilationRoman I Khimov
__i686 is a gcc-defined macro, so i686 build failed with: libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S: Assembler messages: libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:572: Error: junk at end of line, first unrecognized character is `1' libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:573: Error: junk at end of line, first unrecognized character is `1' libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:574: Error: junk at end of line, first unrecognized character is `1' libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:575: Error: junk at end of line, first unrecognized character is `.' libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:576: Error: junk at end of line, first unrecognized character is `1' libpthread/nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:579: Error: expected comma after name `' in .size directive Signed-off-by: Roman I Khimov <khimov@altell.ru> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-06nptl: disregard generated tcb-offsets.cBernhard Reutner-Fischer
thanks to khem for noticing Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-06nptl: Filter out gen_tcb-offsets.c from CSRC for libpthread.Khem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-07-06nptl: fix buildsysBernhard Reutner-Fischer
Now automatically picks the correct (arch and subarch specific) impls in favour of generic impls. make O=/tmp/objs PREFIX=/my/sysroot -j works now as expected (both out-of-tree as well as parallel-safe). Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-06nptl: fix subdirs handlingBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-06nptl: simplify buildsysBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-06-30mips/syscall-error: Choose the correct version for setting up errno.Khem Raj
* Current function is a C protype and PSEUDO macro does not transfer syscall return parameters to correct argument registers for a C function. This causes problem with syscalls setting wrong value for errno when they encounter an error. * Fixes PR/2089 for mips/nptl Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-06-30nptl/errno: Use a separate __errno_location for libpthread.Khem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2010-06-30nptl/generic: Build generic libc-tls.c for non-mips architectures.Khem Raj
* mips has it own variant. * we dont need to build dl-tls.c here its already built as part of ldso. Signed-off-by: Khem Raj <raj.khem@gmail.com>