* python/py-frame.c (frapy_block): Use get_frame_block.
authorTom Tromey <tromey@redhat.com>
Thu, 6 Jan 2011 17:16:58 +0000 (17:16 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 6 Jan 2011 17:16:58 +0000 (17:16 +0000)
gdb/ChangeLog
gdb/python/py-frame.c

index a653f2f2a6e1f05ec8e50d7e03df0b05861b3a6a..6a1ed8b2a2768751deb6282f89cdf7533fd91e83 100644 (file)
@@ -1,3 +1,7 @@
+2011-01-06  Tom Tromey  <tromey@redhat.com>
+
+       * python/py-frame.c (frapy_block): Use get_frame_block.
+
 2011-01-06  Joel Brobecker  <brobecker@adacore.com>
 
        Do not stop on SIGPRIO signals by default
index 6bff949c216f3acdae28dd6ed73e1707f6cca859..42ccce900718871dc16a074182a2bc9c78512a7d 100644 (file)
@@ -211,20 +211,22 @@ static PyObject *
 frapy_block (PyObject *self, PyObject *args)
 {
   struct frame_info *frame;
-  struct block *block = NULL;
+  struct block *block = NULL, *fn_block;
   volatile struct gdb_exception except;
-  struct symtab_and_line sal;
 
   TRY_CATCH (except, RETURN_MASK_ALL)
     {
       FRAPY_REQUIRE_VALID ((frame_object *) self, frame);
-
-      find_frame_sal (frame, &sal);
-      block = block_for_pc (get_frame_address_in_block (frame));
+      block = get_frame_block (frame, NULL);
     }
   GDB_PY_HANDLE_EXCEPTION (except);
 
-  if (!sal.symtab || !sal.symtab->objfile)
+  for (fn_block = block;
+       fn_block != NULL && BLOCK_FUNCTION (fn_block) == NULL;
+       fn_block = BLOCK_SUPERBLOCK (fn_block))
+    ;
+
+  if (block == NULL || fn_block == NULL || BLOCK_FUNCTION (fn_block) == NULL)
     {
       PyErr_SetString (PyExc_RuntimeError,
                       _("Cannot locate object file for block."));
@@ -232,7 +234,12 @@ frapy_block (PyObject *self, PyObject *args)
     }
 
   if (block)
-    return block_to_block_object (block, sal.symtab->objfile);
+    {
+      struct symtab *symt;
+
+      symt = SYMBOL_SYMTAB (BLOCK_FUNCTION (fn_block));
+      return block_to_block_object (block, symt->objfile);
+    }
 
   Py_RETURN_NONE;
 }