+
+ Upstream PR libc/13097, local ref# 17474967
+ * solib-svr4.c (svr4_read_so_list): Ignore linux-vdso64.so.1, for ppc.
+--- README.google 2015-09-05 18:02:29.000000000 -0700
++++ README.google 2015-09-05 18:13:45.000000000 -0700
++
++2015-09-05 Doug Evans <google.com>
++
++ * NEWS: Mention gdb.Objfile.have_debug_info.
++ * python/py-objfile.c (objfpy_get_have_debug_info): New function.
++ (objfile_getset): Add "have_debug_info".
++
++ doc/
++ * python.texi (Objfiles In Python): Document Objfile.have_debug_info.
++
++ testsuite/
++ * gdb.python/py-objfile.exp: Add tests for objfile.have_debug_info.
* Python Scripting
+ ** gdb.Objfile objects have a new attribute "have_debug_info", which is
+ a boolean indicating if debug information for the objfile is present.
** gdb.Objfile objects have a new attribute "username",
which is the name of the objfile as specified by the user,
without, for example, resolving symlinks.
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}.
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 *
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,
unsupported "build-id is not supported by the compiler"
}
+gdb_test "python print (objfile.have_debug_info)" "True" \
+ "Get objfile have_debug_info"
+
# Other lookup_objfile_by_build_id tests we can do, even if compiler doesn't
# support them.
gdb_test "python print (gdb.lookup_objfile (\"foo\", by_build_id=True))" \
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 no-debug objfile have_debug_info"
+
gdb_test "python print (objfile.owner)" "None" \
"Test owner of real objfile."