blob: 9fab30e058b9ecc415cb5015a5480fe9c287159f [file] [log] [blame]
#-------------------------------------------------------------------------------
# elftools tests
#
# Andreas Ziegler (andreas.ziegler@fau.de)
# This code is in the public domain
#-------------------------------------------------------------------------------
import unittest
import os
from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError
from elftools.elf.hash import HashSection, GNUHashSection
class TestELFHash(unittest.TestCase):
def test_get_number_of_syms(self):
""" Verify we can get get the number of symbols from an ELF hash
section.
"""
with open(os.path.join('test', 'testfiles_for_unittests',
'aarch64_super_stripped.elf'), 'rb') as f:
elf = ELFFile(f)
for segment in elf.iter_segments():
if segment.header.p_type != 'PT_DYNAMIC':
continue
_, hash_offset = segment.get_table_offset('DT_HASH')
hash_section = HashSection(elf.stream, hash_offset, elf)
self.assertEqual(hash_section.get_number_of_symbols(), 4)
class TestGNUHash(unittest.TestCase):
def test_get_number_of_syms(self):
""" Verify we can get get the number of symbols from a GNU hash
section.
"""
with open(os.path.join('test', 'testfiles_for_unittests',
'lib_versioned64.so.1.elf'), 'rb') as f:
elf = ELFFile(f)
for segment in elf.iter_segments():
if segment.header.p_type != 'PT_DYNAMIC':
continue
_, hash_offset = segment.get_table_offset('DT_GNU_HASH')
hash_section = GNUHashSection(elf.stream, hash_offset, elf)
self.assertEqual(hash_section.get_number_of_symbols(), 24)