[LLVMdev] [lld] Handling ELF section groups/.gnu.linkonce sections.
Shankar Easwaran
shankare at codeaurora.org
Tue Oct 29 21:52:45 PDT 2013
Hi Nick,
I am trying to implement support for handling section groups in lld.
There are two ways of figuring out section groups with ELF.
a) Sections with SHF_GROUP property
b) .gnu.linkonce sections (the signature identified by the name of the
section) -- This was the method to coalesce similiar constants.
Section Groups(SHF_GROUP) is the preferred way on ELF but .gnu.linkonce
sections is also used.
We would need to support both occurences in ELF files with lld.
_*Problem*_
Currently the SymbolTable assumes that an atom is going to be replaced
by one another atom, but in the case of a section group, a whole group
can be coalesced depending on whether the group with the same signature
was previously seen.
_*Example*_
For simplicity I am considering two section groups A and B (that have
the same signature).
Say A contains atoms A1, A2, A3, and the section group B contains atoms
A1", A2", A3"
To complicate things, groups A can contain fewer atoms than group
B(currently supported on ELF!) -- This happens in environments where the
user tried to compile object files and forgot to compile the rest of the
object files.
_*Problem*_
Its easier to only set the _replaceAtoms[A] = B and the Resolver could
just remove B in this case.
Inorder to remove all the atoms in Group B, B and all its layout-after
references need to be iterated. The problem is still the _replacedAtoms
map that needs to be set before all the atoms in B can be coalesced.
_*Solution*_
A way to accomplish this could be to
A) Use the in-group reference along with the layout-after reference. The
in-group reference for atoms in the group B are going to contain B as
the root of the group.
B) Another way is that we could have a Atom attribute coalescedAway()
which would be set for all atoms that we want to remove. This would also
need in-group references.
I am ok with either of the methods (A) or (B) but inclined towards (B).
Thanks
Shankar Easwaran
-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131029/ad5eb811/attachment.html>
More information about the llvm-dev
mailing list