forked from OSchip/llvm-project
ELF: Remove a comparison against In.EhFrame. NFCI.
This won't work once we have multiple .eh_frame sections. Differential Revision: https://reviews.llvm.org/D62280 llvm-svn: 361556
This commit is contained in:
parent
b4cb7d8045
commit
ca6a8ae0bf
|
@ -106,7 +106,7 @@ getSymbolStrings(ArrayRef<Defined *> Syms) {
|
|||
// .eh_frame tend to contain a lot of section pieces that are contiguous
|
||||
// both in input file and output file. Such pieces are squashed before
|
||||
// being displayed to make output compact.
|
||||
static void printEhFrame(raw_ostream &OS, OutputSection *OSec) {
|
||||
static void printEhFrame(raw_ostream &OS, const EhFrameSection *Sec) {
|
||||
std::vector<EhSectionPiece> Pieces;
|
||||
|
||||
auto Add = [&](const EhSectionPiece &P) {
|
||||
|
@ -123,13 +123,14 @@ static void printEhFrame(raw_ostream &OS, OutputSection *OSec) {
|
|||
};
|
||||
|
||||
// Gather section pieces.
|
||||
for (const CieRecord *Rec : In.EhFrame->getCieRecords()) {
|
||||
for (const CieRecord *Rec : Sec->getCieRecords()) {
|
||||
Add(*Rec->Cie);
|
||||
for (const EhSectionPiece *Fde : Rec->Fdes)
|
||||
Add(*Fde);
|
||||
}
|
||||
|
||||
// Print out section pieces.
|
||||
const OutputSection *OSec = Sec->getOutputSection();
|
||||
for (EhSectionPiece &P : Pieces) {
|
||||
writeHeader(OS, OSec->Addr + P.OutputOff, OSec->getLMA() + P.OutputOff,
|
||||
P.Size, 1);
|
||||
|
@ -179,8 +180,8 @@ void elf::writeMapFile() {
|
|||
for (BaseCommand *Base : OSec->SectionCommands) {
|
||||
if (auto *ISD = dyn_cast<InputSectionDescription>(Base)) {
|
||||
for (InputSection *IS : ISD->Sections) {
|
||||
if (IS == In.EhFrame) {
|
||||
printEhFrame(OS, OSec);
|
||||
if (auto *EhSec = dyn_cast<EhFrameSection>(IS)) {
|
||||
printEhFrame(OS, EhSec);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -69,6 +69,10 @@ public:
|
|||
bool isNeeded() const override { return !Sections.empty(); }
|
||||
size_t getSize() const override { return Size; }
|
||||
|
||||
static bool classof(const SectionBase *D) {
|
||||
return SyntheticSection::classof(D) && D->Name == ".eh_frame";
|
||||
}
|
||||
|
||||
template <class ELFT> void addSection(InputSectionBase *S);
|
||||
|
||||
std::vector<EhInputSection *> Sections;
|
||||
|
|
Loading…
Reference in New Issue