]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/python: add domain property to gdb.Symbol
authorJan Vrany <jan.vrany@labware.com>
Tue, 4 Feb 2025 13:56:49 +0000 (13:56 +0000)
committerJan Vrany <jan.vrany@labware.com>
Tue, 4 Feb 2025 13:56:49 +0000 (13:56 +0000)
Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Andrew Burgess <aburgess@redhat.com>
gdb/NEWS
gdb/doc/python.texi
gdb/python/py-symbol.c
gdb/testsuite/gdb.python/py-symbol.exp

index 1d8f2c5bbe7161718b08f0df281d47edf3b11507..401479e0a8009f30661cb4538406dc047b2c8b05 100644 (file)
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -155,6 +155,8 @@ binary-upload in qSupported reply
   ** Added gdb.Block.subblocks.  Returns a list of blocks contained in that
      block.
 
+  ** Added gdb.Symbol.domain.  Contains the domain of the symbol.
+
 * Debugger Adapter Protocol changes
 
   ** The "scopes" request will now return a scope holding global
index d3c77d6a54a9403a06bf8ef7be3c34d61d394df5..1e0fbdfc83829c4407aa7f586b521999f67a87e9 100644 (file)
@@ -6209,6 +6209,11 @@ of a symbol.  Each address class is a constant defined in the
 @code{gdb} module and described later in this chapter.
 @end defvar
 
+@defvar Symbol.domain
+The domain of the symbol.  Each domain is a constant defined in the
+@code{gdb} module and described later in this chapter.
+@end defvar
+
 @defvar Symbol.needs_frame
 This is @code{True} if evaluating this symbol's value requires a frame
 (@pxref{Frames In Python}) and @code{False} otherwise.  Typically,
index f1ba0ba00e06349571eee1651835375ee7faea89..3ce104984b4443f543678e2672fdf250b14fa070 100644 (file)
@@ -1,6 +1,6 @@
 /* Python interface to symbols.
 
-   Copyright (C) 2008-2024 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -153,6 +153,19 @@ sympy_get_addr_class (PyObject *self, void *closure)
   return gdb_py_object_from_longest (symbol->aclass ()).release ();
 }
 
+/* Implement gdb.Symbol.domain attribute.  Return the domain as an
+   integer.  */
+
+static PyObject *
+sympy_get_domain (PyObject *self, void *closure)
+{
+  struct symbol *symbol = nullptr;
+
+  SYMPY_REQUIRE_VALID (self, symbol);
+
+  return gdb_py_object_from_longest (symbol->domain ()).release ();
+}
+
 static PyObject *
 sympy_is_argument (PyObject *self, void *closure)
 {
@@ -719,6 +732,7 @@ static gdb_PyGetSetDef symbol_object_getset[] = {
 This is either name or linkage_name, depending on whether the user asked GDB\n\
 to display demangled or mangled names.", NULL },
   { "addr_class", sympy_get_addr_class, NULL, "Address class of the symbol." },
+  { "domain", sympy_get_domain, nullptr, "Domain of the symbol." },
   { "is_argument", sympy_is_argument, NULL,
     "True if the symbol is an argument of a function." },
   { "is_artificial", sympy_is_artificial, nullptr,
index e6411b4d16a01c252a331de6523eba26f1cfa8b7..40f9038c67c4cbd352ad8b4a0117f97d050e8e5d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2024 Free Software Foundation, Inc.
+# Copyright (C) 2010-2025 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -142,6 +142,7 @@ gdb_test "python print (func.name)" "func" "test func.name"
 gdb_test "python print (func.print_name)" "func" "test func.print_name"
 gdb_test "python print (func.linkage_name)" "func" "test func.linkage_name"
 gdb_test "python print (func.addr_class == gdb.SYMBOL_LOC_BLOCK)" "True" "test func.addr_class"
+gdb_test "python print (func.domain == gdb.SYMBOL_FUNCTION_DOMAIN)" "True" "test func.domain"
 
 # Stop in a second file and ensure we find its local static symbol.
 gdb_breakpoint "function_in_other_file"