Remove exec_filename macro

This removes the exec_filename macro, replacing it with uses of the
member of current_program_space.  This also renames that member, and
changes it to be a unique pointer.

gdb/ChangeLog
2020-10-29  Tom Tromey  <tom@tromey.com>

	* progspace.h (struct program_space) <exec_filename>: Rename from
	pspace_exec_filename.  Now a unique_xmalloc_ptr.
	* inferior.c (print_selected_inferior): Update.
	(print_inferior): Update.
	* mi/mi-main.c (print_one_inferior): Update.
	* exec.h (exec_filename): Remove macro.
	* corefile.c (get_exec_file): Update.
	* exec.c (exec_close): Update.
	(exec_file_attach): Update.
	* progspace.c (clone_program_space): Update.
	(print_program_space): Update.
This commit is contained in:
Tom Tromey
2020-10-29 15:04:33 -06:00
parent 6be2a9ab1f
commit c20cb6860c
8 changed files with 34 additions and 20 deletions

View File

@ -1,3 +1,17 @@
2020-10-29 Tom Tromey <tom@tromey.com>
* progspace.h (struct program_space) <exec_filename>: Rename from
pspace_exec_filename. Now a unique_xmalloc_ptr.
* inferior.c (print_selected_inferior): Update.
(print_inferior): Update.
* mi/mi-main.c (print_one_inferior): Update.
* exec.h (exec_filename): Remove macro.
* corefile.c (get_exec_file): Update.
* exec.c (exec_close): Update.
(exec_file_attach): Update.
* progspace.c (clone_program_space): Update.
(print_program_space): Update.
2020-10-29 Tom Tromey <tom@tromey.com> 2020-10-29 Tom Tromey <tom@tromey.com>
* target-section.h (struct target_section): Add constructor. * target-section.h (struct target_section): Add constructor.

View File

@ -144,8 +144,8 @@ validate_files (void)
const char * const char *
get_exec_file (int err) get_exec_file (int err)
{ {
if (exec_filename) if (current_program_space->exec_filename != nullptr)
return exec_filename; return current_program_space->exec_filename.get ();
if (!err) if (!err)
return NULL; return NULL;

View File

@ -167,8 +167,7 @@ exec_close (void)
remove_target_sections (&exec_bfd); remove_target_sections (&exec_bfd);
xfree (exec_filename); current_program_space->exec_filename.reset (nullptr);
exec_filename = NULL;
} }
} }
@ -486,11 +485,13 @@ exec_file_attach (const char *filename, int from_tty)
/* gdb_realpath_keepfile resolves symlinks on the local /* gdb_realpath_keepfile resolves symlinks on the local
filesystem and so cannot be used for "target:" files. */ filesystem and so cannot be used for "target:" files. */
gdb_assert (exec_filename == NULL); gdb_assert (current_program_space->exec_filename == nullptr);
if (load_via_target) if (load_via_target)
exec_filename = xstrdup (bfd_get_filename (exec_bfd)); current_program_space->exec_filename
= make_unique_xstrdup (bfd_get_filename (exec_bfd));
else else
exec_filename = gdb_realpath_keepfile (scratch_pathname).release (); current_program_space->exec_filename
= gdb_realpath_keepfile (scratch_pathname);
if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching)) if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching))
{ {

View File

@ -32,7 +32,6 @@ struct objfile;
#define exec_bfd current_program_space->ebfd #define exec_bfd current_program_space->ebfd
#define exec_bfd_mtime current_program_space->ebfd_mtime #define exec_bfd_mtime current_program_space->ebfd_mtime
#define exec_filename current_program_space->pspace_exec_filename
/* Builds a section table, given args BFD. */ /* Builds a section table, given args BFD. */

View File

@ -415,7 +415,7 @@ void
print_selected_inferior (struct ui_out *uiout) print_selected_inferior (struct ui_out *uiout)
{ {
struct inferior *inf = current_inferior (); struct inferior *inf = current_inferior ();
const char *filename = inf->pspace->pspace_exec_filename; const char *filename = inf->pspace->exec_filename.get ();
if (filename == NULL) if (filename == NULL)
filename = _("<noexec>"); filename = _("<noexec>");
@ -518,8 +518,8 @@ print_inferior (struct ui_out *uiout, const char *requested_inferiors)
std::string conn = uiout_field_connection (inf->process_target ()); std::string conn = uiout_field_connection (inf->process_target ());
uiout->field_string ("connection-id", conn.c_str ()); uiout->field_string ("connection-id", conn.c_str ());
if (inf->pspace->pspace_exec_filename != NULL) if (inf->pspace->exec_filename != nullptr)
uiout->field_string ("exec", inf->pspace->pspace_exec_filename); uiout->field_string ("exec", inf->pspace->exec_filename.get ());
else else
uiout->field_skip ("exec"); uiout->field_skip ("exec");

View File

@ -649,10 +649,10 @@ print_one_inferior (struct inferior *inferior, bool recurse,
if (inferior->pid != 0) if (inferior->pid != 0)
uiout->field_signed ("pid", inferior->pid); uiout->field_signed ("pid", inferior->pid);
if (inferior->pspace->pspace_exec_filename != NULL) if (inferior->pspace->exec_filename != nullptr)
{ {
uiout->field_string ("executable", uiout->field_string ("executable",
inferior->pspace->pspace_exec_filename); inferior->pspace->exec_filename.get ());
} }
if (inferior->pid != 0) if (inferior->pid != 0)

View File

@ -233,8 +233,8 @@ clone_program_space (struct program_space *dest, struct program_space *src)
set_current_program_space (dest); set_current_program_space (dest);
if (src->pspace_exec_filename != NULL) if (src->exec_filename != NULL)
exec_file_attach (src->pspace_exec_filename, 0); exec_file_attach (src->exec_filename.get (), 0);
if (src->symfile_object_file != NULL) if (src->symfile_object_file != NULL)
symbol_file_add_main (objfile_name (src->symfile_object_file), symbol_file_add_main (objfile_name (src->symfile_object_file),
@ -315,8 +315,8 @@ print_program_space (struct ui_out *uiout, int requested)
uiout->field_signed ("id", pspace->num); uiout->field_signed ("id", pspace->num);
if (pspace->pspace_exec_filename) if (pspace->exec_filename != nullptr)
uiout->field_string ("exec", pspace->pspace_exec_filename); uiout->field_string ("exec", pspace->exec_filename.get ());
else else
uiout->field_skip ("exec"); uiout->field_skip ("exec");

View File

@ -284,9 +284,9 @@ struct program_space
/* The last-modified time, from when the exec was brought in. */ /* The last-modified time, from when the exec was brought in. */
long ebfd_mtime = 0; long ebfd_mtime = 0;
/* Similar to bfd_get_filename (exec_bfd) but in original form given /* Similar to bfd_get_filename (exec_bfd) but in original form given
by user, without symbolic links and pathname resolved. by user, without symbolic links and pathname resolved. It is not
It needs to be freed by xfree. It is not NULL iff EBFD is not NULL. */ NULL iff EBFD is not NULL. */
char *pspace_exec_filename = NULL; gdb::unique_xmalloc_ptr<char> exec_filename;
/* Binary file diddling handle for the core file. */ /* Binary file diddling handle for the core file. */
gdb_bfd_ref_ptr cbfd; gdb_bfd_ref_ptr cbfd;