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: objcopy, --change-section-lma ?


Hi Torsten,

When dealing with this sort of question it is important to be specific about what is being discussed, so let me point out a few minor assumptions first:

to my understanding in a section header entry there are 10 values
of 32 bit each.

For 32 bit files. For 64 bit files the values are 64 bit.


One reflects the VMA (SH_ADDR), but none reflectsthe LMA.

In the ELF file format. Other file formats can be supported by objcopy and they may or may not have such a field.


I wondered how objcopy can change a sections LMA then and found out that
it changes one of the program headers.

I now wonder how it is ensured that this does not contradict to the
LMA of other sections?

When processing the modified executable prior to writing it out objcopy (via the BFD library) should check for conflicting LMAs and report any problems.


Are other sections affected implicitly?

No, only the section(s) specified on the objcopy command line should be adjusted.


Or does objcopy add another program header if necessary?

Yes.


If it does that, how is a section linked to a program header?

They are not. An ELF file can have either program headers or section headers or both. If it has both then there is an assumed mapping between the sh_addr fields of the section headers and the (p_vaddr + p_memsz) address range of the program headers. Corrupt ELF files may not conform to this assumption. It is intended that a program loader can ignore any section headers in an ELF file entirely and instead just use the program headers.


Cheers
  Nick


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