Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Unified Diff: courgette/disassembler_elf_32_x86_unittest.cc

Issue 1900223002: [Courgette] Make ELF section header sorting less intrusive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « courgette/disassembler_elf_32.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: courgette/disassembler_elf_32_x86_unittest.cc
diff --git a/courgette/disassembler_elf_32_x86_unittest.cc b/courgette/disassembler_elf_32_x86_unittest.cc
index 59fa3e6f3ea083350377f7b40618afb9b1308e64..90d17d6225eaecd13ec3bb77262b3c08482dd51f 100644
--- a/courgette/disassembler_elf_32_x86_unittest.cc
+++ b/courgette/disassembler_elf_32_x86_unittest.cc
@@ -10,6 +10,7 @@
#include <algorithm>
#include <memory>
#include <string>
+#include <vector>
#include "courgette/assembly_program.h"
#include "courgette/base_test_unittest.h"
@@ -19,6 +20,23 @@ namespace courgette {
namespace {
+class TestDisassemblerElf32X86 : public DisassemblerElf32X86 {
+ public:
+ TestDisassemblerElf32X86(const void* start, size_t length)
+ : DisassemblerElf32X86(start, length) { }
+ ~TestDisassemblerElf32X86() override { }
+
+ void TestSectionHeaderFileOffsetOrder() {
+ std::vector<FileOffset> file_offsets;
+ for (Elf32_Half section_id : section_header_file_offset_order_) {
+ const Elf32_Shdr* section_header = SectionHeader(section_id);
+ file_offsets.push_back(section_header->sh_offset);
+ }
+ EXPECT_EQ(static_cast<size_t>(SectionHeaderCount()), file_offsets.size());
Will Harris 2016/04/19 18:36:35 brackets in wrong place?
huangs 2016/04/19 19:02:53 I looked carefully, looks alright. static_cast<>(
Will Harris 2016/04/19 19:44:25 ah yes you're right I was missing the close bracke
huangs 2016/04/19 19:59:52 Acknowledged.
+ EXPECT_TRUE(std::is_sorted(file_offsets.begin(), file_offsets.end()));
+ }
+};
+
class DisassemblerElf32X86Test : public BaseTest {
public:
void TestExe(const char* file_name,
@@ -32,8 +50,8 @@ void DisassemblerElf32X86Test::TestExe(const char* file_name,
using TypedRVA = DisassemblerElf32::TypedRVA;
std::string file1 = FileContents(file_name);
- std::unique_ptr<DisassemblerElf32X86> disassembler(
- new DisassemblerElf32X86(file1.c_str(), file1.length()));
+ std::unique_ptr<TestDisassemblerElf32X86> disassembler(
+ new TestDisassemblerElf32X86(file1.c_str(), file1.length()));
bool can_parse_header = disassembler->ParseHeader();
EXPECT_TRUE(can_parse_header);
@@ -84,12 +102,15 @@ void DisassemblerElf32X86Test::TestExe(const char* file_name,
}
}
EXPECT_FALSE(found_match);
+
+ disassembler->TestSectionHeaderFileOffsetOrder();
}
} // namespace
TEST_F(DisassemblerElf32X86Test, All) {
TestExe("elf-32-1", 200, 3441);
+ TestExe("elf-32-high-bss", 0, 13);
}
} // namespace courgette
« no previous file with comments | « courgette/disassembler_elf_32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698