コード例 #1
0
ファイル: addrxlat.py プロジェクト: pmladek/crash-python
    def cb_sym(self, symtype, *args):
        if symtype == addrxlat.SYM_VALUE:
            ms = gdb.lookup_minimal_symbol(args[0])
            if ms is not None:
                return long(ms.value().address)
        elif symtype == addrxlat.SYM_SIZEOF:
            sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                return sym.type.sizeof
        elif symtype == addrxlat.SYM_OFFSETOF:
            sym = gdb.lookup_symbol(args[0], None, gdb.SYMBOL_STRUCT_DOMAIN)[0]
            if sym is None:
                # this works for typedefs:
                sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                return offsetof(sym.type, args[1])

        return super(TranslationContext, self).cb_sym(symtype, *args)
コード例 #2
0
ファイル: addrxlat.py プロジェクト: tabraham/crash-python
    def cb_sym(self, symtype, *args):
        if symtype == addrxlat.SYM_VALUE:
            ms = gdb.lookup_minimal_symbol(args[0])
            if ms is not None:
                return long(ms.value().address)
        elif symtype == addrxlat.SYM_SIZEOF:
            sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                return sym.type.sizeof
        elif symtype == addrxlat.SYM_OFFSETOF:
            sym = gdb.lookup_symbol(args[0], None, gdb.SYMBOL_STRUCT_DOMAIN)[0]
            if sym is None:
                # this works for typedefs:
                sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                return offsetof(sym.type, args[1])

        return super(TranslationContext, self).cb_sym(symtype, *args)
コード例 #3
0
ファイル: addrxlat.py プロジェクト: tehcaster/crash-python
    def cb_sym(self, symtype: int, *args: str) -> int:
        if symtype == addrxlat.SYM_VALUE:
            ms = gdb.lookup_minimal_symbol(args[0])
            if ms is not None:
                return int(ms.value().address)
        elif symtype == addrxlat.SYM_SIZEOF:
            sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                return sym.type.sizeof
        elif symtype == addrxlat.SYM_OFFSETOF:
            sym = gdb.lookup_symbol(args[0], None, gdb.SYMBOL_STRUCT_DOMAIN)[0]
            if sym is None:
                # this works for typedefs:
                sym = gdb.lookup_symbol(args[0], None)[0]
            if sym is not None:
                ret = offsetof(sym.type, args[1], True)
                if ret is None:
                    raise RuntimeError("offsetof can't return None with errors=True")

        return super().cb_sym(symtype, *args)
コード例 #4
0
 def test_ulong_by_symbol(self):
     t = gdb.lookup_global_symbol('global_ulong_symbol')
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof(t, 'test_member')
コード例 #5
0
 def test_invalid_member(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'invalid_member')
コード例 #6
0
 def test_multi_level_lookup_invalid_first_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'test_member.next_component')
コード例 #7
0
 def test_invalid_python_type(self):
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof(self, 'dontcare')
コード例 #8
0
 def test_embedded_struct_member2(self):
     offset = offsetof(self.test_struct,
                       'embedded_struct_member.embedded_member2')
     self.assertTrue(offset == 22 * self.ulongsize)
コード例 #9
0
 def test_anon_union_member1(self):
     offset = offsetof(self.test_struct, 'anon_union_member1')
     self.assertTrue(offset == 13 * self.ulongsize)
コード例 #10
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_anon_union_pointer_member2(self):
     offset = offsetof(self.test_struct.pointer(), 'anon_union_member2')
     self.assertTrue(offset == 13*self.ulongsize)
コード例 #11
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_anon_union_member1(self):
     offset = offsetof(self.test_struct, 'anon_union_member1')
     self.assertTrue(offset == 13*self.ulongsize)
コード例 #12
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_named_struct_pointer_member2(self):
     offset = offsetof(self.test_struct.pointer(), 'named_struct.named_struct_member2')
     self.assertTrue(offset == 8*self.ulongsize)
