예제 #1
0
 def test_undefined_reference(self):
     arch = get_arch('arm')
     object1 = ObjectFile(arch)
     object1.get_section('.text', create=True)
     object1.add_symbol(0, 'undef', 'global', None, None, 'object', 0)
     object1.gen_relocation('rel8', 0, '.text', 0)
     object2 = ObjectFile(arch)
     with self.assertRaises(CompilerError):
         link([object1, object2])
예제 #2
0
 def test_rel8_relocation(self):
     arch = get_arch('arm')
     object1 = ObjectFile(arch)
     object1.get_section('.text', create=True).add_data(bytes([0] * 100))
     object1.add_symbol(10, 'a', 'global', None, None, 'object', 0)
     object1.gen_relocation('rel8', 10, '.text', 0)
     object2 = ObjectFile(arch)
     object2.get_section('.text', create=True).add_data(bytes([0] * 100))
     object2.add_symbol(0, 'a', 'global', 24, '.text', 'object', 0)
     link([object1, object2])
예제 #3
0
 def make_twins(self):
     """ Make two object files that have equal contents """
     arch = get_arch('arm')
     object1 = ObjectFile(arch)
     object2 = ObjectFile(arch)
     object2.get_section('code', create=True).add_data(bytes(range(55)))
     object1.get_section('code', create=True).add_data(bytes(range(55)))
     object1.add_symbol(10, 'A', 'global', None, None, 'object', 0)
     object2.add_symbol(10, 'A', 'global', None, None, 'object', 0)
     object1.gen_relocation('rel8', 10, 'code', 0x2)
     object2.gen_relocation('rel8', 10, 'code', 0x2)
     object1.add_symbol(0, 'A2', 'global', 0x90, 'code', 'object', 0)
     object2.add_symbol(0, 'A2', 'global', 0x90, 'code', 'object', 0)
     object1.add_symbol(1, 'A3', 'global', 0x90, 'code', 'object', 0)
     object2.add_symbol(1, 'A3', 'global', 0x90, 'code', 'object', 0)
     object1.add_image(Image('a', 0x0))
     object1.get_image('a').add_section(object1.get_section('code'))
     object2.add_image(Image('a', 0x0))
     object2.get_image('a').add_section(object2.get_section('code'))
     return object1, object2