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: [crosstool-ng] error building x86 toolchain


El Wed, Jan 07, 2009 at 12:13:31PM -0800 Khem Raj ha dit:

> On (07/01/09 08:14), Matthias Kaehlcke wrote:
> > Hi Khem,
> > 
> > El Mon, Jan 05, 2009 at 04:23:31PM -0800 Khem Raj ha dit:
> > 
> > > On (02/01/09 18:52), Matthias Kaehlcke wrote:
> > > > hi,
> > > > 
> > > > i ran into an error during the crosstool-ng build for a x86
> > > > toolchain in the compilation of pthread_rwlock_tryrdlock.c:
> > > > 
> > > > [ALL  ]    pthread_rwlock_tryrdlock.c: Assembler messages:
> > > > [ALL  ]    pthread_rwlock_tryrdlock.c:52: Error: suffix or operands
> > > > invalid for `mov'
> > > > [ERROR]    make[3]: ***
> > > > [/data/prog/embedded/toolchains/ct-ng-build/targets/i386-unknown-linux-gnu/build/build-libc/nptl/pthread_rwlock_tryrdlock.o]
> > > > Error 1
> > > 
> > > I think this error is coming from lll_lock defined in
> > > ./nptl/sysdeps/unix/sysv/linux/i386/lowlevellock.h. In the inline asm it
> > > says "g" (private)  this tells compiler to chose from any
> > > register, memory or immediate integer operand. So in your case compiler
> > > choses register bl because __shared is unsigned chari and this instruction does not expect that. Note that 
> > > its not possible to do a lot of checks on inline code for the compiler
> > > where as assembler can do better here in catching the error and it does.
> > > 
> > > what opt level are you using? for me it works with -O2 and above 
> > > but I get same errors with O O1 or Os
> > 
> > i build the toolchain with -O
> > 
> > > may be typecasting private to (int) private would help here try this
> > > patch attached it might help.
> > 
> > after applying your patch pthread_rwlock_tryrdlock.c compiles.
> > 
> > the build now stops with another error in nptl:
> > 
> > [ALL  ]    make[3]: *** No rule to make target
> > `/data/prog/embedded/toolchains/ct-ng-build/targets/i386-unknown-linux-gnu/build/build-libc/nptl/pthread_spin_trylock.o',
> > needed by `lib-noranlib'.  Stop.
> 
> Do you really need to build for i386 ? if not then I would suggest try
> to build for i486-linux-gnu.

no, it's i386 cause thats the default for x86 if no architecture level
is specified. i'll try to build a i686 toolchain.

thanks a lot for the hint!

-- 
Matthias Kaehlcke
Embedded Linux Engineer
Barcelona

            Nothing is more despicable than respect based on fear
                              (Albert Camus)
                                                                 .''`.
    using free software / Debian GNU/Linux | http://debian.org  : :'  :
                                                                `. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4                  `-

--
For unsubscribe information see http://sourceware.org/lists.html#faq


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