diff options
author | Tom Tromey <tom@tromey.com> | 2018-05-20 23:58:35 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-07-20 09:42:41 -0600 |
commit | a60f3166aa946336c68e7a873d5eed6061b5733c (patch) | |
tree | 21da694fb78e8893f2cbb256330907c77998cafd /gdb/xcoffread.c | |
parent | 56ba65a04713fd8ff23908d4c57f75427317b8bb (diff) | |
download | gdb-a60f3166aa946336c68e7a873d5eed6061b5733c.zip gdb-a60f3166aa946336c68e7a873d5eed6061b5733c.tar.gz gdb-a60f3166aa946336c68e7a873d5eed6061b5733c.tar.bz2 |
Move the context stack to buildsym_compunit
This moves the context stack globals to be members of
buildsym_compunit, changing the type to a std::vector in the process.
Because the callers expect the context stack object to be valid after
being popped, at Simon's suggestion I've changed pop_context to return
the object rather than the pointer.
gdb/ChangeLog
2018-07-20 Tom Tromey <tom@tromey.com>
* coffread.c (coff_symtab_read): Update.
* xcoffread.c (read_xcoff_symtab): Update.
* dwarf2read.c (new_symbol): Update.
(read_func_scope, read_lexical_block_scope): Update.
* dbxread.c (process_one_symbol): Update.
* buildsym.h (context_stack, context_stack_depth): Don't declare.
(outermost_context_p): Remove macro.
(outermost_context_p, get_current_context_stack)
(get_context_stack_depth): Declare.
(pop_context): Return struct context_stack.
* buildsym.c (struct buildsym_compunit) <m_context_stack: New
member.
(context_stack_size): Remove.
(INITIAL_CONTEXT_STACK_SIZE): Remove.
(prepare_for_building, end_symtab_get_static_block)
(augment_type_symtab, push_context): Update.
(pop_context): Return struct context_stack.
(outermost_context_p, get_current_context_stack)
(get_context_stack_depth): New functions.
(buildsym_init): Update.
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r-- | gdb/xcoffread.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 7f4e63e..785de29 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1397,17 +1397,17 @@ read_xcoff_symtab (struct objfile *objfile, struct partial_symtab *pst) within_function = 0; break; } - newobj = pop_context (); + struct context_stack cstk = pop_context (); /* Stack must be empty now. */ - if (!outermost_context_p () || newobj == NULL) + if (!outermost_context_p ()) { ef_complaint (cs->c_symnum); within_function = 0; break; } - finish_block (newobj->name, &local_symbols, newobj->old_blocks, - NULL, newobj->start_addr, + finish_block (cstk.name, &local_symbols, cstk.old_blocks, + NULL, cstk.start_addr, (fcn_cs_saved.c_value + fcn_aux_saved.x_sym.x_misc.x_fsize + ANOFFSET (objfile->section_offsets, @@ -1488,8 +1488,8 @@ read_xcoff_symtab (struct objfile *objfile, struct partial_symtab *pst) eb_complaint (cs->c_symnum); break; } - newobj = pop_context (); - if (depth-- != newobj->depth) + struct context_stack cstk = pop_context (); + if (depth-- != cstk.depth) { eb_complaint (cs->c_symnum); break; @@ -1497,14 +1497,14 @@ read_xcoff_symtab (struct objfile *objfile, struct partial_symtab *pst) if (local_symbols && !outermost_context_p ()) { /* Make a block for the local symbols within. */ - finish_block (newobj->name, &local_symbols, - newobj->old_blocks, NULL, - newobj->start_addr, + finish_block (cstk.name, &local_symbols, + cstk.old_blocks, NULL, + cstk.start_addr, (cs->c_value + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile)))); } - local_symbols = newobj->locals; + local_symbols = cstk.locals; } break; |