From b7ee0191ea8a238a2607258a9c75809615680372 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 4 Sep 2021 20:01:58 +0200 Subject: [PATCH] LibELF: Name non-executable map regions ".rodata" instead of ".text" --- Userland/Libraries/LibELF/DynamicLoader.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibELF/DynamicLoader.cpp b/Userland/Libraries/LibELF/DynamicLoader.cpp index ec423fa51e..548ad4b44a 100644 --- a/Userland/Libraries/LibELF/DynamicLoader.cpp +++ b/Userland/Libraries/LibELF/DynamicLoader.cpp @@ -322,6 +322,13 @@ void DynamicLoader::load_program_headers() FlatPtr ph_base = region.desired_load_address().page_base().get(); FlatPtr ph_end = ph_base + round_up_to_power_of_two(region.size_in_memory() + region.desired_load_address().get() - ph_base, PAGE_SIZE); + StringBuilder builder; + builder.append(m_filename); + if (region.is_executable()) + builder.append(": .text"); + else + builder.append(": .rodata"); + // Now we can map the text segment at the reserved address. auto* segment_base = (u8*)mmap_with_name( (u8*)reservation + ph_base - ph_load_base, @@ -330,7 +337,7 @@ void DynamicLoader::load_program_headers() MAP_FILE | MAP_SHARED | MAP_FIXED, m_image_fd, VirtualAddress { region.offset() }.page_base().get(), - String::formatted("{}: .text", m_filename).characters()); + builder.to_string().characters()); if (segment_base == MAP_FAILED) { perror("mmap non-writable");