How to add pthread support for GCC powerpc-eabi cross platform?

Michael Eager eager@eagercon.com
Sun Oct 25 00:34:00 GMT 2009


Jeffi Edward.J wrote:
> 
> The scenario is as follows... Actually I'm building a huge application using
> Diab toolchain . The target RTOS (cant reveal name :-(... ) required kernel
> services are also built along with the application. The image is loaded into
> target device(powerpc machine) as a bootable image. But that RTOS doesn't
> have pthread support., wheras the library used by Diab-c compiler has
> pthread library. So it worked fine so far.
> 
> Now I'm porting this application to GCC compiler. I built the powerpc-eabi
> cross tool chain with newlib. Since the pthread library is not part of
> newlib library, I guess I would face problem which porting. :-(..

Newlib only has support for pthreads when run on Linux
(see newlib/libc/sys/linux/linuxthreads).

To support pthreads with your unnamed RTOS in Newlib, you
would need to write all of the corresponding routines which
translate pthreads calls into whatever threading model
the RTOS supports.  This is (presumably) what the Diab
tool chain does.

You may be able to link the pthread support from the Diab
tool chain by including the Diab library after Newlib.

> I can't use Glibc since there is no support for powerpc-eabi in Glibc! How
> to over come this problem?

> 
> Thanks,
> Jeffi
> 
> 
> 
> Ian Lance Taylor-3 wrote:
>> Kai Ruottu <kai.ruottu@wippies.com> writes:
>>
>>> For a layman like me some things  sound  predestined like that Posix
>>> threads
>>> being an additional  feature in an Posix-compatible opsys  meanwhile  the
>>> standard C library like newlib implements the base Posix C functions. 
>>> The
>>> real priests will know more about these things. So...
>>>
>>> What is the "operating system" on the target?  Does it support Posix
>>> threads?
>>>
>>> At least Cygwin on Win32 uses newlib as the base C library and should
>>> support
>>> Posix threads. Also the RTEMS RTOS should use newlib and support Posix
>>> threads :
>>>
>>> http://www.rtems.com/wiki/index.php/RTEMSFeatures
>>>
>>> So I would be really surprised if  newlib  should nowadays implement 
>>> some
>>> "operating system" too...
>> newlib used not only on cygwin and RTEMS, but also on pure embedded
>> systems with no operating system.  In that case newlib relies on
>> libgloss to provide some basic functionality.  In that scenario, it
>> makes sense to ask whether the newlib/libgloss combination provides
>> POSIX threads for a specific target.
>>
>> In general, as far as I know, the answer is "no."  POSIX threads are
>> fairly difficult to implement correctly.
>>
>> Ian
>>
>>
> 


-- 
Michael Eager	 eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077



More information about the Gcc-help mailing list