diff options
| author | Simon Atanasyan <simon@atanasyan.com> | 2014-06-01 06:28:42 +0000 |
|---|---|---|
| committer | Simon Atanasyan <simon@atanasyan.com> | 2014-06-01 06:28:42 +0000 |
| commit | b635d0458933d56c5cbbdaf2eac323fb571c0cd9 (patch) | |
| tree | fe09879209119eef77b482c1040fcedf204f0e7a /lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h | |
| parent | 2fd910dc72c1993846fc964d4d56ea2622d0cacf (diff) | |
| download | bcm5719-llvm-b635d0458933d56c5cbbdaf2eac323fb571c0cd9.tar.gz bcm5719-llvm-b635d0458933d56c5cbbdaf2eac323fb571c0cd9.zip | |
[Mips] Implement .{ctors,dtors}.<priority> sections ordering.
Arrange .ctors/.dtors sections in the following order:
.ctors from crtbegin.o or crtbegin?.o
.ctors from regular object files
.ctors.* (sorted) from regular object files
.ctors from crtend.o or crtend?.o
This order is specific for MIPS traget. For example, on X86
the .ctors.* sections are merged into the .init_array section.
llvm-svn: 209987
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h')
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h index b2eb496a8c5..fb5fbddff12 100644 --- a/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h +++ b/lld/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h @@ -43,6 +43,23 @@ public: order); } + StringRef getSectionName(const DefinedAtom *da) const override { + return llvm::StringSwitch<StringRef>(da->customSectionName()) + .StartsWith(".ctors", ".ctors") + .StartsWith(".dtors", ".dtors") + .Default(TargetLayout<ELFType>::getSectionName(da)); + } + + Layout::SegmentType getSegmentType(Section<ELFType> *section) const override { + switch (section->order()) { + case DefaultLayout<ELFType>::ORDER_CTORS: + case DefaultLayout<ELFType>::ORDER_DTORS: + return llvm::ELF::PT_LOAD; + default: + return TargetLayout<ELFType>::getSegmentType(section); + } + } + /// \brief GP offset relative to .got section. uint64_t getGPOffset() const { return 0x7FF0; } |

