do not care about sections as hazel teaches

This commit is contained in:
2026-05-11 22:20:49 +02:00
parent 2b0176790e
commit cc2dfc0218
+24 -8
View File
@@ -2,18 +2,34 @@
#include <elfio/elfio.hpp> #include <elfio/elfio.hpp>
#include <ircolib/mem_access.hpp> #include <ircolib/mem_access.hpp>
int main() { int main(int argc, char **argv) {
ELFIO::elfio reader; ELFIO::elfio reader;
if (!reader.load("tests/elf/application.elf")) if (!reader.load("tests/application/application.elf"))
return 1; return 1;
for (const auto &section : reader.sections) { size_t sanity_bss_check_count = 0;
for (const auto &segment : reader.segments) {
if (ircolib::IsInsideRange(section->get_address(), segment->get_virtual_address(), for (const auto &segment : reader.segments) {
segment->get_virtual_address() + segment->get_memory_size() - 1)) const auto segment_type = segment->get_type();
std::println("Found section {} @ 0x{:08X} -> 0x{:08X}", section->get_index(), section->get_address(), if (segment_type != ELFIO::PT_LOAD && segment_type != ELFIO::PT_TLS && segment_type != ELFIO::PT_NOTE)
section->get_address() + section->get_size() - 1); continue;
if (segment->get_memory_size() == 0)
continue;
if (segment->get_file_size() == 0) {
sanity_bss_check_count++;
if (sanity_bss_check_count > 1)
std::println("weee does not support multiple .bss segments");
} }
const bool exc = segment->get_flags() & ELFIO::PF_X;
const bool rd = segment->get_flags() & ELFIO::PF_R;
const bool wr = segment->get_flags() & ELFIO::PF_W;
std::println("Segment {} {}{}{} @ 0x{:08X} -> 0x{:08X}", segment->get_index(), rd ? 'R' : '_', wr ? 'W' : '_',
exc ? 'X' : '_', segment->get_virtual_address(),
segment->get_virtual_address() + segment->get_memory_size() - 1);
} }
return 0; return 0;