gcore.c \
gdb-demangle.c \
gdb_bfd.c \
- gdb_obstack.c \
gdb_regex.c \
gdbtypes.c \
gmp-utils.c \
gdb_bfd.h \
gdb_curses.h \
gdb_expat.h \
- gdb_obstack.h \
gdb_proc_service.h \
gdb_regex.h \
gdb_select.h \
#include "breakpoint.h"
#include "gdbcore.h"
#include "hashtab.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "ada-lang.h"
#include "completer.h"
#include "ui-out.h"
#include "defs.h"
#include "splay-tree.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "addrmap.h"
#include "gdbsupport/selftest.h"
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bcache.h"
#include <algorithm>
#include "block.h"
#include "symtab.h"
#include "symfile.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "cp-support.h"
#include "addrmap.h"
#include "gdbtypes.h"
#include "valprint.h"
#include "cli/cli-utils.h"
#include "completer.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "mi/mi-common.h"
#include "linespec.h"
#include "probe.h"
#include "symfile.h"
#include "target.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bsd-uthread.h"
#include "defs.h"
#include "buildsym-legacy.h"
#include "bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "symfile.h"
#include "objfiles.h"
#if !defined (BUILDSYM_H)
#define BUILDSYM_H 1
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
struct objfile;
struct symbol;
#include "demangle.h"
#include "cp-abi.h"
#include "cp-support.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include <ctype.h>
#include "gdbcore.h"
#include "gdbarch.h"
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bfd.h" /* Binary File Description. */
#include "symtab.h"
#include "gdbtypes.h"
#include "defs.h"
#include "charset.h"
#include "gdbcmd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbsupport/gdb_wait.h"
#include "charset-list.h"
#include "gdbsupport/environ.h"
#include "breakpoint.h"
#include "bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include <ctype.h>
#include "coff/internal.h" /* Internal format of COFF symbols in BFD */
#include "defs.h"
#include "cp-support.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "symfile.h"
#include "block.h"
#include "symtab.h"
#include "gdbsupport/gdb_vecs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbsupport/array-view.h"
#include <vector>
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#include "language.h"
#include "namespace.h"
#include "d-lang.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbarch.h"
/* This returns the length of first component of NAME, which should be
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include <sys/stat.h>
#include "symtab.h"
#include "breakpoint.h"
#include "defs.h"
#include <ctype.h>
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "buildsym.h"
#include "dictionary.h"
#include "dwarf2/index-cache.h"
#include "dwarf2/section.h"
#include "filename-seen-cache.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbsupport/hash_enum.h"
#include "gdbsupport/function-view.h"
#include "psympriv.h"
#include "regcache.h"
#include "user-regs.h"
#include "valprint.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "objfiles.h"
#include "typeprint.h"
#include <ctype.h>
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bfd.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "defs.h"
#include "frame-base.h"
#include "frame.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbarch.h"
/* A default frame base implementations. If it wasn't for the old
#include "inline-frame.h"
#include "value.h"
#include "regcache.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "target.h"
#include "gdbarch.h"
#include "dwarf2/frame-tailcall.h"
#include "inferior.h" /* for inferior_ptid */
#include "regcache.h"
#include "user-regs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "dummy-frame.h"
#include "sentinel-frame.h"
#include "gdbcore.h"
+++ /dev/null
-/* Obstack wrapper for GDB.
-
- Copyright (C) 2013-2022 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/>. */
-
-#include "defs.h"
-#include "gdb_obstack.h"
-
-/* Concatenate NULL terminated variable argument list of `const char *'
- strings; return the new string. Space is found in the OBSTACKP.
- Argument list must be terminated by a sentinel expression `(char *)
- NULL'. */
-
-char *
-obconcat (struct obstack *obstackp, ...)
-{
- va_list ap;
-
- va_start (ap, obstackp);
- for (;;)
- {
- const char *s = va_arg (ap, const char *);
-
- if (s == NULL)
- break;
-
- obstack_grow_str (obstackp, s);
- }
- va_end (ap);
- obstack_1grow (obstackp, 0);
-
- return (char *) obstack_finish (obstackp);
-}
+++ /dev/null
-/* Obstack wrapper for GDB.
-
- Copyright (C) 2002-2022 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/>. */
-
-#if !defined (GDB_OBSTACK_H)
-#define GDB_OBSTACK_H 1
-
-#include "obstack.h"
-
-/* Utility macros - wrap obstack alloc into something more robust. */
-
-template <typename T>
-static inline T*
-obstack_zalloc (struct obstack *ob)
-{
- static_assert (IsMallocable<T>::value, "Trying to use OBSTACK_ZALLOC with a \
-non-POD data type. Use obstack_new instead.");
- return ((T *) memset (obstack_alloc (ob, sizeof (T)), 0, sizeof (T)));
-}
-
-#define OBSTACK_ZALLOC(OBSTACK,TYPE) obstack_zalloc<TYPE> ((OBSTACK))
-
-template <typename T>
-static inline T *
-obstack_calloc (struct obstack *ob, size_t number)
-{
- static_assert (IsMallocable<T>::value, "Trying to use OBSTACK_CALLOC with a \
-non-POD data type. Use obstack_new instead.");
- return ((T *) memset (obstack_alloc (ob, number * sizeof (T)), 0,
- number * sizeof (T)));
-}
-
-#define OBSTACK_CALLOC(OBSTACK,NUMBER,TYPE) \
- obstack_calloc<TYPE> ((OBSTACK), (NUMBER))
-
-/* Allocate an object on OB and call its constructor. */
-
-template <typename T, typename... Args>
-static inline T*
-obstack_new (struct obstack *ob, Args&&... args)
-{
- T* object = (T *) obstack_alloc (ob, sizeof (T));
- object = new (object) T (std::forward<Args> (args)...);
- return object;
-}
-
-/* Unless explicitly specified, GDB obstacks always use xmalloc() and
- xfree(). */
-/* Note: ezannoni 2004-02-09: One could also specify the allocation
- functions using a special init function for each obstack,
- obstack_specify_allocation. However we just use obstack_init and
- let these defines here do the job. While one could argue the
- superiority of one approach over the other, we just chose one
- throughout. */
-
-#define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free xfree
-
-#define obstack_grow_str(OBSTACK,STRING) \
- obstack_grow (OBSTACK, STRING, strlen (STRING))
-#define obstack_grow_str0(OBSTACK,STRING) \
- obstack_grow0 (OBSTACK, STRING, strlen (STRING))
-
-#define obstack_grow_wstr(OBSTACK, WSTRING) \
- obstack_grow (OBSTACK, WSTRING, sizeof (gdb_wchar_t) * gdb_wcslen (WSTRING))
-
-/* Concatenate NULL terminated variable argument list of `const char
- *' strings; return the new string. Space is found in the OBSTACKP.
- Argument list must be terminated by a sentinel expression `(char *)
- NULL'. */
-
-extern char *obconcat (struct obstack *obstackp, ...) ATTRIBUTE_SENTINEL;
-
-/* Duplicate STRING, returning an equivalent string that's allocated on the
- obstack OBSTACKP. */
-
-static inline char *
-obstack_strdup (struct obstack *obstackp, const char *string)
-{
- return (char *) obstack_copy0 (obstackp, string, strlen (string));
-}
-
-/* Duplicate STRING, returning an equivalent string that's allocated on the
- obstack OBSTACKP. */
-
-static inline char *
-obstack_strdup (struct obstack *obstackp, const std::string &string)
-{
- return (char *) obstack_copy0 (obstackp, string.c_str (),
- string.size ());
-}
-
-/* Duplicate the first N characters of STRING, returning a
- \0-terminated string that's allocated on the obstack OBSTACKP.
- Note that exactly N characters are copied, even if STRING is
- shorter. */
-
-static inline char *
-obstack_strndup (struct obstack *obstackp, const char *string, size_t n)
-{
- return (char *) obstack_copy0 (obstackp, string, n);
-}
-
-/* An obstack that frees itself on scope exit. */
-struct auto_obstack : obstack
-{
- auto_obstack ()
- { obstack_init (this); }
-
- ~auto_obstack ()
- { obstack_free (this, NULL); }
-
- DISABLE_COPY_AND_ASSIGN (auto_obstack);
-
- /* Free all memory in the obstack but leave it valid for further
- allocation. */
- void clear ()
- { obstack_free (this, obstack_base (this)); }
-};
-
-/* Objects are allocated on obstack instead of heap. */
-
-struct allocate_on_obstack
-{
- allocate_on_obstack () = default;
-
- void* operator new (size_t size, struct obstack *obstack)
- {
- return obstack_alloc (obstack, size);
- }
-
- void* operator new[] (size_t size, struct obstack *obstack)
- {
- return obstack_alloc (obstack, size);
- }
-
- void operator delete (void *memory) {}
- void operator delete[] (void *memory) {}
-};
-
-#endif
#include <vector>
#include "frame.h"
#include "dis-asm.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "infrun.h"
#include "osabi.h"
#include "displaced-stepping.h"
#include "gdbsupport/underlying.h"
#include "gdbsupport/print-utils.h"
#include "dwarf2.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gmp-utils.h"
/* Forward declarations for prototypes. */
#include "gdbcmd.h"
#include "gdbcore.h"
#include "gdbthread.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "tid-parse.h"
#include "nat/fork-inferior.h"
*/
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "block.h"
#include "symtab.h"
#include "language.h"
#include "i386-tdep.h"
#include "windows-tdep.h"
#include "regset.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "xml-support.h"
#include "gdbcore.h"
#include "inferior.h"
#include "inferior.h"
#include "cli/cli-utils.h"
#include "arch-utils.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "observable.h"
#include "objfiles.h"
#include "infcall.h"
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bfd.h" /* Binary File Description */
#include "symtab.h"
#include "gdbtypes.h"
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "macrotab.h"
#include "macroexp.h"
#include "macroscope.h"
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "splay-tree.h"
#include "filenames.h"
#include "symtab.h"
#include "gdbcore.h"
#include "filenames.h"
#include "objfiles.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "buildsym-legacy.h"
#include "stabsread.h"
#include "complaints.h"
#include "language.h"
#include "location.h"
#include "linespec.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include <ctype.h>
#include "tracepoint.h"
#define NAMESPACE_H
#include "gdbsupport/gdb_vecs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
/* This struct is designed to store data from using directives. It
says that names from namespace IMPORT_SRC should be visible within
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "hashtab.h"
#include "breakpoint.h"
#define OBJFILES_H
#include "hashtab.h"
-#include "gdb_obstack.h" /* For obstack internals. */
+#include "gdbsupport/gdb_obstack.h" /* For obstack internals. */
#include "objfile-flags.h"
#include "symfile.h"
#include "progspace.h"
/* This file is derived from p-typeprint.c */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bfd.h" /* Binary File Description */
#include "symtab.h"
#include "gdbtypes.h"
/* This file is derived from c-valprint.c */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#ifndef PSYMTAB_H
#define PSYMTAB_H
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symfile.h"
#include "gdbsupport/next-iterator.h"
#include "bcache.h"
#include "defs.h"
#include "arch-utils.h"
#include "frame-unwind.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbcmd.h"
#include "language.h"
#include "observable.h"
#include "regcache.h"
#include "command.h"
#include "gdbcmd.h" /* For maintenanceprintlist. */
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
/* Individual register groups. */
#include "block.h"
#include "charset.h"
#include "cp-support.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdb_regex.h"
#include "rust-lang.h"
#include "parser-defs.h"
#include "defs.h"
#include "bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "expression.h"
#include "regcache.h"
#include "filenames.h" /* for DOSish file names */
#include "gdb-stabs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "completer.h"
#include "bcache.h"
#include "hashtab.h"
#include "objfiles.h"
#include "breakpoint.h"
#include "command.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "language.h"
#include "bcache.h"
#include "block.h"
#include "hashtab.h"
#include "typeprint.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "block.h"
#include "dictionary.h"
#include <set>
#include "gdbsupport/gdb_vecs.h"
#include "gdbtypes.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdb_regex.h"
#include "gdbsupport/enum-flags.h"
#include "gdbsupport/function-view.h"
#include "xml-tdesc.h"
#include "osabi.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "hashtab.h"
#include "inferior.h"
#include <algorithm>
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "bfd.h" /* Binary File Description */
#include "symtab.h"
#include "gdbtypes.h"
#ifndef TYPEPRINT_H
#define TYPEPRINT_H
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
enum language;
struct ui_file;
#include "defs.h"
#include "ui-file.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbsupport/gdb_select.h"
#include "gdbsupport/filestuff.h"
#include "cli/cli-style.h"
#include "annotate.h"
#include "filenames.h"
#include "symfile.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbcore.h"
#include "top.h"
#include "main.h"
#include "target-float.h"
#include "extension.h"
#include "ada-lang.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "charset.h"
#include "typeprint.h"
#include <ctype.h>
#include "symfile.h"
#include "objfiles.h"
#include "gdb_bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbthread.h"
#include "gdbcmd.h"
#include <unistd.h>
#include "defs.h"
#include "windows-tdep.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "xml-support.h"
#include "gdbarch.h"
#include "target.h"
#ifndef XML_SUPPORT_H
#define XML_SUPPORT_H
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
#include "gdbsupport/xml-utils.h"
#include "gdbsupport/byte-vector.h"
#include "gdbsupport/gdb_optional.h"
filestuff.cc \
format.cc \
gdb-dlfcn.cc \
+ gdb_obstack.cc \
gdb_tilde_expand.cc \
gdb_wait.cc \
gdb_vecs.cc \
common-regcache.$(OBJEXT) common-utils.$(OBJEXT) \
environ.$(OBJEXT) errors.$(OBJEXT) event-loop.$(OBJEXT) \
fileio.$(OBJEXT) filestuff.$(OBJEXT) format.$(OBJEXT) \
- gdb-dlfcn.$(OBJEXT) gdb_tilde_expand.$(OBJEXT) \
- gdb_wait.$(OBJEXT) gdb_vecs.$(OBJEXT) job-control.$(OBJEXT) \
- netstuff.$(OBJEXT) new-op.$(OBJEXT) pathstuff.$(OBJEXT) \
- print-utils.$(OBJEXT) ptid.$(OBJEXT) rsp-low.$(OBJEXT) \
- run-time-clock.$(OBJEXT) safe-strerror.$(OBJEXT) \
- scoped_mmap.$(OBJEXT) search.$(OBJEXT) signals.$(OBJEXT) \
- signals-state-save-restore.$(OBJEXT) tdesc.$(OBJEXT) \
- thread-pool.$(OBJEXT) xml-utils.$(OBJEXT) $(am__objects_1)
+ gdb-dlfcn.$(OBJEXT) gdb_obstack.$(OBJEXT) \
+ gdb_tilde_expand.$(OBJEXT) gdb_wait.$(OBJEXT) \
+ gdb_vecs.$(OBJEXT) job-control.$(OBJEXT) netstuff.$(OBJEXT) \
+ new-op.$(OBJEXT) pathstuff.$(OBJEXT) print-utils.$(OBJEXT) \
+ ptid.$(OBJEXT) rsp-low.$(OBJEXT) run-time-clock.$(OBJEXT) \
+ safe-strerror.$(OBJEXT) scoped_mmap.$(OBJEXT) search.$(OBJEXT) \
+ signals.$(OBJEXT) signals-state-save-restore.$(OBJEXT) \
+ tdesc.$(OBJEXT) thread-pool.$(OBJEXT) xml-utils.$(OBJEXT) \
+ $(am__objects_1)
libgdbsupport_a_OBJECTS = $(am_libgdbsupport_a_OBJECTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
filestuff.cc \
format.cc \
gdb-dlfcn.cc \
+ gdb_obstack.cc \
gdb_tilde_expand.cc \
gdb_wait.cc \
gdb_vecs.cc \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filestuff.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdb-dlfcn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdb_obstack.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdb_tilde_expand.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdb_vecs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdb_wait.Po@am__quote@
--- /dev/null
+/* Obstack wrapper for GDB.
+
+ Copyright (C) 2013-2022 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/>. */
+
+#include "common-defs.h"
+#include "gdb_obstack.h"
+
+/* Concatenate NULL terminated variable argument list of `const char *'
+ strings; return the new string. Space is found in the OBSTACKP.
+ Argument list must be terminated by a sentinel expression `(char *)
+ NULL'. */
+
+char *
+obconcat (struct obstack *obstackp, ...)
+{
+ va_list ap;
+
+ va_start (ap, obstackp);
+ for (;;)
+ {
+ const char *s = va_arg (ap, const char *);
+
+ if (s == NULL)
+ break;
+
+ obstack_grow_str (obstackp, s);
+ }
+ va_end (ap);
+ obstack_1grow (obstackp, 0);
+
+ return (char *) obstack_finish (obstackp);
+}
--- /dev/null
+/* Obstack wrapper for GDB.
+
+ Copyright (C) 2002-2022 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/>. */
+
+#if !defined (GDB_OBSTACK_H)
+#define GDB_OBSTACK_H 1
+
+#include "obstack.h"
+
+/* Utility macros - wrap obstack alloc into something more robust. */
+
+template <typename T>
+static inline T*
+obstack_zalloc (struct obstack *ob)
+{
+ static_assert (IsMallocable<T>::value, "Trying to use OBSTACK_ZALLOC with a \
+non-POD data type. Use obstack_new instead.");
+ return ((T *) memset (obstack_alloc (ob, sizeof (T)), 0, sizeof (T)));
+}
+
+#define OBSTACK_ZALLOC(OBSTACK,TYPE) obstack_zalloc<TYPE> ((OBSTACK))
+
+template <typename T>
+static inline T *
+obstack_calloc (struct obstack *ob, size_t number)
+{
+ static_assert (IsMallocable<T>::value, "Trying to use OBSTACK_CALLOC with a \
+non-POD data type. Use obstack_new instead.");
+ return ((T *) memset (obstack_alloc (ob, number * sizeof (T)), 0,
+ number * sizeof (T)));
+}
+
+#define OBSTACK_CALLOC(OBSTACK,NUMBER,TYPE) \
+ obstack_calloc<TYPE> ((OBSTACK), (NUMBER))
+
+/* Allocate an object on OB and call its constructor. */
+
+template <typename T, typename... Args>
+static inline T*
+obstack_new (struct obstack *ob, Args&&... args)
+{
+ T* object = (T *) obstack_alloc (ob, sizeof (T));
+ object = new (object) T (std::forward<Args> (args)...);
+ return object;
+}
+
+/* Unless explicitly specified, GDB obstacks always use xmalloc() and
+ xfree(). */
+/* Note: ezannoni 2004-02-09: One could also specify the allocation
+ functions using a special init function for each obstack,
+ obstack_specify_allocation. However we just use obstack_init and
+ let these defines here do the job. While one could argue the
+ superiority of one approach over the other, we just chose one
+ throughout. */
+
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free xfree
+
+#define obstack_grow_str(OBSTACK,STRING) \
+ obstack_grow (OBSTACK, STRING, strlen (STRING))
+#define obstack_grow_str0(OBSTACK,STRING) \
+ obstack_grow0 (OBSTACK, STRING, strlen (STRING))
+
+#define obstack_grow_wstr(OBSTACK, WSTRING) \
+ obstack_grow (OBSTACK, WSTRING, sizeof (gdb_wchar_t) * gdb_wcslen (WSTRING))
+
+/* Concatenate NULL terminated variable argument list of `const char
+ *' strings; return the new string. Space is found in the OBSTACKP.
+ Argument list must be terminated by a sentinel expression `(char *)
+ NULL'. */
+
+extern char *obconcat (struct obstack *obstackp, ...) ATTRIBUTE_SENTINEL;
+
+/* Duplicate STRING, returning an equivalent string that's allocated on the
+ obstack OBSTACKP. */
+
+static inline char *
+obstack_strdup (struct obstack *obstackp, const char *string)
+{
+ return (char *) obstack_copy0 (obstackp, string, strlen (string));
+}
+
+/* Duplicate STRING, returning an equivalent string that's allocated on the
+ obstack OBSTACKP. */
+
+static inline char *
+obstack_strdup (struct obstack *obstackp, const std::string &string)
+{
+ return (char *) obstack_copy0 (obstackp, string.c_str (),
+ string.size ());
+}
+
+/* Duplicate the first N characters of STRING, returning a
+ \0-terminated string that's allocated on the obstack OBSTACKP.
+ Note that exactly N characters are copied, even if STRING is
+ shorter. */
+
+static inline char *
+obstack_strndup (struct obstack *obstackp, const char *string, size_t n)
+{
+ return (char *) obstack_copy0 (obstackp, string, n);
+}
+
+/* An obstack that frees itself on scope exit. */
+struct auto_obstack : obstack
+{
+ auto_obstack ()
+ { obstack_init (this); }
+
+ ~auto_obstack ()
+ { obstack_free (this, NULL); }
+
+ DISABLE_COPY_AND_ASSIGN (auto_obstack);
+
+ /* Free all memory in the obstack but leave it valid for further
+ allocation. */
+ void clear ()
+ { obstack_free (this, obstack_base (this)); }
+};
+
+/* Objects are allocated on obstack instead of heap. */
+
+struct allocate_on_obstack
+{
+ allocate_on_obstack () = default;
+
+ void* operator new (size_t size, struct obstack *obstack)
+ {
+ return obstack_alloc (obstack, size);
+ }
+
+ void* operator new[] (size_t size, struct obstack *obstack)
+ {
+ return obstack_alloc (obstack, size);
+ }
+
+ void operator delete (void *memory) {}
+ void operator delete[] (void *memory) {}
+};
+
+#endif