mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 00:16:25 +00:00
[yaml2obj] revert bad change
llvm-svn: 348579
This commit is contained in:
parent
11cd73c5fb
commit
9441a3469b
@ -157,9 +157,6 @@ class ELFState {
|
||||
ContiguousBlobAccumulator &CBA);
|
||||
bool writeSectionContent(Elf_Shdr &SHeader, const ELFYAML::Group &Group,
|
||||
ContiguousBlobAccumulator &CBA);
|
||||
bool writeSectionContent(Elf_Shdr &SHeader,
|
||||
const ELFYAML::VersionNeedSection &Section,
|
||||
ContiguousBlobAccumulator &CBA);
|
||||
bool writeSectionContent(Elf_Shdr &SHeader,
|
||||
const ELFYAML::MipsABIFlags &Section,
|
||||
ContiguousBlobAccumulator &CBA);
|
||||
@ -295,13 +292,6 @@ bool ELFState<ELFT>::initSectionHeaders(std::vector<Elf_Shdr> &SHeaders,
|
||||
// SHT_NOBITS section does not have content
|
||||
// so just to setup the section offset.
|
||||
CBA.getOSAndAlignedOffset(SHeader.sh_offset, SHeader.sh_addralign);
|
||||
} else if (auto S = dyn_cast<ELFYAML::VersionNeedSection>(Sec.get())) {
|
||||
if (S->Link.empty())
|
||||
// For VersionNeed section set link to .dynstr by default.
|
||||
SHeader.sh_link = getDotDynStrSecNo();
|
||||
|
||||
if (!writeSectionContent(SHeader, *S, CBA))
|
||||
return false;
|
||||
} else
|
||||
llvm_unreachable("Unknown section type");
|
||||
|
||||
@ -557,55 +547,6 @@ bool ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
|
||||
return true;
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
bool ELFState<ELFT>::writeSectionContent(
|
||||
Elf_Shdr &SHeader, const ELFYAML::VersionNeedSection &Section,
|
||||
ContiguousBlobAccumulator &CBA) {
|
||||
assert(Section.Type == llvm::ELF::SHT_GNU_verneed &&
|
||||
"Section type is not SHT_GNU_verneed");
|
||||
|
||||
typedef typename ELFT::Verneed Elf_Verneed;
|
||||
typedef typename ELFT::Vernaux Elf_Vernaux;
|
||||
|
||||
uint64_t BlobSize = 0;
|
||||
SHeader.sh_info = Section.VersionNeeds.size();
|
||||
auto &OS = CBA.getOSAndAlignedOffset(SHeader.sh_offset, SHeader.sh_addralign);
|
||||
|
||||
for (auto VNeedIt = Section.VersionNeeds.begin();
|
||||
VNeedIt != Section.VersionNeeds.end(); ++VNeedIt) {
|
||||
Elf_Verneed VNeed;
|
||||
|
||||
VNeed.vn_version = VNeedIt->Version;
|
||||
VNeed.vn_cnt = VNeedIt->Auxiliaries.size();
|
||||
// VNeed.vn_file = DotDynstr.add(VNeedIt->File);
|
||||
// errs() << "Need Name: " << VNeedIt->File << " Index: " << DotDynstr.add(VNeedIt->File) << '\n';
|
||||
VNeed.vn_aux = sizeof(Elf_Verneed);
|
||||
VNeed.vn_next =
|
||||
(VNeedIt != Section.VersionNeeds.end() - 1)
|
||||
? sizeof(Elf_Verneed) + VNeed.vn_cnt * sizeof(Elf_Vernaux)
|
||||
: 0;
|
||||
BlobSize += sizeof(Elf_Verneed);
|
||||
OS.write((const char *)&VNeed, sizeof(VNeed));
|
||||
|
||||
for (auto VNeedAuxIt = VNeedIt->Auxiliaries.begin();
|
||||
VNeedAuxIt != VNeedIt->Auxiliaries.end(); ++VNeedAuxIt) {
|
||||
Elf_Vernaux VNeedAux;
|
||||
zero(VNeedAux);
|
||||
VNeedAux.vna_hash = VNeedAuxIt->Hash;
|
||||
VNeedAux.vna_flags = VNeedAuxIt->Flags;
|
||||
VNeedAux.vna_other = VNeedAuxIt->Other;
|
||||
// VNeedAux.vna_name = DotDynstr.add(VNeedAuxIt->Name);
|
||||
VNeedAux.vna_next = (VNeedAuxIt != VNeedIt->Auxiliaries.end() - 1)
|
||||
? sizeof(Elf_Vernaux)
|
||||
: 0;
|
||||
BlobSize += sizeof(Elf_Vernaux);
|
||||
OS.write((const char *)&VNeedAux, sizeof(Elf_Vernaux));
|
||||
}
|
||||
}
|
||||
SHeader.sh_size = BlobSize;
|
||||
return true;
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
bool ELFState<ELFT>::writeSectionContent(Elf_Shdr &SHeader,
|
||||
const ELFYAML::MipsABIFlags &Section,
|
||||
|
Loading…
Reference in New Issue
Block a user