[LLVMdev] [PROPOSAL] ELF safe/unsafe sections
Richard Osborne
richard at xmos.com
Wed Jul 31 03:38:10 PDT 2013
On 25/07/13 18:54, Shankar Easwaran wrote:
> Hi,
>
> Currently lld ties up all atoms in a section for ELF together. This
> proposal just breaks it by handling it differently.
>
> *This requires **NO ELF ABI changes.
>
> *_*Definitions :-*_
>
> A section is not considered safe if there is some code that appears to
> be present between function boundaries (or) optimizes sections to
> place data at the end or beginning of a section (that contains no symbol).
>
> A section is considered safe if symbols contained within the section
> have been associated with their appropriate sizes and there is no data
> present between function boundaries.
I'd like to see a more precise definition of "safe". For example just
from the above description it is not clear that "safe" disallows one
function falling through into another, but based on the intended use
cases this clearly isn't allowed.
How is alignment handled? If I have two functions in the same section
with different .align directives will these be respected when the
section is split apart? Is it OK for a loop within a function to have a
.align?
What about relocations? If calls are implemented with branches taking
pc-relative offsets then the assembler might patch in the branch offset
and not emit a relocation. This clearly prevents functions from being
removed / reordered, so I assume it is a requirement that a safe section
always uses relocations for branches between functions and if it has a
choice of long or short branches it aways conservatively uses a long
branch. This should be made explicit in the description of safe.
If you have a symbol at the same address as a function how do you decide
if it should be associated with this function or the end of the last
function?
Is it a requirement that there are no references to symbols defined
inside the function except for the function symbol itself? If so how
does this work when you have debug info (which might have references to
addresses within the function)?
--
Richard Osborne | XMOS
http://www.xmos.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130731/7a9a124a/attachment.html>
More information about the llvm-dev
mailing list