This is the mail archive of the crossgcc@sources.redhat.com 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: i686 -> powerpc gcc 2.95.3 trouble


Since your kernel appears to work, could it be a broken glibc?

b.g.

On Thu, Apr 25, 2002 at 12:13:00PM -0600, root wrote:
> 
> Hi folks,
> 
> I'm having some trouble with a gcc 2.95.3 cross 
> compiler I built for powerpc (405GP "walnut" in 
> this case)
> 
> The problem I'm having:
> 
> I have a user app with a function defined like so:
> (I had a proper prototype, and a fucntion that
> actually tried to do something, but I took most of
> it out in the process of eliminating as much as possible 
> while still having the problem appear.)
> 
> 	long find_unused_blocksx()
> 	{
> 		printf("hello!\n"); fflush(stdout);
> 		return 0;
> 	}
> 
> Later, that function is called:
> 
> 	long totalsize;
> 
> 	[...]
> 
> 	unused_blocks = find_unused_blocksx((void *) NULL,
> 		666, 777, totalsize); 
> 
> 
> Somewhere During the call ("hello" never comes out), I get
> "Illegal Instruction" 
> 
> If I remove the "totalsize" parameter and call the function this 
> way:
> 	unused_blocks = find_unused_blocksx((void *) NULL, 666, 777); 
> 
> It works fine, which makes me think it's something about the actual
> function call that's messed up.
> 
> If I create a simple C program with the function above
> it seems to work, it seems only in the context of this
> larger program that it breaks.
> 
> My compiler options are like:
> 
> /usr/local/powerpc-linux/bin/gcc -Wa,-m405 -g -DLINUX -DOS_MODEL=LINUX -I../include -c y.tab.c
> 
> I get the same results without the -Wa,-m405
> 
> I have another "working gcc" that I didn't build, which will produce 
> usable code, which is why I think something is wrong with my compiler.  
> However, my "broken gcc" will successfully build a usable linux kernel 
> (the latest powerpc port from penguinppc.org's bitkeeper tree) while 
> this "working gcc" won't build this kernel.  (that's the reason I made 
> my gcc at all.)
> 
> Using the -S optino, I get assembly code for the region of the
> offending function call that looks like this:
> 
> Working code from the "working gcc" (claims to be gcc 2.95.2):
> 
> 	mr 10,4
> 	mr 3,9
> 	mr 4,10
> 	bl __fixdfsi
> 	stw 3,152(31)
> .stabn 68,0,1640,.LM898-diskinfo
> .LM898:
> 	li 3,0
> 	li 4,666
> 	li 5,777
> 	lwz 6,152(31)
> 	bl find_unused_blocksx
> 	mr 0,3
> 	stw 0,148(31)
> 
> Broken code from my "broken gcc":
> 
> 	fmul 12,0,13
> 	fctiwz 0,12
> 	stfd 0,160(31)
> 	lwz 0,164(31)
> 	stw 0,144(31)
> .stabn 68,0,1640,.LM898-diskinfo
> .LM898:
> 	li 3,0
> 	li 4,666
> 	li 5,777
> 	lwz 6,144(31)
> 	crxor 6,6,6
> 	bl find_unused_blocksx
> 	mr 0,3
> 	stw 0,140(31)
> 
> I build my gcc cross compiler with redhat 7.2 native gcc, 
> which is 2.96.
> 
> I got my glibc headers for the cross compiler 
> out of this rpm from ftp.yellowdoglinux.com
> glibc-devel-2.2.5-0.19a.ppc.rpm
> 
> Used this stuff to build my gcc, from ftp.gnu.org:
> 
> binutils-2.12.90.0.4.tar.bz2
> gcc-2.95.3.tar.gz
> glibc-2.2.5-0.19a.ppc.rpm
> glibc-2.2.5.tar.gz
> glibc-linuxthreads-2.2.5.tar.gz
> 
> Any ideas what I might be doing wrong, 
> or what I might try?
> 
> Thanks,
> 
> -- steve
> 
> 
> ------
> Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
> Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
> 

-- 
Bill Gatliff
bgat@billgatliff.com

------
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]