Age | Commit message (Collapse) | Author |
|
This patch adds the libpthread backend bits for sh64. As noted previously,
we can't inline things like the testandset() in pt-machine.h as we need to
use a completely different ISA / CFLAGS in order for this to work.
As a result, this patch is somewhat of a RFC as well to see what people think
of the libpthread/linuxthreads/sysdeps Makefile approach, etc. The approach
I've taken currently has been to provide a sysdeps/Makefile with a note that
TARGET_ARCHs that want build rules can simply add themselves into the list of
matching architectures to add to the subdir rule for. This probably isn't
the cleanest solution, but it's quite transparent and works quite well.
|
|
I've noticed a few people have posted over the last year about problems
compiling programs that use vfork when pthreads are involved. Some
detective work turned up that ptfork.c aliases vfork to fork and then tries
to call the original fork as __libc_fork. This patch removes the aliasing
when there is no MMU present, and uses the same call semantics to call
__libc_vfork. I then added a symbol to the m68k vfork.S to allow vfork to
be called as __libc_vfork.
The same bug exists in the uClibc CVS, and with a possible tweak this patch
should go through there as well.
Obviously, all other platforms need __libc_vfork as a workable means to call
vfork in order for this to work for them.
Let me know if there are any problems with this patch.
Art Shipkowski
Videon Central Software Engineer
(814)235-1111 x307
|
|
|
|
the correct soname
|
|
ln.patch:
* Define $(LN) as ln in Rules.mak.
* Change all occurrences of ln into $(LN).
* Change all constructs like (cd path && ln -sf foo/file file)
into $(LN) -sf foo/file path/file. The latter construct is
already used in a number of places so it should not be
an additional compatibility problem.
|
|
rm.patch:
* Define $(RM) as rm -f in Rules.mak and test/Rules.mak
(this is the same definition as gmake uses by default).
* Change all occurrences of rm and rm -f into $(RM).
|
|
install.patch:
* Define $(INSTALL) as install in Rules.mak.
* Change all occurrences of install into $(INSTALL).
* Change all occurrences of mkdir -p into $(INSTALL) -d.
install -d is already used in a number of places so
this should not be an additional compatibility problem.
|
|
debug versions of uClibc with -O0, but libpthread/linuxthreads/spinlock.c
will not compile without at least -O1 optimization...
|
|
Should be standards compliant and with several optional features,
including support for hexadecimal float notation, locale awareness,
glibc-like locale-specific digit grouping with the `'' flag, and
positional arg support. I tested it pretty well (finding several
bugs in glibc's scanf in the process), but it is brand new so be
aware.
The *wprintf functions now support floating point output. Also, a
couple of bugs were squashed. Finally, %a/%A conversions are
now implemented.
Implement the glibc xlocale interface for thread-specific locale
support. Also add the various *_l(args, locale_t loc_arg) funcs.
NOTE!!! setlocale() is NOT threadsafe! NOTE!!!
The strto{floating point} conversion functions are now locale aware.
The also now support hexadecimal floating point notation.
Add the wcsto{floating point} conversion functions.
Fix a bug in mktime() related to dst. Note that unlike glibc's mktime,
uClibc's version always normalizes the struct tm before attempting
to determine the correct dst setting if tm_isdst == -1 on entry.
Add a stub version of the libintl functions. (untested)
Fixed a known memory leak in setlocale() related to the collation data.
Add lots of new config options (which Erik agreed to sort out :-),
including finally exposing some of the stripped down stdio configs.
Be careful with those though, as they haven't been tested in a
long time.
(temporary) GOTCHAs...
The ctype functions are currently incorrect for 8-bit locales. They
will be fixed shortly.
The ctype functions are now table-based, resulting in larger staticly
linked binaries. I'll be adding an option to use the old approach
in the stub locale configuration.
|
|
do -O0 by default anyways, so leave this disabled for now.
|
|
|
|
a local override changing -O0 to -O1 only for that directory.
|
|
|
|
-Erik
|
|
from converting "PIC" to "__PIC__"
|
|
should instead have been testing for '#ifdef __PIC__'. This resulted in
NON-PIC code getting mixed into the shared library. Oops!!!
-Erik
|
|
|
|
-Erik
|
|
|
|
for different things.
|
|
from glibc 2.3 that is needed for pthreads to compile for SuperH.
|
|
|
|
front.
|
|
from dlopen()'ing glibc's libthread_db library...
|
|
|
|
|
|
from glibc 2.3. This should make threads much more efficient.
-Erik
|
|
|
|
I found a problem in uClibc in libpthread/linuxthres/condvar.c:
pthread_cond_timedwait never uses rt singals
uClibc has two implementations of pthread_cond_timewait -
pthread_cond_timedwait_relative_old using the "normal" signals and
pthread_cond_timedwait_relative_new usign the rt signals
(for kernels >= 2.2).
The function pointer pthread_cond_tw_rel is initialised with the old
function. In "__pthread_init_condvar(int)" this pointer is set to the new
function using rt signals, but "__pthread_init_condvar" is never called in
the uClibc.
The following patch solves this issue, so that __pthread_init_condvars
is called and the function pointer is always initialised with the correct
function.
regards,
christian
|
|
|
|
and in the files where variables live.
|
|
function. Without this fix, pthread_mutex_lock/pthread_mutex_unlock don't work
on mips.
|
|
locks before calling clone when under a debugger, and unlocks on success or
failure of clone when under a debugger.
|
|
needed to make gdb happy when debugging threadded apps.
|
|
LINUXTHREADS_PTHREAD_THREADS_MAX to properly point to "__pthread_threads_max".
|
|
and run. Seems to be working...
-Erik
|
|
|
|
configurable, so people who do not need or want ctor/dtor support
can disable it and make their binaries a little bit smaller.
-Erik
|
|
|
|
been working on a new config system on and off for about 6 months
now, but I've never been fully satisfied. Well, I'm finally am
happy with the new config system, so here it is. This completely
removes the old uClibc configuration system, and replaces it with
an entirely new system based on LinuxKernelConf, from
http://www.xs4all.nl/~zippel/lc/
As it turns out, Linus has just merged LinuxKernelConf into Linux
2.5.45, so it looks like I made the right choice.
I have thus far updated only x86. I'll be updating the other
architectures shortly.
-Erik
|
|
Attached are the changes we think is necessary in order to use user
defined stacksizes for each thread. When testing I forgot to lower the
PTHREAD_STACK_MIN to the lowest value used for the stacks, this caused
stranged reboots.
As said before, we are using uClinux 2.0.38 on a ARM7TDMI.
|
|
uClibc's libpthread to run on linux 2.0.x kernels which lack
poll() and therefore must use select() instead.
|
|
a few spots in our header files. In this change I do a
s/__thread/__thread_id/
so we no longer conflict with newer CVS versions of gcc (such as the
patched up gcc 3.2 included with RedHat 3.0).
-Erik
|
|
how uClibc handles _init and _fini, allowing shared lib constructors and
destructors to initialize things in the correct sequence. Stefan ported the SH
architecture. I then ported x86, arm, and mips. x86 and arm are working fine,
but I don't think I quite got things correct for mips.
|
|
|
|
|
|
we hose our code... hose our code... hose our code... this is the way we hose
our code... all thanks to glibc"
-Erik
|
|
things to happen. This makes it explicit, so pthread using apps are no longer
broken...
-Erik
|
|
|
|
-Erik
|