From 4ed85e9b9e183fc5c817129c1fbef67d3a3abaf5 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 23 Feb 2021 19:45:29 +0100 Subject: [PATCH] LibELF: Don't build barely-used section lookup table in ELF::Image The name-to-section lookup table was only used in a handful of places, and none of them were calling it nearly enough to justify building a cache for it in the first place. So let's get rid of it and reduce startup time by a little bit. :^) --- Userland/Libraries/LibELF/Image.cpp | 13 +++++-------- Userland/Libraries/LibELF/Image.h | 5 +---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Userland/Libraries/LibELF/Image.cpp b/Userland/Libraries/LibELF/Image.cpp index ab085de330..07233f5e0d 100644 --- a/Userland/Libraries/LibELF/Image.cpp +++ b/Userland/Libraries/LibELF/Image.cpp @@ -186,12 +186,6 @@ bool Image::parse() } } - // Then create a name-to-index map. - for (unsigned i = 0; i < section_count(); ++i) { - auto section = this->section(i); - m_sections.set(section.name(), move(i)); - } - return m_valid; } @@ -298,8 +292,11 @@ Image::RelocationSection Image::Section::relocations() const Image::Section Image::lookup_section(const String& name) const { ASSERT(m_valid); - if (auto it = m_sections.find(name); it != m_sections.end()) - return section((*it).value); + for (unsigned i = 0; i < section_count(); ++i) { + auto section = this->section(i); + if (section.name() == name) + return section; + } return section(0); } diff --git a/Userland/Libraries/LibELF/Image.h b/Userland/Libraries/LibELF/Image.h index d477e09978..361be1a5c6 100644 --- a/Userland/Libraries/LibELF/Image.h +++ b/Userland/Libraries/LibELF/Image.h @@ -26,10 +26,8 @@ #pragma once -#include -#include -#include #include +#include #include #include @@ -230,7 +228,6 @@ private: const u8* m_buffer { nullptr }; size_t m_size { 0 }; bool m_verbose_logging { true }; - HashMap m_sections; bool m_valid { false }; unsigned m_symbol_table_section_index { 0 }; unsigned m_string_table_section_index { 0 };