Add objfile-progspace to Guile interface
authorAndy Wingo <wingo@igalia.com>
Wed, 11 Mar 2015 13:20:06 +0000 (14:20 +0100)
committerAndy Wingo <wingo@igalia.com>
Wed, 11 Mar 2015 13:20:06 +0000 (14:20 +0100)
This commit adds an objfile-progspace accessor to the (gdb) Guile
module.

gdb/testsuite/ChangeLog:

* gdb.guile/scm-objfile.exp: Add objfile-progspace test.

gdb/doc/ChangeLog:

* guile.texi (Objfiles In Guile): Document objfile-progspace.

gdb/ChangeLog:

* guile/scm-objfile.c (gdbscm_objfile_progspace): New function.
(objfile_functions): Bind gdbscm_objfile_progspace to
objfile-progspace.
* guile/lib/gdb.scm: Add objfile-progspace to exports.

gdb/ChangeLog
gdb/doc/ChangeLog
gdb/doc/guile.texi
gdb/guile/lib/gdb.scm
gdb/guile/scm-objfile.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.guile/scm-objfile.exp

index 4a943f9758b1e54c3a48281748963b33481db2a9..38d30051e6dbfc5cc7911fe12019d2ee7c67a46a 100644 (file)
@@ -1,3 +1,10 @@
+2015-03-11  Andy Wingo  <wingo@igalia.com>
+
+       * guile/scm-objfile.c (gdbscm_objfile_progspace): New function.
+       (objfile_functions): Bind gdbscm_objfile_progspace to
+       objfile-progspace.
+       * guile/lib/gdb.scm: Add objfile-progspace to exports.
+
 2015-03-11  Andy Wingo  <wingo@igalia.com>
 
        * guile/guile.c (_initialize_guile): Disable automatic
index 92d1d451a78f2658b7e19d1a353f92b632bf3947..0a1db36086493ccf78184b900fef249319b5bfc7 100644 (file)
@@ -1,3 +1,7 @@
+2015-03-11  Andy Wingo  <wingo@igalia.com>
+
+       * guile.texi (Objfiles In Guile): Document objfile-progspace.
+
 2015-03-04  Pedro Alves  <palves@redhat.com>
 
        * gdb.texinfo (Remote Configuration): Document the "set/show
index 53e69f279608dfa20c632e03c64b6192a14af4e2..4a4365c9ba2ca200a1845373d18264c02c2b4683 100644 (file)
@@ -2250,6 +2250,11 @@ Return the file name of @var{objfile} as a string,
 with symbolic links resolved.
 @end deffn
 
+@deffn {Scheme Procedure} objfile-progspace objfile
+Return the @code{<gdb:progspace>} that this object file lives in.
+@xref{Progspaces In Guile}, for more on progspaces.
+@end deffn
+
 @deffn {Scheme Procedure} objfile-pretty-printers objfile
 Return the list of registered @code{<gdb:pretty-printer>} objects for
 @var{objfile}.  @xref{Guile Pretty Printing API}, for more information.
index e95914adb5a336bf96f7f5b34c4c5e06534f5c90..8f238be776ccdef447d8443f3c685c7a9227f5d0 100644 (file)
  objfile?
  objfile-valid?
  objfile-filename
+ objfile-progspace
  objfile-pretty-printers
  set-objfile-pretty-printers!
  current-objfile
index 8e94b9645c91a5ae029e10c9ba561b0fff0d0c07..080b90539e696414b524cd3e0743f4c6f2dc1094 100644 (file)
@@ -252,6 +252,19 @@ gdbscm_objfile_filename (SCM self)
   return gdbscm_scm_from_c_string (objfile_name (o_smob->objfile));
 }
 
+/* (objfile-progspace <gdb:objfile>) -> <gdb:progspace>
+   Returns the objfile's progspace.
+   Throw's an exception if the underlying objfile is invalid.  */
+
+static SCM
+gdbscm_objfile_progspace (SCM self)
+{
+  objfile_smob *o_smob
+    = ofscm_get_valid_objfile_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME);
+
+  return psscm_scm_from_pspace (o_smob->objfile->pspace);
+}
+
 /* (objfile-pretty-printers <gdb:objfile>) -> list
    Returns the list of pretty-printers for this objfile.  */
 
@@ -388,6 +401,10 @@ Return #t if the objfile is valid (hasn't been deleted from gdb)." },
     "\
 Return the file name of the objfile." },
 
+  { "objfile-progspace", 1, 0, 0, gdbscm_objfile_progspace,
+    "\
+Return the progspace that the objfile lives in." },
+
   { "objfile-pretty-printers", 1, 0, 0, gdbscm_objfile_pretty_printers,
     "\
 Return a list of pretty-printers of the objfile." },
index 6497aa938f7b7a0e9b9008d83ee7f8fb5f53f1bc..76dcde5d5917088b804156e16a4f3bd486ee6499 100644 (file)
@@ -1,3 +1,7 @@
+2015-03-11  Andy Wingo  <wingo@igalia.com>
+
+       * gdb.guile/scm-objfile.exp: Add objfile-progspace test.
+
 2015-03-11  Yao Qi  <yao.qi@linaro.org>
 
        * gdb.base/catch-syscall.exp: Fix typo in comments.
index c58f4c4df39e8b36e44b39f28e0e30be52e335c1..8edda94a72e5c084b0de1f1c9275796842c04734 100644 (file)
@@ -48,6 +48,9 @@ gdb_test "gu (print (->bool (or-map (lambda (o) (string-contains (objfile-filena
 gdb_test "gu (print (objfile-pretty-printers objfile))" \
     "= \\(\\)"
 
+gdb_test "gu (print (eq? (current-progspace) (objfile-progspace objfile)))" \
+    "= #t"
+
 gdb_test "guile (set-objfile-pretty-printers! objfile 0)" \
     "ERROR: .*: Wrong type argument in position 2 \\(expecting list\\): 0.*"