diff options
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/common-inferior.h | 33 | ||||
-rw-r--r-- | gdb/common/common-utils.c | 24 | ||||
-rw-r--r-- | gdb/common/common-utils.h | 4 |
3 files changed, 61 insertions, 0 deletions
diff --git a/gdb/common/common-inferior.h b/gdb/common/common-inferior.h new file mode 100644 index 0000000..87c1300 --- /dev/null +++ b/gdb/common/common-inferior.h @@ -0,0 +1,33 @@ +/* Functions to deal with the inferior being executed on GDB or + GDBserver. + + Copyright (C) 1986-2017 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#ifndef COMMON_INFERIOR_H +#define COMMON_INFERIOR_H + +/* Return the exec wrapper to be used when starting the inferior, or NULL + otherwise. */ +extern const char *get_exec_wrapper (); + +/* Return the name of the executable file as a string. + ERR nonzero means get error if there is none specified; + otherwise return 0 in that case. */ +extern char *get_exec_file (int err); + +#endif /* ! COMMON_INFERIOR_H */ diff --git a/gdb/common/common-utils.c b/gdb/common/common-utils.c index e94fdc4..793ab3b 100644 --- a/gdb/common/common-utils.c +++ b/gdb/common/common-utils.c @@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "common-defs.h" +#include "common-utils.h" #include "host-defs.h" #include <ctype.h> @@ -328,3 +329,26 @@ free_vector_argv (std::vector<char *> &v) v.clear (); } + +/* See common/common-utils.h. */ + +std::string +stringify_argv (const std::vector<char *> &args) +{ + std::string ret; + + if (!args.empty ()) + { + for (auto s : args) + if (s != NULL) + { + ret += s; + ret += ' '; + } + + /* Erase the last whitespace. */ + ret.erase (ret.end () - 1); + } + + return ret; +} diff --git a/gdb/common/common-utils.h b/gdb/common/common-utils.h index c331f0d..787bac9 100644 --- a/gdb/common/common-utils.h +++ b/gdb/common/common-utils.h @@ -108,4 +108,8 @@ extern const char *skip_to_space_const (const char *inp); freeing all the elements. */ extern void free_vector_argv (std::vector<char *> &v); +/* Given a vector of arguments ARGV, return a string equivalent to + joining all the arguments with a whitespace separating them. */ +extern std::string stringify_argv (const std::vector<char *> &argv); + #endif |