[PATCH] D79687: [LLD][ELF][ARM] Support /DISCARD/ of subset of .ARM.exidx sections
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun May 10 22:20:54 PDT 2020
MaskRay accepted this revision.
MaskRay added a comment.
This revision is now accepted and ready to land.
If I understand it correctly,
combineEhSections()
.ARM.exidx.* are removed from inputSections
script->processSectionCommands()
/DISCARD/ is handled. computeInputSections can find the synthetic section .ARM.exidx but not individual .ARM.exidx.*
writeResult<ELFT>()
...
writeSections
ARMExidxSyntheticSection::writeTo called on .ARM.exidx.exit.text which should have been discarded. This causes a relocation overflow
This patch tactfully introduces a mechanism to discard such synthetic sections. Looks great! One nit about an unneeded function.
================
Comment at: lld/ELF/LinkerScript.cpp:453
+std::vector<InputSectionBase *>
+LinkerScript::computeInputSections(const InputSectionDescription *cmd) {
+ return computeInputSections(cmd, inputSections);
----------------
Delete the function which is only called once.
================
Comment at: lld/ELF/LinkerScript.cpp:497
if (auto *cmd = dyn_cast<InputSectionDescription>(base)) {
cmd->sectionBases = computeInputSections(cmd);
for (InputSectionBase *s : cmd->sectionBases)
----------------
`cmd->sectionBases = computeInputSections(cmd, inputSections);`
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79687/new/
https://reviews.llvm.org/D79687
More information about the llvm-commits
mailing list