gdb: remove context_stack::static_link

Message ID 20260105203822.699896-1-simon.marchi@polymtl.ca
State New
Headers
Series gdb: remove context_stack::static_link |

Commit Message

Simon Marchi Jan. 5, 2026, 8:38 p.m. UTC
  From: Simon Marchi <simon.marchi@polymtl.ca>

I don't think it's needed to record this information in the
context_stack structure.  The only user is the DWARF reader, where it
can very well be a local variable.

Change-Id: I6e33affbf03f11c0d0ab60067f169137fde1c994
---
 gdb/buildsym.h    |  4 ----
 gdb/dwarf2/read.c | 11 +++++------
 2 files changed, 5 insertions(+), 10 deletions(-)


base-commit: 1819e42280cc89754db92a3416392b82794989a2
  

Comments

Tom Tromey Jan. 6, 2026, 3:26 p.m. UTC | #1
>>>>> "Simon" == simon marchi <simon.marchi@polymtl.ca> writes:

Simon> From: Simon Marchi <simon.marchi@polymtl.ca>
Simon> I don't think it's needed to record this information in the
Simon> context_stack structure.  The only user is the DWARF reader, where it
Simon> can very well be a local variable.

Ok.
Approved-By: Tom Tromey <tom@tromey.com>

Tom
  
Simon Marchi Jan. 6, 2026, 4:48 p.m. UTC | #2
On 1/6/26 10:26 AM, Tom Tromey wrote:
>>>>>> "Simon" == simon marchi <simon.marchi@polymtl.ca> writes:
> 
> Simon> From: Simon Marchi <simon.marchi@polymtl.ca>
> Simon> I don't think it's needed to record this information in the
> Simon> context_stack structure.  The only user is the DWARF reader, where it
> Simon> can very well be a local variable.
> 
> Ok.
> Approved-By: Tom Tromey <tom@tromey.com>
> 
> Tom

Thanks, pushed.

Simon
  

Patch

diff --git a/gdb/buildsym.h b/gdb/buildsym.h
index ff1c2a075fcc..7ca5e57c7f4a 100644
--- a/gdb/buildsym.h
+++ b/gdb/buildsym.h
@@ -94,10 +94,6 @@  struct context_stack
   /* Name of function, if any, defining context.  */
   symbol *name = nullptr;
 
-  /* Expression that computes the frame base of the lexically enclosing
-     function, if any.  NULL otherwise.  */
-  dynamic_prop *static_link = nullptr;
-
   /* PC where this context starts.  */
   CORE_ADDR start_addr;
 
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 4b706f654e0d..8c3bc156fc2f 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -8600,14 +8600,12 @@  read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
     dwarf2_symbol_mark_computed (attr, ctx.name, cu, 1);
 
   /* If there is a location for the static link, record it.  */
-  ctx.static_link = NULL;
+  dynamic_prop *static_link = nullptr;
   attr = dwarf2_attr (die, DW_AT_static_link, cu);
   if (attr != nullptr)
     {
-      ctx.static_link
-	= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
-      attr_to_dynamic_prop (attr, die, cu, ctx.static_link,
-			    cu->addr_type ());
+      static_link = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
+      attr_to_dynamic_prop (attr, die, cu, static_link, cu->addr_type ());
     }
 
   cu->list_in_scope = &cu->get_builder ()->get_local_symbols ();
@@ -8650,9 +8648,10 @@  read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
     }
 
   struct context_stack cstk = cu->get_builder ()->pop_context ();
+
   /* Make a block for the local symbols within.  */
   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
-				     cstk.static_link, lowpc, highpc);
+					    static_link, lowpc, highpc);
 
   /* For C++, set the block's scope.  */
   if ((cu->lang () == language_cplus