[PATCH] D67531: [ELF] Delete SectionBase::assigned
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 24 04:48:41 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL372735: [ELF] Delete SectionBase::assigned (authored by MaskRay, committed by ).
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67531/new/
https://reviews.llvm.org/D67531
Files:
lld/trunk/ELF/InputSection.h
lld/trunk/ELF/LinkerScript.cpp
Index: lld/trunk/ELF/InputSection.h
===================================================================
--- lld/trunk/ELF/InputSection.h
+++ lld/trunk/ELF/InputSection.h
@@ -54,22 +54,9 @@
unsigned sectionKind : 3;
- // The next three bit fields are only used by InputSectionBase, but we
+ // The next two bit fields are only used by InputSectionBase, but we
// put them here so the struct packs better.
- // True if this section has already been placed to a linker script
- // output section. This is needed because, in a linker script, you
- // can refer to the same section more than once. For example, in
- // the following linker script,
- //
- // .foo : { *(.text) }
- // .bar : { *(.text) }
- //
- // .foo takes all .text sections, and .bar becomes empty. To achieve
- // this, we need to memorize whether a section has been placed or
- // not for each input section.
- unsigned assigned : 1;
-
unsigned bss : 1;
// Set for sections that should not be folded by ICF.
@@ -108,9 +95,9 @@
SectionBase(Kind sectionKind, StringRef name, uint64_t flags,
uint64_t entsize, uint64_t alignment, uint32_t type,
uint32_t info, uint32_t link)
- : name(name), repl(this), sectionKind(sectionKind), assigned(false),
- bss(false), keepUnique(false), partition(0), alignment(alignment),
- flags(flags), entsize(entsize), type(type), link(link), info(info) {}
+ : name(name), repl(this), sectionKind(sectionKind), bss(false),
+ keepUnique(false), partition(0), alignment(alignment), flags(flags),
+ entsize(entsize), type(type), link(link), info(info) {}
};
// This corresponds to a section of an input file.
Index: lld/trunk/ELF/LinkerScript.cpp
===================================================================
--- lld/trunk/ELF/LinkerScript.cpp
+++ lld/trunk/ELF/LinkerScript.cpp
@@ -414,7 +414,7 @@
size_t sizeBefore = ret.size();
for (InputSectionBase *sec : inputSections) {
- if (!sec->isLive() || sec->assigned)
+ if (!sec->isLive() || sec->parent)
continue;
// For -emit-relocs we have to ignore entries like
@@ -433,7 +433,6 @@
continue;
ret.push_back(sec);
- sec->assigned = true;
}
sortInputSections(
@@ -455,6 +454,7 @@
mainPart->hashTab = nullptr;
s->markDead();
+ s->parent = nullptr;
for (InputSection *ds : s->dependentSections)
discard(ds);
}
@@ -466,6 +466,8 @@
for (BaseCommand *base : outCmd.sectionCommands) {
if (auto *cmd = dyn_cast<InputSectionDescription>(base)) {
cmd->sectionBases = computeInputSections(cmd);
+ for (InputSectionBase *s : cmd->sectionBases)
+ s->parent = &outCmd;
ret.insert(ret.end(), cmd->sectionBases.begin(), cmd->sectionBases.end());
}
}
@@ -497,7 +499,7 @@
// way to "make it as if it wasn't present" is to make it empty.
if (!matchConstraints(v, sec->constraint)) {
for (InputSectionBase *s : v)
- s->assigned = false;
+ s->parent = nullptr;
sec->sectionCommands.clear();
continue;
}
@@ -512,8 +514,6 @@
}
sec->sectionIndex = i++;
- for (InputSectionBase *s : v)
- s->parent = sec;
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67531.221513.patch
Type: text/x-patch
Size: 3285 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190924/52e869fe/attachment.bin>
More information about the llvm-commits
mailing list