def METHOD_NAME(self, file_path):
    with open(file_path, "rb") as f:
        self.data = BytesIO(f.read())
    self.section_headers_table_offset = read_u32(self.data, 0x20)
    self.num_section_headers = read_u16(self.data, 0x30)
    self.sections = []
    self.section_header_string_table_offset = None
    for i in range(self.num_section_headers):
        section = ELFSection()
        section.read(
            self.data, self.section_headers_table_offset + i * ELFSection.ENTRY_SIZE
        )
        self.sections.append(section)
        if section.type == ELFSectionType.SHT_STRTAB:
            self.section_header_string_table_offset = section.section_offset
    for section in self.sections:
        section.name = read_str_until_null_character(
            self.data, self.section_header_string_table_offset + section.name_offset
        )
    self.sections_by_name = OrderedDict()
    for section in self.sections:
        self.sections_by_name[section.name] = section
    self.relocations = OrderedDict()
    for section in self.sections:
        if section.type == ELFSectionType.SHT_RELA:
            self.relocations[section.name] = []
            for i in range(section.size // ELFRelocation.ENTRY_SIZE):
                relocation = ELFRelocation()
                relocation.read(
                    self.data, section.section_offset + i * ELFRelocation.ENTRY_SIZE
                )
                self.relocations[section.name].append(relocation)
    self.symbols = OrderedDict()
    self.symbols_by_name = OrderedDict()
    for section in self.sections:
        if section.type == ELFSectionType.SHT_SYMTAB:
            self.symbols[section.name] = []
            self.symbols_by_name[section.name] = OrderedDict()
            for i in range(section.size // ELFSymbol.ENTRY_SIZE):
                symbol = ELFSymbol()
                symbol.read(
                    self.data, section.section_offset + i * ELFSymbol.ENTRY_SIZE
                )
                symbol.name = self.read_string_from_table(symbol.name_offset)
                self.symbols[section.name].append(symbol)
                self.symbols_by_name[section.name][symbol.name] = symbol