From: Eli Bendersky Date: Wed, 5 Sep 2018 12:42:10 +0000 (-0700) Subject: Move arm reloc test to proper location and simplify its code a bit X-Git-Tag: v0.26~37 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=494ce81192c1c767d9eb8b76a75da0f3e9e38d38;p=pyelftools.git Move arm reloc test to proper location and simplify its code a bit --- diff --git a/test/test_arm_call_reloc.py b/test/test_arm_call_reloc.py new file mode 100644 index 0000000..354c3a7 --- /dev/null +++ b/test/test_arm_call_reloc.py @@ -0,0 +1,45 @@ +#------------------------------------------------------------------------------- +# elftools tests +# +# Test 'R_ARM_CALL' relocation type support. +# Compare the '.text' section data of ELF file that was relocated by elftools +# with an ELF file that was relocated by linker. +# +# Dmitry Koltunov (koltunov@ispras.ru) +# This code is in the public domain +#------------------------------------------------------------------------------- +import os +import sys +import unittest + +from elftools.common.py3compat import BytesIO +from elftools.elf.elffile import ELFFile +from elftools.elf.relocation import RelocationHandler + + +def do_relocation(rel_elf): + data = rel_elf.get_section_by_name('.text').data() + rh = RelocationHandler(rel_elf) + + stream = BytesIO() + stream.write(data) + + rel = rel_elf.get_section_by_name('.rel.text') + rh.apply_section_relocations(stream, rel) + return stream.getvalue() + + +class TestARMRElocation(unittest.TestCase): + def test_reloc(self): + test_dir = os.path.join('test', 'testfiles_for_unittests') + with open(os.path.join(test_dir, 'arm_reloc_unrelocated.o'), 'rb') as rel_f, \ + open(os.path.join(test_dir, 'arm_reloc_relocated.elf'), 'rb') as f: + rel_elf = ELFFile(rel_f) + elf = ELFFile(f) + + # Comparison of '.text' section data + self.assertEquals(do_relocation(rel_elf), + elf.get_section_by_name('.text').data()) + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_dwarf_expr.py b/test/test_dwarf_expr.py index 747ee38..a04c206 100644 --- a/test/test_dwarf_expr.py +++ b/test/test_dwarf_expr.py @@ -68,5 +68,3 @@ class TestExprDumper(unittest.TestCase): if __name__ == '__main__': unittest.main() - - diff --git a/test_arm_call_reloc.py b/test_arm_call_reloc.py deleted file mode 100755 index 8a2eac5..0000000 --- a/test_arm_call_reloc.py +++ /dev/null @@ -1,47 +0,0 @@ -#------------------------------------------------------------------------------- -# elftools tests -# -# Test 'R_ARM_CALL' relocation type support. -# Compare the '.text' section data of ELF file that was relocated by elftools -# with an ELF file that was relocated by linker. -# -# Dmitry Koltunov (koltunov@ispras.ru) -# This code is in the public domain -#------------------------------------------------------------------------------- -import os -import sys -import unittest - -from elftools.common.py3compat import BytesIO -from elftools.elf.elffile import ELFFile -from elftools.elf.relocation import RelocationHandler - - -def do_relocation(rel_elf): - data = rel_elf.get_section_by_name('.text').data() - rh = RelocationHandler(rel_elf) - - stream = BytesIO() - stream.write(data) - - rel = rel_elf.get_section_by_name('.rel.text') - rh.apply_section_relocations(stream, rel) - return data.getvalue() - - #stream.seek(0) - #data = stream.readlines() - - #return data - - -class TestARMRElocation(unittest.TestCase): - def test_reloc(self): - test_dir = os.path.joinjoin('test', 'testfiles_for_unittests') - with open(join(test_dir, 'arm_reloc_unrelocated.o'), 'rb') as rel_f, \ - open(join(test_dir, 'arm_reloc_relocated.elf'), 'rb') as f: - rel_elf = ELFFile(rel_f) - elf = ELFFile(f) - - # Comparison of '.text' section data - self.assertEquals(do_relocation(rel_elf), - elf.get_section_by_name('.text').data())