From 0d9acb4531cfe336b2b335fbaa1f2ef878a6e4d9 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Fri, 19 Nov 2021 22:15:30 -0500 Subject: [PATCH] gdb: remove COMPUNIT_DIRNAME macro, add getter/setter Add a getter and a setter for a compunit_symtab's dirname. Remove the corresponding macro and adjust all callers. Change-Id: If2f39b295fd26822586485e04a8b8b5aa5cc9b2e --- gdb/buildsym-legacy.c | 2 +- gdb/buildsym.c | 4 ++-- gdb/dwarf2/read.c | 4 ++-- gdb/jit.c | 2 +- gdb/macrotab.c | 2 +- gdb/symmisc.c | 5 ++--- gdb/symtab.h | 16 ++++++++++++---- 7 files changed, 21 insertions(+), 14 deletions(-) diff --git a/gdb/buildsym-legacy.c b/gdb/buildsym-legacy.c index aa7b8b56b89..7659f53cbe0 100644 --- a/gdb/buildsym-legacy.c +++ b/gdb/buildsym-legacy.c @@ -303,7 +303,7 @@ restart_symtab (struct compunit_symtab *cust, buildsym_compunit = new struct buildsym_compunit (cust->objfile (), name, - COMPUNIT_DIRNAME (cust), + cust->dirname (), compunit_language (cust), start_addr, cust); diff --git a/gdb/buildsym.c b/gdb/buildsym.c index 22727277613..b96d154331a 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -1005,8 +1005,8 @@ buildsym_compunit::end_symtab_with_blockvector (struct block *static_block, { /* Reallocate the dirname on the symbol obstack. */ const char *comp_dir = m_comp_dir.get (); - COMPUNIT_DIRNAME (cu) = obstack_strdup (&m_objfile->objfile_obstack, - comp_dir); + cu->set_dirname (obstack_strdup (&m_objfile->objfile_obstack, + comp_dir)); } /* Save the debug format string (if any) in the symtab. */ diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 7e62d11aa2c..cd3e6afbe87 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -10723,7 +10723,7 @@ dwarf2_cu::setup_type_unit_groups (struct die_info *die) struct compunit_symtab *cust = tug_unshare->compunit_symtab; m_builder.reset (new struct buildsym_compunit (cust->objfile (), "", - COMPUNIT_DIRNAME (cust), + cust->dirname (), compunit_language (cust), 0, cust)); list_in_scope = get_builder ()->get_file_symbols (); @@ -10775,7 +10775,7 @@ dwarf2_cu::setup_type_unit_groups (struct die_info *die) struct compunit_symtab *cust = tug_unshare->compunit_symtab; m_builder.reset (new struct buildsym_compunit (cust->objfile (), "", - COMPUNIT_DIRNAME (cust), + cust->dirname (), compunit_language (cust), 0, cust)); list_in_scope = get_builder ()->get_file_symbols (); diff --git a/gdb/jit.c b/gdb/jit.c index 6366c7511e6..eda96b0003f 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -513,7 +513,7 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile) add_compunit_symtab_to_objfile (cust); /* JIT compilers compile in memory. */ - COMPUNIT_DIRNAME (cust) = NULL; + cust->set_dirname (nullptr); /* Copy over the linetable entry if one was provided. */ if (stab->linetable) diff --git a/gdb/macrotab.c b/gdb/macrotab.c index 92d68e78e71..7ca3f312d33 100644 --- a/gdb/macrotab.c +++ b/gdb/macrotab.c @@ -1066,7 +1066,7 @@ macro_source_fullname (struct macro_source_file *file) const char *comp_dir = NULL; if (file->table->compunit_symtab != NULL) - comp_dir = COMPUNIT_DIRNAME (file->table->compunit_symtab); + comp_dir = file->table->compunit_symtab->dirname (); if (comp_dir == NULL || IS_ABSOLUTE_PATH (file->filename)) return file->filename; diff --git a/gdb/symmisc.c b/gdb/symmisc.c index b946fc8bde0..9c882a468b2 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -782,9 +782,8 @@ maintenance_info_symtabs (const char *regexp, int from_tty) (cust->producer () != nullptr ? cust->producer () : "(null)")); printf_filtered (" dirname %s\n", - COMPUNIT_DIRNAME (cust) != NULL - ? COMPUNIT_DIRNAME (cust) - : "(null)"); + (cust->dirname () != NULL + ? cust->dirname () : "(null)")); printf_filtered (" blockvector" " ((struct blockvector *) %s)\n", host_address_to_string diff --git a/gdb/symtab.h b/gdb/symtab.h index 1e3f95dc92f..b72abab2ab5 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -1413,8 +1413,7 @@ using symtab_range = next_range; #define SYMTAB_OBJFILE(symtab) \ (SYMTAB_COMPUNIT (symtab)->objfile ()) #define SYMTAB_PSPACE(symtab) (SYMTAB_OBJFILE (symtab)->pspace) -#define SYMTAB_DIRNAME(symtab) \ - COMPUNIT_DIRNAME (SYMTAB_COMPUNIT (symtab)) +#define SYMTAB_DIRNAME(symtab) (SYMTAB_COMPUNIT (symtab)->dirname ()) /* Compunit symtabs contain the actual "symbol table", aka blockvector, as well as the list of all source files (what gdb has historically associated with @@ -1502,6 +1501,16 @@ struct compunit_symtab m_producer = producer; } + const char *dirname () const + { + return m_dirname; + } + + void set_dirname (const char *dirname) + { + m_dirname = dirname; + } + /* Make PRIMARY_FILETAB the primary filetab of this compunit symtab. PRIMARY_FILETAB must already be a filetab of this compunit symtab. */ @@ -1551,7 +1560,7 @@ struct compunit_symtab const char *m_producer; /* Directory in which it was compiled, or NULL if we don't know. */ - const char *dirname; + const char *m_dirname; /* List of all symbol scope blocks for this symtab. It is shared among all symtabs in a given compilation unit. */ @@ -1597,7 +1606,6 @@ struct compunit_symtab using compunit_symtab_range = next_range; -#define COMPUNIT_DIRNAME(cust) ((cust)->dirname) #define COMPUNIT_BLOCKVECTOR(cust) ((cust)->blockvector) #define COMPUNIT_BLOCK_LINE_SECTION(cust) ((cust)->block_line_section) #define COMPUNIT_LOCATIONS_VALID(cust) ((cust)->locations_valid) -- 2.30.2