Hi Jate,

Jate Sujjavanich wrote:
On Daniel Jacobowitz's suggestion, I tried the Code Sourcery GNU
toolchain for Coldfire version 4.2 lite edition located at:

http://www.codesourcery.com/gnu_toolchains/coldfire

After fixing several bugs (due to incompatibilities with the newer
toolchain), I was able to startup uClinux with shared libraries.

What did you have to change?
Anything not fixed in the latest uClinux-dist patches?

When I tried the only thing that struck me as odd (and that I
had to fix) was the location of the compilers limits.h file.

On all the other cross toolchains I have generated (not just
for m68knommu, but arm, sh, etc) the gcc limits.h got installed
into the directory which is returned from:
m68k-uclinux-gcc -print-file-name=include.
But in the Code Sourcery 4.2 kit it can only be found in
`m68k-uclinux-gcc -print-file-name=include`/../include-fixed.

So I just copied that one, into the normal include diretcory.
Everything built fine after that.

Daniel, are you out there, any idea why this is?

Regards
Greg




-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David McCullough
Sent: Monday, July 30, 2007 8:55 PM
To: uClinux development list
Subject: Re: [uClinux-dev] Shared library issues on m68knommu and gcc
4.1.1


Jivin [EMAIL PROTECTED] lays it down ...
I am getting the "lib 0 younger than lib 1" in the relocation code for the reloc table for uClibc (shared lib 1). The code works until it reaches a value of "0x00000001" which is interpreted as address 1

in library 0. Library 0 is younger than 1, as it should be.
I understand now.


Some of my theories are as follows. Maybe the linker is inserting a 0x00000001 into the reloc table when it shouldn't be. Or maybe it should be, and 0x00000001 is a new flag in the newer toolchain.
It certainly has the feel of a tool chain flag. I have a vague recollection of such being used in the constructor/destructor chains.

What if you modify the kernel relocator to stop on these values? (are there legitimate relocations *after* them?)

Or skip them?

Does the program then work?

I don't see how 0x00000001 can be a legitimate relocation address. Code is word aligned and that definitely points into code space. I don't remember relocations less than 32 bit being needed on the
ColdFire.


Could be the constructore or destructor count,  there is usually only
one in a normal app.

Check that you elf2flt.ld has the correct CTORS/DTORS constructs and
that there is not padding getting inserted between symbols etc.

Let me know if this rings any bells.
It doesn't :-(

There were some weird zero values near the start of the GOT that I
never figured out but I thought I'd dealt with the relocations properly.


Cheers,
Davidm


--
------------------------------------------------------------------------
Greg Ungerer  --  Chief Software Dude       EMAIL:     [EMAIL PROTECTED]
Secure Computing Corporation                PHONE:       +61 7 3435 2888
825 Stanley St,                             FAX:         +61 7 3891 3630
Woolloongabba, QLD, 4102, Australia         WEB: http://www.SnapGear.com
_______________________________________________
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

Reply via email to