]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Put all CTF symbols in global scope
authorTom Tromey <tom@tromey.com>
Mon, 20 Jan 2025 18:06:21 +0000 (11:06 -0700)
committerTom Tromey <tom@tromey.com>
Wed, 10 Sep 2025 22:05:27 +0000 (16:05 -0600)
The new approach to searching (solely via the quick API) is more
sensitive to discrepancies between the partial and full readers.  In
CTF, there is some disagreement about which scope to use.  CTF doesn't
seem to really distinguish between the file and global scope, so this
patch takes the simple approach of putting all CTF symbols into the
global scope.

This changes one test as well.  It seems to me that the behavior here
is arbitrary and the test is making unwarranted assumptions.

Acked-By: Simon Marchi <simon.marchi@efficios.com>
gdb/ctfread.c
gdb/testsuite/gdb.ctf/cross-tu-cyclic.exp

index 76de16ccc21445d478d8229784664d3b8cf4f5cf..4761b369c2f2034d500078abe9d572f4b3662111 100644 (file)
@@ -516,7 +516,7 @@ new_symbol (struct ctf_context *ccp, struct type *type, ctf_id_t tid)
            break;
        }
 
-      add_symbol_to_list (sym, ccp->builder->get_file_symbols ());
+      add_symbol_to_list (sym, ccp->builder->get_global_symbols ());
     }
 
   return sym;
@@ -1171,7 +1171,7 @@ ctf_add_var_cb (const char *name, ctf_id_t id, void *arg)
        sym->set_domain (VAR_DOMAIN);
        sym->set_loc_class_index (LOC_OPTIMIZED_OUT);
        sym->compute_and_set_names (name, false, ccp->of->per_bfd);
-       add_symbol_to_list (sym, ccp->builder->get_file_symbols ());
+       add_symbol_to_list (sym, ccp->builder->get_global_symbols ());
        break;
       default:
        complaint (_("ctf_add_var_cb: kind unsupported (%d)"), kind);
@@ -1510,7 +1510,7 @@ ctf_psymtab_type_cb (ctf_id_t tid, void *arg)
 
   ccp->pst->add_psymbol (name, false,
                         domain, loc_class, section,
-                        psymbol_placement::STATIC,
+                        psymbol_placement::GLOBAL,
                         unrelocated_addr (0),
                         language_c, ccp->partial_symtabs, ccp->of);
 
index 922729f1a41cb17cf8f3f57c0ddc3fa819ccc333..2a0e99990b8036a89f9a5eaf096303991d69eeae 100644 (file)
@@ -37,6 +37,6 @@ gdb_test_no_output "set always-read-ctf on"
 gdb_load $binfile
 
 # Same thing with struct and union.
-gdb_test "ptype struct A" "type = struct A \{\[\r\n\]+\[ \t\]+struct B \\*foo;\[\r\n\]+\}.*" "ptype structure A"
-gdb_test "ptype struct B" "type = struct B \{\[\r\n\]+\[ \t\]+struct B \\*next;\[\r\n\]+\}.*" "ptype structure B"
+gdb_test "ptype struct A" "type = struct A \{\[\r\n\]+\[ \t\]+long a;\[\r\n\]+\[ \t\]+struct B \\*foo;\[\r\n\]+\}.*" "ptype structure A"
+gdb_test "ptype struct B" "type = struct B \{\[\r\n\]+\[ \t\]+int foo;\[\r\n\]+\[ \t\]+struct A \\*bar;\[\r\n\]+\}.*" "ptype structure B"
 gdb_test "ptype struct C" "type = struct C \{\[\r\n\]+\[ \t\]+struct B \\*foo;\[\r\n\]+\[ \t\]+int b;\[\r\n\]+\}.*" "ptype structure C"