From 5d817dda3399b5f863cc5fa1d991bf710255cb1c Mon Sep 17 00:00:00 2001 From: Michael Yan Date: Mon, 30 May 2022 09:21:41 -0400 Subject: [PATCH 1/3] add tcmalloc to the list of coexisting heap managers --- gdbplus/gdb-12.1/gdb/Makefile.in | 1 + gdbplus/gdb-12.1/gdb/Makefile.in.tcmalloc | 2624 --------------------- gdbplus/gdb-12.1/gdb/gdb_dep.c | 20 + gdbplus/gdb-12.1/gdb/heapcmd.c | 5 +- gdbplus/gdb-9.2/gdb/Makefile.in.tcmalloc | 2624 --------------------- gdbplus/gdb-9.2/gdb/gdb_dep.c | 20 + gdbplus/gdb-9.2/gdb/heapcmd.c | 5 +- src/heap.cpp | 2 +- src/heap_tcmalloc.cpp | 52 +- src/x_dep.h | 4 + 10 files changed, 80 insertions(+), 5277 deletions(-) delete mode 100644 gdbplus/gdb-12.1/gdb/Makefile.in.tcmalloc delete mode 100644 gdbplus/gdb-9.2/gdb/Makefile.in.tcmalloc diff --git a/gdbplus/gdb-12.1/gdb/Makefile.in b/gdbplus/gdb-12.1/gdb/Makefile.in index c72c9c1..5b1d82f 100644 --- a/gdbplus/gdb-12.1/gdb/Makefile.in +++ b/gdbplus/gdb-12.1/gdb/Makefile.in @@ -1095,6 +1095,7 @@ COMMON_SFILES = \ heap_ptmalloc_2_27.c \ heap_ptmalloc_2_31.c \ heap_ptmalloc_2_35.c \ + heap_tcmalloc.c \ heapcmd.c \ i386-decode.c \ inf-child.c \ diff --git a/gdbplus/gdb-12.1/gdb/Makefile.in.tcmalloc b/gdbplus/gdb-12.1/gdb/Makefile.in.tcmalloc deleted file mode 100644 index 70d02d8..0000000 --- a/gdbplus/gdb-12.1/gdb/Makefile.in.tcmalloc +++ /dev/null @@ -1,2624 +0,0 @@ -# Copyright (C) 1989-2020 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 . - -# Please keep lists in this file sorted alphabetically, with one item per line. -# Here are the general guidelines for ordering files and directories: -# -# - Files come before directories. -# - The extensions are not taken into account when comparing filenames, except -# if the filenames are otherwise equal. -# - A filename that is a prefix of another one comes before. -# - Underscores and dashes are treated equally, and come before alphanumeric -# characters. -# -# For example: -# -# SOME_FILES = \ -# foo.c \ -# foo.h \ -# foo-bar.c \ -# foobar.c \ -# foo/bar.c - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(libdir)/$(target_alias) - -datadir = @datadir@ -localedir = @localedir@ -mandir = @mandir@ -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 -infodir = @infodir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -htmldir = @htmldir@ -pdfdir = @pdfdir@ -includedir = @includedir@ - -install_sh = @install_sh@ - -# This can be referenced by `LIBINTL' as computed by -# ZW_GNU_GETTEXT_SISTER_DIR. -top_builddir = . - -SHELL = @SHELL@ -EXEEXT = @EXEEXT@ - -AWK = @AWK@ -LN_S = @LN_S@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -DESTDIR = - -AR = @AR@ -AR_FLAGS = qv -RANLIB = @RANLIB@ -DLLTOOL = @DLLTOOL@ -WINDRES = @WINDRES@ -MIG = @MIG@ -STRIP = @STRIP@ - -XGETTEXT = @XGETTEXT@ -GMSGFMT = @GMSGFMT@ -MSGMERGE = msgmerge - -PACKAGE = @PACKAGE@ -CATALOGS = @CATALOGS@ - -CC = @CC@ -CXX = @CXX@ -CXX_DIALECT = @CXX_DIALECT@ - -# Dependency tracking information. -DEPMODE = @CCDEPMODE@ -DEPDIR = @DEPDIR@ -depcomp = $(SHELL) $(srcdir)/../depcomp - -# Directory containing source files. -srcdir = @srcdir@ -VPATH = @srcdir@ -top_srcdir = @top_srcdir@ - -include $(srcdir)/silent-rules.mk - -# Note that these are overridden by GNU make-specific code below if -# GNU make is used. The overrides implement dependency tracking. -COMPILE.pre = $(CXX) -x c++ $(CXX_DIALECT) -COMPILE.post = -c -o $@ -COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post) -POSTCOMPILE = @true - -YACC = @YACC@ - -# This is used to rebuild ada-lex.c from ada-lex.l. If the program is -# not defined, but ada-lex.c is present, compilation will continue, -# possibly with a warning. -FLEX = flex - -YLWRAP = $(srcdir)/../ylwrap - -# where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO = @MAKEINFO@ -MAKEINFOFLAGS = @MAKEINFOFLAGS@ -MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@ -MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS) - -MAKEHTML = $(MAKEINFO_CMD) --html -MAKEHTMLFLAGS = - -# Set this up with gcc if you have gnu ld and the loader will print out -# line numbers for undefined references. -#CC_LD = g++ -static -CC_LD = $(CXX) $(CXX_DIALECT) - -# Where is our "include" directory? Typically $(srcdir)/../include. -# This is essentially the header file directory for the library -# routines in libiberty. -INCLUDE_DIR = $(srcdir)/../include -INCLUDE_CFLAGS = -I$(INCLUDE_DIR) - -# Where is the "-liberty" library? Typically in ../libiberty. -LIBIBERTY = ../libiberty/libiberty.a - -# Where is the CTF library? Typically in ../libctf. -LIBCTF = ../libctf/.libs/libctf.a - -# Where is the BFD library? Typically in ../bfd. -BFD_DIR = ../bfd -BFD = $(BFD_DIR)/libbfd.a -BFD_SRC = $(srcdir)/$(BFD_DIR) -BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC) - -# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is -# -I../zlib, unless we were configured with --with-system-zlib, in which -# case both are empty. -ZLIB = @zlibdir@ -lz -ZLIBINC = @zlibinc@ - -# Where is the decnumber library? Typically in ../libdecnumber. -LIBDECNUMBER_DIR = ../libdecnumber -LIBDECNUMBER = $(LIBDECNUMBER_DIR)/libdecnumber.a -LIBDECNUMBER_SRC = $(srcdir)/$(LIBDECNUMBER_DIR) -LIBDECNUMBER_CFLAGS = -I$(LIBDECNUMBER_DIR) -I$(LIBDECNUMBER_SRC) - -# Where is the READLINE library? Typically in ../readline/readline. -READLINE_DIR = ../readline/readline -READLINE_SRC = $(srcdir)/$(READLINE_DIR) -READLINE = @READLINE@ -READLINE_DEPS = @READLINE_DEPS@ -READLINE_CFLAGS = @READLINE_CFLAGS@ - -# Where is expat? This will be empty if expat was not available. -LIBEXPAT = @LIBEXPAT@ - -# Where is lzma? This will be empty if lzma was not available. -LIBLZMA = @LIBLZMA@ - -# Where is libbabeltrace? This will be empty if libbabeltrace was not -# available. -LIBBABELTRACE = @LIBBABELTRACE@ - -# Where is libxxhash? This will be empty if libxxhash was not -# available. -LIBXXHASH = @LIBXXHASH@ - -# Where is libipt? This will be empty if libipt was not available. -LIBIPT = @LIBIPT@ - -# Where is libmpfr? This will be empty if libmpfr was not available. -LIBMPFR = @LIBMPFR@ - -# GNU source highlight library. -SRCHIGH_LIBS = @SRCHIGH_LIBS@ -SRCHIGH_CFLAGS = @SRCHIGH_CFLAGS@ - -WARN_CFLAGS = @WARN_CFLAGS@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -GDB_WARN_CFLAGS = $(WARN_CFLAGS) -GDB_WERROR_CFLAGS = $(WERROR_CFLAGS) - -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ - -RDYNAMIC = @RDYNAMIC@ - -# Where is the INTL library? Typically in ../intl. -INTL = @LIBINTL@ -INTL_DEPS = @LIBINTL_DEP@ -INTL_CFLAGS = @INCINTL@ - -# Where is the ICONV library? This will be empty if in libc or not available. -LIBICONV = @LIBICONV@ - -# Did the user give us a --with-gdb-datadir option? -GDB_DATADIR = @GDB_DATADIR@ - -# Code signing. -CODESIGN = codesign -CODESIGN_CERT = @CODESIGN_CERT@ - -# Flags to pass to gdb when invoked with "make run". -GDBFLAGS = - -# Helper code from gnulib. -GNULIB_BUILDDIR = ../gnulib -LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a -INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import - -# -# CLI sub directory definitons -# -SUBDIR_CLI_SRCS = \ - cli/cli-cmds.c \ - cli/cli-decode.c \ - cli/cli-dump.c \ - cli/cli-interp.c \ - cli/cli-logging.c \ - cli/cli-option.c \ - cli/cli-script.c \ - cli/cli-setshow.c \ - cli/cli-style.c \ - cli/cli-utils.c - -SUBDIR_CLI_OBS = $(patsubst %.c,%.o,$(SUBDIR_CLI_SRCS)) - -# -# MI sub directory definitons -# -SUBDIR_MI_SRCS = \ - mi/mi-cmd-break.c \ - mi/mi-cmd-catch.c \ - mi/mi-cmd-disas.c \ - mi/mi-cmd-env.c \ - mi/mi-cmd-file.c \ - mi/mi-cmd-info.c \ - mi/mi-cmd-stack.c \ - mi/mi-cmd-target.c \ - mi/mi-cmd-var.c \ - mi/mi-cmds.c \ - mi/mi-console.c \ - mi/mi-getopt.c \ - mi/mi-interp.c \ - mi/mi-main.c \ - mi/mi-out.c \ - mi/mi-parse.c \ - mi/mi-symbol-cmds.c - -SUBDIR_MI_OBS = $(patsubst %.c,%.o,$(SUBDIR_MI_SRCS)) - -SUBDIR_MI_DEPS = -SUBDIR_MI_LDFLAGS = -SUBDIR_MI_CFLAGS = - -# -# TUI sub directory definitions -# -SUBDIR_TUI_SRCS = \ - tui/tui.c \ - tui/tui-command.c \ - tui/tui-data.c \ - tui/tui-disasm.c \ - tui/tui-file.c \ - tui/tui-hooks.c \ - tui/tui-interp.c \ - tui/tui-io.c \ - tui/tui-layout.c \ - tui/tui-out.c \ - tui/tui-regs.c \ - tui/tui-source.c \ - tui/tui-stack.c \ - tui/tui-win.c \ - tui/tui-wingeneral.c \ - tui/tui-winsource.c - -SUBDIR_TUI_OBS = $(patsubst %.c,%.o,$(SUBDIR_TUI_SRCS)) - -SUBDIR_TUI_DEPS = -SUBDIR_TUI_LDFLAGS = -SUBDIR_TUI_CFLAGS = -DTUI=1 - -# -# GCC Compile support sub-directory definitions -# -SUBDIR_GCC_COMPILE_SRCS = \ - compile/compile.c \ - compile/compile-c-support.c \ - compile/compile-c-symbols.c \ - compile/compile-c-types.c \ - compile/compile-cplus-symbols.c \ - compile/compile-cplus-types.c \ - compile/compile-loc2c.c \ - compile/compile-object-load.c \ - compile/compile-object-run.c - -SUBDIR_GCC_COMPILE_OBS = $(patsubst %.c,%.o,$(filter %.c,$(SUBDIR_GCC_COMPILE_SRCS))) - -# -# Guile sub directory definitons for guile support. -# -SUBDIR_GUILE_SRCS = \ - guile/guile.c \ - guile/scm-arch.c \ - guile/scm-auto-load.c \ - guile/scm-block.c \ - guile/scm-breakpoint.c \ - guile/scm-cmd.c \ - guile/scm-disasm.c \ - guile/scm-exception.c \ - guile/scm-frame.c \ - guile/scm-gsmob.c \ - guile/scm-iterator.c \ - guile/scm-lazy-string.c \ - guile/scm-math.c \ - guile/scm-objfile.c \ - guile/scm-param.c \ - guile/scm-ports.c \ - guile/scm-pretty-print.c \ - guile/scm-progspace.c \ - guile/scm-safe-call.c \ - guile/scm-string.c \ - guile/scm-symbol.c \ - guile/scm-symtab.c \ - guile/scm-type.c \ - guile/scm-utils.c \ - guile/scm-value.c - -SUBDIR_GUILE_OBS = $(patsubst %.c,%.o,$(SUBDIR_GUILE_SRCS)) - -SUBDIR_GUILE_DEPS = -SUBDIR_GUILE_LDFLAGS = -SUBDIR_GUILE_CFLAGS = - -# -# python sub directory definitons -# -SUBDIR_PYTHON_SRCS = \ - python/py-arch.c \ - python/py-auto-load.c \ - python/py-block.c \ - python/py-bpevent.c \ - python/py-breakpoint.c \ - python/py-cmd.c \ - python/py-continueevent.c \ - python/py-event.c \ - python/py-evtregistry.c \ - python/py-evts.c \ - python/py-exitedevent.c \ - python/py-finishbreakpoint.c \ - python/py-frame.c \ - python/py-framefilter.c \ - python/py-function.c \ - python/py-gdb-readline.c \ - python/py-heap.c \ - python/py-inferior.c \ - python/py-infevents.c \ - python/py-infthread.c \ - python/py-instruction.c \ - python/py-lazy-string.c \ - python/py-linetable.c \ - python/py-newobjfileevent.c \ - python/py-objfile.c \ - python/py-param.c \ - python/py-prettyprint.c \ - python/py-progspace.c \ - python/py-record.c \ - python/py-record-btrace.c \ - python/py-record-full.c \ - python/py-ref.c \ - python/py-signalevent.c \ - python/py-stopevent.c \ - python/py-symbol.c \ - python/py-symtab.c \ - python/py-threadevent.c \ - python/py-type.c \ - python/py-unwind.c \ - python/py-utils.c \ - python/py-value.c \ - python/py-varobj.c \ - python/py-xmethods.c \ - python/python.c - -SUBDIR_PYTHON_OBS = $(patsubst %.c,%.o,$(SUBDIR_PYTHON_SRCS)) - -SUBDIR_PYTHON_DEPS = -SUBDIR_PYTHON_LDFLAGS = -SUBDIR_PYTHON_CFLAGS = - -SUBDIR_UNITTESTS_SRCS = \ - unittests/array-view-selftests.c \ - unittests/child-path-selftests.c \ - unittests/cli-utils-selftests.c \ - unittests/common-utils-selftests.c \ - unittests/copy_bitwise-selftests.c \ - unittests/environ-selftests.c \ - unittests/filtered_iterator-selftests.c \ - unittests/format_pieces-selftests.c \ - unittests/function-view-selftests.c \ - unittests/help-doc-selftests.c \ - unittests/lookup_name_info-selftests.c \ - unittests/memory-map-selftests.c \ - unittests/memrange-selftests.c \ - unittests/offset-type-selftests.c \ - unittests/observable-selftests.c \ - unittests/optional-selftests.c \ - unittests/parse-connection-spec-selftests.c \ - unittests/ptid-selftests.c \ - unittests/main-thread-selftests.c \ - unittests/mkdir-recursive-selftests.c \ - unittests/rsp-low-selftests.c \ - unittests/scoped_fd-selftests.c \ - unittests/scoped_mmap-selftests.c \ - unittests/scoped_restore-selftests.c \ - unittests/string_view-selftests.c \ - unittests/style-selftests.c \ - unittests/tracepoint-selftests.c \ - unittests/tui-selftests.c \ - unittests/unpack-selftests.c \ - unittests/utils-selftests.c \ - unittests/vec-utils-selftests.c \ - unittests/xml-utils-selftests.c - -SUBDIR_UNITTESTS_OBS = $(patsubst %.c,%.o,$(SUBDIR_UNITTESTS_SRCS)) - -SUBDIR_TARGET_SRCS = target/waitstatus.c -SUBDIR_TARGET_OBS = $(patsubst %.c,%.o,$(SUBDIR_TARGET_SRCS)) - - -# Opcodes currently live in one of two places. Either they are in the -# opcode library, typically ../opcodes, or they are in a header file -# in INCLUDE_DIR. -# Where is the "-lopcodes" library, with (some of) the opcode tables and -# disassemblers? -OPCODES_DIR = ../opcodes -OPCODES_SRC = $(srcdir)/$(OPCODES_DIR) -OPCODES = $(OPCODES_DIR)/libopcodes.a -# Where are the other opcode tables which only have header file -# versions? -OP_INCLUDE = $(INCLUDE_DIR)/opcode -# See TOP_CFLAGS as well. -OPCODES_CFLAGS = -I$(OP_INCLUDE) - -# Allow includes like "opcodes/mumble.h". -TOP_CFLAGS = -I$(top_srcdir)/.. - -# The simulator is usually nonexistent; targets that include one -# should set this to list all the .o or .a files to be linked in. -SIM = @SIM@ - -WIN32LIBS = @WIN32LIBS@ - -# Tcl et al cflags and libraries -TCL = @TCL_LIBRARY@ -TCL_CFLAGS = @TCL_INCLUDE@ -GDBTKLIBS = @GDBTKLIBS@ -# Extra flags that the GDBTK files need: -GDBTK_CFLAGS = @GDBTK_CFLAGS@ - -TK = @TK_LIBRARY@ -TK_CFLAGS = @TK_INCLUDE@ - -X11_CFLAGS = @TK_XINCLUDES@ -X11_LDFLAGS = -X11_LIBS = - -WIN32LDAPP = @WIN32LDAPP@ - -LIBGUI = @LIBGUI@ -GUI_CFLAGS_X = @GUI_CFLAGS_X@ -IDE_CFLAGS = $(GUI_CFLAGS_X) $(IDE_CFLAGS_X) - -ALL_TCL_CFLAGS = $(TCL_CFLAGS) $(TK_CFLAGS) - -# The version of gdbtk we're building. This should be kept -# in sync with GDBTK_VERSION and friends in gdbtk.h. -GDBTK_VERSION = 1.0 -GDBTK_LIBRARY = $(datadir)/insight$(GDBTK_VERSION) - -# Gdbtk requires an absolute path to the source directory or -# the testsuite won't run properly. -GDBTK_SRC_DIR = @GDBTK_SRC_DIR@ - -SUBDIR_GDBTK_OBS = \ - gdbtk.o \ - gdbtk-bp.o \ - gdbtk-cmds.o \ - gdbtk-hooks.o \ - gdbtk-interp.o \ - gdbtk-register.o \ - gdbtk-stack.o \ - gdbtk-varobj.o \ - gdbtk-wrapper.o - -SUBDIR_GDBTK_SRCS = \ - gdbtk/generic/gdbtk.c \ - gdbtk/generic/gdbtk-bp.c \ - gdbtk/generic/gdbtk-cmds.c \ - gdbtk/generic/gdbtk-hooks.c \ - gdbtk/generic/gdbtk-interp.c \ - gdbtk/generic/gdbtk-main.c \ - gdbtk/generic/gdbtk-register.c \ - gdbtk/generic/gdbtk-stack.c \ - gdbtk/generic/gdbtk-varobj.c \ - gdbtk/generic/gdbtk-wrapper.c - -SUBDIR_GDBTK_DEPS = $(LIBGUI) $(TCL_DEPS) $(TK_DEPS) -SUBDIR_GDBTK_LDFLAGS = -SUBDIR_GDBTK_CFLAGS = -DGDBTK - -CONFIG_OBS = @CONFIG_OBS@ -CONFIG_SRCS = @CONFIG_SRCS@ -CONFIG_DEPS = @CONFIG_DEPS@ -CONFIG_LDFLAGS = @CONFIG_LDFLAGS@ -ENABLE_CFLAGS = @ENABLE_CFLAGS@ -CONFIG_ALL = @CONFIG_ALL@ -CONFIG_CLEAN = @CONFIG_CLEAN@ -CONFIG_INSTALL = @CONFIG_INSTALL@ -CONFIG_UNINSTALL = @CONFIG_UNINSTALL@ -HAVE_NATIVE_GCORE_TARGET = @HAVE_NATIVE_GCORE_TARGET@ - -CONFIG_SRC_SUBDIR = arch cli mi gdbsupport compile tui unittests guile python \ - target nat -CONFIG_DEP_SUBDIR = $(addsuffix /$(DEPDIR),$(CONFIG_SRC_SUBDIR)) - -# -I. for config files. -# -I$(srcdir) for gdb internal headers. -# -I$(srcdir)/config for more generic config files. - -# It is also possible that you will need to add -I/usr/include/sys if -# your system doesn't have fcntl.h in /usr/include (which is where it -# should be according to Posix). -DEFS = @DEFS@ -GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config \ - -DLOCALEDIR="\"$(localedir)\"" $(DEFS) - -# MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory. -GLOBAL_CFLAGS = $(MH_CFLAGS) - -PROFILE_CFLAGS = @PROFILE_CFLAGS@ - -# These are specifically reserved for setting from the command line -# when running make. I.E.: "make CFLAGS=-Wmissing-prototypes". -CFLAGS = @CFLAGS@ -CXXFLAGS = @CXXFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -# Set by configure, for e.g. expat. Python installations are such that -# C headers are included using their basename (for example, we #include -# rather than, say, ). Since the file names -# are sometimes a little generic, we think that the risk of collision -# with other header files is high. If that happens, we try to mitigate -# a bit the consequences by putting the Python includes last in the list. -INTERNAL_CPPFLAGS = $(CPPFLAGS) @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@ - -# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros. -INTERNAL_CFLAGS_BASE = \ - $(CXXFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \ - $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \ - $(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \ - $(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) \ - $(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS) -INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS) -INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS) - -# LDFLAGS is specifically reserved for setting from the command line -# when running make. -LDFLAGS = @LDFLAGS@ - -# Profiling options need to go here to work. -# I think it's perfectly reasonable for a user to set -pg in CFLAGS -# and have it work; that's why CFLAGS is here. -# PROFILE_CFLAGS is _not_ included, however, because we use monstartup. -INTERNAL_LDFLAGS = \ - $(CXXFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) \ - $(LDFLAGS) $(CONFIG_LDFLAGS) $(PTHREAD_CFLAGS) - -# Libraries and corresponding dependencies for compiling gdb. -# XM_CLIBS, defined in *config files, have host-dependent libs. -# LIBIBERTY appears twice on purpose. -CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(LIBCTF) $(ZLIB) \ - $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \ - $(XM_CLIBS) $(GDBTKLIBS) \ - @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \ - $(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \ - $(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) $(LIBICONV) $(LIBMPFR) \ - $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) -CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(LIBCTF) \ - $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) - -DIST = gdb - -RUNTEST = runtest -RUNTESTFLAGS = - -# XML files to build in to GDB. -XMLFILES = \ - $(srcdir)/features/btrace.dtd \ - $(srcdir)/features/btrace-conf.dtd \ - $(srcdir)/features/gdb-target.dtd \ - $(srcdir)/features/library-list.dtd \ - $(srcdir)/features/library-list-aix.dtd \ - $(srcdir)/features/library-list-svr4.dtd \ - $(srcdir)/features/osdata.dtd \ - $(srcdir)/features/threads.dtd \ - $(srcdir)/features/traceframe-info.dtd \ - $(srcdir)/features/xinclude.dtd - -# Build the ser-*.o files the host supports. This includes ser-unix.o -# for any system that supports a POSIX interface to the serial port. -# See configure.ac. -SER_HARDWIRE = @SER_HARDWIRE@ - -# This is remote-sim.o if a simulator is to be linked in. -SIM_OBS = @SIM_OBS@ - -# Target-dependent object files. -TARGET_OBS = @TARGET_OBS@ - -# All target-dependent objects files that require 64-bit CORE_ADDR -# (used with --enable-targets=all --enable-64-bit-bfd). -ALL_64_TARGET_OBS = \ - aarch64-fbsd-tdep.o \ - aarch64-linux-tdep.o \ - aarch64-newlib-tdep.o \ - aarch64-ravenscar-thread.o \ - aarch64-tdep.o \ - alpha-bsd-tdep.o \ - alpha-linux-tdep.o \ - alpha-mdebug-tdep.o \ - alpha-nbsd-tdep.o \ - alpha-obsd-tdep.o \ - alpha-tdep.o \ - amd64-darwin-tdep.o \ - amd64-dicos-tdep.o \ - amd64-fbsd-tdep.o \ - amd64-linux-tdep.o \ - amd64-nbsd-tdep.o \ - amd64-obsd-tdep.o \ - amd64-sol2-tdep.o \ - amd64-tdep.o \ - amd64-windows-tdep.o \ - arch/aarch64.o \ - arch/aarch64-insn.o \ - arch/amd64.o \ - ia64-linux-tdep.o \ - ia64-tdep.o \ - ia64-vms-tdep.o \ - mips64-obsd-tdep.o \ - sparc64-fbsd-tdep.o \ - sparc64-linux-tdep.o \ - sparc64-nbsd-tdep.o \ - sparc64-obsd-tdep.o \ - sparc64-sol2-tdep.o \ - sparc64-tdep.o - -# All other target-dependent objects files (used with --enable-targets=all). -ALL_TARGET_OBS = \ - aarch32-tdep.o \ - arc-tdep.o \ - arch/aarch32.o \ - arch/arm.o \ - arch/arm-get-next-pcs.o \ - arch/arm-linux.o \ - arch/i386.o \ - arch/ppc-linux-common.o \ - arch/riscv.o \ - arm-bsd-tdep.o \ - arm-fbsd-tdep.o \ - arm-linux-tdep.o \ - arm-nbsd-tdep.o \ - arm-obsd-tdep.o \ - arm-pikeos-tdep.o \ - arm-symbian-tdep.o \ - arm-tdep.o \ - arm-wince-tdep.o \ - avr-tdep.o \ - bfin-linux-tdep.o \ - bfin-tdep.o \ - bsd-uthread.o \ - cris-linux-tdep.o \ - cris-tdep.o \ - csky-linux-tdep.o \ - csky-tdep.o \ - dicos-tdep.o \ - fbsd-tdep.o \ - frv-linux-tdep.o \ - frv-tdep.o \ - ft32-tdep.o \ - glibc-tdep.o \ - h8300-tdep.o \ - hppa-bsd-tdep.o \ - hppa-linux-tdep.o \ - hppa-nbsd-tdep.o \ - hppa-obsd-tdep.o \ - hppa-tdep.o \ - i386-bsd-tdep.o \ - i386-cygwin-tdep.o \ - i386-darwin-tdep.o \ - i386-dicos-tdep.o \ - i386-fbsd-tdep.o \ - i386-gnu-tdep.o \ - i386-go32-tdep.o \ - i386-linux-tdep.o \ - i386-nbsd-tdep.o \ - i386-nto-tdep.o \ - i386-obsd-tdep.o \ - i386-sol2-tdep.o \ - i386-tdep.o \ - i387-tdep.o \ - iq2000-tdep.o \ - linux-record.o \ - linux-tdep.o \ - lm32-tdep.o \ - m32c-tdep.o \ - m32r-linux-tdep.o \ - m32r-tdep.o \ - m68hc11-tdep.o \ - m68k-bsd-tdep.o \ - m68k-linux-tdep.o \ - m68k-tdep.o \ - mep-tdep.o \ - microblaze-linux-tdep.o \ - microblaze-tdep.o \ - mips-fbsd-tdep.o \ - mips-linux-tdep.o \ - mips-nbsd-tdep.o \ - mips-sde-tdep.o \ - mips-tdep.o \ - mn10300-linux-tdep.o \ - mn10300-tdep.o \ - moxie-tdep.o \ - msp430-tdep.o \ - nbsd-tdep.o \ - nds32-tdep.o \ - nios2-linux-tdep.o \ - nios2-tdep.o \ - nto-tdep.o \ - obsd-tdep.o \ - or1k-linux-tdep.o \ - or1k-tdep.o \ - ppc-fbsd-tdep.o \ - ppc-linux-tdep.o \ - ppc-nbsd-tdep.o \ - ppc-obsd-tdep.o \ - ppc-ravenscar-thread.o \ - ppc-sysv-tdep.o \ - ppc64-tdep.o \ - ravenscar-thread.o \ - riscv-fbsd-tdep.o \ - riscv-linux-tdep.o \ - riscv-tdep.o \ - rl78-tdep.o \ - rs6000-aix-tdep.o \ - rs6000-lynx178-tdep.o \ - rs6000-tdep.o \ - rx-tdep.o \ - s12z-tdep.o \ - s390-linux-tdep.o \ - s390-tdep.o \ - score-tdep.o \ - sh-linux-tdep.o \ - sh-nbsd-tdep.o \ - sh-tdep.o \ - sol2-tdep.o \ - solib-aix.o \ - solib-darwin.o \ - solib-dsbt.o \ - solib-frv.o \ - solib-svr4.o \ - sparc-linux-tdep.o \ - sparc-nbsd-tdep.o \ - sparc-obsd-tdep.o \ - sparc-ravenscar-thread.o \ - sparc-sol2-tdep.o \ - sparc-tdep.o \ - symfile-mem.o \ - tic6x-linux-tdep.o \ - tic6x-tdep.o \ - tilegx-linux-tdep.o \ - tilegx-tdep.o \ - v850-tdep.o \ - vax-nbsd-tdep.o \ - vax-tdep.o \ - windows-tdep.o \ - x86-tdep.o \ - xcoffread.o \ - xstormy16-tdep.o \ - xtensa-config.o \ - xtensa-linux-tdep.o \ - xtensa-tdep.o - -# The following native-target dependent variables are defined on -# configure.nat. -NAT_FILE = @NAT_FILE@ -NATDEPFILES = @NATDEPFILES@ -NAT_CDEPS = @NAT_CDEPS@ -LOADLIBES = @LOADLIBES@ -MH_CFLAGS = @MH_CFLAGS@ -XM_CLIBS = @XM_CLIBS@ -NAT_GENERATED_FILES = @NAT_GENERATED_FILES@ -NM_H = @NM_H@ -HAVE_NATIVE_GCORE_HOST = @HAVE_NATIVE_GCORE_HOST@ - -# Native-target dependent makefile fragment comes in here. -@nat_makefile_frag@ - -# End of native-target dependent variables. - -FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "datarootdir=$(datarootdir)" \ - "docdir=$(docdir)" \ - "htmldir=$(htmldir)" \ - "pdfdir=$(pdfdir)" \ - "libdir=$(libdir)" \ - "mandir=$(mandir)" \ - "datadir=$(datadir)" \ - "includedir=$(includedir)" \ - "against=$(against)" \ - "DESTDIR=$(DESTDIR)" \ - "AR=$(AR)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "CXX=$(CXX)" \ - "CXX_DIALECT=$(CXX_DIALECT)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "DLLTOOL=$(DLLTOOL)" \ - "LDFLAGS=$(LDFLAGS)" \ - "RANLIB=$(RANLIB)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ - "MAKEINFO_EXTRA_FLAGS=$(MAKEINFO_EXTRA_FLAGS)" \ - "MAKEHTML=$(MAKEHTML)" \ - "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" - -# Flags that we pass when building the testsuite. - -# empty for native, $(target_alias)/ for cross -target_subdir = @target_subdir@ - -CC_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xgcc ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CC); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` - -CXX_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xg++ ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xg++ -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xg++ -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CXX); \ - else \ - t='$(program_transform_name)'; echo g++ | sed -e '' $$t; \ - fi; \ - fi` - -# The use of $$(x_FOR_TARGET) reduces the command line length by not -# duplicating the lengthy definition. -TARGET_FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "against=$(against)" \ - 'CC=$$(CC_FOR_TARGET)' \ - "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS=$(CFLAGS)" \ - 'CXX=$$(CXX_FOR_TARGET)' \ - "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEHTML=$(MAKEHTML)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "FORCE_PARALLEL=$(FORCE_PARALLEL)" \ - "TESTS=$(TESTS)" - -# All source files that go into linking GDB. - -# Files that should wind up in SFILES and whose corresponding .o -# should be in COMMON_OBS. -COMMON_SFILES = \ - ada-lang.c \ - ada-tasks.c \ - ada-typeprint.c \ - ada-valprint.c \ - ada-varobj.c \ - addrmap.c \ - agent.c \ - alloc.c \ - annotate.c \ - arch-utils.c \ - auto-load.c \ - auxv.c \ - ax-gdb.c \ - ax-general.c \ - bcache.c \ - bfd-target.c \ - block.c \ - blockframe.c \ - break-catch-sig.c \ - break-catch-syscall.c \ - break-catch-throw.c \ - breakpoint.c \ - btrace.c \ - build-id.c \ - buildsym-legacy.c \ - buildsym.c \ - c-lang.c \ - c-typeprint.c \ - c-valprint.c \ - c-varobj.c \ - charset.c \ - cli-out.c \ - coff-pe-read.c \ - coffread.c \ - gdbsupport/agent.c \ - gdbsupport/btrace-common.c \ - gdbsupport/buffer.c \ - gdbsupport/cleanups.c \ - gdbsupport/common-debug.c \ - gdbsupport/common-exceptions.c \ - gdbsupport/common-inferior.c \ - gdbsupport/common-regcache.c \ - gdbsupport/common-utils.c \ - gdbsupport/errors.c \ - gdbsupport/environ.c \ - gdbsupport/fileio.c \ - gdbsupport/filestuff.c \ - gdbsupport/format.c \ - gdbsupport/job-control.c \ - gdbsupport/gdb-dlfcn.c \ - gdbsupport/gdb_tilde_expand.c \ - gdbsupport/gdb_vecs.c \ - gdbsupport/netstuff.c \ - gdbsupport/new-op.c \ - gdbsupport/pathstuff.c \ - gdbsupport/print-utils.c \ - gdbsupport/ptid.c \ - gdbsupport/rsp-low.c \ - gdbsupport/run-time-clock.c \ - gdbsupport/safe-strerror.c \ - gdbsupport/scoped_mmap.c \ - gdbsupport/signals.c \ - gdbsupport/signals-state-save-restore.c \ - gdbsupport/tdesc.c \ - gdbsupport/thread-pool.c \ - gdbsupport/xml-utils.c \ - complaints.c \ - completer.c \ - continuations.c \ - copying.c \ - corefile.c \ - corelow.c \ - cp-abi.c \ - cp-namespace.c \ - cp-support.c \ - cp-valprint.c \ - ctfread.c \ - d-lang.c \ - d-namespace.c \ - d-valprint.c \ - dbxread.c \ - dcache.c \ - debug.c \ - decode.c \ - dictionary.c \ - disasm.c \ - disasm-selftests.c \ - dummy-frame.c \ - dwarf-index-cache.c \ - dwarf-index-common.c \ - dwarf-index-write.c \ - dwarf2-frame.c \ - dwarf2-frame-tailcall.c \ - dwarf2expr.c \ - dwarf2loc.c \ - dwarf2read.c \ - eval.c \ - event-loop.c \ - event-top.c \ - exceptions.c \ - exec.c \ - expprint.c \ - extension.c \ - f-lang.c \ - f-typeprint.c \ - f-valprint.c \ - filename-seen-cache.c \ - filesystem.c \ - findcmd.c \ - findvar.c \ - frame.c \ - frame-base.c \ - frame-unwind.c \ - gcore.c \ - gdb-demangle.c \ - gdb_bfd.c \ - gdb_dep.c \ - gdb_obstack.c \ - gdb_regex.c \ - gdbarch.c \ - gdbarch-selftests.c \ - gdbtypes.c \ - gnu-v2-abi.c \ - gnu-v3-abi.c \ - go-lang.c \ - go-typeprint.c \ - go-valprint.c \ - heap.c \ - heap_tcmalloc.c \ - heapcmd.c \ - i386-decode.c \ - inf-child.c \ - inf-loop.c \ - infcall.c \ - infcmd.c \ - inferior.c \ - inflow.c \ - infrun.c \ - inline-frame.c \ - interps.c \ - jit.c \ - language.c \ - linespec.c \ - location.c \ - m2-lang.c \ - m2-typeprint.c \ - m2-valprint.c \ - macrocmd.c \ - macroexp.c \ - macroscope.c \ - macrotab.c \ - main.c \ - maint.c \ - maint-test-options.c \ - maint-test-settings.c \ - mdebugread.c \ - mem-break.c \ - memattr.c \ - memory-map.c \ - memrange.c \ - minidebug.c \ - minsyms.c \ - mipsread.c \ - namespace.c \ - objc-lang.c \ - objfiles.c \ - observable.c \ - opencl-lang.c \ - osabi.c \ - osdata.c \ - p-lang.c \ - p-typeprint.c \ - p-valprint.c \ - parse.c \ - printcmd.c \ - probe.c \ - process-stratum-target.c \ - producer.c \ - progspace.c \ - progspace-and-thread.c \ - prologue-value.c \ - psymtab.c \ - record.c \ - record-btrace.c \ - record-full.c \ - regcache.c \ - regcache-dump.c \ - reggroups.c \ - registry.c \ - remote.c \ - remote-fileio.c \ - remote-notif.c \ - reverse.c \ - run-on-main-thread.c \ - rust-lang.c \ - search.c \ - segment.c \ - sentinel-frame.c \ - ser-event.c \ - serial.c \ - skip.c \ - solib.c \ - solib-target.c \ - source.c \ - source-cache.c \ - stabsread.c \ - stack.c \ - std-regs.c \ - stl_container.c \ - symfile.c \ - symfile-debug.c \ - symmisc.c \ - symtab.c \ - target.c \ - target-dcache.c \ - target-descriptions.c \ - target-memory.c \ - test-target.c \ - thread.c \ - thread-iter.c \ - tid-parse.c \ - top.c \ - tracectf.c \ - tracefile.c \ - tracefile-tfile.c \ - tracepoint.c \ - trad-frame.c \ - tramp-frame.c \ - target-float.c \ - type-stack.c \ - typeprint.c \ - ui-file.c \ - ui-out.c \ - ui-style.c \ - user-regs.c \ - utils.c \ - valarith.c \ - valops.c \ - valprint.c \ - value.c \ - varobj.c \ - xml-support.c \ - xml-syscall.c \ - xml-tdesc.c - -# Links made at configuration time should not be specified here, since -# SFILES is used in building the distribution archive. -SFILES = \ - ada-exp.y \ - arch/i386.c \ - c-exp.y \ - cp-name-parser.y \ - d-exp.y \ - dtrace-probe.c \ - elfread.c \ - f-exp.y \ - gdb.c \ - go-exp.y \ - m2-exp.y \ - p-exp.y \ - proc-service.list \ - rust-exp.y \ - ser-base.c \ - ser-unix.c \ - sol-thread.c \ - stap-probe.c \ - stub-termcap.c \ - symfile-mem.c \ - ui-file.h \ - mi/mi-common.c \ - $(SUBDIR_CLI_SRCS) \ - $(SUBDIR_TARGET_SRCS) \ - $(COMMON_SFILES) \ - $(SUBDIR_GCC_COMPILE_SRCS) - -# Header files that need to have srcdir added. Note that in the cases -# where we use a macro like $(gdbcmd_h), things are carefully arranged -# so that each .h file is listed exactly once (M-x tags-search works -# wrong if TAGS has files twice). Because this is tricky to get -# right, it is probably easiest just to list .h files here directly. - -HFILES_NO_SRCDIR = \ - aarch32-tdep.h \ - aarch64-ravenscar-thread.h \ - aarch64-tdep.h \ - ada-lang.h \ - addrmap.h \ - alpha-bsd-tdep.h \ - alpha-tdep.h \ - amd64-darwin-tdep.h \ - amd64-linux-tdep.h \ - amd64-nat.h \ - amd64-tdep.h \ - annotate.h \ - arc-tdep.h \ - arch-utils.h \ - arm-linux-tdep.h \ - arm-tdep.h \ - auto-load.h \ - auxv.h \ - ax.h \ - ax-gdb.h \ - bcache.h \ - bfd-target.h \ - bfin-tdep.h \ - block.h \ - breakpoint.h \ - bsd-kvm.h \ - bsd-uthread.h \ - build-id.h \ - buildsym-legacy.h \ - buildsym.h \ - c-lang.h \ - charset.h \ - charset-list.h \ - cli-out.h \ - coff-pe-read.h \ - command.h \ - complaints.h \ - completer.h \ - cp-abi.h \ - cp-support.h \ - csky-tdep.h \ - d-lang.h \ - darwin-nat.h \ - dcache.h \ - defs.h \ - dicos-tdep.h \ - dictionary.h \ - disasm.h \ - dummy-frame.h \ - dwarf-index-cache.h \ - dwarf-index-common.h \ - dwarf2-frame.h \ - dwarf2-frame-tailcall.h \ - dwarf2expr.h \ - dwarf2loc.h \ - dwarf2read.h \ - event-loop.h \ - event-top.h \ - exceptions.h \ - exec.h \ - expression.h \ - extension.h \ - extension-priv.h \ - f-lang.h \ - fbsd-nat.h \ - fbsd-tdep.h \ - filesystem.h \ - frame.h \ - frame-base.h \ - frame-unwind.h \ - frv-tdep.h \ - ft32-tdep.h \ - gcore.h \ - gdb_bfd.h \ - gdb_curses.h \ - gdb_expat.h \ - gdb_obstack.h \ - gdb_proc_service.h \ - gdb_regex.h \ - gdb_select.h \ - gdb-stabs.h \ - gdb_vfork.h \ - gdb_wchar.h \ - gdbarch.h \ - gdbcmd.h \ - gdbcore.h \ - gdbthread.h \ - gdbtypes.h \ - glibc-tdep.h \ - gnu-nat.h \ - go-lang.h \ - gregset.h \ - hppa-bsd-tdep.h \ - hppa-linux-offsets.h \ - hppa-tdep.h \ - i386-bsd-nat.h \ - i386-darwin-tdep.h \ - i386-linux-nat.h \ - i386-linux-tdep.h \ - i386-tdep.h \ - i387-tdep.h \ - ia64-libunwind-tdep.h \ - ia64-tdep.h \ - inf-child.h \ - inf-loop.h \ - inf-ptrace.h \ - infcall.h \ - inferior.h \ - inflow.h \ - inline-frame.h \ - interps.h \ - jit.h \ - language.h \ - linespec.h \ - linux-fork.h \ - linux-nat.h \ - linux-record.h \ - linux-tdep.h \ - location.h \ - m2-lang.h \ - m32r-tdep.h \ - m68k-tdep.h \ - macroexp.h \ - macroscope.h \ - macrotab.h \ - main.h \ - mdebugread.h \ - memattr.h \ - memory-map.h \ - memrange.h \ - microblaze-tdep.h \ - mips-linux-tdep.h \ - mips-nbsd-tdep.h \ - mips-tdep.h \ - mn10300-tdep.h \ - moxie-tdep.h \ - nbsd-nat.h \ - nbsd-tdep.h \ - nds32-tdep.h \ - nios2-tdep.h \ - nto-tdep.h \ - objc-lang.h \ - objfiles.h \ - obsd-nat.h \ - obsd-tdep.h \ - osabi.h \ - osdata.h \ - p-lang.h \ - parser-defs.h \ - ppc-fbsd-tdep.h \ - ppc-linux-tdep.h \ - ppc-nbsd-tdep.h \ - ppc-obsd-tdep.h \ - ppc-ravenscar-thread.h \ - ppc-tdep.h \ - ppc64-tdep.h \ - probe.h \ - proc-utils.h \ - procfs.h \ - progspace.h \ - progspace-and-thread.h \ - prologue-value.h \ - psympriv.h \ - psymtab.h \ - ravenscar-thread.h \ - record.h \ - record-full.h \ - regcache.h \ - reggroups.h \ - regset.h \ - remote.h \ - remote-fileio.h \ - remote-notif.h \ - riscv-fbsd-tdep.h \ - riscv-tdep.h \ - rs6000-aix-tdep.h \ - rs6000-tdep.h \ - run-on-main-thread.h \ - s390-linux-tdep.h \ - s390-tdep.h \ - score-tdep.h \ - selftest-arch.h \ - sentinel-frame.h \ - ser-base.h \ - ser-event.h \ - ser-tcp.h \ - ser-unix.h \ - serial.h \ - sh-tdep.h \ - sim-regno.h \ - skip.h \ - sol2-tdep.h \ - solib.h \ - solib-aix.h \ - solib-darwin.h \ - solib-svr4.h \ - solib-target.h \ - solist.h \ - source.h \ - source-cache.h \ - sparc-nat.h \ - sparc-ravenscar-thread.h \ - sparc-tdep.h \ - sparc64-tdep.h \ - stabsread.h \ - stack.h \ - stap-probe.h \ - symfile.h \ - symtab.h \ - target.h \ - target-dcache.h \ - target-descriptions.h \ - terminal.h \ - tid-parse.h \ - top.h \ - tracectf.h \ - tracefile.h \ - tracepoint.h \ - trad-frame.h \ - target-float.h \ - tramp-frame.h \ - type-stack.h \ - typeprint.h \ - ui-file.h \ - ui-out.h \ - ui-style.h \ - user-regs.h \ - utils.h \ - valprint.h \ - value.h \ - varobj.h \ - varobj-iter.h \ - vax-tdep.h \ - windows-nat.h \ - windows-tdep.h \ - x86-bsd-nat.h \ - x86-linux-nat.h \ - x86-nat.h \ - xcoffread.h \ - xml-builtin.h \ - xml-support.h \ - xml-syscall.h \ - xml-tdesc.h \ - xtensa-tdep.h \ - arch/aarch32.h \ - arch/aarch64.h \ - arch/aarch64-insn.h \ - arch/arm.h \ - arch/i386.h \ - arch/ppc-linux-common.h \ - arch/ppc-linux-tdesc.h \ - arch/riscv.h \ - cli/cli-cmds.h \ - cli/cli-decode.h \ - cli/cli-script.h \ - cli/cli-setshow.h \ - cli/cli-style.h \ - cli/cli-utils.h \ - gdbsupport/buffer.h \ - gdbsupport/cleanups.h \ - gdbsupport/common-debug.h \ - gdbsupport/common-defs.h \ - gdbsupport/common-exceptions.h \ - gdbsupport/common-gdbthread.h \ - gdbsupport/common-regcache.h \ - gdbsupport/common-types.h \ - gdbsupport/common-utils.h \ - gdbsupport/job-control.h \ - gdbsupport/errors.h \ - gdbsupport/environ.h \ - gdbsupport/fileio.h \ - gdbsupport/format.h \ - gdbsupport/gdb-dlfcn.h \ - gdbsupport/gdb-sigmask.h \ - gdbsupport/gdb_assert.h \ - gdbsupport/gdb_binary_search.h \ - gdbsupport/gdb_tilde_expand.h \ - gdbsupport/gdb_locale.h \ - gdbsupport/gdb_proc_service.h \ - gdbsupport/gdb_setjmp.h \ - gdbsupport/gdb_signals.h \ - gdbsupport/gdb_sys_time.h \ - gdbsupport/gdb_vecs.h \ - gdbsupport/gdb_wait.h \ - gdbsupport/common-inferior.h \ - gdbsupport/netstuff.h \ - gdbsupport/host-defs.h \ - gdbsupport/parallel-for.h \ - gdbsupport/pathstuff.h \ - gdbsupport/print-utils.h \ - gdbsupport/ptid.h \ - gdbsupport/queue.h \ - gdbsupport/rsp-low.h \ - gdbsupport/run-time-clock.h \ - gdbsupport/signals-state-save-restore.h \ - gdbsupport/symbol.h \ - gdbsupport/tdesc.h \ - gdbsupport/thread-pool.h \ - gdbsupport/version.h \ - gdbsupport/x86-xstate.h \ - gdbsupport/xml-utils.h \ - compile/compile.h \ - compile/compile-c.h \ - compile/compile-cplus.h \ - compile/compile-internal.h \ - compile/compile-object-load.h \ - compile/compile-object-run.h \ - compile/gcc-c-plugin.h \ - compile/gcc-cp-plugin.h \ - config/nm-linux.h \ - config/nm-nto.h \ - config/djgpp/langinfo.h \ - config/djgpp/nl_types.h \ - config/i386/nm-i386gnu.h \ - config/sparc/nm-sol2.h \ - mi/mi-cmds.h \ - mi/mi-common.h \ - mi/mi-console.h \ - mi/mi-getopt.h \ - mi/mi-main.h \ - mi/mi-out.h \ - mi/mi-parse.h \ - nat/aarch64-linux.h \ - nat/aarch64-linux-hw-point.h \ - nat/aarch64-sve-linux-ptrace.h \ - nat/amd64-linux-siginfo.h \ - nat/gdb_ptrace.h \ - nat/gdb_thread_db.h \ - nat/fork-inferior.h \ - nat/linux-btrace.h \ - nat/linux-namespaces.h \ - nat/linux-nat.h \ - nat/linux-osdata.h \ - nat/linux-personality.h \ - nat/linux-ptrace.h \ - nat/linux-waitpid.h \ - nat/mips-linux-watch.h \ - nat/ppc-linux.h \ - nat/x86-cpuid.h \ - nat/x86-dregs.h \ - nat/x86-gcc-cpuid.h \ - nat/x86-linux.h \ - nat/x86-linux-dregs.h \ - python/py-event.h \ - python/py-events.h \ - python/py-stopevent.h \ - python/python.h \ - python/python-internal.h \ - regformats/regdef.h \ - target/resume.h \ - target/target.h \ - target/wait.h \ - target/waitstatus.h \ - tui/tui.h \ - tui/tui-command.h \ - tui/tui-data.h \ - tui/tui-disasm.h \ - tui/tui-file.h \ - tui/tui-hooks.h \ - tui/tui-io.h \ - tui/tui-layout.h \ - tui/tui-regs.h \ - tui/tui-source.h \ - tui/tui-stack.h \ - tui/tui-win.h \ - tui/tui-windata.h \ - tui/tui-wingeneral.h \ - tui/tui-winsource.h \ - x86-tdep.h - -# Header files that already have srcdir in them, or which are in objdir. - -HFILES_WITH_SRCDIR = \ - ../bfd/bfd.h \ - jit-reader.h - -# {X,T,NAT}DEPFILES are something of a pain in that it's hard to -# default their values the way we do for SER_HARDWIRE; in the future -# maybe much of the stuff now in {X,T,NAT}DEPFILES will go into other -# variables analogous to SER_HARDWIRE which get defaulted in this -# Makefile.in - -DEPFILES = $(TARGET_OBS) $(SER_HARDWIRE) $(NATDEPFILES) $(SIM_OBS) - -SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES) $(CONFIG_SRCS) -# Don't include YYFILES (*.c) because we already include *.y in SFILES, -# and it's more useful to see it in the .y file. -TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \ - $(CONFIG_SRCS) -TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR) - -COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \ - mi/mi-common.o \ - version.o \ - xml-builtin.o \ - $(patsubst %.c,%.o,$(COMMON_SFILES)) \ - $(SUBDIR_CLI_OBS) \ - $(SUBDIR_TARGET_OBS) \ - $(SUBDIR_GCC_COMPILE_OBS) - -SUBDIRS = doc @subdirs@ data-directory -CLEANDIRS = $(SUBDIRS) - -# List of subdirectories in the build tree that must exist. -# This is used to force build failures in existing trees when -# a new directory is added. -# The format here is for the `case' shell command. -REQUIRED_SUBDIRS = doc | testsuite | data-directory - -# Parser intermediate files. -YYFILES = \ - ada-exp.c \ - ada-lex.c \ - c-exp.c \ - cp-name-parser.c \ - d-exp.c \ - f-exp.c \ - go-exp.c \ - m2-exp.c \ - p-exp.c \ - rust-exp.c - -# ada-lex.c is included by another file, so it shouldn't wind up as a -# .o itself. -YYOBJ = $(filter-out ada-lex.o,$(patsubst %.c,%.o,$(YYFILES))) - -# Things which need to be built when making a distribution. - -DISTSTUFF = $(YYFILES) - - -# All generated files which can be included by another file. -generated_files = \ - ada-lex.c \ - config.h \ - jit-reader.h \ - $(NAT_GENERATED_FILES) \ - $(NM_H) - -# Flags needed to compile Python code -PYTHON_CFLAGS = @PYTHON_CFLAGS@ - -all: gdb$(EXEEXT) $(CONFIG_ALL) gdb-gdb.py gdb-gdb.gdb - @$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do - -# Rule for compiling .c files in the top-level gdb directory. -# The order-only dependencies ensure that we create the build subdirectories. -%.o: %.c | $(CONFIG_DEP_SUBDIR) - $(COMPILE) $< - $(POSTCOMPILE) - -$(CONFIG_DEP_SUBDIR): - $(SHELL) $(srcdir)/../mkinstalldirs $@ - -# Python files need special flags. -python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS) - -# Rules for compiling .c files in the various source subdirectories. -%.o: $(srcdir)/gdbtk/generic/%.c - $(COMPILE) $(all_gdbtk_cflags) $< - $(POSTCOMPILE) - -installcheck: - -# The check target can not use subdir_do, because subdir_do does not -# use TARGET_FLAGS_TO_PASS. -check: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check; \ - else true; fi - -check-perf: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-perf; \ - else true; fi - -check-read1: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \ - else true; fi - -check-parallel: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-parallel; \ - else true; fi - -# The idea is to parallelize testing of multilibs, for example: -# make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu} -# will run 3 concurrent sessions of check, eventually testing all 10 -# combinations. GNU make is required for the % pattern to work, as is -# a shell that expands alternations within braces. If GNU make is not -# used, this rule will harmlessly fail to match. Used FORCE_PARALLEL to -# prevent serialized checking due to the passed RUNTESTFLAGS. -# FIXME: use config.status --config not --version, when available. -check//%: force - @if [ -f testsuite/config.status ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - target=`echo "$@" | sed 's,//.*,,'`; \ - variant=`echo "$@" | sed 's,^[^/]*//,,'`; \ - vardots=`echo "$$variant" | sed 's,/,.,g'`; \ - testdir=testsuite.$$vardots; \ - if [ ! -f $$testdir/Makefile ] && [ -f testsuite/config.status ]; then \ - configargs=`cd testsuite && ./config.status --version | \ - sed -n -e 's,"$$,,' -e 's,^ *with options ",,p'`; \ - $(SHELL) $(srcdir)/../mkinstalldirs $$testdir && \ - (cd $$testdir && \ - eval $(SHELL) "\"\$$rootsrc/testsuite/configure\" $$configargs" \ - "\"--srcdir=\$$rootsrc/testsuite\"" \ - ); \ - else :; fi && cd $$testdir && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) \ - RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \ - FORCE_PARALLEL=$(if $(FORCE_PARALLEL),1,$(if $(RUNTESTFLAGS),,1)) \ - "$$target"; \ - else true; fi - -# The set of headers checked by 'check-headers' by default. -CHECK_HEADERS = $(HFILES_NO_SRCDIR) - -# Try to compile each header in isolation, thus ensuring headers are -# self-contained. -# -# Defaults to checking all $HFILES_NO_SRCDIR headers. -# -# Do: -# -# make check-headers CHECK_HEADERS="header.h list.h" -# -# to check specific headers. -# -check-headers: - @echo Checking headers. - for i in $(CHECK_HEADERS) ; do \ - $(CXX) $(CXX_DIALECT) -x c++-header -c -fsyntax-only \ - $(INTERNAL_CFLAGS) -include defs.h $(srcdir)/$$i ; \ - done -.PHONY: check-headers - -info install-info clean-info dvi pdf install-pdf html install-html: force - @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do - -# Traditionally "install" depends on "all". But it may be useful -# not to; for example, if the user has made some trivial change to a -# source file and doesn't care about rebuilding or just wants to save the -# time it takes for make to check that all is up to date. -# install-only is intended to address that need. -install: all - @$(MAKE) $(FLAGS_TO_PASS) install-only - -install-only: $(CONFIG_INSTALL) - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_PROGRAM) gdb$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(includedir)/gdb ; \ - $(INSTALL_DATA) jit-reader.h $(DESTDIR)$(includedir)/gdb/jit-reader.h - if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \ - then \ - transformed_name=`t='$(program_transform_name)'; \ - echo gcore | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gcore ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_SCRIPT) gcore \ - $(DESTDIR)$(bindir)/$$transformed_name; \ - fi - transformed_name=`t='$(program_transform_name)'; \ - echo gdb-add-index | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb-add-index ; \ - else \ - true ; \ - fi ; \ - $(INSTALL_SCRIPT) $(srcdir)/contrib/gdb-add-index.sh \ - $(DESTDIR)$(bindir)/$$transformed_name - @$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do - -install-strip: - $(MAKE) $(FLAGS_TO_PASS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install-only - -install-guile: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/guile/gdb - -install-python: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb - -uninstall: force $(CONFIG_UNINSTALL) - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \ - then \ - transformed_name=`t='$(program_transform_name)'; \ - echo gcore | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gcore ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name; \ - fi - @$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do - -# The C++ name parser can be built standalone for testing. -test-cp-name-parser.o: cp-name-parser.c - $(COMPILE) -DTEST_CPNAMES cp-name-parser.c - $(POSTCOMPILE) - -test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) \ - -o test-cp-name-parser$(EXEEXT) test-cp-name-parser.o \ - $(LIBIBERTY) - -# We do this by grepping through sources. If that turns out to be too slow, -# maybe we could just require every .o file to have an initialization routine -# of a given name (top.o -> _initialize_top, etc.). -# -# Formatting conventions: The name of the _initialize_* routines must start -# in column zero, and must not be inside #if. -# -# Note that the set of files with init functions might change, or the names -# of the functions might change, so this files needs to depend on all the -# source files that will be linked into gdb. However, due to the way -# this Makefile has generally been written, we do this indirectly, by -# computing the list of source files from the list of object files. - -INIT_FILES = \ - $(patsubst %.o,%.c, \ - $(patsubst %-exp.o,%-exp.y, \ - $(filter-out init.o version.o %_S.o %_U.o,\ - $(COMMON_OBS)))) - -init.c: stamp-init; @true -stamp-init: $(INIT_FILES) - @$(ECHO_INIT_C) echo "Making init.c" - @rm -f init.c-tmp init.l-tmp - @touch init.c-tmp - @-for f in $(INIT_FILES); do \ - sed -n -e 's/^_initialize_\([a-z_0-9A-Z]*\).*/\1/p' \ - $(srcdir)/$$f 2>/dev/null; \ - done > init.l-tmp - @echo '/* Do not modify this file. */' >>init.c-tmp - @echo '/* It is created automatically by the Makefile. */'>>init.c-tmp - @echo '#include "defs.h" /* For initialize_file_ftype. */' >>init.c-tmp - @echo 'extern void initialize_all_files(void);' >>init.c-tmp - @sed -e 's/\(.*\)/extern initialize_file_ftype _initialize_\1;/' >init.c-tmp - @echo 'void' >>init.c-tmp - @echo 'initialize_all_files (void)' >>init.c-tmp - @echo '{' >>init.c-tmp - @sed -e 's/\(.*\)/ _initialize_\1 ();/' >init.c-tmp - @echo '}' >>init.c-tmp - @$(SHELL) $(srcdir)/../move-if-change init.c-tmp init.c - @echo stamp > stamp-init - -.PRECIOUS: init.c - -# Create a library of the gdb object files and build GDB by linking -# against that. -# -# init.o is very important. It pulls in the rest of GDB. -LIBGDB_OBS = $(sort $(COMMON_OBS)) init.o -libgdb.a: $(LIBGDB_OBS) - -rm -f libgdb.a - $(AR) q libgdb.a $(LIBGDB_OBS) - $(RANLIB) libgdb.a - -# Removing the old gdb first works better if it is running, at least on SunOS. -gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(CDEPS) $(TDEPLIBS) - $(SILENCE) rm -f gdb$(EXEEXT) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o gdb$(EXEEXT) gdb.o $(LIBGDB_OBS) \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) -ifneq ($(CODESIGN_CERT),) - $(ECHO_SIGN) $(CODESIGN) -s $(CODESIGN_CERT) gdb$(EXEEXT) -endif - -# Convenience rule to handle recursion. -.PHONY: all-data-directory -all-data-directory: data-directory/Makefile - @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=data-directory subdir_do - -# This is useful when debugging GDB, because some Unix's don't let you run GDB -# on itself without copying the executable. So "make gdb1" will make -# gdb and put a copy in gdb1, and you can run it with "gdb gdb1". -# Removing gdb1 before the copy is the right thing if gdb1 is open -# in another process. -gdb1$(EXEEXT): gdb$(EXEEXT) - rm -f gdb1$(EXEEXT) - cp gdb$(EXEEXT) gdb1$(EXEEXT) - -# Put the proper machine-specific files first, so M-. on a machine -# specific routine gets the one for the correct machine. (FIXME: those -# files go in twice; we should be removing them from the main list). - -# TAGS depends on all the files that go into it so you can rebuild TAGS -# with `make TAGS' and not have to say `rm TAGS' first. - -GDB_NM_FILE = @GDB_NM_FILE@ -TAGS: $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR) - @echo Making TAGS - etags `(test -n "$(GDB_NM_FILE)" && echo "$(srcdir)/$(GDB_NM_FILE)")` \ - `(for i in $(DEPFILES) $(TAGFILES_NO_SRCDIR); do \ - echo $(srcdir)/$$i ; \ - done ; for i in $(TAGFILES_WITH_SRCDIR); do \ - echo $$i ; \ - done) | sed -e 's/\.o$$/\.c/'` \ - `find $(srcdir)/config -name '*.h' -print` - -tags: TAGS - -clean mostlyclean: $(CONFIG_CLEAN) - @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f *.o *.a *~ init.c-tmp init.l-tmp version.c-tmp - rm -f init.c stamp-init version.c stamp-version - rm -f gdb$(EXEEXT) core make.log - rm -f gdb[0-9]$(EXEEXT) - rm -f test-cp-name-parser$(EXEEXT) - rm -f xml-builtin.c stamp-xml - rm -f $(DEPDIR)/* - for i in $(CONFIG_SRC_SUBDIR); do \ - rm -f $$i/*.o; \ - rm -f $$i/$(DEPDIR)/*; \ - done - -# This used to depend on c-exp.c m2-exp.c TAGS -# I believe this is wrong; the makefile standards for distclean just -# describe removing files; the only sort of "re-create a distribution" -# functionality described is if the distributed files are unmodified. -# NB: While GDBSERVER might be configured on native systems, it isn't -# always included in SUBDIRS. Remove the gdbserver files explicitly. -distclean: clean - @$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f gdbserver/config.status gdbserver/config.log - rm -f gdbserver/tm.h gdbserver/xm.h gdbserver/nm.h - rm -f gdbserver/Makefile gdbserver/config.cache - rm -f nm.h config.status config.h stamp-h b jit-reader.h - rm -f gdb-gdb.py gdb-gdb.gdb - rm -f y.output yacc.acts yacc.tmp y.tab.h - rm -f config.log config.cache - rm -f Makefile - rm -rf $(DEPDIR) - for i in $(CONFIG_SRC_SUBDIR); do \ - if test -d $$i/$(DEPDIR); then rmdir $$i/$(DEPDIR); fi \ - done - -maintainer-clean: local-maintainer-clean do-maintainer-clean distclean -realclean: maintainer-clean - -local-maintainer-clean: - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f c-exp.c \ - cp-name-parser.c \ - ada-lex.c ada-exp.c \ - d-exp.c f-exp.c go-exp.c m2-exp.c p-exp.c rust-exp.c - rm -f TAGS - rm -f $(YYFILES) - rm -f nm.h config.status - -do-maintainer-clean: - @$(MAKE) $(FLAGS_TO_PASS) DO=maintainer-clean "DODIRS=$(CLEANDIRS)" \ - subdir_do - -diststuff: $(DISTSTUFF) $(PACKAGE).pot $(CATALOGS) - cd doc; $(MAKE) $(MFLAGS) diststuff - -subdir_do: force - @for i in $(DODIRS); do \ - case $$i in \ - $(REQUIRED_SUBDIRS)) \ - if [ ! -f ./$$i/Makefile ] ; then \ - echo "Missing $$i/Makefile" >&2 ; \ - exit 1 ; \ - fi ;; \ - esac ; \ - if [ -f ./$$i/Makefile ] ; then \ - if (cd ./$$i; \ - $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ - else exit 1 ; fi ; \ - else true ; fi ; \ - done - -Makefile: Makefile.in config.status - $(SHELL) config.status $@ - -data-directory/Makefile: data-directory/Makefile.in config.status - $(SHELL) config.status $@ - -.PHONY: run -run: Makefile - ./gdb$(EXEEXT) --data-directory=`pwd`/data-directory $(GDBFLAGS) - -jit-reader.h: $(srcdir)/jit-reader.in - $(SHELL) config.status $@ - -gcore: $(srcdir)/gcore.in - $(SHELL) config.status $@ - -gdb-gdb.py: $(srcdir)/gdb-gdb.py.in - $(SHELL) config.status $@ - -gdb-gdb.gdb: $(srcdir)/gdb-gdb.gdb.in - $(SHELL) config.status $@ - -config.h: stamp-h ; @true -stamp-h: $(srcdir)/config.in config.status - $(SHELL) config.status config.h - -nm.h: stamp-nmh ; @true -stamp-nmh: config.status - $(SHELL) config.status nm.h - -config.status: $(srcdir)/configure configure.nat configure.tgt configure.host ../bfd/development.sh - $(SHELL) config.status --recheck - -ACLOCAL = aclocal -ACLOCAL_AMFLAGS = -I ../config - -# Keep these in sync with the includes in acinclude.m4. -aclocal_m4_deps = \ - configure.ac \ - acx_configure_dir.m4 \ - transform.m4 \ - ../bfd/bfd.m4 \ - ../config/acinclude.m4 \ - ../config/plugins.m4 \ - ../config/lead-dot.m4 \ - ../config/override.m4 \ - ../config/largefile.m4 \ - ../config/gettext-sister.m4 \ - ../config/lib-ld.m4 \ - ../config/lib-prefix.m4 \ - ../config/lib-link.m4 \ - ../config/acx.m4 \ - ../config/tcl.m4 \ - ../config/depstand.m4 \ - ../config/lcmessage.m4 \ - ../config/codeset.m4 \ - ../config/zlib.m4 \ - ../config/ax_pthread.m4 - -$(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -AUTOCONF = autoconf -configure_deps = $(srcdir)/configure.ac $(srcdir)/aclocal.m4 -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOCONF) - -AUTOHEADER = autoheader -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOHEADER) - rm -f stamp-h - touch $@ - -# automatic rebuilding in automake-generated Makefiles requires -# this rule in the toplevel Makefile, which, with GNU make, causes -# the desired updates through the implicit regeneration of the Makefile -# and all of its prerequisites. -am--refresh: - @: - -force: - -# Documentation! -# GDB QUICK REFERENCE (TeX dvi file, CM fonts) -doc/refcard.dvi: - cd doc; $(MAKE) refcard.dvi $(FLAGS_TO_PASS) - -# GDB QUICK REFERENCE (PostScript output, common PS fonts) -doc/refcard.ps: - cd doc; $(MAKE) refcard.ps $(FLAGS_TO_PASS) - -# GDB MANUAL: TeX dvi file -doc/gdb.dvi: - cd doc; $(MAKE) gdb.dvi $(FLAGS_TO_PASS) - -# GDB MANUAL: info file -doc/gdb.info: - cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS) - -# Make copying.c from COPYING -$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ $(srcdir)/../COPYING3 $(srcdir)/copying.awk - awk -f $(srcdir)/copying.awk \ - < $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp - mv $(srcdir)/copying.tmp $(srcdir)/copying.c - -version.c: stamp-version; @true -# Note that the obvious names for the temp file are taken by -# create-version.sh. -stamp-version: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/gdbsupport/create-version.sh - $(ECHO_GEN) $(SHELL) $(srcdir)/gdbsupport/create-version.sh $(srcdir) \ - $(host_alias) $(target_alias) version-t.t - @$(SHELL) $(srcdir)/../move-if-change version-t.t version.c - @echo stamp > stamp-version - - -gdb.cxref: $(SFILES) - cxref -I. $(SFILES) >gdb.cxref - -force_update: - -# GNU Make has an annoying habit of putting *all* the Makefile variables -# into the environment, unless you include this target as a circumvention. -# Rumor is that this will be fixed (and this target can be removed) -# in GNU Make 4.0. -.NOEXPORT: - -# GNU Make 3.63 has a different problem: it keeps tacking command line -# overrides onto the definition of $(MAKE). This variable setting -# will remove them. -MAKEOVERRIDES = - -ALLDEPFILES = \ - aarch32-tdep.c \ - aarch64-fbsd-nat.c \ - aarch64-fbsd-tdep.c \ - aarch64-linux-nat.c \ - aarch64-linux-tdep.c \ - aarch64-newlib-tdep.c \ - aarch64-ravenscar-thread.c \ - aarch64-tdep.c \ - aix-thread.c \ - alpha-bsd-nat.c \ - alpha-bsd-tdep.c \ - alpha-linux-nat.c \ - alpha-linux-tdep.c \ - alpha-mdebug-tdep.c \ - alpha-nbsd-tdep.c \ - alpha-obsd-tdep.c \ - alpha-tdep.c \ - amd64-bsd-nat.c \ - amd64-darwin-tdep.c \ - amd64-dicos-tdep.c \ - amd64-fbsd-nat.c \ - amd64-fbsd-tdep.c \ - amd64-linux-nat.c \ - amd64-linux-tdep.c \ - amd64-nat.c \ - amd64-nbsd-nat.c \ - amd64-nbsd-tdep.c \ - amd64-obsd-nat.c \ - amd64-obsd-tdep.c \ - amd64-sol2-tdep.c \ - amd64-tdep.c \ - arc-tdep.c \ - arm.c \ - arm-bsd-tdep.c \ - arm-fbsd-nat.c \ - arm-fbsd-tdep.c \ - arm-get-next-pcs.c \ - arm-linux.c \ - arm-linux-nat.c \ - arm-linux-tdep.c \ - arm-nbsd-nat.c \ - arm-nbsd-tdep.c \ - arm-obsd-tdep.c \ - arm-symbian-tdep.c \ - arm-tdep.c \ - avr-tdep.c \ - bfin-linux-tdep.c \ - bfin-tdep.c \ - bsd-kvm.c \ - bsd-uthread.c \ - csky-linux-tdep.c \ - csky-tdep.c \ - darwin-nat.c \ - dicos-tdep.c \ - fbsd-nat.c \ - fbsd-tdep.c \ - fork-child.c \ - ft32-tdep.c \ - glibc-tdep.c \ - go32-nat.c \ - h8300-tdep.c \ - hppa-bsd-tdep.c \ - hppa-linux-nat.c \ - hppa-linux-tdep.c \ - hppa-nbsd-nat.c \ - hppa-nbsd-tdep.c \ - hppa-obsd-nat.c \ - hppa-obsd-tdep.c \ - hppa-tdep.c \ - i386-bsd-nat.c \ - i386-bsd-tdep.c \ - i386-cygwin-tdep.c \ - i386-darwin-nat.c \ - i386-darwin-tdep.c \ - i386-dicos-tdep.c \ - i386-fbsd-nat.c \ - i386-fbsd-tdep.c \ - i386-gnu-nat.c \ - i386-gnu-tdep.c \ - i386-linux-nat.c \ - i386-linux-tdep.c \ - i386-nbsd-nat.c \ - i386-nbsd-tdep.c \ - i386-obsd-nat.c \ - i386-obsd-tdep.c \ - i386-sol2-nat.c \ - i386-sol2-tdep.c \ - i386-tdep.c \ - i387-tdep.c \ - ia64-libunwind-tdep.c \ - ia64-linux-nat.c \ - ia64-linux-tdep.c \ - ia64-tdep.c \ - ia64-vms-tdep.c \ - inf-ptrace.c \ - linux-fork.c \ - linux-record.c \ - linux-tdep.c \ - lm32-tdep.c \ - m32r-linux-nat.c \ - m32r-linux-tdep.c \ - m32r-tdep.c \ - m68hc11-tdep.c \ - m68k-bsd-nat.c \ - m68k-bsd-tdep.c \ - m68k-linux-nat.c \ - m68k-linux-tdep.c \ - m68k-tdep.c \ - microblaze-linux-tdep.c \ - microblaze-tdep.c \ - mingw-hdep.c \ - mips-fbsd-nat.c \ - mips-fbsd-tdep.c \ - mips-linux-nat.c \ - mips-linux-tdep.c \ - mips-nbsd-nat.c \ - mips-nbsd-tdep.c \ - mips-sde-tdep.c \ - mips-tdep.c \ - mips64-obsd-nat.c \ - mips64-obsd-tdep.c \ - msp430-tdep.c \ - nbsd-nat.c \ - nbsd-tdep.c \ - nds32-tdep.c \ - nios2-linux-tdep.c \ - nios2-tdep.c \ - obsd-nat.c \ - obsd-tdep.c \ - posix-hdep.c \ - ppc-fbsd-nat.c \ - ppc-fbsd-tdep.c \ - ppc-linux-nat.c \ - ppc-linux-tdep.c \ - ppc-nbsd-nat.c \ - ppc-nbsd-tdep.c \ - ppc-obsd-nat.c \ - ppc-obsd-tdep.c \ - ppc-ravenscar-thread.c \ - ppc-sysv-tdep.c \ - ppc64-tdep.c \ - procfs.c \ - ravenscar-thread.c \ - remote-sim.c \ - riscv-fbsd-nat.c \ - riscv-fbsd-tdep.c \ - riscv-linux-nat.c \ - riscv-linux-tdep.c \ - riscv-tdep.c \ - rl78-tdep.c \ - rs6000-lynx178-tdep.c \ - rs6000-nat.c \ - rs6000-tdep.c \ - rx-tdep.c \ - s390-linux-nat.c \ - s390-linux-tdep.c \ - s390-tdep.c \ - score-tdep.c \ - ser-go32.c \ - ser-mingw.c \ - ser-pipe.c \ - ser-tcp.c \ - ser-uds.c \ - sh-nbsd-nat.c \ - sh-nbsd-tdep.c \ - sh-tdep.c \ - sol2-tdep.c \ - solib-aix.c \ - solib-svr4.c \ - sparc-linux-nat.c \ - sparc-linux-tdep.c \ - sparc-nat.c \ - sparc-nbsd-nat.c \ - sparc-nbsd-tdep.c \ - sparc-obsd-tdep.c \ - sparc-ravenscar-thread.c \ - sparc-sol2-nat.c \ - sparc-sol2-tdep.c \ - sparc-tdep.c \ - sparc64-fbsd-nat.c \ - sparc64-fbsd-tdep.c \ - sparc64-linux-nat.c \ - sparc64-linux-tdep.c \ - sparc64-nat.c \ - sparc64-nbsd-nat.c \ - sparc64-nbsd-tdep.c \ - sparc64-obsd-nat.c \ - sparc64-obsd-tdep.c \ - sparc64-sol2-tdep.c \ - sparc64-tdep.c \ - tilegx-linux-nat.c \ - tilegx-linux-tdep.c \ - tilegx-tdep.c \ - v850-tdep.c \ - vax-bsd-nat.c \ - vax-nbsd-tdep.c \ - vax-tdep.c \ - windows-nat.c \ - windows-tdep.c \ - x86-nat.c \ - x86-tdep.c \ - xcoffread.c \ - xstormy16-tdep.c \ - xtensa-config.c \ - xtensa-linux-nat.c \ - xtensa-linux-tdep.c \ - xtensa-tdep.c \ - xtensa-xtregs.c - -# Some files need explicit build rules (due to -Werror problems) or due -# to sub-directory fun 'n' games. - -# ada-exp.c can appear in srcdir, for releases; or in ., for -# development builds. -ADA_EXP_C = `if test -f ada-exp.c; then echo ada-exp.c; else echo $(srcdir)/ada-exp.c; fi` - -ada-exp.o: ada-exp.c - $(COMPILE) $(ADA_EXP_C) - $(POSTCOMPILE) - -# Message files. Based on code in gcc/Makefile.in. - -# Rules for generating translated message descriptions. Disabled by -# autoconf if the tools are not available. - -.PHONY: all-po install-po uninstall-po clean-po update-po $(PACKAGE).pot - -all-po: $(CATALOGS) - -# This notation should be acceptable to all Make implementations used -# by people who are interested in updating .po files. -update-po: $(CATALOGS:.gmo=.pox) - -# N.B. We do not attempt to copy these into $(srcdir). The snapshot -# script does that. -%.gmo: %.po - -test -d po || mkdir po - $(GMSGFMT) --statistics -o $@ $< - -# The new .po has to be gone over by hand, so we deposit it into -# build/po with a different extension. If build/po/$(PACKAGE).pot -# exists, use it (it was just created), else use the one in srcdir. -%.pox: %.po - -test -d po || mkdir po - $(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \ - then echo po/$(PACKAGE).pot; \ - else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@ - -# This rule has to look for .gmo modules in both srcdir and the cwd, -# and has to check that we actually have a catalog for each language, -# in case they weren't built or included with the distribution. -install-po: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir) - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - echo $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir || exit 1; \ - echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -uninstall-po: - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - rm -f $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -# Delete po/*.gmo only if we are not building in the source directory. -clean-po: - -if [ ! -f Makefile.in ]; then rm -f po/*.gmo; fi - -# Rule for regenerating the message template (gdb.pot). Instead of -# forcing everyone to edit POTFILES.in, which proved impractical, this -# rule has no dependencies and always regenerates gdb.pot. This is -# relatively harmless since the .po files do not directly depend on -# it. The .pot file is left in the build directory. Since GDB's -# Makefile lacks a cannonical list of sources (missing xm, tm and nm -# files) force this rule. -$(PACKAGE).pot: po/$(PACKAGE).pot -po/$(PACKAGE).pot: force - -test -d po || mkdir po - sh -e $(srcdir)/po/gdbtext $(XGETTEXT) $(PACKAGE) . $(srcdir) - - -# -# YACC/LEX dependencies -# -# LANG-exp.c is generated in objdir from LANG-exp.y if it doesn't -# exist in srcdir, then compiled in objdir to LANG-exp.o. If we -# said LANG-exp.c rather than ./c-exp.c some makes would -# sometimes re-write it into $(srcdir)/c-exp.c. Remove bogus -# decls for malloc/realloc/free which conflict with everything else. -# Strictly speaking c-exp.c should therefore depend on -# Makefile.in, but that was a pretty big annoyance. - -%.c: %.y - $(ECHO_YACC) $(SHELL) $(YLWRAP) $< y.tab.c $@.tmp -- \ - $(YACC) $(YFLAGS) || (rm -f $@.tmp; false) - @sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e '/^#line.*y.tab.c/d' \ - -e 's/YY_NULL/YY_NULLPTR/g' \ - < $@.tmp > $@.new && \ - rm -f $@.tmp && \ - mv $@.new $@ -%.c: %.l - $(ECHO_LEX) $(FLEX) -t $< \ - | sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e 's/yy_flex_xrealloc/yyxrealloc/g' \ - > $@.new && \ - mv $@.new $@ - -.PRECIOUS: ada-lex.c - -# XML rules - -xml-builtin.c: stamp-xml; @true -stamp-xml: $(srcdir)/features/feature_to_c.sh Makefile $(XMLFILES) - $(SILENCE) rm -f xml-builtin.tmp - $(ECHO_GEN_XML_BUILTIN) AWK="$(AWK)" \ - $(SHELL) $(srcdir)/features/feature_to_c.sh \ - xml-builtin.tmp $(XMLFILES) - $(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin.c - $(SILENCE) echo stamp > stamp-xml - -.PRECIOUS: xml-builtin.c - -# -# GDBTK sub-directory -# - -all-gdbtk: insight$(EXEEXT) - -install-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \ - $(INSTALL_PROGRAM) insight$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION) ; \ - $(INSTALL_DATA) $(srcdir)/gdbtk/plugins/plugins.tcl \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION)/plugins.tcl ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/images2 ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/help \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/trace ; \ - cd $(srcdir)/gdbtk/library ; \ - for i in *.tcl *.itcl *.ith *.itb images/*.gif images2/*.gif images/icons.txt images2/icons.txt tclIndex help/*.html help/trace/*.html help/trace/index.toc help/images/*.gif help/images/*.png; \ - do \ - $(INSTALL_DATA) $$i $(DESTDIR)$(GDBTK_LIBRARY)/$$i ; \ - done ; - -uninstall-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - rm -rf $(DESTDIR)$(GDBTK_LIBRARY) - -clean-gdbtk: - rm -f insight$(EXEEXT) - -# Removing the old gdb first works better if it is running, at least on SunOS. -insight$(EXEEXT): gdbtk-main.o libgdb.a $(CDEPS) $(TDEPLIBS) - rm -f insight$(EXEEXT) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o insight$(EXEEXT) gdbtk-main.o libgdb.a \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) - -gdbres.o: $(srcdir)/gdbtk/gdb.rc $(srcdir)/gdbtk/gdbtool.ico - $(WINDRES) --include $(srcdir)/gdbtk $(srcdir)/gdbtk/gdb.rc gdbres.o - -all_gdbtk_cflags = $(IDE_CFLAGS) $(ITCL_CFLAGS) \ - $(ITK_CFLAGS) $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) \ - $(GDBTK_CFLAGS) \ - -DGDBTK_LIBRARY=\"$(GDBTK_LIBRARY)\" \ - -DSRC_DIR=\"$(GDBTK_SRC_DIR)\" - -# -# Dependency tracking. -# - -ifeq ($(DEPMODE),depmode=gcc3) -# Note that we put the dependencies into a .Tpo file, then move them -# into place if the compile succeeds. We need this because gcc does -# not atomically write the dependency output file. -override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \ - -MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo -override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \ - $(@D)/$(DEPDIR)/$(basename $(@F)).Po -else -override COMPILE.pre = source='$<' object='$@' libtool=no \ - DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \ - $(CXX) -x c++ $(CXX_DIALECT) -# depcomp handles atomicity for us, so we don't need a postcompile -# step. -override POSTCOMPILE = -endif - -# A list of all the objects we might care about in this build, for -# dependency tracking. -all_object_files = gdb.o $(LIBGDB_OBS) gdbtk-main.o \ - test-cp-name-parser.o - -# All the .deps files to include. -all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\ - $(dir $(dep))/$(DEPDIR)/$(notdir $(dep))) - -# Ensure that generated files are created early. Use order-only -# dependencies if available. They require GNU make 3.80 or newer, -# and the .VARIABLES variable was introduced at the same time. -ifdef .VARIABLES -$(all_object_files): | $(generated_files) -else -$(all_object_files) : $(generated_files) -endif - -# Dependencies. --include $(all_deps_files) - -# Disable implicit make rules. -include $(srcdir)/disable-implicit-rules.mk - -### end of the gdb Makefile.in. diff --git a/gdbplus/gdb-12.1/gdb/gdb_dep.c b/gdbplus/gdb-12.1/gdb/gdb_dep.c index 2a479f3..3cce2d7 100644 --- a/gdbplus/gdb-12.1/gdb/gdb_dep.c +++ b/gdbplus/gdb-12.1/gdb/gdb_dep.c @@ -53,6 +53,26 @@ void ca_switch_to_thread(struct thread_info *info) switch_to_thread (info); } +struct type *ca_type(struct symbol *sym) +{ + return sym->type(); +} + +const char *ca_name(struct type *type) +{ + return type->name(); +} + +enum type_code ca_code(struct type *type) +{ + return type->code(); +} + +struct type *ca_field_type(struct type *type, int i) +{ + return type->field(i).type(); +} + int ca_num_fields(struct type *type) { return type->num_fields(); diff --git a/gdbplus/gdb-12.1/gdb/heapcmd.c b/gdbplus/gdb-12.1/gdb/heapcmd.c index 72c1567..dc04cea 100644 --- a/gdbplus/gdb-12.1/gdb/heapcmd.c +++ b/gdbplus/gdb-12.1/gdb/heapcmd.c @@ -283,7 +283,10 @@ switch_heap_command(const char *arg, int from_tty) auto it = gCoreAnalyzerHeaps.find(arg); if (it != gCoreAnalyzerHeaps.end()) { CA_PRINT("switch to heap %s\n", arg); - CA_HEAP = it->second; + if (CA_HEAP != it->second) { + CA_HEAP = it->second; + CA_HEAP->init_heap(); + } } else { auto supported_heaps = get_supported_heaps(); CA_PRINT("Please provide the heap manager name, currently supported heap managers: %s.\n", supported_heaps.c_str()); diff --git a/gdbplus/gdb-9.2/gdb/Makefile.in.tcmalloc b/gdbplus/gdb-9.2/gdb/Makefile.in.tcmalloc deleted file mode 100644 index 70d02d8..0000000 --- a/gdbplus/gdb-9.2/gdb/Makefile.in.tcmalloc +++ /dev/null @@ -1,2624 +0,0 @@ -# Copyright (C) 1989-2020 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 . - -# Please keep lists in this file sorted alphabetically, with one item per line. -# Here are the general guidelines for ordering files and directories: -# -# - Files come before directories. -# - The extensions are not taken into account when comparing filenames, except -# if the filenames are otherwise equal. -# - A filename that is a prefix of another one comes before. -# - Underscores and dashes are treated equally, and come before alphanumeric -# characters. -# -# For example: -# -# SOME_FILES = \ -# foo.c \ -# foo.h \ -# foo-bar.c \ -# foobar.c \ -# foo/bar.c - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -host_alias = @host_alias@ -target_alias = @target_alias@ -program_transform_name = @program_transform_name@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(libdir)/$(target_alias) - -datadir = @datadir@ -localedir = @localedir@ -mandir = @mandir@ -man1dir = $(mandir)/man1 -man2dir = $(mandir)/man2 -man3dir = $(mandir)/man3 -man4dir = $(mandir)/man4 -man5dir = $(mandir)/man5 -man6dir = $(mandir)/man6 -man7dir = $(mandir)/man7 -man8dir = $(mandir)/man8 -man9dir = $(mandir)/man9 -infodir = @infodir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -htmldir = @htmldir@ -pdfdir = @pdfdir@ -includedir = @includedir@ - -install_sh = @install_sh@ - -# This can be referenced by `LIBINTL' as computed by -# ZW_GNU_GETTEXT_SISTER_DIR. -top_builddir = . - -SHELL = @SHELL@ -EXEEXT = @EXEEXT@ - -AWK = @AWK@ -LN_S = @LN_S@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -DESTDIR = - -AR = @AR@ -AR_FLAGS = qv -RANLIB = @RANLIB@ -DLLTOOL = @DLLTOOL@ -WINDRES = @WINDRES@ -MIG = @MIG@ -STRIP = @STRIP@ - -XGETTEXT = @XGETTEXT@ -GMSGFMT = @GMSGFMT@ -MSGMERGE = msgmerge - -PACKAGE = @PACKAGE@ -CATALOGS = @CATALOGS@ - -CC = @CC@ -CXX = @CXX@ -CXX_DIALECT = @CXX_DIALECT@ - -# Dependency tracking information. -DEPMODE = @CCDEPMODE@ -DEPDIR = @DEPDIR@ -depcomp = $(SHELL) $(srcdir)/../depcomp - -# Directory containing source files. -srcdir = @srcdir@ -VPATH = @srcdir@ -top_srcdir = @top_srcdir@ - -include $(srcdir)/silent-rules.mk - -# Note that these are overridden by GNU make-specific code below if -# GNU make is used. The overrides implement dependency tracking. -COMPILE.pre = $(CXX) -x c++ $(CXX_DIALECT) -COMPILE.post = -c -o $@ -COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post) -POSTCOMPILE = @true - -YACC = @YACC@ - -# This is used to rebuild ada-lex.c from ada-lex.l. If the program is -# not defined, but ada-lex.c is present, compilation will continue, -# possibly with a warning. -FLEX = flex - -YLWRAP = $(srcdir)/../ylwrap - -# where to find makeinfo, preferably one designed for texinfo-2 -MAKEINFO = @MAKEINFO@ -MAKEINFOFLAGS = @MAKEINFOFLAGS@ -MAKEINFO_EXTRA_FLAGS = @MAKEINFO_EXTRA_FLAGS@ -MAKEINFO_CMD = $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFO_EXTRA_FLAGS) - -MAKEHTML = $(MAKEINFO_CMD) --html -MAKEHTMLFLAGS = - -# Set this up with gcc if you have gnu ld and the loader will print out -# line numbers for undefined references. -#CC_LD = g++ -static -CC_LD = $(CXX) $(CXX_DIALECT) - -# Where is our "include" directory? Typically $(srcdir)/../include. -# This is essentially the header file directory for the library -# routines in libiberty. -INCLUDE_DIR = $(srcdir)/../include -INCLUDE_CFLAGS = -I$(INCLUDE_DIR) - -# Where is the "-liberty" library? Typically in ../libiberty. -LIBIBERTY = ../libiberty/libiberty.a - -# Where is the CTF library? Typically in ../libctf. -LIBCTF = ../libctf/.libs/libctf.a - -# Where is the BFD library? Typically in ../bfd. -BFD_DIR = ../bfd -BFD = $(BFD_DIR)/libbfd.a -BFD_SRC = $(srcdir)/$(BFD_DIR) -BFD_CFLAGS = -I$(BFD_DIR) -I$(BFD_SRC) - -# This is where we get zlib from. zlibdir is -L../zlib and zlibinc is -# -I../zlib, unless we were configured with --with-system-zlib, in which -# case both are empty. -ZLIB = @zlibdir@ -lz -ZLIBINC = @zlibinc@ - -# Where is the decnumber library? Typically in ../libdecnumber. -LIBDECNUMBER_DIR = ../libdecnumber -LIBDECNUMBER = $(LIBDECNUMBER_DIR)/libdecnumber.a -LIBDECNUMBER_SRC = $(srcdir)/$(LIBDECNUMBER_DIR) -LIBDECNUMBER_CFLAGS = -I$(LIBDECNUMBER_DIR) -I$(LIBDECNUMBER_SRC) - -# Where is the READLINE library? Typically in ../readline/readline. -READLINE_DIR = ../readline/readline -READLINE_SRC = $(srcdir)/$(READLINE_DIR) -READLINE = @READLINE@ -READLINE_DEPS = @READLINE_DEPS@ -READLINE_CFLAGS = @READLINE_CFLAGS@ - -# Where is expat? This will be empty if expat was not available. -LIBEXPAT = @LIBEXPAT@ - -# Where is lzma? This will be empty if lzma was not available. -LIBLZMA = @LIBLZMA@ - -# Where is libbabeltrace? This will be empty if libbabeltrace was not -# available. -LIBBABELTRACE = @LIBBABELTRACE@ - -# Where is libxxhash? This will be empty if libxxhash was not -# available. -LIBXXHASH = @LIBXXHASH@ - -# Where is libipt? This will be empty if libipt was not available. -LIBIPT = @LIBIPT@ - -# Where is libmpfr? This will be empty if libmpfr was not available. -LIBMPFR = @LIBMPFR@ - -# GNU source highlight library. -SRCHIGH_LIBS = @SRCHIGH_LIBS@ -SRCHIGH_CFLAGS = @SRCHIGH_CFLAGS@ - -WARN_CFLAGS = @WARN_CFLAGS@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -GDB_WARN_CFLAGS = $(WARN_CFLAGS) -GDB_WERROR_CFLAGS = $(WERROR_CFLAGS) - -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ - -RDYNAMIC = @RDYNAMIC@ - -# Where is the INTL library? Typically in ../intl. -INTL = @LIBINTL@ -INTL_DEPS = @LIBINTL_DEP@ -INTL_CFLAGS = @INCINTL@ - -# Where is the ICONV library? This will be empty if in libc or not available. -LIBICONV = @LIBICONV@ - -# Did the user give us a --with-gdb-datadir option? -GDB_DATADIR = @GDB_DATADIR@ - -# Code signing. -CODESIGN = codesign -CODESIGN_CERT = @CODESIGN_CERT@ - -# Flags to pass to gdb when invoked with "make run". -GDBFLAGS = - -# Helper code from gnulib. -GNULIB_BUILDDIR = ../gnulib -LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a -INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import - -# -# CLI sub directory definitons -# -SUBDIR_CLI_SRCS = \ - cli/cli-cmds.c \ - cli/cli-decode.c \ - cli/cli-dump.c \ - cli/cli-interp.c \ - cli/cli-logging.c \ - cli/cli-option.c \ - cli/cli-script.c \ - cli/cli-setshow.c \ - cli/cli-style.c \ - cli/cli-utils.c - -SUBDIR_CLI_OBS = $(patsubst %.c,%.o,$(SUBDIR_CLI_SRCS)) - -# -# MI sub directory definitons -# -SUBDIR_MI_SRCS = \ - mi/mi-cmd-break.c \ - mi/mi-cmd-catch.c \ - mi/mi-cmd-disas.c \ - mi/mi-cmd-env.c \ - mi/mi-cmd-file.c \ - mi/mi-cmd-info.c \ - mi/mi-cmd-stack.c \ - mi/mi-cmd-target.c \ - mi/mi-cmd-var.c \ - mi/mi-cmds.c \ - mi/mi-console.c \ - mi/mi-getopt.c \ - mi/mi-interp.c \ - mi/mi-main.c \ - mi/mi-out.c \ - mi/mi-parse.c \ - mi/mi-symbol-cmds.c - -SUBDIR_MI_OBS = $(patsubst %.c,%.o,$(SUBDIR_MI_SRCS)) - -SUBDIR_MI_DEPS = -SUBDIR_MI_LDFLAGS = -SUBDIR_MI_CFLAGS = - -# -# TUI sub directory definitions -# -SUBDIR_TUI_SRCS = \ - tui/tui.c \ - tui/tui-command.c \ - tui/tui-data.c \ - tui/tui-disasm.c \ - tui/tui-file.c \ - tui/tui-hooks.c \ - tui/tui-interp.c \ - tui/tui-io.c \ - tui/tui-layout.c \ - tui/tui-out.c \ - tui/tui-regs.c \ - tui/tui-source.c \ - tui/tui-stack.c \ - tui/tui-win.c \ - tui/tui-wingeneral.c \ - tui/tui-winsource.c - -SUBDIR_TUI_OBS = $(patsubst %.c,%.o,$(SUBDIR_TUI_SRCS)) - -SUBDIR_TUI_DEPS = -SUBDIR_TUI_LDFLAGS = -SUBDIR_TUI_CFLAGS = -DTUI=1 - -# -# GCC Compile support sub-directory definitions -# -SUBDIR_GCC_COMPILE_SRCS = \ - compile/compile.c \ - compile/compile-c-support.c \ - compile/compile-c-symbols.c \ - compile/compile-c-types.c \ - compile/compile-cplus-symbols.c \ - compile/compile-cplus-types.c \ - compile/compile-loc2c.c \ - compile/compile-object-load.c \ - compile/compile-object-run.c - -SUBDIR_GCC_COMPILE_OBS = $(patsubst %.c,%.o,$(filter %.c,$(SUBDIR_GCC_COMPILE_SRCS))) - -# -# Guile sub directory definitons for guile support. -# -SUBDIR_GUILE_SRCS = \ - guile/guile.c \ - guile/scm-arch.c \ - guile/scm-auto-load.c \ - guile/scm-block.c \ - guile/scm-breakpoint.c \ - guile/scm-cmd.c \ - guile/scm-disasm.c \ - guile/scm-exception.c \ - guile/scm-frame.c \ - guile/scm-gsmob.c \ - guile/scm-iterator.c \ - guile/scm-lazy-string.c \ - guile/scm-math.c \ - guile/scm-objfile.c \ - guile/scm-param.c \ - guile/scm-ports.c \ - guile/scm-pretty-print.c \ - guile/scm-progspace.c \ - guile/scm-safe-call.c \ - guile/scm-string.c \ - guile/scm-symbol.c \ - guile/scm-symtab.c \ - guile/scm-type.c \ - guile/scm-utils.c \ - guile/scm-value.c - -SUBDIR_GUILE_OBS = $(patsubst %.c,%.o,$(SUBDIR_GUILE_SRCS)) - -SUBDIR_GUILE_DEPS = -SUBDIR_GUILE_LDFLAGS = -SUBDIR_GUILE_CFLAGS = - -# -# python sub directory definitons -# -SUBDIR_PYTHON_SRCS = \ - python/py-arch.c \ - python/py-auto-load.c \ - python/py-block.c \ - python/py-bpevent.c \ - python/py-breakpoint.c \ - python/py-cmd.c \ - python/py-continueevent.c \ - python/py-event.c \ - python/py-evtregistry.c \ - python/py-evts.c \ - python/py-exitedevent.c \ - python/py-finishbreakpoint.c \ - python/py-frame.c \ - python/py-framefilter.c \ - python/py-function.c \ - python/py-gdb-readline.c \ - python/py-heap.c \ - python/py-inferior.c \ - python/py-infevents.c \ - python/py-infthread.c \ - python/py-instruction.c \ - python/py-lazy-string.c \ - python/py-linetable.c \ - python/py-newobjfileevent.c \ - python/py-objfile.c \ - python/py-param.c \ - python/py-prettyprint.c \ - python/py-progspace.c \ - python/py-record.c \ - python/py-record-btrace.c \ - python/py-record-full.c \ - python/py-ref.c \ - python/py-signalevent.c \ - python/py-stopevent.c \ - python/py-symbol.c \ - python/py-symtab.c \ - python/py-threadevent.c \ - python/py-type.c \ - python/py-unwind.c \ - python/py-utils.c \ - python/py-value.c \ - python/py-varobj.c \ - python/py-xmethods.c \ - python/python.c - -SUBDIR_PYTHON_OBS = $(patsubst %.c,%.o,$(SUBDIR_PYTHON_SRCS)) - -SUBDIR_PYTHON_DEPS = -SUBDIR_PYTHON_LDFLAGS = -SUBDIR_PYTHON_CFLAGS = - -SUBDIR_UNITTESTS_SRCS = \ - unittests/array-view-selftests.c \ - unittests/child-path-selftests.c \ - unittests/cli-utils-selftests.c \ - unittests/common-utils-selftests.c \ - unittests/copy_bitwise-selftests.c \ - unittests/environ-selftests.c \ - unittests/filtered_iterator-selftests.c \ - unittests/format_pieces-selftests.c \ - unittests/function-view-selftests.c \ - unittests/help-doc-selftests.c \ - unittests/lookup_name_info-selftests.c \ - unittests/memory-map-selftests.c \ - unittests/memrange-selftests.c \ - unittests/offset-type-selftests.c \ - unittests/observable-selftests.c \ - unittests/optional-selftests.c \ - unittests/parse-connection-spec-selftests.c \ - unittests/ptid-selftests.c \ - unittests/main-thread-selftests.c \ - unittests/mkdir-recursive-selftests.c \ - unittests/rsp-low-selftests.c \ - unittests/scoped_fd-selftests.c \ - unittests/scoped_mmap-selftests.c \ - unittests/scoped_restore-selftests.c \ - unittests/string_view-selftests.c \ - unittests/style-selftests.c \ - unittests/tracepoint-selftests.c \ - unittests/tui-selftests.c \ - unittests/unpack-selftests.c \ - unittests/utils-selftests.c \ - unittests/vec-utils-selftests.c \ - unittests/xml-utils-selftests.c - -SUBDIR_UNITTESTS_OBS = $(patsubst %.c,%.o,$(SUBDIR_UNITTESTS_SRCS)) - -SUBDIR_TARGET_SRCS = target/waitstatus.c -SUBDIR_TARGET_OBS = $(patsubst %.c,%.o,$(SUBDIR_TARGET_SRCS)) - - -# Opcodes currently live in one of two places. Either they are in the -# opcode library, typically ../opcodes, or they are in a header file -# in INCLUDE_DIR. -# Where is the "-lopcodes" library, with (some of) the opcode tables and -# disassemblers? -OPCODES_DIR = ../opcodes -OPCODES_SRC = $(srcdir)/$(OPCODES_DIR) -OPCODES = $(OPCODES_DIR)/libopcodes.a -# Where are the other opcode tables which only have header file -# versions? -OP_INCLUDE = $(INCLUDE_DIR)/opcode -# See TOP_CFLAGS as well. -OPCODES_CFLAGS = -I$(OP_INCLUDE) - -# Allow includes like "opcodes/mumble.h". -TOP_CFLAGS = -I$(top_srcdir)/.. - -# The simulator is usually nonexistent; targets that include one -# should set this to list all the .o or .a files to be linked in. -SIM = @SIM@ - -WIN32LIBS = @WIN32LIBS@ - -# Tcl et al cflags and libraries -TCL = @TCL_LIBRARY@ -TCL_CFLAGS = @TCL_INCLUDE@ -GDBTKLIBS = @GDBTKLIBS@ -# Extra flags that the GDBTK files need: -GDBTK_CFLAGS = @GDBTK_CFLAGS@ - -TK = @TK_LIBRARY@ -TK_CFLAGS = @TK_INCLUDE@ - -X11_CFLAGS = @TK_XINCLUDES@ -X11_LDFLAGS = -X11_LIBS = - -WIN32LDAPP = @WIN32LDAPP@ - -LIBGUI = @LIBGUI@ -GUI_CFLAGS_X = @GUI_CFLAGS_X@ -IDE_CFLAGS = $(GUI_CFLAGS_X) $(IDE_CFLAGS_X) - -ALL_TCL_CFLAGS = $(TCL_CFLAGS) $(TK_CFLAGS) - -# The version of gdbtk we're building. This should be kept -# in sync with GDBTK_VERSION and friends in gdbtk.h. -GDBTK_VERSION = 1.0 -GDBTK_LIBRARY = $(datadir)/insight$(GDBTK_VERSION) - -# Gdbtk requires an absolute path to the source directory or -# the testsuite won't run properly. -GDBTK_SRC_DIR = @GDBTK_SRC_DIR@ - -SUBDIR_GDBTK_OBS = \ - gdbtk.o \ - gdbtk-bp.o \ - gdbtk-cmds.o \ - gdbtk-hooks.o \ - gdbtk-interp.o \ - gdbtk-register.o \ - gdbtk-stack.o \ - gdbtk-varobj.o \ - gdbtk-wrapper.o - -SUBDIR_GDBTK_SRCS = \ - gdbtk/generic/gdbtk.c \ - gdbtk/generic/gdbtk-bp.c \ - gdbtk/generic/gdbtk-cmds.c \ - gdbtk/generic/gdbtk-hooks.c \ - gdbtk/generic/gdbtk-interp.c \ - gdbtk/generic/gdbtk-main.c \ - gdbtk/generic/gdbtk-register.c \ - gdbtk/generic/gdbtk-stack.c \ - gdbtk/generic/gdbtk-varobj.c \ - gdbtk/generic/gdbtk-wrapper.c - -SUBDIR_GDBTK_DEPS = $(LIBGUI) $(TCL_DEPS) $(TK_DEPS) -SUBDIR_GDBTK_LDFLAGS = -SUBDIR_GDBTK_CFLAGS = -DGDBTK - -CONFIG_OBS = @CONFIG_OBS@ -CONFIG_SRCS = @CONFIG_SRCS@ -CONFIG_DEPS = @CONFIG_DEPS@ -CONFIG_LDFLAGS = @CONFIG_LDFLAGS@ -ENABLE_CFLAGS = @ENABLE_CFLAGS@ -CONFIG_ALL = @CONFIG_ALL@ -CONFIG_CLEAN = @CONFIG_CLEAN@ -CONFIG_INSTALL = @CONFIG_INSTALL@ -CONFIG_UNINSTALL = @CONFIG_UNINSTALL@ -HAVE_NATIVE_GCORE_TARGET = @HAVE_NATIVE_GCORE_TARGET@ - -CONFIG_SRC_SUBDIR = arch cli mi gdbsupport compile tui unittests guile python \ - target nat -CONFIG_DEP_SUBDIR = $(addsuffix /$(DEPDIR),$(CONFIG_SRC_SUBDIR)) - -# -I. for config files. -# -I$(srcdir) for gdb internal headers. -# -I$(srcdir)/config for more generic config files. - -# It is also possible that you will need to add -I/usr/include/sys if -# your system doesn't have fcntl.h in /usr/include (which is where it -# should be according to Posix). -DEFS = @DEFS@ -GDB_CFLAGS = -I. -I$(srcdir) -I$(srcdir)/config \ - -DLOCALEDIR="\"$(localedir)\"" $(DEFS) - -# MH_CFLAGS, if defined, has host-dependent CFLAGS from the config directory. -GLOBAL_CFLAGS = $(MH_CFLAGS) - -PROFILE_CFLAGS = @PROFILE_CFLAGS@ - -# These are specifically reserved for setting from the command line -# when running make. I.E.: "make CFLAGS=-Wmissing-prototypes". -CFLAGS = @CFLAGS@ -CXXFLAGS = @CXXFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -# Set by configure, for e.g. expat. Python installations are such that -# C headers are included using their basename (for example, we #include -# rather than, say, ). Since the file names -# are sometimes a little generic, we think that the risk of collision -# with other header files is high. If that happens, we try to mitigate -# a bit the consequences by putting the Python includes last in the list. -INTERNAL_CPPFLAGS = $(CPPFLAGS) @GUILE_CPPFLAGS@ @PYTHON_CPPFLAGS@ - -# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros. -INTERNAL_CFLAGS_BASE = \ - $(CXXFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \ - $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) $(ZLIBINC) \ - $(BFD_CFLAGS) $(INCLUDE_CFLAGS) $(LIBDECNUMBER_CFLAGS) \ - $(INTL_CFLAGS) $(INCGNU) $(ENABLE_CFLAGS) $(INTERNAL_CPPFLAGS) \ - $(SRCHIGH_CFLAGS) $(TOP_CFLAGS) $(PTHREAD_CFLAGS) -INTERNAL_WARN_CFLAGS = $(INTERNAL_CFLAGS_BASE) $(GDB_WARN_CFLAGS) -INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS) - -# LDFLAGS is specifically reserved for setting from the command line -# when running make. -LDFLAGS = @LDFLAGS@ - -# Profiling options need to go here to work. -# I think it's perfectly reasonable for a user to set -pg in CFLAGS -# and have it work; that's why CFLAGS is here. -# PROFILE_CFLAGS is _not_ included, however, because we use monstartup. -INTERNAL_LDFLAGS = \ - $(CXXFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) \ - $(LDFLAGS) $(CONFIG_LDFLAGS) $(PTHREAD_CFLAGS) - -# Libraries and corresponding dependencies for compiling gdb. -# XM_CLIBS, defined in *config files, have host-dependent libs. -# LIBIBERTY appears twice on purpose. -CLIBS = $(SIM) $(READLINE) $(OPCODES) $(BFD) $(LIBCTF) $(ZLIB) \ - $(INTL) $(LIBIBERTY) $(LIBDECNUMBER) \ - $(XM_CLIBS) $(GDBTKLIBS) \ - @LIBS@ @GUILE_LIBS@ @PYTHON_LIBS@ \ - $(LIBEXPAT) $(LIBLZMA) $(LIBBABELTRACE) $(LIBIPT) \ - $(LIBIBERTY) $(WIN32LIBS) $(LIBGNU) $(LIBICONV) $(LIBMPFR) \ - $(SRCHIGH_LIBS) $(LIBXXHASH) $(PTHREAD_LIBS) -CDEPS = $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE_DEPS) $(LIBCTF) \ - $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS) $(LIBGNU) - -DIST = gdb - -RUNTEST = runtest -RUNTESTFLAGS = - -# XML files to build in to GDB. -XMLFILES = \ - $(srcdir)/features/btrace.dtd \ - $(srcdir)/features/btrace-conf.dtd \ - $(srcdir)/features/gdb-target.dtd \ - $(srcdir)/features/library-list.dtd \ - $(srcdir)/features/library-list-aix.dtd \ - $(srcdir)/features/library-list-svr4.dtd \ - $(srcdir)/features/osdata.dtd \ - $(srcdir)/features/threads.dtd \ - $(srcdir)/features/traceframe-info.dtd \ - $(srcdir)/features/xinclude.dtd - -# Build the ser-*.o files the host supports. This includes ser-unix.o -# for any system that supports a POSIX interface to the serial port. -# See configure.ac. -SER_HARDWIRE = @SER_HARDWIRE@ - -# This is remote-sim.o if a simulator is to be linked in. -SIM_OBS = @SIM_OBS@ - -# Target-dependent object files. -TARGET_OBS = @TARGET_OBS@ - -# All target-dependent objects files that require 64-bit CORE_ADDR -# (used with --enable-targets=all --enable-64-bit-bfd). -ALL_64_TARGET_OBS = \ - aarch64-fbsd-tdep.o \ - aarch64-linux-tdep.o \ - aarch64-newlib-tdep.o \ - aarch64-ravenscar-thread.o \ - aarch64-tdep.o \ - alpha-bsd-tdep.o \ - alpha-linux-tdep.o \ - alpha-mdebug-tdep.o \ - alpha-nbsd-tdep.o \ - alpha-obsd-tdep.o \ - alpha-tdep.o \ - amd64-darwin-tdep.o \ - amd64-dicos-tdep.o \ - amd64-fbsd-tdep.o \ - amd64-linux-tdep.o \ - amd64-nbsd-tdep.o \ - amd64-obsd-tdep.o \ - amd64-sol2-tdep.o \ - amd64-tdep.o \ - amd64-windows-tdep.o \ - arch/aarch64.o \ - arch/aarch64-insn.o \ - arch/amd64.o \ - ia64-linux-tdep.o \ - ia64-tdep.o \ - ia64-vms-tdep.o \ - mips64-obsd-tdep.o \ - sparc64-fbsd-tdep.o \ - sparc64-linux-tdep.o \ - sparc64-nbsd-tdep.o \ - sparc64-obsd-tdep.o \ - sparc64-sol2-tdep.o \ - sparc64-tdep.o - -# All other target-dependent objects files (used with --enable-targets=all). -ALL_TARGET_OBS = \ - aarch32-tdep.o \ - arc-tdep.o \ - arch/aarch32.o \ - arch/arm.o \ - arch/arm-get-next-pcs.o \ - arch/arm-linux.o \ - arch/i386.o \ - arch/ppc-linux-common.o \ - arch/riscv.o \ - arm-bsd-tdep.o \ - arm-fbsd-tdep.o \ - arm-linux-tdep.o \ - arm-nbsd-tdep.o \ - arm-obsd-tdep.o \ - arm-pikeos-tdep.o \ - arm-symbian-tdep.o \ - arm-tdep.o \ - arm-wince-tdep.o \ - avr-tdep.o \ - bfin-linux-tdep.o \ - bfin-tdep.o \ - bsd-uthread.o \ - cris-linux-tdep.o \ - cris-tdep.o \ - csky-linux-tdep.o \ - csky-tdep.o \ - dicos-tdep.o \ - fbsd-tdep.o \ - frv-linux-tdep.o \ - frv-tdep.o \ - ft32-tdep.o \ - glibc-tdep.o \ - h8300-tdep.o \ - hppa-bsd-tdep.o \ - hppa-linux-tdep.o \ - hppa-nbsd-tdep.o \ - hppa-obsd-tdep.o \ - hppa-tdep.o \ - i386-bsd-tdep.o \ - i386-cygwin-tdep.o \ - i386-darwin-tdep.o \ - i386-dicos-tdep.o \ - i386-fbsd-tdep.o \ - i386-gnu-tdep.o \ - i386-go32-tdep.o \ - i386-linux-tdep.o \ - i386-nbsd-tdep.o \ - i386-nto-tdep.o \ - i386-obsd-tdep.o \ - i386-sol2-tdep.o \ - i386-tdep.o \ - i387-tdep.o \ - iq2000-tdep.o \ - linux-record.o \ - linux-tdep.o \ - lm32-tdep.o \ - m32c-tdep.o \ - m32r-linux-tdep.o \ - m32r-tdep.o \ - m68hc11-tdep.o \ - m68k-bsd-tdep.o \ - m68k-linux-tdep.o \ - m68k-tdep.o \ - mep-tdep.o \ - microblaze-linux-tdep.o \ - microblaze-tdep.o \ - mips-fbsd-tdep.o \ - mips-linux-tdep.o \ - mips-nbsd-tdep.o \ - mips-sde-tdep.o \ - mips-tdep.o \ - mn10300-linux-tdep.o \ - mn10300-tdep.o \ - moxie-tdep.o \ - msp430-tdep.o \ - nbsd-tdep.o \ - nds32-tdep.o \ - nios2-linux-tdep.o \ - nios2-tdep.o \ - nto-tdep.o \ - obsd-tdep.o \ - or1k-linux-tdep.o \ - or1k-tdep.o \ - ppc-fbsd-tdep.o \ - ppc-linux-tdep.o \ - ppc-nbsd-tdep.o \ - ppc-obsd-tdep.o \ - ppc-ravenscar-thread.o \ - ppc-sysv-tdep.o \ - ppc64-tdep.o \ - ravenscar-thread.o \ - riscv-fbsd-tdep.o \ - riscv-linux-tdep.o \ - riscv-tdep.o \ - rl78-tdep.o \ - rs6000-aix-tdep.o \ - rs6000-lynx178-tdep.o \ - rs6000-tdep.o \ - rx-tdep.o \ - s12z-tdep.o \ - s390-linux-tdep.o \ - s390-tdep.o \ - score-tdep.o \ - sh-linux-tdep.o \ - sh-nbsd-tdep.o \ - sh-tdep.o \ - sol2-tdep.o \ - solib-aix.o \ - solib-darwin.o \ - solib-dsbt.o \ - solib-frv.o \ - solib-svr4.o \ - sparc-linux-tdep.o \ - sparc-nbsd-tdep.o \ - sparc-obsd-tdep.o \ - sparc-ravenscar-thread.o \ - sparc-sol2-tdep.o \ - sparc-tdep.o \ - symfile-mem.o \ - tic6x-linux-tdep.o \ - tic6x-tdep.o \ - tilegx-linux-tdep.o \ - tilegx-tdep.o \ - v850-tdep.o \ - vax-nbsd-tdep.o \ - vax-tdep.o \ - windows-tdep.o \ - x86-tdep.o \ - xcoffread.o \ - xstormy16-tdep.o \ - xtensa-config.o \ - xtensa-linux-tdep.o \ - xtensa-tdep.o - -# The following native-target dependent variables are defined on -# configure.nat. -NAT_FILE = @NAT_FILE@ -NATDEPFILES = @NATDEPFILES@ -NAT_CDEPS = @NAT_CDEPS@ -LOADLIBES = @LOADLIBES@ -MH_CFLAGS = @MH_CFLAGS@ -XM_CLIBS = @XM_CLIBS@ -NAT_GENERATED_FILES = @NAT_GENERATED_FILES@ -NM_H = @NM_H@ -HAVE_NATIVE_GCORE_HOST = @HAVE_NATIVE_GCORE_HOST@ - -# Native-target dependent makefile fragment comes in here. -@nat_makefile_frag@ - -# End of native-target dependent variables. - -FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "datarootdir=$(datarootdir)" \ - "docdir=$(docdir)" \ - "htmldir=$(htmldir)" \ - "pdfdir=$(pdfdir)" \ - "libdir=$(libdir)" \ - "mandir=$(mandir)" \ - "datadir=$(datadir)" \ - "includedir=$(includedir)" \ - "against=$(against)" \ - "DESTDIR=$(DESTDIR)" \ - "AR=$(AR)" \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC=$(CC)" \ - "CFLAGS=$(CFLAGS)" \ - "CXX=$(CXX)" \ - "CXX_DIALECT=$(CXX_DIALECT)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "DLLTOOL=$(DLLTOOL)" \ - "LDFLAGS=$(LDFLAGS)" \ - "RANLIB=$(RANLIB)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ - "MAKEINFO_EXTRA_FLAGS=$(MAKEINFO_EXTRA_FLAGS)" \ - "MAKEHTML=$(MAKEHTML)" \ - "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" - -# Flags that we pass when building the testsuite. - -# empty for native, $(target_alias)/ for cross -target_subdir = @target_subdir@ - -CC_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xgcc ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xgcc -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CC); \ - else \ - t='$(program_transform_name)'; echo gcc | sed -e '' $$t; \ - fi; \ - fi` - -CXX_FOR_TARGET = ` \ - if [ -f $${rootme}/../gcc/xg++ ] ; then \ - if [ -f $${rootme}/../$(target_subdir)newlib/Makefile ] ; then \ - echo $${rootme}/../gcc/xg++ -B$${rootme}/../gcc/ -idirafter $${rootme}/$(target_subdir)newlib/targ-include -idirafter $${rootsrc}/../$(target_subdir)newlib/libc/include -nostdinc -B$${rootme}/../$(target_subdir)newlib/; \ - else \ - echo $${rootme}/../gcc/xg++ -B$${rootme}/../gcc/; \ - fi; \ - else \ - if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ - echo $(CXX); \ - else \ - t='$(program_transform_name)'; echo g++ | sed -e '' $$t; \ - fi; \ - fi` - -# The use of $$(x_FOR_TARGET) reduces the command line length by not -# duplicating the lengthy definition. -TARGET_FLAGS_TO_PASS = \ - "prefix=$(prefix)" \ - "exec_prefix=$(exec_prefix)" \ - "against=$(against)" \ - 'CC=$$(CC_FOR_TARGET)' \ - "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS=$(CFLAGS)" \ - 'CXX=$$(CXX_FOR_TARGET)' \ - "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "MAKEINFO=$(MAKEINFO)" \ - "MAKEHTML=$(MAKEHTML)" \ - "RUNTEST=$(RUNTEST)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "FORCE_PARALLEL=$(FORCE_PARALLEL)" \ - "TESTS=$(TESTS)" - -# All source files that go into linking GDB. - -# Files that should wind up in SFILES and whose corresponding .o -# should be in COMMON_OBS. -COMMON_SFILES = \ - ada-lang.c \ - ada-tasks.c \ - ada-typeprint.c \ - ada-valprint.c \ - ada-varobj.c \ - addrmap.c \ - agent.c \ - alloc.c \ - annotate.c \ - arch-utils.c \ - auto-load.c \ - auxv.c \ - ax-gdb.c \ - ax-general.c \ - bcache.c \ - bfd-target.c \ - block.c \ - blockframe.c \ - break-catch-sig.c \ - break-catch-syscall.c \ - break-catch-throw.c \ - breakpoint.c \ - btrace.c \ - build-id.c \ - buildsym-legacy.c \ - buildsym.c \ - c-lang.c \ - c-typeprint.c \ - c-valprint.c \ - c-varobj.c \ - charset.c \ - cli-out.c \ - coff-pe-read.c \ - coffread.c \ - gdbsupport/agent.c \ - gdbsupport/btrace-common.c \ - gdbsupport/buffer.c \ - gdbsupport/cleanups.c \ - gdbsupport/common-debug.c \ - gdbsupport/common-exceptions.c \ - gdbsupport/common-inferior.c \ - gdbsupport/common-regcache.c \ - gdbsupport/common-utils.c \ - gdbsupport/errors.c \ - gdbsupport/environ.c \ - gdbsupport/fileio.c \ - gdbsupport/filestuff.c \ - gdbsupport/format.c \ - gdbsupport/job-control.c \ - gdbsupport/gdb-dlfcn.c \ - gdbsupport/gdb_tilde_expand.c \ - gdbsupport/gdb_vecs.c \ - gdbsupport/netstuff.c \ - gdbsupport/new-op.c \ - gdbsupport/pathstuff.c \ - gdbsupport/print-utils.c \ - gdbsupport/ptid.c \ - gdbsupport/rsp-low.c \ - gdbsupport/run-time-clock.c \ - gdbsupport/safe-strerror.c \ - gdbsupport/scoped_mmap.c \ - gdbsupport/signals.c \ - gdbsupport/signals-state-save-restore.c \ - gdbsupport/tdesc.c \ - gdbsupport/thread-pool.c \ - gdbsupport/xml-utils.c \ - complaints.c \ - completer.c \ - continuations.c \ - copying.c \ - corefile.c \ - corelow.c \ - cp-abi.c \ - cp-namespace.c \ - cp-support.c \ - cp-valprint.c \ - ctfread.c \ - d-lang.c \ - d-namespace.c \ - d-valprint.c \ - dbxread.c \ - dcache.c \ - debug.c \ - decode.c \ - dictionary.c \ - disasm.c \ - disasm-selftests.c \ - dummy-frame.c \ - dwarf-index-cache.c \ - dwarf-index-common.c \ - dwarf-index-write.c \ - dwarf2-frame.c \ - dwarf2-frame-tailcall.c \ - dwarf2expr.c \ - dwarf2loc.c \ - dwarf2read.c \ - eval.c \ - event-loop.c \ - event-top.c \ - exceptions.c \ - exec.c \ - expprint.c \ - extension.c \ - f-lang.c \ - f-typeprint.c \ - f-valprint.c \ - filename-seen-cache.c \ - filesystem.c \ - findcmd.c \ - findvar.c \ - frame.c \ - frame-base.c \ - frame-unwind.c \ - gcore.c \ - gdb-demangle.c \ - gdb_bfd.c \ - gdb_dep.c \ - gdb_obstack.c \ - gdb_regex.c \ - gdbarch.c \ - gdbarch-selftests.c \ - gdbtypes.c \ - gnu-v2-abi.c \ - gnu-v3-abi.c \ - go-lang.c \ - go-typeprint.c \ - go-valprint.c \ - heap.c \ - heap_tcmalloc.c \ - heapcmd.c \ - i386-decode.c \ - inf-child.c \ - inf-loop.c \ - infcall.c \ - infcmd.c \ - inferior.c \ - inflow.c \ - infrun.c \ - inline-frame.c \ - interps.c \ - jit.c \ - language.c \ - linespec.c \ - location.c \ - m2-lang.c \ - m2-typeprint.c \ - m2-valprint.c \ - macrocmd.c \ - macroexp.c \ - macroscope.c \ - macrotab.c \ - main.c \ - maint.c \ - maint-test-options.c \ - maint-test-settings.c \ - mdebugread.c \ - mem-break.c \ - memattr.c \ - memory-map.c \ - memrange.c \ - minidebug.c \ - minsyms.c \ - mipsread.c \ - namespace.c \ - objc-lang.c \ - objfiles.c \ - observable.c \ - opencl-lang.c \ - osabi.c \ - osdata.c \ - p-lang.c \ - p-typeprint.c \ - p-valprint.c \ - parse.c \ - printcmd.c \ - probe.c \ - process-stratum-target.c \ - producer.c \ - progspace.c \ - progspace-and-thread.c \ - prologue-value.c \ - psymtab.c \ - record.c \ - record-btrace.c \ - record-full.c \ - regcache.c \ - regcache-dump.c \ - reggroups.c \ - registry.c \ - remote.c \ - remote-fileio.c \ - remote-notif.c \ - reverse.c \ - run-on-main-thread.c \ - rust-lang.c \ - search.c \ - segment.c \ - sentinel-frame.c \ - ser-event.c \ - serial.c \ - skip.c \ - solib.c \ - solib-target.c \ - source.c \ - source-cache.c \ - stabsread.c \ - stack.c \ - std-regs.c \ - stl_container.c \ - symfile.c \ - symfile-debug.c \ - symmisc.c \ - symtab.c \ - target.c \ - target-dcache.c \ - target-descriptions.c \ - target-memory.c \ - test-target.c \ - thread.c \ - thread-iter.c \ - tid-parse.c \ - top.c \ - tracectf.c \ - tracefile.c \ - tracefile-tfile.c \ - tracepoint.c \ - trad-frame.c \ - tramp-frame.c \ - target-float.c \ - type-stack.c \ - typeprint.c \ - ui-file.c \ - ui-out.c \ - ui-style.c \ - user-regs.c \ - utils.c \ - valarith.c \ - valops.c \ - valprint.c \ - value.c \ - varobj.c \ - xml-support.c \ - xml-syscall.c \ - xml-tdesc.c - -# Links made at configuration time should not be specified here, since -# SFILES is used in building the distribution archive. -SFILES = \ - ada-exp.y \ - arch/i386.c \ - c-exp.y \ - cp-name-parser.y \ - d-exp.y \ - dtrace-probe.c \ - elfread.c \ - f-exp.y \ - gdb.c \ - go-exp.y \ - m2-exp.y \ - p-exp.y \ - proc-service.list \ - rust-exp.y \ - ser-base.c \ - ser-unix.c \ - sol-thread.c \ - stap-probe.c \ - stub-termcap.c \ - symfile-mem.c \ - ui-file.h \ - mi/mi-common.c \ - $(SUBDIR_CLI_SRCS) \ - $(SUBDIR_TARGET_SRCS) \ - $(COMMON_SFILES) \ - $(SUBDIR_GCC_COMPILE_SRCS) - -# Header files that need to have srcdir added. Note that in the cases -# where we use a macro like $(gdbcmd_h), things are carefully arranged -# so that each .h file is listed exactly once (M-x tags-search works -# wrong if TAGS has files twice). Because this is tricky to get -# right, it is probably easiest just to list .h files here directly. - -HFILES_NO_SRCDIR = \ - aarch32-tdep.h \ - aarch64-ravenscar-thread.h \ - aarch64-tdep.h \ - ada-lang.h \ - addrmap.h \ - alpha-bsd-tdep.h \ - alpha-tdep.h \ - amd64-darwin-tdep.h \ - amd64-linux-tdep.h \ - amd64-nat.h \ - amd64-tdep.h \ - annotate.h \ - arc-tdep.h \ - arch-utils.h \ - arm-linux-tdep.h \ - arm-tdep.h \ - auto-load.h \ - auxv.h \ - ax.h \ - ax-gdb.h \ - bcache.h \ - bfd-target.h \ - bfin-tdep.h \ - block.h \ - breakpoint.h \ - bsd-kvm.h \ - bsd-uthread.h \ - build-id.h \ - buildsym-legacy.h \ - buildsym.h \ - c-lang.h \ - charset.h \ - charset-list.h \ - cli-out.h \ - coff-pe-read.h \ - command.h \ - complaints.h \ - completer.h \ - cp-abi.h \ - cp-support.h \ - csky-tdep.h \ - d-lang.h \ - darwin-nat.h \ - dcache.h \ - defs.h \ - dicos-tdep.h \ - dictionary.h \ - disasm.h \ - dummy-frame.h \ - dwarf-index-cache.h \ - dwarf-index-common.h \ - dwarf2-frame.h \ - dwarf2-frame-tailcall.h \ - dwarf2expr.h \ - dwarf2loc.h \ - dwarf2read.h \ - event-loop.h \ - event-top.h \ - exceptions.h \ - exec.h \ - expression.h \ - extension.h \ - extension-priv.h \ - f-lang.h \ - fbsd-nat.h \ - fbsd-tdep.h \ - filesystem.h \ - frame.h \ - frame-base.h \ - frame-unwind.h \ - frv-tdep.h \ - ft32-tdep.h \ - gcore.h \ - gdb_bfd.h \ - gdb_curses.h \ - gdb_expat.h \ - gdb_obstack.h \ - gdb_proc_service.h \ - gdb_regex.h \ - gdb_select.h \ - gdb-stabs.h \ - gdb_vfork.h \ - gdb_wchar.h \ - gdbarch.h \ - gdbcmd.h \ - gdbcore.h \ - gdbthread.h \ - gdbtypes.h \ - glibc-tdep.h \ - gnu-nat.h \ - go-lang.h \ - gregset.h \ - hppa-bsd-tdep.h \ - hppa-linux-offsets.h \ - hppa-tdep.h \ - i386-bsd-nat.h \ - i386-darwin-tdep.h \ - i386-linux-nat.h \ - i386-linux-tdep.h \ - i386-tdep.h \ - i387-tdep.h \ - ia64-libunwind-tdep.h \ - ia64-tdep.h \ - inf-child.h \ - inf-loop.h \ - inf-ptrace.h \ - infcall.h \ - inferior.h \ - inflow.h \ - inline-frame.h \ - interps.h \ - jit.h \ - language.h \ - linespec.h \ - linux-fork.h \ - linux-nat.h \ - linux-record.h \ - linux-tdep.h \ - location.h \ - m2-lang.h \ - m32r-tdep.h \ - m68k-tdep.h \ - macroexp.h \ - macroscope.h \ - macrotab.h \ - main.h \ - mdebugread.h \ - memattr.h \ - memory-map.h \ - memrange.h \ - microblaze-tdep.h \ - mips-linux-tdep.h \ - mips-nbsd-tdep.h \ - mips-tdep.h \ - mn10300-tdep.h \ - moxie-tdep.h \ - nbsd-nat.h \ - nbsd-tdep.h \ - nds32-tdep.h \ - nios2-tdep.h \ - nto-tdep.h \ - objc-lang.h \ - objfiles.h \ - obsd-nat.h \ - obsd-tdep.h \ - osabi.h \ - osdata.h \ - p-lang.h \ - parser-defs.h \ - ppc-fbsd-tdep.h \ - ppc-linux-tdep.h \ - ppc-nbsd-tdep.h \ - ppc-obsd-tdep.h \ - ppc-ravenscar-thread.h \ - ppc-tdep.h \ - ppc64-tdep.h \ - probe.h \ - proc-utils.h \ - procfs.h \ - progspace.h \ - progspace-and-thread.h \ - prologue-value.h \ - psympriv.h \ - psymtab.h \ - ravenscar-thread.h \ - record.h \ - record-full.h \ - regcache.h \ - reggroups.h \ - regset.h \ - remote.h \ - remote-fileio.h \ - remote-notif.h \ - riscv-fbsd-tdep.h \ - riscv-tdep.h \ - rs6000-aix-tdep.h \ - rs6000-tdep.h \ - run-on-main-thread.h \ - s390-linux-tdep.h \ - s390-tdep.h \ - score-tdep.h \ - selftest-arch.h \ - sentinel-frame.h \ - ser-base.h \ - ser-event.h \ - ser-tcp.h \ - ser-unix.h \ - serial.h \ - sh-tdep.h \ - sim-regno.h \ - skip.h \ - sol2-tdep.h \ - solib.h \ - solib-aix.h \ - solib-darwin.h \ - solib-svr4.h \ - solib-target.h \ - solist.h \ - source.h \ - source-cache.h \ - sparc-nat.h \ - sparc-ravenscar-thread.h \ - sparc-tdep.h \ - sparc64-tdep.h \ - stabsread.h \ - stack.h \ - stap-probe.h \ - symfile.h \ - symtab.h \ - target.h \ - target-dcache.h \ - target-descriptions.h \ - terminal.h \ - tid-parse.h \ - top.h \ - tracectf.h \ - tracefile.h \ - tracepoint.h \ - trad-frame.h \ - target-float.h \ - tramp-frame.h \ - type-stack.h \ - typeprint.h \ - ui-file.h \ - ui-out.h \ - ui-style.h \ - user-regs.h \ - utils.h \ - valprint.h \ - value.h \ - varobj.h \ - varobj-iter.h \ - vax-tdep.h \ - windows-nat.h \ - windows-tdep.h \ - x86-bsd-nat.h \ - x86-linux-nat.h \ - x86-nat.h \ - xcoffread.h \ - xml-builtin.h \ - xml-support.h \ - xml-syscall.h \ - xml-tdesc.h \ - xtensa-tdep.h \ - arch/aarch32.h \ - arch/aarch64.h \ - arch/aarch64-insn.h \ - arch/arm.h \ - arch/i386.h \ - arch/ppc-linux-common.h \ - arch/ppc-linux-tdesc.h \ - arch/riscv.h \ - cli/cli-cmds.h \ - cli/cli-decode.h \ - cli/cli-script.h \ - cli/cli-setshow.h \ - cli/cli-style.h \ - cli/cli-utils.h \ - gdbsupport/buffer.h \ - gdbsupport/cleanups.h \ - gdbsupport/common-debug.h \ - gdbsupport/common-defs.h \ - gdbsupport/common-exceptions.h \ - gdbsupport/common-gdbthread.h \ - gdbsupport/common-regcache.h \ - gdbsupport/common-types.h \ - gdbsupport/common-utils.h \ - gdbsupport/job-control.h \ - gdbsupport/errors.h \ - gdbsupport/environ.h \ - gdbsupport/fileio.h \ - gdbsupport/format.h \ - gdbsupport/gdb-dlfcn.h \ - gdbsupport/gdb-sigmask.h \ - gdbsupport/gdb_assert.h \ - gdbsupport/gdb_binary_search.h \ - gdbsupport/gdb_tilde_expand.h \ - gdbsupport/gdb_locale.h \ - gdbsupport/gdb_proc_service.h \ - gdbsupport/gdb_setjmp.h \ - gdbsupport/gdb_signals.h \ - gdbsupport/gdb_sys_time.h \ - gdbsupport/gdb_vecs.h \ - gdbsupport/gdb_wait.h \ - gdbsupport/common-inferior.h \ - gdbsupport/netstuff.h \ - gdbsupport/host-defs.h \ - gdbsupport/parallel-for.h \ - gdbsupport/pathstuff.h \ - gdbsupport/print-utils.h \ - gdbsupport/ptid.h \ - gdbsupport/queue.h \ - gdbsupport/rsp-low.h \ - gdbsupport/run-time-clock.h \ - gdbsupport/signals-state-save-restore.h \ - gdbsupport/symbol.h \ - gdbsupport/tdesc.h \ - gdbsupport/thread-pool.h \ - gdbsupport/version.h \ - gdbsupport/x86-xstate.h \ - gdbsupport/xml-utils.h \ - compile/compile.h \ - compile/compile-c.h \ - compile/compile-cplus.h \ - compile/compile-internal.h \ - compile/compile-object-load.h \ - compile/compile-object-run.h \ - compile/gcc-c-plugin.h \ - compile/gcc-cp-plugin.h \ - config/nm-linux.h \ - config/nm-nto.h \ - config/djgpp/langinfo.h \ - config/djgpp/nl_types.h \ - config/i386/nm-i386gnu.h \ - config/sparc/nm-sol2.h \ - mi/mi-cmds.h \ - mi/mi-common.h \ - mi/mi-console.h \ - mi/mi-getopt.h \ - mi/mi-main.h \ - mi/mi-out.h \ - mi/mi-parse.h \ - nat/aarch64-linux.h \ - nat/aarch64-linux-hw-point.h \ - nat/aarch64-sve-linux-ptrace.h \ - nat/amd64-linux-siginfo.h \ - nat/gdb_ptrace.h \ - nat/gdb_thread_db.h \ - nat/fork-inferior.h \ - nat/linux-btrace.h \ - nat/linux-namespaces.h \ - nat/linux-nat.h \ - nat/linux-osdata.h \ - nat/linux-personality.h \ - nat/linux-ptrace.h \ - nat/linux-waitpid.h \ - nat/mips-linux-watch.h \ - nat/ppc-linux.h \ - nat/x86-cpuid.h \ - nat/x86-dregs.h \ - nat/x86-gcc-cpuid.h \ - nat/x86-linux.h \ - nat/x86-linux-dregs.h \ - python/py-event.h \ - python/py-events.h \ - python/py-stopevent.h \ - python/python.h \ - python/python-internal.h \ - regformats/regdef.h \ - target/resume.h \ - target/target.h \ - target/wait.h \ - target/waitstatus.h \ - tui/tui.h \ - tui/tui-command.h \ - tui/tui-data.h \ - tui/tui-disasm.h \ - tui/tui-file.h \ - tui/tui-hooks.h \ - tui/tui-io.h \ - tui/tui-layout.h \ - tui/tui-regs.h \ - tui/tui-source.h \ - tui/tui-stack.h \ - tui/tui-win.h \ - tui/tui-windata.h \ - tui/tui-wingeneral.h \ - tui/tui-winsource.h \ - x86-tdep.h - -# Header files that already have srcdir in them, or which are in objdir. - -HFILES_WITH_SRCDIR = \ - ../bfd/bfd.h \ - jit-reader.h - -# {X,T,NAT}DEPFILES are something of a pain in that it's hard to -# default their values the way we do for SER_HARDWIRE; in the future -# maybe much of the stuff now in {X,T,NAT}DEPFILES will go into other -# variables analogous to SER_HARDWIRE which get defaulted in this -# Makefile.in - -DEPFILES = $(TARGET_OBS) $(SER_HARDWIRE) $(NATDEPFILES) $(SIM_OBS) - -SOURCES = $(SFILES) $(ALLDEPFILES) $(YYFILES) $(CONFIG_SRCS) -# Don't include YYFILES (*.c) because we already include *.y in SFILES, -# and it's more useful to see it in the .y file. -TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \ - $(CONFIG_SRCS) -TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR) - -COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \ - mi/mi-common.o \ - version.o \ - xml-builtin.o \ - $(patsubst %.c,%.o,$(COMMON_SFILES)) \ - $(SUBDIR_CLI_OBS) \ - $(SUBDIR_TARGET_OBS) \ - $(SUBDIR_GCC_COMPILE_OBS) - -SUBDIRS = doc @subdirs@ data-directory -CLEANDIRS = $(SUBDIRS) - -# List of subdirectories in the build tree that must exist. -# This is used to force build failures in existing trees when -# a new directory is added. -# The format here is for the `case' shell command. -REQUIRED_SUBDIRS = doc | testsuite | data-directory - -# Parser intermediate files. -YYFILES = \ - ada-exp.c \ - ada-lex.c \ - c-exp.c \ - cp-name-parser.c \ - d-exp.c \ - f-exp.c \ - go-exp.c \ - m2-exp.c \ - p-exp.c \ - rust-exp.c - -# ada-lex.c is included by another file, so it shouldn't wind up as a -# .o itself. -YYOBJ = $(filter-out ada-lex.o,$(patsubst %.c,%.o,$(YYFILES))) - -# Things which need to be built when making a distribution. - -DISTSTUFF = $(YYFILES) - - -# All generated files which can be included by another file. -generated_files = \ - ada-lex.c \ - config.h \ - jit-reader.h \ - $(NAT_GENERATED_FILES) \ - $(NM_H) - -# Flags needed to compile Python code -PYTHON_CFLAGS = @PYTHON_CFLAGS@ - -all: gdb$(EXEEXT) $(CONFIG_ALL) gdb-gdb.py gdb-gdb.gdb - @$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do - -# Rule for compiling .c files in the top-level gdb directory. -# The order-only dependencies ensure that we create the build subdirectories. -%.o: %.c | $(CONFIG_DEP_SUBDIR) - $(COMPILE) $< - $(POSTCOMPILE) - -$(CONFIG_DEP_SUBDIR): - $(SHELL) $(srcdir)/../mkinstalldirs $@ - -# Python files need special flags. -python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS) - -# Rules for compiling .c files in the various source subdirectories. -%.o: $(srcdir)/gdbtk/generic/%.c - $(COMPILE) $(all_gdbtk_cflags) $< - $(POSTCOMPILE) - -installcheck: - -# The check target can not use subdir_do, because subdir_do does not -# use TARGET_FLAGS_TO_PASS. -check: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check; \ - else true; fi - -check-perf: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-perf; \ - else true; fi - -check-read1: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-read1; \ - else true; fi - -check-parallel: force - @if [ -f testsuite/Makefile ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - cd testsuite; \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) check-parallel; \ - else true; fi - -# The idea is to parallelize testing of multilibs, for example: -# make -j3 check//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu} -# will run 3 concurrent sessions of check, eventually testing all 10 -# combinations. GNU make is required for the % pattern to work, as is -# a shell that expands alternations within braces. If GNU make is not -# used, this rule will harmlessly fail to match. Used FORCE_PARALLEL to -# prevent serialized checking due to the passed RUNTESTFLAGS. -# FIXME: use config.status --config not --version, when available. -check//%: force - @if [ -f testsuite/config.status ]; then \ - rootme=`pwd`; export rootme; \ - rootsrc=`cd $(srcdir); pwd`; export rootsrc; \ - target=`echo "$@" | sed 's,//.*,,'`; \ - variant=`echo "$@" | sed 's,^[^/]*//,,'`; \ - vardots=`echo "$$variant" | sed 's,/,.,g'`; \ - testdir=testsuite.$$vardots; \ - if [ ! -f $$testdir/Makefile ] && [ -f testsuite/config.status ]; then \ - configargs=`cd testsuite && ./config.status --version | \ - sed -n -e 's,"$$,,' -e 's,^ *with options ",,p'`; \ - $(SHELL) $(srcdir)/../mkinstalldirs $$testdir && \ - (cd $$testdir && \ - eval $(SHELL) "\"\$$rootsrc/testsuite/configure\" $$configargs" \ - "\"--srcdir=\$$rootsrc/testsuite\"" \ - ); \ - else :; fi && cd $$testdir && \ - $(MAKE) $(TARGET_FLAGS_TO_PASS) \ - RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \ - FORCE_PARALLEL=$(if $(FORCE_PARALLEL),1,$(if $(RUNTESTFLAGS),,1)) \ - "$$target"; \ - else true; fi - -# The set of headers checked by 'check-headers' by default. -CHECK_HEADERS = $(HFILES_NO_SRCDIR) - -# Try to compile each header in isolation, thus ensuring headers are -# self-contained. -# -# Defaults to checking all $HFILES_NO_SRCDIR headers. -# -# Do: -# -# make check-headers CHECK_HEADERS="header.h list.h" -# -# to check specific headers. -# -check-headers: - @echo Checking headers. - for i in $(CHECK_HEADERS) ; do \ - $(CXX) $(CXX_DIALECT) -x c++-header -c -fsyntax-only \ - $(INTERNAL_CFLAGS) -include defs.h $(srcdir)/$$i ; \ - done -.PHONY: check-headers - -info install-info clean-info dvi pdf install-pdf html install-html: force - @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do - -# Traditionally "install" depends on "all". But it may be useful -# not to; for example, if the user has made some trivial change to a -# source file and doesn't care about rebuilding or just wants to save the -# time it takes for make to check that all is up to date. -# install-only is intended to address that need. -install: all - @$(MAKE) $(FLAGS_TO_PASS) install-only - -install-only: $(CONFIG_INSTALL) - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_PROGRAM) gdb$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(includedir)/gdb ; \ - $(INSTALL_DATA) jit-reader.h $(DESTDIR)$(includedir)/gdb/jit-reader.h - if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \ - then \ - transformed_name=`t='$(program_transform_name)'; \ - echo gcore | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gcore ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) ; \ - $(INSTALL_SCRIPT) gcore \ - $(DESTDIR)$(bindir)/$$transformed_name; \ - fi - transformed_name=`t='$(program_transform_name)'; \ - echo gdb-add-index | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb-add-index ; \ - else \ - true ; \ - fi ; \ - $(INSTALL_SCRIPT) $(srcdir)/contrib/gdb-add-index.sh \ - $(DESTDIR)$(bindir)/$$transformed_name - @$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do - -install-strip: - $(MAKE) $(FLAGS_TO_PASS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install-only - -install-guile: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/guile/gdb - -install-python: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb - -uninstall: force $(CONFIG_UNINSTALL) - transformed_name=`t='$(program_transform_name)'; \ - echo gdb | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gdb ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) \ - $(DESTDIR)$(man1dir)/$$transformed_name.1 - if test "x$(HAVE_NATIVE_GCORE_TARGET)$(HAVE_NATIVE_GCORE_HOST)" != x; \ - then \ - transformed_name=`t='$(program_transform_name)'; \ - echo gcore | sed -e "$$t"` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=gcore ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name; \ - fi - @$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do - -# The C++ name parser can be built standalone for testing. -test-cp-name-parser.o: cp-name-parser.c - $(COMPILE) -DTEST_CPNAMES cp-name-parser.c - $(POSTCOMPILE) - -test-cp-name-parser$(EXEEXT): test-cp-name-parser.o $(LIBIBERTY) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) \ - -o test-cp-name-parser$(EXEEXT) test-cp-name-parser.o \ - $(LIBIBERTY) - -# We do this by grepping through sources. If that turns out to be too slow, -# maybe we could just require every .o file to have an initialization routine -# of a given name (top.o -> _initialize_top, etc.). -# -# Formatting conventions: The name of the _initialize_* routines must start -# in column zero, and must not be inside #if. -# -# Note that the set of files with init functions might change, or the names -# of the functions might change, so this files needs to depend on all the -# source files that will be linked into gdb. However, due to the way -# this Makefile has generally been written, we do this indirectly, by -# computing the list of source files from the list of object files. - -INIT_FILES = \ - $(patsubst %.o,%.c, \ - $(patsubst %-exp.o,%-exp.y, \ - $(filter-out init.o version.o %_S.o %_U.o,\ - $(COMMON_OBS)))) - -init.c: stamp-init; @true -stamp-init: $(INIT_FILES) - @$(ECHO_INIT_C) echo "Making init.c" - @rm -f init.c-tmp init.l-tmp - @touch init.c-tmp - @-for f in $(INIT_FILES); do \ - sed -n -e 's/^_initialize_\([a-z_0-9A-Z]*\).*/\1/p' \ - $(srcdir)/$$f 2>/dev/null; \ - done > init.l-tmp - @echo '/* Do not modify this file. */' >>init.c-tmp - @echo '/* It is created automatically by the Makefile. */'>>init.c-tmp - @echo '#include "defs.h" /* For initialize_file_ftype. */' >>init.c-tmp - @echo 'extern void initialize_all_files(void);' >>init.c-tmp - @sed -e 's/\(.*\)/extern initialize_file_ftype _initialize_\1;/' >init.c-tmp - @echo 'void' >>init.c-tmp - @echo 'initialize_all_files (void)' >>init.c-tmp - @echo '{' >>init.c-tmp - @sed -e 's/\(.*\)/ _initialize_\1 ();/' >init.c-tmp - @echo '}' >>init.c-tmp - @$(SHELL) $(srcdir)/../move-if-change init.c-tmp init.c - @echo stamp > stamp-init - -.PRECIOUS: init.c - -# Create a library of the gdb object files and build GDB by linking -# against that. -# -# init.o is very important. It pulls in the rest of GDB. -LIBGDB_OBS = $(sort $(COMMON_OBS)) init.o -libgdb.a: $(LIBGDB_OBS) - -rm -f libgdb.a - $(AR) q libgdb.a $(LIBGDB_OBS) - $(RANLIB) libgdb.a - -# Removing the old gdb first works better if it is running, at least on SunOS. -gdb$(EXEEXT): gdb.o $(LIBGDB_OBS) $(CDEPS) $(TDEPLIBS) - $(SILENCE) rm -f gdb$(EXEEXT) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o gdb$(EXEEXT) gdb.o $(LIBGDB_OBS) \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) -ifneq ($(CODESIGN_CERT),) - $(ECHO_SIGN) $(CODESIGN) -s $(CODESIGN_CERT) gdb$(EXEEXT) -endif - -# Convenience rule to handle recursion. -.PHONY: all-data-directory -all-data-directory: data-directory/Makefile - @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS=data-directory subdir_do - -# This is useful when debugging GDB, because some Unix's don't let you run GDB -# on itself without copying the executable. So "make gdb1" will make -# gdb and put a copy in gdb1, and you can run it with "gdb gdb1". -# Removing gdb1 before the copy is the right thing if gdb1 is open -# in another process. -gdb1$(EXEEXT): gdb$(EXEEXT) - rm -f gdb1$(EXEEXT) - cp gdb$(EXEEXT) gdb1$(EXEEXT) - -# Put the proper machine-specific files first, so M-. on a machine -# specific routine gets the one for the correct machine. (FIXME: those -# files go in twice; we should be removing them from the main list). - -# TAGS depends on all the files that go into it so you can rebuild TAGS -# with `make TAGS' and not have to say `rm TAGS' first. - -GDB_NM_FILE = @GDB_NM_FILE@ -TAGS: $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR) - @echo Making TAGS - etags `(test -n "$(GDB_NM_FILE)" && echo "$(srcdir)/$(GDB_NM_FILE)")` \ - `(for i in $(DEPFILES) $(TAGFILES_NO_SRCDIR); do \ - echo $(srcdir)/$$i ; \ - done ; for i in $(TAGFILES_WITH_SRCDIR); do \ - echo $$i ; \ - done) | sed -e 's/\.o$$/\.c/'` \ - `find $(srcdir)/config -name '*.h' -print` - -tags: TAGS - -clean mostlyclean: $(CONFIG_CLEAN) - @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f *.o *.a *~ init.c-tmp init.l-tmp version.c-tmp - rm -f init.c stamp-init version.c stamp-version - rm -f gdb$(EXEEXT) core make.log - rm -f gdb[0-9]$(EXEEXT) - rm -f test-cp-name-parser$(EXEEXT) - rm -f xml-builtin.c stamp-xml - rm -f $(DEPDIR)/* - for i in $(CONFIG_SRC_SUBDIR); do \ - rm -f $$i/*.o; \ - rm -f $$i/$(DEPDIR)/*; \ - done - -# This used to depend on c-exp.c m2-exp.c TAGS -# I believe this is wrong; the makefile standards for distclean just -# describe removing files; the only sort of "re-create a distribution" -# functionality described is if the distributed files are unmodified. -# NB: While GDBSERVER might be configured on native systems, it isn't -# always included in SUBDIRS. Remove the gdbserver files explicitly. -distclean: clean - @$(MAKE) $(FLAGS_TO_PASS) DO=distclean "DODIRS=$(CLEANDIRS)" subdir_do - rm -f gdbserver/config.status gdbserver/config.log - rm -f gdbserver/tm.h gdbserver/xm.h gdbserver/nm.h - rm -f gdbserver/Makefile gdbserver/config.cache - rm -f nm.h config.status config.h stamp-h b jit-reader.h - rm -f gdb-gdb.py gdb-gdb.gdb - rm -f y.output yacc.acts yacc.tmp y.tab.h - rm -f config.log config.cache - rm -f Makefile - rm -rf $(DEPDIR) - for i in $(CONFIG_SRC_SUBDIR); do \ - if test -d $$i/$(DEPDIR); then rmdir $$i/$(DEPDIR); fi \ - done - -maintainer-clean: local-maintainer-clean do-maintainer-clean distclean -realclean: maintainer-clean - -local-maintainer-clean: - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f c-exp.c \ - cp-name-parser.c \ - ada-lex.c ada-exp.c \ - d-exp.c f-exp.c go-exp.c m2-exp.c p-exp.c rust-exp.c - rm -f TAGS - rm -f $(YYFILES) - rm -f nm.h config.status - -do-maintainer-clean: - @$(MAKE) $(FLAGS_TO_PASS) DO=maintainer-clean "DODIRS=$(CLEANDIRS)" \ - subdir_do - -diststuff: $(DISTSTUFF) $(PACKAGE).pot $(CATALOGS) - cd doc; $(MAKE) $(MFLAGS) diststuff - -subdir_do: force - @for i in $(DODIRS); do \ - case $$i in \ - $(REQUIRED_SUBDIRS)) \ - if [ ! -f ./$$i/Makefile ] ; then \ - echo "Missing $$i/Makefile" >&2 ; \ - exit 1 ; \ - fi ;; \ - esac ; \ - if [ -f ./$$i/Makefile ] ; then \ - if (cd ./$$i; \ - $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \ - else exit 1 ; fi ; \ - else true ; fi ; \ - done - -Makefile: Makefile.in config.status - $(SHELL) config.status $@ - -data-directory/Makefile: data-directory/Makefile.in config.status - $(SHELL) config.status $@ - -.PHONY: run -run: Makefile - ./gdb$(EXEEXT) --data-directory=`pwd`/data-directory $(GDBFLAGS) - -jit-reader.h: $(srcdir)/jit-reader.in - $(SHELL) config.status $@ - -gcore: $(srcdir)/gcore.in - $(SHELL) config.status $@ - -gdb-gdb.py: $(srcdir)/gdb-gdb.py.in - $(SHELL) config.status $@ - -gdb-gdb.gdb: $(srcdir)/gdb-gdb.gdb.in - $(SHELL) config.status $@ - -config.h: stamp-h ; @true -stamp-h: $(srcdir)/config.in config.status - $(SHELL) config.status config.h - -nm.h: stamp-nmh ; @true -stamp-nmh: config.status - $(SHELL) config.status nm.h - -config.status: $(srcdir)/configure configure.nat configure.tgt configure.host ../bfd/development.sh - $(SHELL) config.status --recheck - -ACLOCAL = aclocal -ACLOCAL_AMFLAGS = -I ../config - -# Keep these in sync with the includes in acinclude.m4. -aclocal_m4_deps = \ - configure.ac \ - acx_configure_dir.m4 \ - transform.m4 \ - ../bfd/bfd.m4 \ - ../config/acinclude.m4 \ - ../config/plugins.m4 \ - ../config/lead-dot.m4 \ - ../config/override.m4 \ - ../config/largefile.m4 \ - ../config/gettext-sister.m4 \ - ../config/lib-ld.m4 \ - ../config/lib-prefix.m4 \ - ../config/lib-link.m4 \ - ../config/acx.m4 \ - ../config/tcl.m4 \ - ../config/depstand.m4 \ - ../config/lcmessage.m4 \ - ../config/codeset.m4 \ - ../config/zlib.m4 \ - ../config/ax_pthread.m4 - -$(srcdir)/aclocal.m4: @MAINTAINER_MODE_TRUE@ $(aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - -AUTOCONF = autoconf -configure_deps = $(srcdir)/configure.ac $(srcdir)/aclocal.m4 -$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOCONF) - -AUTOHEADER = autoheader -$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(configure_deps) - cd $(srcdir) && $(AUTOHEADER) - rm -f stamp-h - touch $@ - -# automatic rebuilding in automake-generated Makefiles requires -# this rule in the toplevel Makefile, which, with GNU make, causes -# the desired updates through the implicit regeneration of the Makefile -# and all of its prerequisites. -am--refresh: - @: - -force: - -# Documentation! -# GDB QUICK REFERENCE (TeX dvi file, CM fonts) -doc/refcard.dvi: - cd doc; $(MAKE) refcard.dvi $(FLAGS_TO_PASS) - -# GDB QUICK REFERENCE (PostScript output, common PS fonts) -doc/refcard.ps: - cd doc; $(MAKE) refcard.ps $(FLAGS_TO_PASS) - -# GDB MANUAL: TeX dvi file -doc/gdb.dvi: - cd doc; $(MAKE) gdb.dvi $(FLAGS_TO_PASS) - -# GDB MANUAL: info file -doc/gdb.info: - cd doc; $(MAKE) gdb.info $(FLAGS_TO_PASS) - -# Make copying.c from COPYING -$(srcdir)/copying.c: @MAINTAINER_MODE_TRUE@ $(srcdir)/../COPYING3 $(srcdir)/copying.awk - awk -f $(srcdir)/copying.awk \ - < $(srcdir)/../COPYING3 > $(srcdir)/copying.tmp - mv $(srcdir)/copying.tmp $(srcdir)/copying.c - -version.c: stamp-version; @true -# Note that the obvious names for the temp file are taken by -# create-version.sh. -stamp-version: Makefile version.in $(srcdir)/../bfd/version.h $(srcdir)/gdbsupport/create-version.sh - $(ECHO_GEN) $(SHELL) $(srcdir)/gdbsupport/create-version.sh $(srcdir) \ - $(host_alias) $(target_alias) version-t.t - @$(SHELL) $(srcdir)/../move-if-change version-t.t version.c - @echo stamp > stamp-version - - -gdb.cxref: $(SFILES) - cxref -I. $(SFILES) >gdb.cxref - -force_update: - -# GNU Make has an annoying habit of putting *all* the Makefile variables -# into the environment, unless you include this target as a circumvention. -# Rumor is that this will be fixed (and this target can be removed) -# in GNU Make 4.0. -.NOEXPORT: - -# GNU Make 3.63 has a different problem: it keeps tacking command line -# overrides onto the definition of $(MAKE). This variable setting -# will remove them. -MAKEOVERRIDES = - -ALLDEPFILES = \ - aarch32-tdep.c \ - aarch64-fbsd-nat.c \ - aarch64-fbsd-tdep.c \ - aarch64-linux-nat.c \ - aarch64-linux-tdep.c \ - aarch64-newlib-tdep.c \ - aarch64-ravenscar-thread.c \ - aarch64-tdep.c \ - aix-thread.c \ - alpha-bsd-nat.c \ - alpha-bsd-tdep.c \ - alpha-linux-nat.c \ - alpha-linux-tdep.c \ - alpha-mdebug-tdep.c \ - alpha-nbsd-tdep.c \ - alpha-obsd-tdep.c \ - alpha-tdep.c \ - amd64-bsd-nat.c \ - amd64-darwin-tdep.c \ - amd64-dicos-tdep.c \ - amd64-fbsd-nat.c \ - amd64-fbsd-tdep.c \ - amd64-linux-nat.c \ - amd64-linux-tdep.c \ - amd64-nat.c \ - amd64-nbsd-nat.c \ - amd64-nbsd-tdep.c \ - amd64-obsd-nat.c \ - amd64-obsd-tdep.c \ - amd64-sol2-tdep.c \ - amd64-tdep.c \ - arc-tdep.c \ - arm.c \ - arm-bsd-tdep.c \ - arm-fbsd-nat.c \ - arm-fbsd-tdep.c \ - arm-get-next-pcs.c \ - arm-linux.c \ - arm-linux-nat.c \ - arm-linux-tdep.c \ - arm-nbsd-nat.c \ - arm-nbsd-tdep.c \ - arm-obsd-tdep.c \ - arm-symbian-tdep.c \ - arm-tdep.c \ - avr-tdep.c \ - bfin-linux-tdep.c \ - bfin-tdep.c \ - bsd-kvm.c \ - bsd-uthread.c \ - csky-linux-tdep.c \ - csky-tdep.c \ - darwin-nat.c \ - dicos-tdep.c \ - fbsd-nat.c \ - fbsd-tdep.c \ - fork-child.c \ - ft32-tdep.c \ - glibc-tdep.c \ - go32-nat.c \ - h8300-tdep.c \ - hppa-bsd-tdep.c \ - hppa-linux-nat.c \ - hppa-linux-tdep.c \ - hppa-nbsd-nat.c \ - hppa-nbsd-tdep.c \ - hppa-obsd-nat.c \ - hppa-obsd-tdep.c \ - hppa-tdep.c \ - i386-bsd-nat.c \ - i386-bsd-tdep.c \ - i386-cygwin-tdep.c \ - i386-darwin-nat.c \ - i386-darwin-tdep.c \ - i386-dicos-tdep.c \ - i386-fbsd-nat.c \ - i386-fbsd-tdep.c \ - i386-gnu-nat.c \ - i386-gnu-tdep.c \ - i386-linux-nat.c \ - i386-linux-tdep.c \ - i386-nbsd-nat.c \ - i386-nbsd-tdep.c \ - i386-obsd-nat.c \ - i386-obsd-tdep.c \ - i386-sol2-nat.c \ - i386-sol2-tdep.c \ - i386-tdep.c \ - i387-tdep.c \ - ia64-libunwind-tdep.c \ - ia64-linux-nat.c \ - ia64-linux-tdep.c \ - ia64-tdep.c \ - ia64-vms-tdep.c \ - inf-ptrace.c \ - linux-fork.c \ - linux-record.c \ - linux-tdep.c \ - lm32-tdep.c \ - m32r-linux-nat.c \ - m32r-linux-tdep.c \ - m32r-tdep.c \ - m68hc11-tdep.c \ - m68k-bsd-nat.c \ - m68k-bsd-tdep.c \ - m68k-linux-nat.c \ - m68k-linux-tdep.c \ - m68k-tdep.c \ - microblaze-linux-tdep.c \ - microblaze-tdep.c \ - mingw-hdep.c \ - mips-fbsd-nat.c \ - mips-fbsd-tdep.c \ - mips-linux-nat.c \ - mips-linux-tdep.c \ - mips-nbsd-nat.c \ - mips-nbsd-tdep.c \ - mips-sde-tdep.c \ - mips-tdep.c \ - mips64-obsd-nat.c \ - mips64-obsd-tdep.c \ - msp430-tdep.c \ - nbsd-nat.c \ - nbsd-tdep.c \ - nds32-tdep.c \ - nios2-linux-tdep.c \ - nios2-tdep.c \ - obsd-nat.c \ - obsd-tdep.c \ - posix-hdep.c \ - ppc-fbsd-nat.c \ - ppc-fbsd-tdep.c \ - ppc-linux-nat.c \ - ppc-linux-tdep.c \ - ppc-nbsd-nat.c \ - ppc-nbsd-tdep.c \ - ppc-obsd-nat.c \ - ppc-obsd-tdep.c \ - ppc-ravenscar-thread.c \ - ppc-sysv-tdep.c \ - ppc64-tdep.c \ - procfs.c \ - ravenscar-thread.c \ - remote-sim.c \ - riscv-fbsd-nat.c \ - riscv-fbsd-tdep.c \ - riscv-linux-nat.c \ - riscv-linux-tdep.c \ - riscv-tdep.c \ - rl78-tdep.c \ - rs6000-lynx178-tdep.c \ - rs6000-nat.c \ - rs6000-tdep.c \ - rx-tdep.c \ - s390-linux-nat.c \ - s390-linux-tdep.c \ - s390-tdep.c \ - score-tdep.c \ - ser-go32.c \ - ser-mingw.c \ - ser-pipe.c \ - ser-tcp.c \ - ser-uds.c \ - sh-nbsd-nat.c \ - sh-nbsd-tdep.c \ - sh-tdep.c \ - sol2-tdep.c \ - solib-aix.c \ - solib-svr4.c \ - sparc-linux-nat.c \ - sparc-linux-tdep.c \ - sparc-nat.c \ - sparc-nbsd-nat.c \ - sparc-nbsd-tdep.c \ - sparc-obsd-tdep.c \ - sparc-ravenscar-thread.c \ - sparc-sol2-nat.c \ - sparc-sol2-tdep.c \ - sparc-tdep.c \ - sparc64-fbsd-nat.c \ - sparc64-fbsd-tdep.c \ - sparc64-linux-nat.c \ - sparc64-linux-tdep.c \ - sparc64-nat.c \ - sparc64-nbsd-nat.c \ - sparc64-nbsd-tdep.c \ - sparc64-obsd-nat.c \ - sparc64-obsd-tdep.c \ - sparc64-sol2-tdep.c \ - sparc64-tdep.c \ - tilegx-linux-nat.c \ - tilegx-linux-tdep.c \ - tilegx-tdep.c \ - v850-tdep.c \ - vax-bsd-nat.c \ - vax-nbsd-tdep.c \ - vax-tdep.c \ - windows-nat.c \ - windows-tdep.c \ - x86-nat.c \ - x86-tdep.c \ - xcoffread.c \ - xstormy16-tdep.c \ - xtensa-config.c \ - xtensa-linux-nat.c \ - xtensa-linux-tdep.c \ - xtensa-tdep.c \ - xtensa-xtregs.c - -# Some files need explicit build rules (due to -Werror problems) or due -# to sub-directory fun 'n' games. - -# ada-exp.c can appear in srcdir, for releases; or in ., for -# development builds. -ADA_EXP_C = `if test -f ada-exp.c; then echo ada-exp.c; else echo $(srcdir)/ada-exp.c; fi` - -ada-exp.o: ada-exp.c - $(COMPILE) $(ADA_EXP_C) - $(POSTCOMPILE) - -# Message files. Based on code in gcc/Makefile.in. - -# Rules for generating translated message descriptions. Disabled by -# autoconf if the tools are not available. - -.PHONY: all-po install-po uninstall-po clean-po update-po $(PACKAGE).pot - -all-po: $(CATALOGS) - -# This notation should be acceptable to all Make implementations used -# by people who are interested in updating .po files. -update-po: $(CATALOGS:.gmo=.pox) - -# N.B. We do not attempt to copy these into $(srcdir). The snapshot -# script does that. -%.gmo: %.po - -test -d po || mkdir po - $(GMSGFMT) --statistics -o $@ $< - -# The new .po has to be gone over by hand, so we deposit it into -# build/po with a different extension. If build/po/$(PACKAGE).pot -# exists, use it (it was just created), else use the one in srcdir. -%.pox: %.po - -test -d po || mkdir po - $(MSGMERGE) $< `if test -f po/$(PACKAGE).pot; \ - then echo po/$(PACKAGE).pot; \ - else echo $(srcdir)/po/$(PACKAGE).pot; fi` -o $@ - -# This rule has to look for .gmo modules in both srcdir and the cwd, -# and has to check that we actually have a catalog for each language, -# in case they weren't built or included with the distribution. -install-po: - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(datadir) - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - echo $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$$dir || exit 1; \ - echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -uninstall-po: - cats="$(CATALOGS)"; for cat in $$cats; do \ - lang=`basename $$cat | sed 's/\.gmo$$//'`; \ - if [ -f $$cat ]; then :; \ - elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ - else continue; \ - fi; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - rm -f $(DESTDIR)$$dir/$(PACKAGE).mo; \ - done -# Delete po/*.gmo only if we are not building in the source directory. -clean-po: - -if [ ! -f Makefile.in ]; then rm -f po/*.gmo; fi - -# Rule for regenerating the message template (gdb.pot). Instead of -# forcing everyone to edit POTFILES.in, which proved impractical, this -# rule has no dependencies and always regenerates gdb.pot. This is -# relatively harmless since the .po files do not directly depend on -# it. The .pot file is left in the build directory. Since GDB's -# Makefile lacks a cannonical list of sources (missing xm, tm and nm -# files) force this rule. -$(PACKAGE).pot: po/$(PACKAGE).pot -po/$(PACKAGE).pot: force - -test -d po || mkdir po - sh -e $(srcdir)/po/gdbtext $(XGETTEXT) $(PACKAGE) . $(srcdir) - - -# -# YACC/LEX dependencies -# -# LANG-exp.c is generated in objdir from LANG-exp.y if it doesn't -# exist in srcdir, then compiled in objdir to LANG-exp.o. If we -# said LANG-exp.c rather than ./c-exp.c some makes would -# sometimes re-write it into $(srcdir)/c-exp.c. Remove bogus -# decls for malloc/realloc/free which conflict with everything else. -# Strictly speaking c-exp.c should therefore depend on -# Makefile.in, but that was a pretty big annoyance. - -%.c: %.y - $(ECHO_YACC) $(SHELL) $(YLWRAP) $< y.tab.c $@.tmp -- \ - $(YACC) $(YFLAGS) || (rm -f $@.tmp; false) - @sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e '/^#line.*y.tab.c/d' \ - -e 's/YY_NULL/YY_NULLPTR/g' \ - < $@.tmp > $@.new && \ - rm -f $@.tmp && \ - mv $@.new $@ -%.c: %.l - $(ECHO_LEX) $(FLEX) -t $< \ - | sed -e '/extern.*malloc/d' \ - -e '/extern.*realloc/d' \ - -e '/extern.*free/d' \ - -e '/include.*malloc.h/d' \ - -e 's/\([^x]\)malloc/\1xmalloc/g' \ - -e 's/\([^x]\)realloc/\1xrealloc/g' \ - -e 's/\([ \t;,(]\)free\([ \t]*[&(),]\)/\1xfree\2/g' \ - -e 's/\([ \t;,(]\)free$$/\1xfree/g' \ - -e 's/yy_flex_xrealloc/yyxrealloc/g' \ - > $@.new && \ - mv $@.new $@ - -.PRECIOUS: ada-lex.c - -# XML rules - -xml-builtin.c: stamp-xml; @true -stamp-xml: $(srcdir)/features/feature_to_c.sh Makefile $(XMLFILES) - $(SILENCE) rm -f xml-builtin.tmp - $(ECHO_GEN_XML_BUILTIN) AWK="$(AWK)" \ - $(SHELL) $(srcdir)/features/feature_to_c.sh \ - xml-builtin.tmp $(XMLFILES) - $(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin.c - $(SILENCE) echo stamp > stamp-xml - -.PRECIOUS: xml-builtin.c - -# -# GDBTK sub-directory -# - -all-gdbtk: insight$(EXEEXT) - -install-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \ - $(INSTALL_PROGRAM) insight$(EXEEXT) \ - $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY) ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION) ; \ - $(INSTALL_DATA) $(srcdir)/gdbtk/plugins/plugins.tcl \ - $(DESTDIR)$(libdir)/insight$(GDBTK_VERSION)/plugins.tcl ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/images2 ; \ - $(SHELL) $(srcdir)/../mkinstalldirs \ - $(DESTDIR)$(GDBTK_LIBRARY)/help \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/images \ - $(DESTDIR)$(GDBTK_LIBRARY)/help/trace ; \ - cd $(srcdir)/gdbtk/library ; \ - for i in *.tcl *.itcl *.ith *.itb images/*.gif images2/*.gif images/icons.txt images2/icons.txt tclIndex help/*.html help/trace/*.html help/trace/index.toc help/images/*.gif help/images/*.png; \ - do \ - $(INSTALL_DATA) $$i $(DESTDIR)$(GDBTK_LIBRARY)/$$i ; \ - done ; - -uninstall-gdbtk: - transformed_name=`t='$(program_transform_name)'; \ - echo insight | sed -e $$t` ; \ - if test "x$$transformed_name" = x; then \ - transformed_name=insight ; \ - else \ - true ; \ - fi ; \ - rm -f $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT) ; \ - rm -rf $(DESTDIR)$(GDBTK_LIBRARY) - -clean-gdbtk: - rm -f insight$(EXEEXT) - -# Removing the old gdb first works better if it is running, at least on SunOS. -insight$(EXEEXT): gdbtk-main.o libgdb.a $(CDEPS) $(TDEPLIBS) - rm -f insight$(EXEEXT) - $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \ - -o insight$(EXEEXT) gdbtk-main.o libgdb.a \ - $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES) - -gdbres.o: $(srcdir)/gdbtk/gdb.rc $(srcdir)/gdbtk/gdbtool.ico - $(WINDRES) --include $(srcdir)/gdbtk $(srcdir)/gdbtk/gdb.rc gdbres.o - -all_gdbtk_cflags = $(IDE_CFLAGS) $(ITCL_CFLAGS) \ - $(ITK_CFLAGS) $(TCL_CFLAGS) $(TK_CFLAGS) $(X11_CFLAGS) \ - $(GDBTK_CFLAGS) \ - -DGDBTK_LIBRARY=\"$(GDBTK_LIBRARY)\" \ - -DSRC_DIR=\"$(GDBTK_SRC_DIR)\" - -# -# Dependency tracking. -# - -ifeq ($(DEPMODE),depmode=gcc3) -# Note that we put the dependencies into a .Tpo file, then move them -# into place if the compile succeeds. We need this because gcc does -# not atomically write the dependency output file. -override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \ - -MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo -override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \ - $(@D)/$(DEPDIR)/$(basename $(@F)).Po -else -override COMPILE.pre = source='$<' object='$@' libtool=no \ - DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \ - $(CXX) -x c++ $(CXX_DIALECT) -# depcomp handles atomicity for us, so we don't need a postcompile -# step. -override POSTCOMPILE = -endif - -# A list of all the objects we might care about in this build, for -# dependency tracking. -all_object_files = gdb.o $(LIBGDB_OBS) gdbtk-main.o \ - test-cp-name-parser.o - -# All the .deps files to include. -all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\ - $(dir $(dep))/$(DEPDIR)/$(notdir $(dep))) - -# Ensure that generated files are created early. Use order-only -# dependencies if available. They require GNU make 3.80 or newer, -# and the .VARIABLES variable was introduced at the same time. -ifdef .VARIABLES -$(all_object_files): | $(generated_files) -else -$(all_object_files) : $(generated_files) -endif - -# Dependencies. --include $(all_deps_files) - -# Disable implicit make rules. -include $(srcdir)/disable-implicit-rules.mk - -### end of the gdb Makefile.in. diff --git a/gdbplus/gdb-9.2/gdb/gdb_dep.c b/gdbplus/gdb-9.2/gdb/gdb_dep.c index 80ab75d..8881d9a 100644 --- a/gdbplus/gdb-9.2/gdb/gdb_dep.c +++ b/gdbplus/gdb-9.2/gdb/gdb_dep.c @@ -53,6 +53,26 @@ void ca_switch_to_thread(struct thread_info *info) switch_to_thread (info->ptid); } +struct type *ca_type(struct symbol *sym) +{ + return SYMBOL_TYPE(sym); +} + +const char *ca_name(struct type *type) +{ + return TYPE_NAME(type); +} + +enum type_code ca_code(struct type *type) +{ + return TYPE_CODE (type); +} + +struct type *ca_field_type(struct type *type, int i) +{ + return TYPE_FIELD_TYPE(type, i); +} + int ca_num_fields(struct type *type) { return TYPE_NFIELDS (type); diff --git a/gdbplus/gdb-9.2/gdb/heapcmd.c b/gdbplus/gdb-9.2/gdb/heapcmd.c index 56f35b5..2ea4364 100644 --- a/gdbplus/gdb-9.2/gdb/heapcmd.c +++ b/gdbplus/gdb-9.2/gdb/heapcmd.c @@ -279,7 +279,10 @@ switch_heap_command(const char *arg, int from_tty) auto it = gCoreAnalyzerHeaps.find(arg); if (it != gCoreAnalyzerHeaps.end()) { CA_PRINT("switch to heap %s\n", arg); - CA_HEAP = it->second; + if (CA_HEAP != it->second) { + CA_HEAP = it->second; + CA_HEAP->init_heap(); + } } else { auto supported_heaps = get_supported_heaps(); CA_PRINT("Please provide the heap manager name, currently supported heap managers: %s.\n", supported_heaps.c_str()); diff --git a/src/heap.cpp b/src/heap.cpp index fef1102..42ec1a2 100644 --- a/src/heap.cpp +++ b/src/heap.cpp @@ -31,7 +31,7 @@ static std::vector gHeapRegistrationFuncs = { register_pt_malloc_2_27, register_pt_malloc_2_31, register_pt_malloc_2_35, - //register_tc_malloc, + register_tc_malloc, #endif }; diff --git a/src/heap_tcmalloc.cpp b/src/heap_tcmalloc.cpp index 27f3b83..82c2bcc 100644 --- a/src/heap_tcmalloc.cpp +++ b/src/heap_tcmalloc.cpp @@ -8,9 +8,8 @@ * platforms */ -#include "heap_tcmalloc.h" #include "segment.h" - +#include "heap_tcmalloc.h" #define CA_DEBUG 0 #if CA_DEBUG @@ -35,9 +34,9 @@ struct span_stats { /* * Globals */ -static int tc_version_major = 2; +//static int tc_version_major = 2; static int tc_version_minor = 0; -static int tc_version_patch = 0; +//static int tc_version_patch = 0; static bool g_initialized = false; @@ -55,7 +54,7 @@ static unsigned long g_cached_blocks_count; /* * Forward declaration */ -static void gdb_symbol_prelude(void); +static bool gdb_symbol_prelude(void); static int type_field_name2no(struct type *, const char *); static struct value *get_field_value(struct value *, const char *); static bool parse_config(void); @@ -139,6 +138,7 @@ init_heap(void) /* * Show result */ + #if CA_DEBUG CA_PRINT_DBG("%ld Spans are found\n", g_spans_count); for (i = 0; i < g_spans_count; i++) { struct ca_span *span = &g_spans[i]; @@ -161,6 +161,7 @@ init_heap(void) CA_PRINT_DBG("thread/central cached blocks %ld\n", g_cached_blocks_count); CA_PRINT_DBG("tcmalloc heap is initialized successfully\n"); + #endif g_initialized = true; return true; } @@ -549,7 +550,8 @@ CoreAnalyzerHeapInterface sTcMallHeapManager = { }; void register_tc_malloc() { - return register_heap_manager("tc", &sTcMallHeapManager, false); + bool my_heap = gdb_symbol_prelude(); + return register_heap_manager("tc", &sTcMallHeapManager, my_heap); } /****************************************************************************** * Helper Functions @@ -573,7 +575,7 @@ add_one_big_block(struct heap_block *blks, unsigned int num, } } -void +bool gdb_symbol_prelude(void) { struct symbol *pagemap3; @@ -586,9 +588,10 @@ gdb_symbol_prelude(void) if (pagemap3 == NULL) { CA_PRINT_DBG("Failed to lookup type \"TCMalloc_PageMap3<35>\"" "\n"); + return false; } - return; + return true; } struct ca_span * @@ -611,7 +614,6 @@ parse_config(void) struct symbol *sizemap_; struct value *sizemap; struct value *class_to_size; - int fieldno; LONGEST low_bound, high_bound, index; /* @@ -644,7 +646,7 @@ parse_config(void) class_to_size = get_field_value(sizemap, "class_to_size_"); if (!class_to_size) return false; - if (TYPE_CODE (value_type(class_to_size)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(class_to_size)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected \"class_to_size\" is not an array\n"); return false; } @@ -710,7 +712,7 @@ parse_pagemap_2_5(struct symbol *pageheap_, struct type *leaf_type, * tcmalloc::Static::pageheap_->pagemap_.root_->ptrs */ ptrs = get_field_value(root, "ptrs"); - if (TYPE_CODE (value_type(ptrs)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(ptrs)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected \"ptrs\" is not an array\n"); return false; } @@ -769,7 +771,7 @@ parse_pagemap_2_7(struct symbol *pageheap_, struct type *leaf_type, struct value *pageheap, *storage; struct value *pagemap; struct type *pageheap_type; - struct value *root_p, *root; + struct value *root; LONGEST low_bound, high_bound, index; const char *type_name; @@ -796,7 +798,7 @@ parse_pagemap_2_7(struct symbol *pageheap_, struct type *leaf_type, * } */ pagemap = get_field_value(pageheap, "pagemap_"); - type_name = TYPE_NAME(check_typedef(value_type(pagemap))); + type_name = ca_name(check_typedef(value_type(pagemap))); if (strcmp(type_name, "TCMalloc_PageMap2<35>") != 0) { CA_PRINT("Internal error: pageheap_.pagemap_ has unexpected type\n"); return false; @@ -816,7 +818,6 @@ parse_pagemap_2_7(struct symbol *pageheap_, struct type *leaf_type, */ for (index = low_bound; index <= high_bound; index++) { struct value *leaf_p, *leaf; - LONGEST low_bound2, high_bound2, index2; leaf_p = value_subscript(root, index); if (value_as_address(leaf_p) == 0) @@ -836,7 +837,6 @@ parse_pagemap(void) struct type *ph_type; struct type *leaf_type, *span_type; const char *type_name; - struct value *val; bool span_has_objects = false; /* @@ -864,9 +864,9 @@ parse_pagemap(void) "\"tcmalloc::Static::pageheap_\"\n"); return false; } - ph_type = SYMBOL_TYPE(pageheap_); - if (TYPE_NAME(ph_type) && - strcmp(TYPE_NAME(ph_type), "tcmalloc::Static::PageHeapStorage") == 0) { + ph_type = ca_type(pageheap_); + if (ca_name(ph_type) && + strcmp(ca_name(ph_type), "tcmalloc::Static::PageHeapStorage") == 0) { if (span_has_objects) tc_version_minor = 6; else @@ -924,7 +924,7 @@ parse_central_cache(void) return false; } central_cache = value_of_variable(central_cache_, 0); - if (TYPE_CODE (value_type(central_cache)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(central_cache)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected \"central_cache_\" is not an array\n"); return false; } @@ -982,7 +982,7 @@ parse_central_freelist(struct value *cfl) * tcmalloc::CentralFreeList::used_slots_ */ tc_slots = get_field_value(cfl, "tc_slots_"); - if (TYPE_CODE (value_type(tc_slots)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(tc_slots)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected \"tc_slots\" is not an array\n"); return false; } @@ -1268,8 +1268,8 @@ type_field_name2no(struct type *type, const char *field_name) type = check_typedef (type); - for (n = 0; n < TYPE_NFIELDS (type); n++) { - if (strcmp (field_name, TYPE_FIELD_NAME (type, n)) == 0) + for (n = 0; n < ca_num_fields(type); n++) { + if (strcmp (field_name, ca_field_name(type, n)) == 0) return n; } return -1; @@ -1298,7 +1298,7 @@ parse_leaf(struct value *leaf, struct type *span_type) * leaf->values */ values = get_field_value(leaf, "values"); - if (TYPE_CODE (value_type(values)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(values)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected: \"values\" is not an array\n"); return false; } @@ -1384,8 +1384,8 @@ parse_span(struct value *span) * } */ m = get_field_value(span, "has_span_iter"); - for (n = 0; n < TYPE_NFIELDS (span_type); n++) { - if (TYPE_CODE(TYPE_FIELD_TYPE(span_type, n)) == TYPE_CODE_UNION) { + for (n = 0; n < ca_num_fields(span_type); n++) { + if (ca_code(ca_field_type(span_type, n)) == TYPE_CODE_UNION) { struct value *v = value_field(span, n); m = get_field_value(v, "objects"); my_span->objects = value_as_address(m); @@ -1443,7 +1443,7 @@ parse_thread_cache(void) thread_heaps = value_ind(thread_heaps_p); lists = get_field_value(thread_heaps, "list_"); - if (TYPE_CODE (value_type(lists)) != TYPE_CODE_ARRAY) { + if (ca_code(value_type(lists)) != TYPE_CODE_ARRAY) { CA_PRINT("Unexpected \"list_\" is not an array\n"); return false; } diff --git a/src/x_dep.h b/src/x_dep.h index bf1f2d0..095e3e4 100644 --- a/src/x_dep.h +++ b/src/x_dep.h @@ -30,6 +30,10 @@ extern bool update_memory_segments_and_heaps(void); extern bool inferior_memory_read (address_t addr, void* buffer, size_t sz); extern void ca_switch_to_thread(struct thread_info *info); +extern struct type *ca_type(struct symbol *sym); +extern enum type_code ca_code(struct type *type); +extern const char *ca_name(struct type *type); +extern struct type *ca_field_type(struct type *type, int i); extern int ca_num_fields(struct type *type); extern const char *ca_field_name(struct type *type, int i); extern bool get_gv_value(const char *varname, char *buf, size_t bufsz); From 371cbb9c6ff9eb2b6e59bf137f6edf7e511564b1 Mon Sep 17 00:00:00 2001 From: Michael Yan Date: Mon, 30 May 2022 09:46:58 -0400 Subject: [PATCH 2/3] fine-tune tcmalloc detection --- src/heap_tcmalloc.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/heap_tcmalloc.cpp b/src/heap_tcmalloc.cpp index 82c2bcc..3a3fc76 100644 --- a/src/heap_tcmalloc.cpp +++ b/src/heap_tcmalloc.cpp @@ -578,15 +578,17 @@ add_one_big_block(struct heap_block *blks, unsigned int num, bool gdb_symbol_prelude(void) { + struct symbol *pagemap2; struct symbol *pagemap3; /* * template - * class TCMalloc_PageMap3 + * class TCMalloc_PageMap2, TCMalloc_PageMap3 */ + pagemap2 = lookup_symbol("TCMalloc_PageMap2<35>", 0, VAR_DOMAIN, 0).symbol; pagemap3 = lookup_symbol("TCMalloc_PageMap3<35>", 0, VAR_DOMAIN, 0).symbol; - if (pagemap3 == NULL) { - CA_PRINT_DBG("Failed to lookup type \"TCMalloc_PageMap3<35>\"" + if (pagemap2 == NULL && pagemap3 == NULL) { + CA_PRINT_DBG("Failed to lookup type \"TCMalloc_PageMap2<35>\" and \"TCMalloc_PageMap3<35>\"" "\n"); return false; } From 3843734cd2692b0760e3114b0d8d232452b26c77 Mon Sep 17 00:00:00 2001 From: Michael Yan Date: Mon, 30 May 2022 18:58:39 -0400 Subject: [PATCH 3/3] add script to build gperftools/libtcmalloc --- .devcontainer/Dockerfile | 2 +- build_tcmalloc.sh | 51 ++++++++++++++++++++++++++++++++++++++++ test/makefile | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100755 build_tcmalloc.sh diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 641918b..69591f6 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -12,4 +12,4 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt install -y wget \ && apt install -y python-dev \ && apt install -y python3-dev \ - && apt install -y libgoogle-perftools-dev \ + && apt install -y dh-autoreconf \ diff --git a/build_tcmalloc.sh b/build_tcmalloc.sh new file mode 100755 index 0000000..834d135 --- /dev/null +++ b/build_tcmalloc.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +# ============================================================================= +# FILENAME : build_tcmalloc.sh +# AUTHOR : Michael Yan +# CREATION : 2022-05-30 +# Script to build gperftools/libtcmalloc with specified version. +# +# This script will the do the following steps +# 1. Create working directory +# 2. clone the tcmalloc source +# 3. checkout the desired release version +# 4. configure, build and install +# ============================================================================= +set -e + +if [ "$#" -ne 1 ] +then + echo "Usage: $0 " + echo " For example, \"$0 2.7\"" + echo " Please refer to https://github.com/gperftools/gperftools/releases" + exit 1 +fi + +PROJECT_FOLDER=$(pwd) +release_tag=$1 +echo "Current project folder is $PROJECT_FOLDER" +build_folder=$PROJECT_FOLDER/build +mkdir -p $build_folder +cd $build_folder +scr_dir="gperftools" +if [ ! -d $scr_dir ] +then + echo "cloning gperftools ..." + git clone https://github.com/gperftools/gperftools.git +fi +cd $scr_dir + +echo "checkout $release_tag" +branch_name=gperftools-$release_tag +if [ -n "$(git branch --list ${branch_name})" ] +then + echo "Branch name $branch_name already exists." +else + git checkout tags/$branch_name -b $branch_name +fi + +echo "building..." +./autogen.sh +./configure +make clean && make -j 4 && sudo make install diff --git a/test/makefile b/test/makefile index 79d73b7..f6ebe30 100644 --- a/test/makefile +++ b/test/makefile @@ -30,7 +30,7 @@ mallocTest_tcmalloc: mallocTest_tcmalloc.o $(CXX) $(COMP_OPT) -o $@ $^ $(LIBS) -ltcmalloc check-tcmalloc: mallocTest_tcmalloc - $(GDB) mallocTest_tcmalloc -q -ex 'switch_heap tc' -x verify.py + export LD_LIBRARY_PATH=/usr/local/lib; $(GDB) mallocTest_tcmalloc -q -x verify.py clean: rm *.o ${TARGETS}