This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


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: Simple Redboot Q's


On Tue, Jul 26, 2005 at 06:03:51PM +0100, Matt Sartori wrote:
> Yes, that all the jumps and references within the code are relative, not
> absolute.

Nope. eCos is position dependant. ie you have to load it where it
expects to be loaded. Otherwise it crashes and burns.

> I think what I'm not quite understanding is what the load does. 
> I would expect the loading of an elf to involve the interpretation of
> the file as to where to put it (and probably other stuff), however
> loading an elf explicitly to a location (with -b) doesn't make logical
> sense to me since the elf already knows where it wants to go. 

Correct. You should not tell the loader where to put the image. You
only need this for raw binaries. That format does not contain the
position information so you have to tell it.

> Equally baffling to me is when I load a .bin to an explicit location
> then I can't just run it from that location.
>
> Only when I load the .bin into the same memory location as what I've put
> in the binary's linker script does it work

Thats the position independant stuff again... You code appears not to
be position independant. It contains absolute addresses, not relative
addresses. Hence when its in the wrong place it crashes an burns.

If you want to be able to load your application to any random address
you need to make your application position independant. This can be
quite difficult, so most applications don't do it.

        Andrew

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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