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])
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])
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