Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: gdb/gdb-gdb.py

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/gdb-code-style.el ('k') | gdb/gdb-gdb.gdb.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (C) 2009-2012 Free Software Foundation, Inc. 1 # Copyright (C) 2009-2012 Free Software Foundation, Inc.
2 # 2 #
3 # This file is part of GDB. 3 # This file is part of GDB.
4 # 4 #
5 # This program is free software; you can redistribute it and/or modify 5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by 6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or 7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version. 8 # (at your option) any later version.
9 # 9 #
10 # This program is distributed in the hope that it will be useful, 10 # This program is distributed in the hope that it will be useful,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 print " `struct type' pretty-printer will be degraded" 92 print " `struct type' pretty-printer will be degraded"
93 return 93 return
94 try: 94 try:
95 iflags = gdb.lookup_type("enum type_instance_flag_value") 95 iflags = gdb.lookup_type("enum type_instance_flag_value")
96 except: 96 except:
97 print "Warning: Cannot find enum type_instance_flag_value type." 97 print "Warning: Cannot find enum type_instance_flag_value type."
98 print " `struct type' pretty-printer will be degraded" 98 print " `struct type' pretty-printer will be degraded"
99 return 99 return
100 # Note: TYPE_FLAG_MIN is a duplicate of TYPE_FLAG_UNSIGNED, 100 # Note: TYPE_FLAG_MIN is a duplicate of TYPE_FLAG_UNSIGNED,
101 # so exclude it from the list we are building. 101 # so exclude it from the list we are building.
102 TYPE_FLAGS = [TypeFlag(field.name, field.bitpos) 102 TYPE_FLAGS = [TypeFlag(field.name, field.enumval)
103 for field in flags.fields() 103 for field in flags.fields()
104 if field.name != 'TYPE_FLAG_MIN'] 104 if field.name != 'TYPE_FLAG_MIN']
105 TYPE_FLAGS += [TypeFlag(field.name, field.bitpos) 105 TYPE_FLAGS += [TypeFlag(field.name, field.enumval)
106 for field in iflags.fields()] 106 for field in iflags.fields()]
107 TYPE_FLAGS.sort() 107 TYPE_FLAGS.sort()
108 108
109 class StructTypePrettyPrinter: 109 class StructTypePrettyPrinter:
110 """Pretty-print an object of type struct type""" 110 """Pretty-print an object of type struct type"""
111 def __init__(self, val): 111 def __init__(self, val):
112 self.val = val 112 self.val = val
113 def to_string(self): 113 def to_string(self):
114 fields = [] 114 fields = []
115 fields.append("pointer_type = %s" % self.val['pointer_type']) 115 fields.append("pointer_type = %s" % self.val['pointer_type'])
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 else: 147 else:
148 return "%s (gdbarch)" % self.val['owner']['gdbarch'] 148 return "%s (gdbarch)" % self.val['owner']['gdbarch']
149 def struct_field_location_img(self, field_val): 149 def struct_field_location_img(self, field_val):
150 """Return an image of the loc component inside the given field 150 """Return an image of the loc component inside the given field
151 gdb.Value. 151 gdb.Value.
152 """ 152 """
153 loc_val = field_val['loc'] 153 loc_val = field_val['loc']
154 loc_kind = str(field_val['loc_kind']) 154 loc_kind = str(field_val['loc_kind'])
155 if loc_kind == "FIELD_LOC_KIND_BITPOS": 155 if loc_kind == "FIELD_LOC_KIND_BITPOS":
156 return 'bitpos = %d' % loc_val['bitpos'] 156 return 'bitpos = %d' % loc_val['bitpos']
157 elif loc_kind == "FIELD_LOC_KIND_ENUMVAL":
158 return 'enumval = %d' % loc_val['enumval']
157 elif loc_kind == "FIELD_LOC_KIND_PHYSADDR": 159 elif loc_kind == "FIELD_LOC_KIND_PHYSADDR":
158 return 'physaddr = 0x%x' % loc_val['physaddr'] 160 return 'physaddr = 0x%x' % loc_val['physaddr']
159 elif loc_kind == "FIELD_LOC_KIND_PHYSNAME": 161 elif loc_kind == "FIELD_LOC_KIND_PHYSNAME":
160 return 'physname = %s' % loc_val['physname'] 162 return 'physname = %s' % loc_val['physname']
161 elif loc_kind == "FIELD_LOC_KIND_DWARF_BLOCK": 163 elif loc_kind == "FIELD_LOC_KIND_DWARF_BLOCK":
162 return 'dwarf_block = %s' % loc_val['dwarf_block'] 164 return 'dwarf_block = %s' % loc_val['dwarf_block']
163 else: 165 else:
164 return 'loc = ??? (unsupported loc_kind value)' 166 return 'loc = ??? (unsupported loc_kind value)'
165 def struct_field_img(self, fieldno): 167 def struct_field_img(self, fieldno):
166 """Return an image of the main_type field number FIELDNO. 168 """Return an image of the main_type field number FIELDNO.
167 """ 169 """
168 f = self.val['flds_bnds']['fields'][fieldno] 170 f = self.val['flds_bnds']['fields'][fieldno]
169 label = "field[%d]:" % fieldno 171 label = "flds_bnds.fields[%d]:" % fieldno
170 if f['artificial']: 172 if f['artificial']:
171 label += " (artificial)" 173 label += " (artificial)"
172 fields = [] 174 fields = []
173 fields.append("name = %s" % f['name']) 175 fields.append("name = %s" % f['name'])
174 fields.append("type = %s" % f['type']) 176 fields.append("type = %s" % f['type'])
175 fields.append("loc_kind = %s" % f['loc_kind']) 177 fields.append("loc_kind = %s" % f['loc_kind'])
176 fields.append("bitsize = %d" % f['bitsize']) 178 fields.append("bitsize = %d" % f['bitsize'])
177 fields.append(self.struct_field_location_img(f)) 179 fields.append(self.struct_field_location_img(f))
178 return label + "\n" + " {" + ",\n ".join(fields) + "}" 180 return label + "\n" + " {" + ",\n ".join(fields) + "}"
179 def bounds_img(self): 181 def bounds_img(self):
180 """Return an image of the main_type bounds. 182 """Return an image of the main_type bounds.
181 """ 183 """
182 b = self.val['flds_bnds']['bounds'].dereference() 184 b = self.val['flds_bnds']['bounds'].dereference()
183 low = str(b['low']) 185 low = str(b['low'])
184 if b['low_undefined'] != 0: 186 if b['low_undefined'] != 0:
185 low += " (undefined)" 187 low += " (undefined)"
186 high = str(b['high']) 188 high = str(b['high'])
187 if b['high_undefined'] != 0: 189 if b['high_undefined'] != 0:
188 high += " (undefined)" 190 high += " (undefined)"
189 return "bounds = {%s, %s}" % (low, high) 191 return "flds_bnds.bounds = {%s, %s}" % (low, high)
190 def type_specific_img(self): 192 def type_specific_img(self):
191 """Return a string image of the main_type type_specific union. 193 """Return a string image of the main_type type_specific union.
192 Only the relevant component of that union is printed (based on 194 Only the relevant component of that union is printed (based on
193 the value of the type_specific_kind field. 195 the value of the type_specific_kind field.
194 """ 196 """
195 type_specific_kind = str(self.val['type_specific_field']) 197 type_specific_kind = str(self.val['type_specific_field'])
196 type_specific = self.val['type_specific'] 198 type_specific = self.val['type_specific']
197 if type_specific_kind == "TYPE_SPECIFIC_NONE": 199 if type_specific_kind == "TYPE_SPECIFIC_NONE":
198 img = 'type_specific_field = %s' % type_specific_kind 200 img = 'type_specific_field = %s' % type_specific_kind
199 elif type_specific_kind == "TYPE_SPECIFIC_CPLUS_STUFF": 201 elif type_specific_kind == "TYPE_SPECIFIC_CPLUS_STUFF":
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 # objfile. 256 # objfile.
255 register_pretty_printer(gdb.current_objfile()) 257 register_pretty_printer(gdb.current_objfile())
256 else: 258 else:
257 # We need to locate the objfile corresponding to the GDB 259 # We need to locate the objfile corresponding to the GDB
258 # executable, and register the pretty-printer for that objfile. 260 # executable, and register the pretty-printer for that objfile.
259 # FIXME: The condition used to match the objfile is too simplistic 261 # FIXME: The condition used to match the objfile is too simplistic
260 # and will not work on Windows. 262 # and will not work on Windows.
261 for objfile in gdb.objfiles(): 263 for objfile in gdb.objfiles():
262 if os.path.basename(objfile.filename) == "gdb": 264 if os.path.basename(objfile.filename) == "gdb":
263 objfile.pretty_printers.append(type_lookup_function) 265 objfile.pretty_printers.append(type_lookup_function)
OLDNEW
« no previous file with comments | « gdb/gdb-code-style.el ('k') | gdb/gdb-gdb.gdb.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698