This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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: extract ELF load address with binutils?


But as I (and objcopy) have illustrated:
1. Not all LOAD types get loaded
2. The address where the segment is loaded can be "wrong", when the loaded segment
   has been padded.

I agree about the multiple segments, but I can't make it work even for one.
The padding clearly comes from the non-embedded world where throwing away 32k of memory
may be OK; I don't have that luxury.

Objcopy says:
"When objcopy generates a raw binary file, it will essentially produce a memory dump
of the contents of the input object file." Memory dump is what I want, to me "undumping"
the dump is synonymous with loading the right data in the right place in memory. 
It is my understanding that the LOAD segment itself can contain an ELF header so it
can be loaded without additional metadata. I have no idea how (or whether) I can make
readelf give me the actual data to be loaded. 
That's where I see a big difference between objcopy and readelf.

-Z
 

-----Original Message-----
From: Paul_Koning@Dell.com [mailto:Paul_Koning@Dell.com] 
Sent: Tuesday, March 18, 2014 1:13 PM
To: Radouch, Zdenek
Cc: binutils@sourceware.org
Subject: Re: extract ELF load address with binutils?


On Mar 18, 2014, at 1:02 PM, Radouch, Zdenek <zradouch@irobot.com> wrote:

> I am writing a firmware updater that takes an ELF executable and needs 
> to extract the RAM data and the address to where the data should be loaded. ...
> The question is can I somehow convince one of the binutils to give me 
> the load address alone, so that I don't have to invent an algorithm extracting the address from the section dump?

I'm not sure the notion of "THE load address" makes sense.  It may be valid for your specific case, but not in general.  ELF files can have multiple load sections, each of which has a load address.

Normally I would say: look in the program headers.  Each header of type LOAD describes something that's loaded, and it shows the addresses.

	paul



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