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

Side by Side Diff: gdb/python/py-block.c

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/python/py-auto-load.c ('k') | gdb/python/py-breakpoint.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Python interface to blocks. 1 /* Python interface to blocks.
2 2
3 Copyright (C) 2008-2012 Free Software Foundation, Inc. 3 Copyright (C) 2008-2012 Free Software Foundation, Inc.
4 4
5 This file is part of GDB. 5 This file is part of GDB.
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or 9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
(...skipping 23 matching lines...) Expand all
34 store a pointer to the object file for later use. */ 34 store a pointer to the object file for later use. */
35 struct objfile *objfile; 35 struct objfile *objfile;
36 /* Keep track of all blocks with a doubly-linked list. Needed for 36 /* Keep track of all blocks with a doubly-linked list. Needed for
37 block invalidation if the source object file has been freed. */ 37 block invalidation if the source object file has been freed. */
38 struct blpy_block_object *prev; 38 struct blpy_block_object *prev;
39 struct blpy_block_object *next; 39 struct blpy_block_object *next;
40 } block_object; 40 } block_object;
41 41
42 typedef struct { 42 typedef struct {
43 PyObject_HEAD 43 PyObject_HEAD
44 /* The block dictionary of symbols. */ 44 /* The block. */
45 struct dictionary *dict; 45 const struct block *block;
46 /* The iterator for that dictionary. */ 46 /* The iterator for that block. */
47 struct dict_iterator iter; 47 struct block_iterator iter;
48 /* Has the iterator been initialized flag. */ 48 /* Has the iterator been initialized flag. */
49 int initialized_p; 49 int initialized_p;
50 /* Pointer back to the original source block object. Needed to 50 /* Pointer back to the original source block object. Needed to
51 check if the block is still valid, and has not been invalidated 51 check if the block is still valid, and has not been invalidated
52 when an object file has been freed. */ 52 when an object file has been freed. */
53 struct blpy_block_object *source; 53 struct blpy_block_object *source;
54 } block_syms_iterator_object; 54 } block_syms_iterator_object;
55 55
56 /* Require a valid block. All access to block_object->block should be 56 /* Require a valid block. All access to block_object->block should be
57 gated by this call. */ 57 gated by this call. */
(...skipping 29 matching lines...) Expand all
87 block_syms_iterator_object *block_iter_obj; 87 block_syms_iterator_object *block_iter_obj;
88 const struct block *block = NULL; 88 const struct block *block = NULL;
89 89
90 BLPY_REQUIRE_VALID (self, block); 90 BLPY_REQUIRE_VALID (self, block);
91 91
92 block_iter_obj = PyObject_New (block_syms_iterator_object, 92 block_iter_obj = PyObject_New (block_syms_iterator_object,
93 &block_syms_iterator_object_type); 93 &block_syms_iterator_object_type);
94 if (block_iter_obj == NULL) 94 if (block_iter_obj == NULL)
95 return NULL; 95 return NULL;
96 96
97 block_iter_obj->dict = BLOCK_DICT (block); 97 block_iter_obj->block = block;
98 block_iter_obj->initialized_p = 0; 98 block_iter_obj->initialized_p = 0;
99 Py_INCREF (self); 99 Py_INCREF (self);
100 block_iter_obj->source = (block_object *) self; 100 block_iter_obj->source = (block_object *) self;
101 101
102 return (PyObject *) block_iter_obj; 102 return (PyObject *) block_iter_obj;
103 } 103 }
104 104
105 static PyObject * 105 static PyObject *
106 blpy_get_start (PyObject *self, void *closure) 106 blpy_get_start (PyObject *self, void *closure)
107 { 107 {
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 static PyObject * 304 static PyObject *
305 blpy_block_syms_iternext (PyObject *self) 305 blpy_block_syms_iternext (PyObject *self)
306 { 306 {
307 block_syms_iterator_object *iter_obj = (block_syms_iterator_object *) self; 307 block_syms_iterator_object *iter_obj = (block_syms_iterator_object *) self;
308 struct symbol *sym; 308 struct symbol *sym;
309 309
310 BLPY_ITER_REQUIRE_VALID (iter_obj->source); 310 BLPY_ITER_REQUIRE_VALID (iter_obj->source);
311 311
312 if (!iter_obj->initialized_p) 312 if (!iter_obj->initialized_p)
313 { 313 {
314 sym = dict_iterator_first (iter_obj->dict, &(iter_obj->iter)); 314 sym = block_iterator_first (iter_obj->block, &(iter_obj->iter));
315 iter_obj->initialized_p = 1; 315 iter_obj->initialized_p = 1;
316 } 316 }
317 else 317 else
318 sym = dict_iterator_next (&(iter_obj->iter)); 318 sym = block_iterator_next (&(iter_obj->iter));
319 319
320 if (sym == NULL) 320 if (sym == NULL)
321 { 321 {
322 PyErr_SetString (PyExc_StopIteration, _("Symbol is null.")); 322 PyErr_SetString (PyExc_StopIteration, _("Symbol is null."));
323 return NULL; 323 return NULL;
324 } 324 }
325 325
326 return symbol_to_symbol_object (sym); 326 return symbol_to_symbol_object (sym);
327 } 327 }
328 328
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, /*tp_flags*/ 540 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_ITER, /*tp_flags*/
541 "GDB block syms iterator object", /*tp_doc */ 541 "GDB block syms iterator object", /*tp_doc */
542 0, /*tp_traverse */ 542 0, /*tp_traverse */
543 0, /*tp_clear */ 543 0, /*tp_clear */
544 0, /*tp_richcompare */ 544 0, /*tp_richcompare */
545 0, /*tp_weaklistoffset */ 545 0, /*tp_weaklistoffset */
546 blpy_block_syms_iter, /*tp_iter */ 546 blpy_block_syms_iter, /*tp_iter */
547 blpy_block_syms_iternext, /*tp_iternext */ 547 blpy_block_syms_iternext, /*tp_iternext */
548 block_iterator_object_methods /*tp_methods */ 548 block_iterator_object_methods /*tp_methods */
549 }; 549 };
OLDNEW
« no previous file with comments | « gdb/python/py-auto-load.c ('k') | gdb/python/py-breakpoint.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698