This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: latest mini-ct script and NPTL versus linuxthreads


Robert P. J. Day wrote:


hinko kocevar wrote recently of trying to build a toolchain using the mini-ct script for the ARM architecture using linuxthreads and having to touch the file ${HEADERS_DIR}/link.h (which i've never known to be an issue before).

Me neither but looks like it is missed when copying the heads over to the sysroot dir-- my guess.



at the moment, that mini script is set up to build *only* with NPTL so that might be part of the problem. my final enhancement to the script (short of fixing obvious bugs, of course) will be to add the choice of using either NPTL or linuxthreads.

For now (at least to my knowledge) there is no support for nptl ARM arch, so the whole nptl thing is not my concern - at least for now:)



as i understand it, the difference between the two approaches (using recent GNU software) is that linuxthreads still requires unloading the separate glibc-linuxthreads tarball into the glibc directory, then setting "enable-add-ons" appropriately.

NPTL, on the other hand, is already part of the glibc tarball so one need only
set "enable-add-ons" BUT one must also apply a single patch
glibc-5070_all_cross-compile-nptl.patch.  i'm not sure what will happen if
you mix the two strategies.  i'm sort of surprised that hinko actually got a
working toolchain from that mini script given that i still haven't officially
added linuxthreads support.  but i'll get to that in a day or two.

It's like that -
I also changed the nptl stuff in your mini-ct script to linuxthreads to get it working. I was a bit intimidated by the size of crosstool.sh (for my initial buildroot hacks) and took the mini-ct instead for testing out configurations that may lead me to working softfloat ARM toolchain. [See the scripts below for all the modifications I did]. Anyways, I got it working with gcc 3.4.1, glibc 2.3.5 and 2.3.6, binutils 2.16.1 and 2.6.12 kernel headers. Of course glibc-linuthreads are needed too.
When I tried with gcc 4.0.2 I can't get past this error (even by adding --with-__thread and/or --enable-add-ons=linuxthreads):


/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/build/build-gcc/gcc/xgcc -B/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/build/build-gcc/gcc/ -B/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/tools/arm-unknown-linux-gnu/bin/ -B/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/tools/arm-unknown-linux-gnu/lib/ -isystem /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/tools/arm-unknown-linux-gnu/include -isystem /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/results/armmm/tools/arm-unknown-linux-gnu/sys-include -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fomit-frame-pointer -fPIC -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. -I/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc -I/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/. -I/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/../include -I/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/../libcpp/include -fvisibility=hidden -DHIDE_EXPORTS -fexceptions -c /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/unwind-dw2.c -o libgcc/./unwind-dw2.o
In file included from ./gthr-default.h:1,
from /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/gthr.h:114,
from /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/unwind-dw2.c:42:
/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/gthr-posix.h:43:21: error: pthread.h: No such file or directory
In file included from ./gthr-default.h:1,
from /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/gthr.h:114,
from /work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/unwind-dw2.c:42:
/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/gthr-posix.h:46: error: syntax error before '__gthread_key_t'
/work/projects/im/code/repos/trunk/src/simpl-buildroot/tmp/mini-ct/unpack/gcc-4.0.2/gcc/gthr-posix.h:46: warning: type defaults to 'int' in declaration of '__gthread_key


That is caused by erroneous glibc-headers install, right? I eventried as Arno suggested few days back - copying linuxthreads/sysdeps/pthread/pthread.h by hand to the sys-root/usr/include. It turned out that I needed the contents of linuxthreads/sysdeps/pthread/bits/* copied to sys-root/usr/include/bits too, to get past the error but it failed down the line when it couldn't find crti.o (while compiling final gcc). Even tried to create lib and usr/lib (according to crosstool.sh) but to no avail... Maybe I need newer gcc ?!

>
> it does sound promising that he got something to work, so i'll be interested
> in hearing if it produces runnable code.


I've compiled linux kernel with all gcc 3.4.1 tools I managed to build. Also kernel booted on real hardware. For userspace apps I took busybox and successfully compiled that one too (didn't test it on real HW though).

>
> p.s. again, as a warning, that mini script was written with really recent
> GNU software in mind -- gcc-4.0.x, glibc-2.3.[56] and so on. if it happens
> to work with older software, then that's just luck. :-)


Well it does work - as long as crosstool patches are supplied;) too. I would prefer newer tools in my toolchain so I'll give it few more tries with newest gnu stuff!

I've took a look at gentoo gcc (http://gentoo-portage.com/ebuild?e=sys-devel%2Fgcc%2Fgcc-4.1.0_beta20051202.ebuild&browse=true), glibc ebuilds and how they handle the things and it cleared up some things for me. See http://gentoo-portage.com/sys-libs/glibc comments about the linuxthreads, tls, and __thread switches and how they are used - I'm not sure but that may be gentoo specific.

regards,
hinko

Attachment: mini-ct.sh
Description: application/shellscript

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]