mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
Remove cleanup from procfs.c
This removes the last remaining cleanup from procfs.c, replacing it with a unique_ptr specialization. gdb/ChangeLog 2018-09-13 Tom Tromey <tom@tromey.com> * procfs.c (struct procinfo_deleter): New. (procinfo_up): New typedef. (do_destroy_procinfo_cleanup): Remove. (procfs_target::info_proc): Use procinfo_up. Remove cleanups.
This commit is contained in:
parent
db68fbe2f9
commit
5b4cbbe357
@ -1,3 +1,10 @@
|
||||
2018-09-13 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* procfs.c (struct procinfo_deleter): New.
|
||||
(procinfo_up): New typedef.
|
||||
(do_destroy_procinfo_cleanup): Remove.
|
||||
(procfs_target::info_proc): Use procinfo_up. Remove cleanups.
|
||||
|
||||
2018-09-13 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* source.c (add_path): Use gdb::unique_xmalloc_ptr.
|
||||
|
22
gdb/procfs.c
22
gdb/procfs.c
@ -272,7 +272,6 @@ static procinfo *find_procinfo_or_die (int pid, int tid);
|
||||
static procinfo *find_procinfo (int pid, int tid);
|
||||
static procinfo *create_procinfo (int pid, int tid);
|
||||
static void destroy_procinfo (procinfo *p);
|
||||
static void do_destroy_procinfo_cleanup (void *);
|
||||
static void dead_procinfo (procinfo *p, const char *msg, int killp);
|
||||
static int open_procinfo_files (procinfo *p, int which);
|
||||
static void close_procinfo_files (procinfo *p);
|
||||
@ -549,11 +548,16 @@ destroy_procinfo (procinfo *pi)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
do_destroy_procinfo_cleanup (void *pi)
|
||||
/* A deleter that calls destroy_procinfo. */
|
||||
struct procinfo_deleter
|
||||
{
|
||||
destroy_procinfo ((procinfo *) pi);
|
||||
}
|
||||
void operator() (procinfo *pi) const
|
||||
{
|
||||
destroy_procinfo (pi);
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::unique_ptr<procinfo, procinfo_deleter> procinfo_up;
|
||||
|
||||
enum { NOKILL, KILL };
|
||||
|
||||
@ -3545,7 +3549,6 @@ info_proc_mappings (procinfo *pi, int summary)
|
||||
bool
|
||||
procfs_target::info_proc (const char *args, enum info_proc_what what)
|
||||
{
|
||||
struct cleanup *old_chain;
|
||||
procinfo *process = NULL;
|
||||
procinfo *thread = NULL;
|
||||
char *tmp = NULL;
|
||||
@ -3567,7 +3570,6 @@ procfs_target::info_proc (const char *args, enum info_proc_what what)
|
||||
error (_("Not supported on this target."));
|
||||
}
|
||||
|
||||
old_chain = make_cleanup (null_cleanup, 0);
|
||||
gdb_argv built_argv (args);
|
||||
for (char *arg : built_argv)
|
||||
{
|
||||
@ -3582,6 +3584,8 @@ procfs_target::info_proc (const char *args, enum info_proc_what what)
|
||||
tid = strtoul (arg + 1, NULL, 10);
|
||||
}
|
||||
}
|
||||
|
||||
procinfo_up temporary_procinfo;
|
||||
if (pid == 0)
|
||||
pid = inferior_ptid.pid ();
|
||||
if (pid == 0)
|
||||
@ -3596,7 +3600,7 @@ procfs_target::info_proc (const char *args, enum info_proc_what what)
|
||||
/* No. So open a procinfo for it, but
|
||||
remember to close it again when finished. */
|
||||
process = create_procinfo (pid, 0);
|
||||
make_cleanup (do_destroy_procinfo_cleanup, process);
|
||||
temporary_procinfo.reset (process);
|
||||
if (!open_procinfo_files (process, FD_CTL))
|
||||
proc_error (process, "info proc, open_procinfo_files", __LINE__);
|
||||
}
|
||||
@ -3627,8 +3631,6 @@ procfs_target::info_proc (const char *args, enum info_proc_what what)
|
||||
info_proc_mappings (process, 0);
|
||||
}
|
||||
|
||||
do_cleanups (old_chain);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user