コード例 #13
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_named_struct_member1(self):
     offset = offsetof(self.test_struct, 'named_struct.named_struct_member1')
     self.assertTrue(offset == 7*self.ulongsize)
コード例 #14
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_named_struct(self):
     offset = offsetof(self.test_struct, 'named_struct')
     self.assertTrue(offset == 7*self.ulongsize)
コード例 #15
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_anon_struct_embedded_struct_list_prev(self):
     offset = offsetof(self.test_struct.pointer(),
                      'anon_struct_embedded_struct.embedded_list.prev')
     self.assertTrue(offset == 6*self.ulongsize)
コード例 #16
0
 def test_anon_struct_embedded_struct_list_prev(self):
     offset = offsetof(self.test_struct.pointer(),
                       'anon_struct_embedded_struct.embedded_list.prev')
     self.assertTrue(offset == 6 * self.ulongsize)
コード例 #17
0
 def test_named_struct_member1(self):
     offset = offsetof(self.test_struct,
                       'named_struct.named_struct_member1')
     self.assertTrue(offset == 7 * self.ulongsize)
コード例 #18
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_named_union_named_member2(self):
     offset = offsetof(self.test_struct, 'named_union.named_union_member2')
     self.assertTrue(offset == 17*self.ulongsize)
コード例 #19
0
 def test_named_union_named_member2(self):
     offset = offsetof(self.test_struct, 'named_union.named_union_member2')
     self.assertTrue(offset == 17 * self.ulongsize)
コード例 #20
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_named_union_anon_member2(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'named_union_member1')
コード例 #21
0
 def test_enum_lookup(self):
     offset = offsetof(self.test_struct, 'enum_member')
     self.assertTrue(offset == 26 * self.ulongsize)
コード例 #22
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_embedded_struct_member2(self):
     offset = offsetof(self.test_struct,
                       'embedded_struct_member.embedded_member2')
     self.assertTrue(offset == 22*self.ulongsize)
コード例 #23
0
 def test_multi_level_lookup_missing_first_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'missing.embedded_list.prev')
コード例 #24
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_embedded_struct_anon_member2(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'embedded_member2')
コード例 #25
0
 def test_multi_level_lookup_anon_union_missing_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(
             self.test_struct,
             'anon_union_embedded_struct.invalid.next_component')
コード例 #26
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_enum_lookup(self):
     offset = offsetof(self.test_struct, 'enum_member')
     self.assertTrue(offset == 26*self.ulongsize)
コード例 #27
0
 def test_ulong_by_name(self):
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof('unsigned long', 'test_member')
コード例 #28
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_enum_invalid_lookup(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'enum_member.invalid')
コード例 #29
0
 def test_union_by_value(self):
     t = gdb.lookup_global_symbol('global_union_symbol').value()
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof(t, 'member1')
コード例 #30
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_list_prev(self):
     offset = offsetof(self.test_struct,
                       'embedded_struct_member.embedded_list.prev')
     self.assertTrue(offset == 24*self.ulongsize)
コード例 #31
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_struct(self):
     offset = offsetof(self.test_struct, 'test_member')
     self.assertTrue(offset == 0)
コード例 #32
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_missing_first_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'missing.embedded_list.prev')
コード例 #33
0
 def test_named_struct(self):
     offset = offsetof(self.test_struct, 'named_struct')
     self.assertTrue(offset == 7 * self.ulongsize)
コード例 #34
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_invalid_python_type(self):
     with self.assertRaises(InvalidArgumentError):
         offset = offsetof(self, 'dontcare')
コード例 #35
0
 def test_named_struct_pointer_member2(self):
     offset = offsetof(self.test_struct.pointer(),
                       'named_struct.named_struct_member2')
     self.assertTrue(offset == 8 * self.ulongsize)
コード例 #36
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_missing_last_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct,
                           'embedded_struct_member.embedded_list.invalid')
