mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-23 09:46:04 -05:00
LibELF: Remove DynamicSection from ELFImage
Since ELFDynamicObject needs the actual virtual address of the .dynamic section in the loaded image, and not the file offset like we assumed before, due to MAP_PRIVATE secretly giving us a MAP_SHARED, we can remove all of the Dynamic* code from ELFImage. ELFDynamicLoader only needs ELFImage to get the Program headers at this point. More consolidation opportunities seem likely in the future.
This commit is contained in:
parent
2e349337d3
commit
c21f384d17
Notes:
sideshowbarker
2024-07-19 10:14:56 +09:00
Author: https://github.com/ADKaster Commit: https://github.com/SerenityOS/serenity/commit/c21f384d175 Pull-request: https://github.com/SerenityOS/serenity/pull/1046
2 changed files with 0 additions and 25 deletions
|
@ -117,10 +117,6 @@ bool ELFImage::parse()
|
|||
if (StringView(".strtab") == section_header_table_string(sh.sh_name))
|
||||
m_string_table_section_index = i;
|
||||
}
|
||||
if (sh.sh_type == SHT_DYNAMIC) {
|
||||
ASSERT(!m_dynamic_section_index || m_dynamic_section_index == i);
|
||||
m_dynamic_section_index = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Then create a name-to-index map.
|
||||
|
@ -218,9 +214,3 @@ const ELFImage::Section ELFImage::lookup_section(const String& name) const
|
|||
return section((*it).value);
|
||||
return section(0);
|
||||
}
|
||||
|
||||
const ELFImage::DynamicSection ELFImage::dynamic_section() const
|
||||
{
|
||||
ASSERT(is_dynamic());
|
||||
return section(m_dynamic_section_index);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ public:
|
|||
class RelocationSection;
|
||||
class Symbol;
|
||||
class Relocation;
|
||||
class DynamicSection;
|
||||
|
||||
class Symbol {
|
||||
public:
|
||||
|
@ -111,8 +110,6 @@ public:
|
|||
|
||||
protected:
|
||||
friend class RelocationSection;
|
||||
friend class DynamicSection;
|
||||
friend class DynamicRelocationSection;
|
||||
const ELFImage& m_image;
|
||||
const Elf32_Shdr& m_section_header;
|
||||
unsigned m_section_index;
|
||||
|
@ -150,24 +147,13 @@ public:
|
|||
const Elf32_Rel& m_rel;
|
||||
};
|
||||
|
||||
class DynamicSection : public Section {
|
||||
public:
|
||||
DynamicSection(const Section& section)
|
||||
: Section(section.m_image, section.m_section_index)
|
||||
{
|
||||
ASSERT(type() == SHT_DYNAMIC);
|
||||
}
|
||||
};
|
||||
|
||||
unsigned symbol_count() const;
|
||||
unsigned dynamic_symbol_count() const;
|
||||
unsigned section_count() const;
|
||||
unsigned program_header_count() const;
|
||||
|
||||
const Symbol symbol(unsigned) const;
|
||||
const Section section(unsigned) const;
|
||||
const ProgramHeader program_header(unsigned const) const;
|
||||
const DynamicSection dynamic_section() const;
|
||||
|
||||
template<typename F>
|
||||
void for_each_section(F) const;
|
||||
|
@ -204,7 +190,6 @@ private:
|
|||
bool m_valid { false };
|
||||
unsigned m_symbol_table_section_index { 0 };
|
||||
unsigned m_string_table_section_index { 0 };
|
||||
unsigned m_dynamic_section_index { 0 };
|
||||
};
|
||||
|
||||
template<typename F>
|
||||
|
|
Loading…
Add table
Reference in a new issue