Tom Bachmann kirjoitti:
I try to write a little toy kernel for ppc64 and ia64, mainly to get to know the architectures. Actually this message is about 2 question, one the one hand, they're tightly related, on the other hand they're relatively different (therefore I wasn't sure whether to send 2 messages or not). The first question is about what target to build in my case. Conceptually I want a completely OS-independant toolchain only consisting of binutils and a C compiler, but which target expresses this? <target>-unknown-unknown doesn't work (system not recognized).
I would think that there isn't that much difference between targets for the same CPU if needing only the GCC binaries... But producing the GCC-helper library, 'libgcc', then is quite target dependent. Linuces, SVR4s etc. having the soft-float routines in their kernels but embedded targets having these produced into the 'libgcc'. Then threads etc. are target dependent...
For ppc64, the following configuration options seem to do what I want: "--prefix=... --target=powerpc64-unknown-linux-gnu --enable-languages=c - --disable-shared --disable-threads --without-headers --disable-libssp - --disable-libmudflap". But the ia64 cross toolchains thing seems to be even more tricky. For what I know it depends on glibc (depending on kernel-headers?), but I definitely don't want glibc. I don't think it is conceptually right to depend on linux kernel headers or glibc headers if neither is used. So what should one pass here?
Requiring to produce 'libgcc' with the new GCC is one thing... Maybe it really isn't obligatory at all? Maybe "producing the 'libgcc.a' etc. stuff" via commands like: touch libgcc.a is enough... Sometimes people are blind and cannot see that they could create what the GCC build process cannot create. But the "created" stuff being really unimportant and using any time to solve how on earth that unimportant stuff could be created automatically in the process being only wasted time...
I tried some options (--target=ia64-unknown-elf, --with-newlib) to workaround this, without success (always problems compiling fde-glibc.c obviously related to headers [stdlib.h, link.h] not found).
Are you sure you really need that 'libgcc' for ia64? Or this 'fde-glibc.o' routine? Using a 'touch fde-glibc.o' in the $build/gcc/libgcc' will "produce" it quite surely, it only is an empty file and unusable but who cares if it is not needed ever? Things you are struggling with are quite common and usually people claim it being impossible to create "only a bare stripped GCC" without any libraries... And the main reason being that the things teached in the "Basic course in Unix" were forgotten long time ago, like "How to create files in Unix" :-)