diff --git a/gdb/NEWS b/gdb/NEWS
index eecc7da..3a36fa8 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -13,6 +13,8 @@
      which is the gdb.Progspace object of the containing program space.
   ** gdb.Objfile objects have a new attribute "build_id",
      which is the build ID generated when the file was built.
+  ** gdb.Objfile objects have a new attribute "have_debug_info", which is
+     a boolean indicating if debug information for the objfile is present.
   ** A new event "gdb.clear_objfiles" has been added, triggered when
      selecting a new file to debug.
   ** You can now add attributes to gdb.Objfile and gdb.Progspace objects.
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index a47a259..1c9dbb87 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -3457,6 +3457,15 @@ command-line option in @ref{Options, , Command Line Options, ld.info,
 The GNU Linker}.
 @end defvar
 
+@defvar Objfile.have_debug_info
+A boolean indicating if debug information for the objfile is present.
+Note that a program compiled without @samp{-g} may still have some debug
+information, e.g., from the @code{C} runtime.  Thus a value of @code{True}
+for this attribute does not mean that debug information is present for
+every source file in the program.  It only means that debug information
+is present for at least one source file.
+@end defvar
+
 @defvar Objfile.progspace
 The containing program space of the objfile as a @code{gdb.Progspace}
 object.  @xref{Progspaces In Python}.
diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
index 05a7c21..5d0933f 100644
--- a/gdb/python/py-objfile.c
+++ b/gdb/python/py-objfile.c
@@ -112,6 +112,32 @@ objfpy_get_build_id (PyObject *self, void *closure)
   Py_RETURN_NONE;
 }
 
+/* An Objfile method which returns whether there debug information
+   has been stripped.  */
+
+static PyObject *
+objfpy_get_have_debug_info (PyObject *self, void *closure)
+{
+  objfile_object *obj = (objfile_object *) self;
+  struct objfile *objfile = obj->objfile;
+
+  if (objfile != NULL)
+    {
+      /* This uses the same test that the file readers use, e.g.,
+	 elf_symfile_read, because its main purpose is to decide whether
+	 separate debug info files should be fetched.
+	 See elf_symfile_read.  */
+      if (!objfile_has_partial_symbols (objfile)
+	  && !objfile_has_full_symbols (objfile)
+	  && objfile->separate_debug_objfile == NULL
+	  && objfile->separate_debug_objfile_backlink == NULL)
+	Py_RETURN_FALSE;
+      Py_RETURN_TRUE;
+    }
+
+  Py_RETURN_FALSE;
+}
+
 /* An Objfile method which returns the objfile's progspace, or None.  */
 
 static PyObject *
@@ -412,6 +438,8 @@ static PyGetSetDef objfile_getset[] =
     "The objfile's filename, or None.", NULL },
   { "build_id", objfpy_get_build_id, NULL,
     "The objfile's build id, or None.", NULL },
+  { "have_debug_info", objfpy_get_have_debug_info, NULL,
+    "True if there is debug information for the objfile.", NULL },
   { "progspace", objfpy_get_progspace, NULL,
     "The objfile's progspace, or None.", NULL },
   { "pretty_printers", objfpy_get_printers, objfpy_set_printers,
diff --git a/gdb/testsuite/gdb.python/py-objfile.exp b/gdb/testsuite/gdb.python/py-objfile.exp
index 74384ed..f09c64c 100644
--- a/gdb/testsuite/gdb.python/py-objfile.exp
+++ b/gdb/testsuite/gdb.python/py-objfile.exp
@@ -49,6 +49,9 @@ if [string compare $binfile_build_id ""] {
     unsupported "build-id is not supported by the compiler"
 }
 
+gdb_test "python print (objfile.have_debug_info)" "True" \
+    "Get objfile have_debug_info"
+
 gdb_test "python print (objfile.progspace)" "<gdb\.Progspace object at .*>" \
   "Get objfile program space"
 gdb_test "python print (objfile.is_valid())" "True" \
@@ -61,3 +64,20 @@ gdb_py_test_silent_cmd "python objfile.random_attribute = 42" \
     "Set random attribute in objfile" 1
 gdb_test "python print (objfile.random_attribute)" "42" \
     "Verify set of random attribute in objfile"
+
+# Now build another copy of the testcase, this time without debug info.
+
+if { [prepare_for_testing ${testfile}.exp ${testfile}2 ${srcfile} {nodebug ldflags=-Wl,--strip-debug}] } {
+    return -1
+}
+
+if ![runto_main] {
+    fail "Can't run to main"
+    return 0
+}
+
+gdb_py_test_silent_cmd "python objfile = gdb.objfiles()\[0\]" \
+    "Get no-debug objfile file" 1
+
+gdb_test "python print (objfile.have_debug_info)" "False" \
+    "Get objfile have_debug_info"
