Thamarai, you need some patches to cross build gcc 3.x, but better use crosstool, it includes the patches needed, both for the compiler and glibc, and a script to build and install everything.
http://www.kegel.com/crosstool/ Jaap-Jan On Thu, 2004-02-05 at 07:46, Thamarai Selvan wrote: > hi all, > > i am currently building my toolchain for powerpc i encountered the > following error during "MAKE" > could anyone help me out in this regard > > Thanks in advance > > ERROR > ------------ > if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi > /root/Thamarai/gcc-3.3.2/gcc/xgcc -B/root/Thamarai/gcc-3.3.2/gcc/ > -B/usr/local/powerpc-linux/bin/ -B > /usr/local/powerpc-linux/lib/ -isystem /usr/local/powerpc-linux/include -O2 > -DIN_GCC -DCROSS_COMPIL > E -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes > -isystem ./include -fPIC -g > -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I. -I./. > -I./config -I./../include -f > PIC -mstrict-align -DL_muldi3 -c ./libgcc2.c -o libgcc/./_muldi3.o > In file included from tconfig.h:22, > from libgcc2.c:36: > config/rs6000/linux.h:89:20: signal.h: No such file or directory > In file included from tconfig.h:22, > from libgcc2.c:36: > config/rs6000/linux.h:98: error: parse error before "stack_t" > config/rs6000/linux.h:98: warning: no semicolon at end of struct or union > config/rs6000/linux.h:100: error: parse error before "uc_sigmask" > config/rs6000/linux.h:100: warning: type defaults to `int' in declaration > of `uc_sigmask' > config/rs6000/linux.h:100: warning: data definition has no type or storage > class > config/rs6000/linux.h:99: error: storage size of `uc_mcontext' isn't known > make[2]: *** [libgcc/./_muldi3.o] Error 1 > make[2]: Leaving directory `/root/Thamarai/gcc-3.3.2/gcc' > make[1]: *** [stmp-multilib] Error 2 > make[1]: Leaving directory `/root/Thamarai/gcc-3.3.2/gcc' > make: *** [all-gcc] Error 2 > > With Regards, > Thamarai Selvan.G > (: 91-22-27612571, 27621100 X 4115 > ________________________________________________________ > > "Life - endless river of dreams, smiles in the portray of an artist" > - Thams > > -------------- next part -------------- --- gcc-3.3.1/gcc/config/rs6000/linux.h.orig 2003-08-26 10:14:17.000000000 -0500 +++ gcc-3.3.1/gcc/config/rs6000/linux.h 2003-08-26 10:22:25.000000000 -0500 @@ -83,82 +83,7 @@ state data appropriately. See unwind-dw2.c for the structs. */ #ifdef IN_LIBGCC2 -#include <signal.h> - -/* During the 2.5 kernel series the kernel ucontext was changed, but - the new layout is compatible with the old one, so we just define - and use the old one here for simplicity and compatibility. */ - -struct kernel_old_ucontext { - unsigned long uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - struct sigcontext_struct uc_mcontext; - sigset_t uc_sigmask; -}; enum { SIGNAL_FRAMESIZE = 64 }; #endif -#define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS) \ - do { \ - unsigned char *pc_ = (CONTEXT)->ra; \ - struct sigcontext *sc_; \ - long new_cfa_; \ - int i_; \ - \ - /* li r0, 0x7777; sc (sigreturn old) */ \ - /* li r0, 0x0077; sc (sigreturn new) */ \ - /* li r0, 0x6666; sc (rt_sigreturn old) */ \ - /* li r0, 0x00AC; sc (rt_sigreturn new) */ \ - if (*(unsigned int *) (pc_+4) != 0x44000002) \ - break; \ - if (*(unsigned int *) (pc_+0) == 0x38007777 \ - || *(unsigned int *) (pc_+0) == 0x38000077) \ - { \ - struct sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - struct sigcontext sigctx; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->sigctx; \ - } \ - else if (*(unsigned int *) (pc_+0) == 0x38006666 \ - || *(unsigned int *) (pc_+0) == 0x380000AC) \ - { \ - struct rt_sigframe { \ - char gap[SIGNAL_FRAMESIZE]; \ - unsigned long _unused[2]; \ - struct siginfo *pinfo; \ - void *puc; \ - struct siginfo info; \ - struct kernel_old_ucontext uc; \ - } *rt_ = (CONTEXT)->cfa; \ - sc_ = &rt_->uc.uc_mcontext; \ - } \ - else \ - break; \ - \ - new_cfa_ = sc_->regs->gpr[STACK_POINTER_REGNUM]; \ - (FS)->cfa_how = CFA_REG_OFFSET; \ - (FS)->cfa_reg = STACK_POINTER_REGNUM; \ - (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa; \ - \ - for (i_ = 0; i_ < 32; i_++) \ - if (i_ != STACK_POINTER_REGNUM) \ - { \ - (FS)->regs.reg[i_].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[i_].loc.offset \ - = (long)&(sc_->regs->gpr[i_]) - new_cfa_; \ - } \ - \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[LINK_REGISTER_REGNUM].loc.offset \ - = (long)&(sc_->regs->link) - new_cfa_; \ - \ - (FS)->regs.reg[CR0_REGNO].how = REG_SAVED_OFFSET; \ - (FS)->regs.reg[CR0_REGNO].loc.offset \ - = (long)&(sc_->regs->nip) - new_cfa_; \ - (FS)->retaddr_column = CR0_REGNO; \ - goto SUCCESS; \ - } while (0) -
