[PATCH] D121346: [Propeller] Encode address offsets of basic blocks relative to the end of the previous basic blocks.
James Henderson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 13 02:46:55 PDT 2022
jhenderson added a comment.
In D121346#3574742 <https://reviews.llvm.org/D121346#3574742>, @rahmanl wrote:
> IIUC, your suggestion is to embed the version in the section data. The problem with this approach is that the linker must read and deduplicate the version data when linking the sections (unless if we store the version for each function separately).
> Also, if we compile with different compiler versions, the linker must create multiple LLVM_BB_ADDR_MAP sections if multiple versions exist.
> For these reasons I am a bit hesitant to add linker dependency to the feature, even though section-name-independence is great to have. I'd be happy to change course if we can avoid involving the linker. Any thoughts?
One thing to consider is how DWARF debug sections are designed. Most DWARF sections have a format that is something akin to the following:
header consisting of:
unit length - 32 or 64-bit number indicating the size of this input section
version - uint16_t for the section's version
other metadata as appropriate for the section type
actual section payload
The linker concatenates these together into a single output section. Consumers iterate over a section by inspecting the first header, using that to parse the immediate next payload and then, if the unit length doesn't mean the end of section has been reached, parses the next header and so on. In your case, you could have a single "header" (which might just consist of a length and version), followed by many functions that conform to that header. Consumers would just have to know how to iterate over them and then, if there are multiple versions, handle the corresponding payload accordingly. The linker would just concatenate together.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D121346/new/
https://reviews.llvm.org/D121346
More information about the llvm-commits
mailing list