blob: 29d57a7915ed11d6c9aa79da0fdd799c8d7c14b3 [file] [log] [blame]
#------------------------------------------------------------------------------
# elftools tests
#
# Seva Alekseyev (sevaa@sprynet.com)
# This code is in the public domain
#------------------------------------------------------------------------------
import unittest
import os, sys, io
# sys.path.insert(1, os.getcwd())
from elftools.elf.elffile import ELFFile
from elftools.dwarf.dwarfinfo import DWARFInfo, DebugSectionDescriptor, DwarfConfig
from elftools.dwarf.locationlists import LocationParser
class TestGNUCallAttributesHaveLocation(unittest.TestCase):
def _test_file(self, filename):
filepath = os.path.join('test', 'testfiles_for_unittests', filename)
with open(filepath, 'rb') as f:
elffile = ELFFile(f)
dwarfinfo = elffile.get_dwarf_info()
for CU in dwarfinfo.iter_CUs():
ver = CU['version']
for DIE in CU.iter_DIEs():
for key in DIE.attributes:
attr = DIE.attributes[key]
if attr.form == 'DW_FORM_exprloc':
self.assertTrue(LocationParser.attribute_has_location(attr, CU['version']), "Attribute %s not recognized as a location" % key)
def test_main(self):
self._test_file('dwarf_gnuops1.o')
if __name__ == '__main__':
unittest.main()