This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Simple Redboot Q's
- From: Andrew Lunn <andrew at lunn dot ch>
- To: Matt Sartori <msartori at hanoverdisplays dot com>
- Cc: eCos Discussion <ecos-discuss at ecos dot sourceware dot org>
- Date: Tue, 26 Jul 2005 19:21:36 +0200
- Subject: Re: [ECOS] Simple Redboot Q's
- References: <F9885E669725F248A1F6DB9109FDD679357122@Molly.hanover.local>
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