X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fglib.py;h=f7fe22be8e9933d73e58f8f86a8508c7b07bfe49;hb=20f6cc2a10ba26860e7a6d27c100deadb5497772;hp=494eb69827fe8a444abe40a36958294c44cf7067;hpb=42320706c4dd6a4517a402dc5da5c27dfc6a5356;p=platform%2Fupstream%2Fglib.git diff --git a/glib/glib.py b/glib/glib.py index 494eb69..f7fe22b 100644 --- a/glib/glib.py +++ b/glib/glib.py @@ -1,4 +1,8 @@ import gdb +import sys + +if sys.version_info[0] >= 3: + long = int # This is not quite right, as local vars may override symname def read_global_var (symname): @@ -10,8 +14,15 @@ def g_quark_to_string (quark): quark = long(quark) if quark == 0: return None - val = read_global_var ("g_quarks") - max_q = long(read_global_var ("g_quark_seq_id")) + try: + val = read_global_var ("quarks") + max_q = long(read_global_var ("quark_seq_id")) + except: + try: + val = read_global_var ("g_quarks") + max_q = long(read_global_var ("g_quark_seq_id")) + except: + return None; if quark < max_q: return val[quark].string() return None @@ -76,7 +87,9 @@ class GHashPrinter: def __init__(self, ht, keys_are_strings): self.ht = ht if ht != 0: - self.array = ht["nodes"] + self.keys = ht["keys"] + self.values = ht["values"] + self.hashes = ht["hashes"] self.size = ht["size"] self.pos = 0 self.keys_are_strings = keys_are_strings @@ -93,11 +106,10 @@ class GHashPrinter: self.value = None return v while long(self.pos) < long(self.size): - node = self.array[self.pos] self.pos = self.pos + 1 - if long (node["key_hash"]) >= 2: - key = node["key"] - val = node["value"] + if long (self.hashes[self.pos]) >= 2: + key = self.keys[self.pos] + val = self.values[self.pos] if self.keys_are_strings: key = key.cast (gdb.lookup_type("char").pointer()) @@ -115,10 +127,7 @@ class GHashPrinter: try: string_hash = read_global_var ("g_str_hash") except: - try: - string_hash = read_global_var ("IA__g_str_hash") - except: - string_hash = None + string_hash = None if self.val != 0 and string_hash != None and self.val["hash_func"] == string_hash: self.keys_are_strings = True @@ -132,10 +141,6 @@ class GHashPrinter: return "map" def pretty_printer_lookup (val): - if is_g_type_instance (val): - return GTypePrettyPrinter (val) - -def pretty_printer_lookup (val): # None yet, want things like hash table and list type = val.type.unqualified() @@ -214,7 +219,7 @@ class ForeachCommand (gdb.Command): return (var, val, command) def do_iter(self, arg, item, command): - item.cast (gdb.lookup_type("void").pointer()) + item = item.cast (gdb.lookup_type("void").pointer()) item = long(item) to_eval = "set $%s = (void *)0x%x\n"%(arg, item) gdb.execute(to_eval)