Skip to content

Commit

Permalink
elf2rpl: Include import sections in the read section offsets.
Browse files Browse the repository at this point in the history
  • Loading branch information
exjam committed Sep 30, 2018
1 parent ea009ce commit b03e4af
Showing 1 changed file with 4 additions and 11 deletions.
15 changes: 4 additions & 11 deletions tools/elf2rpl/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -560,7 +560,7 @@ deflateSections(ElfFile &file)
* Calculate section file offsets.
*
* Expected order:
* RPL_CRCS > RPL_FILEINFO > RPL_IMPORTS >
* RPL_CRCS > RPL_FILEINFO >
* Data sections > Read sections > Text sections > Temp sections
*/
static bool
Expand Down Expand Up @@ -593,14 +593,6 @@ calculateSectionOffsets(ElfFile &file)
}
}

for (auto &section : file.sections) {
if (section->header.type == elf::SHT_RPL_IMPORTS) {
section->header.offset = offset;
section->header.size = static_cast<uint32_t>(section->data.size());
offset += section->header.size;
}
}

// First the "dataMin / dataMax" sections, which are:
// - !(flags & SHF_EXECINSTR)
// - flags & SHF_WRITE
Expand All @@ -624,7 +616,7 @@ calculateSectionOffsets(ElfFile &file)
}

// Next the "readMin / readMax" sections, which are:
// - !(flags & SHF_EXECINSTR) || type == SHT_RPL_EXPORTS
// - !(flags & SHF_EXECINSTR) || type == SHT_RPL_EXPORTS || type == SHT_RPL_IMPORTS
// - !(flags & SHF_WRITE)
// - flags & SHF_ALLOC
for (auto &section : file.sections) {
Expand All @@ -637,7 +629,8 @@ calculateSectionOffsets(ElfFile &file)
}

if ((!(section->header.flags & elf::SHF_EXECINSTR) ||
section->header.type == elf::SHT_RPL_EXPORTS) &&
section->header.type == elf::SHT_RPL_EXPORTS ||
section->header.type == elf::SHT_RPL_IMPORTS) &&
!(section->header.flags & elf::SHF_WRITE) &&
(section->header.flags & elf::SHF_ALLOC)) {
section->header.offset = offset;
Expand Down

0 comments on commit b03e4af

Please sign in to comment.