コード例 #37
0
 def test_anon_union_pointer_member2(self):
     offset = offsetof(self.test_struct.pointer(), 'anon_union_member2')
     self.assertTrue(offset == 13 * self.ulongsize)
コード例 #38
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_invalid_first_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'test_member.next_component')
コード例 #39
0
 def test_named_union_anon_member2(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'named_union_member1')
コード例 #40
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_invalid_middle_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct,
                           'embedded_struct_member.embedded_member1.next_component')
コード例 #41
0
 def test_embedded_struct_anon_member2(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'embedded_member2')
コード例 #42
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_multi_level_lookup_anon_union_missing_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct,
                           'anon_union_embedded_struct.invalid.next_component')
コード例 #43
0
 def test_enum_invalid_lookup(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'enum_member.invalid')
コード例 #44
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_type_by_string_name(self):
     offset = offsetof('struct test', 'test_member')
     self.assertTrue(offset == 0)
コード例 #45
0
 def test_multi_level_lookup_list_prev(self):
     offset = offsetof(self.test_struct,
                       'embedded_struct_member.embedded_list.prev')
     self.assertTrue(offset == 24 * self.ulongsize)
コード例 #46
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_type_by_invalid_name(self):
     with self.assertRaises(InvalidArgumentError):
         offset = offsetof('struct invalid_struct', 'test_member')
コード例 #47
0
 def test_multi_level_lookup_missing_last_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct,
                           'embedded_struct_member.embedded_list.invalid')
コード例 #48
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_invalid_member(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(self.test_struct, 'invalid_member')
コード例 #49
0
 def test_multi_level_lookup_invalid_middle_component(self):
     with self.assertRaises(InvalidComponentError):
         offset = offsetof(
             self.test_struct,
             'embedded_struct_member.embedded_member1.next_component')
コード例 #50
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_struct_by_value(self):
     val = gdb.lookup_global_symbol("global_struct_symbol").value()
     offset = offsetof(val, 'test_member')
     self.assertTrue(offset == 0)
コード例 #51
0
 def test_type_by_invalid_name(self):
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof('struct invalid_struct', 'test_member')
コード例 #52
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_ulong_by_name(self):
     with self.assertRaises(InvalidArgumentTypeError):
         offset = offsetof('unsigned long', 'test_member')
コード例 #53
0
 def test_struct_by_value(self):
     val = gdb.lookup_global_symbol("global_struct_symbol").value()
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof(val, 'test_member')
コード例 #54
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_ulong_by_type_pointer(self):
     t = gdb.lookup_type("unsigned long").pointer()
     with self.assertRaises(InvalidArgumentTypeError):
         offset = offsetof(t, 'test_member')
コード例 #55
0
 def test_ulong_by_type_pointer(self):
     t = gdb.lookup_type("unsigned long").pointer()
     with self.assertRaises(NotStructOrUnionError):
         offset = offsetof(t, 'test_member')
コード例 #56
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_ulong_by_symbol(self):
     t = gdb.lookup_global_symbol('global_ulong_symbol')
     with self.assertRaises(InvalidArgumentTypeError):
         offset = offsetof(t, 'test_member')
コード例 #57
0
 def test_void_pointer_by_value(self):
     t = gdb.lookup_global_symbol('global_void_pointer_symbol').value()
     with self.assertRaises(ArgumentTypeError):
         offset = offsetof(t, 'test_member')
コード例 #58
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_void_pointer_by_value(self):
     t = gdb.lookup_global_symbol('global_void_pointer_symbol').value()
     with self.assertRaises(InvalidArgumentTypeError):
         offset = offsetof(t, 'test_member')
コード例 #59
0
 def test_struct(self):
     offset = offsetof(self.test_struct, 'test_member')
     self.assertTrue(offset == 0)
コード例 #60
0
ファイル: test_util.py プロジェクト: pmladek/crash-python
 def test_union_by_value(self):
     t = gdb.lookup_global_symbol('global_union_symbol').value()
     offset = offsetof(t, 'member1')
     self.assertTrue(offset == 0)