aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/corefile.c4
-rw-r--r--gdb/exec.c11
-rw-r--r--gdb/exec.h1
-rw-r--r--gdb/inferior.c6
-rw-r--r--gdb/mi/mi-main.c4
-rw-r--r--gdb/progspace.c8
-rw-r--r--gdb/progspace.h6
8 files changed, 34 insertions, 20 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e282ea7..357c57f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,19 @@
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.
* exec.c (build_section_table, add_target_sections_of_objfile):
Update.
diff --git a/gdb/corefile.c b/gdb/corefile.c
index fed0e4f..c1eec19 100644
--- a/gdb/corefile.c
+++ b/gdb/corefile.c
@@ -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;
diff --git a/gdb/exec.c b/gdb/exec.c
index 9bdd87d..d27949c 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -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))
{
diff --git a/gdb/exec.h b/gdb/exec.h
index 2448965..b2f5150 100644
--- a/gdb/exec.h
+++ b/gdb/exec.h
@@ -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. */
diff --git a/gdb/inferior.c b/gdb/inferior.c
index f06c13b..fc21241 100644
--- a/gdb/inferior.c
+++ b/gdb/inferior.c
@@ -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");
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index c5c7be7..41bafd2 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -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)
diff --git a/gdb/progspace.c b/gdb/progspace.c
index 67ea8bd..7600123 100644
--- a/gdb/progspace.c
+++ b/gdb/progspace.c
@@ -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");
diff --git a/gdb/progspace.h b/gdb/progspace.h
index 6a0e903..3acce50 100644
--- a/gdb/progspace.h
+++ b/gdb/progspace.h
@@ -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;