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>
* target-section.h (struct target_section): Add constructor.

View file

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

View file

@ -167,8 +167,7 @@ exec_close (void)
remove_target_sections (&exec_bfd);
xfree (exec_filename);
exec_filename = NULL;
current_program_space->exec_filename.reset (nullptr);
}
}
@ -486,11 +485,13 @@ exec_file_attach (const char *filename, int from_tty)
/* gdb_realpath_keepfile resolves symlinks on the local
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)
exec_filename = xstrdup (bfd_get_filename (exec_bfd));
current_program_space->exec_filename
= make_unique_xstrdup (bfd_get_filename (exec_bfd));
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))
{

View file

@ -32,7 +32,6 @@ struct objfile;
#define exec_bfd current_program_space->ebfd
#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. */

View file

@ -415,7 +415,7 @@ void
print_selected_inferior (struct ui_out *uiout)
{
struct inferior *inf = current_inferior ();
const char *filename = inf->pspace->pspace_exec_filename;
const char *filename = inf->pspace->exec_filename.get ();
if (filename == NULL)
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 ());
uiout->field_string ("connection-id", conn.c_str ());
if (inf->pspace->pspace_exec_filename != NULL)
uiout->field_string ("exec", inf->pspace->pspace_exec_filename);
if (inf->pspace->exec_filename != nullptr)
uiout->field_string ("exec", inf->pspace->exec_filename.get ());
else
uiout->field_skip ("exec");

View file

@ -649,10 +649,10 @@ print_one_inferior (struct inferior *inferior, bool recurse,
if (inferior->pid != 0)
uiout->field_signed ("pid", inferior->pid);
if (inferior->pspace->pspace_exec_filename != NULL)
if (inferior->pspace->exec_filename != nullptr)
{
uiout->field_string ("executable",
inferior->pspace->pspace_exec_filename);
inferior->pspace->exec_filename.get ());
}
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);
if (src->pspace_exec_filename != NULL)
exec_file_attach (src->pspace_exec_filename, 0);
if (src->exec_filename != NULL)
exec_file_attach (src->exec_filename.get (), 0);
if (src->symfile_object_file != NULL)
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);
if (pspace->pspace_exec_filename)
uiout->field_string ("exec", pspace->pspace_exec_filename);
if (pspace->exec_filename != nullptr)
uiout->field_string ("exec", pspace->exec_filename.get ());
else
uiout->field_skip ("exec");

View file

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