binutils-gdb/gdbserver/Makefile.in
Maciej W. Rozycki bf84f70666 gdbserver: Add RISC-V/Linux support
Implement RISC-V/Linux support for both RV64 and RV32 systems, including
XML target description handling based on features determined, GPR and
FPR regset support including dynamic sizing of the latter, and software
breakpoint handling.  Define two NT_FPREGSET regsets of a different size
matching the FPR sizes supported for generic `gdbserver' code to pick
from according to what the OS supplies.

Also handle a glibc bug where ELF_NFPREG is defined in terms of NFPREG,
however NFPREG is nowhere defined.

2020-02-19  Maciej W. Rozycki  <macro@wdc.com>
	    Andrew Burgess  <andrew.burgess@embecosm.com>

	gdb/
	* NEWS: Mention RISC-V GNU/Linux GDBserver support.

	gdbserver/
	* linux-riscv-low.cc: New file.
	* Makefile.in (SFILES): Add linux-riscv-low.cc, arch/riscv.c,
	and nat/riscv-linux-tdesc.c.
	* configure.srv <riscv*-*-linux*> (srv_tgtobj)
	(srv_linux_regsets, srv_linux_usrregs, srv_linux_thread_db):
	Define.
2020-02-19 01:24:37 +00:00

672 lines
19 KiB
Makefile

# 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 <http://www.gnu.org/licenses/>.
# Please keep lists in this file sorted alphabetically, with one item per line.
# See gdb/Makefile.in for guidelines on ordering files and directories.
prefix = @prefix@
exec_prefix = @exec_prefix@
host_alias = @host_noncanonical@
target_alias = @target_noncanonical@
program_transform_name = @program_transform_name@
bindir = @bindir@
libdir = @libdir@
tooldir = $(libdir)/$(target_alias)
datarootdir = @datarootdir@
datadir = @datadir@
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@
htmldir = $(prefix)/html
includedir = @includedir@
CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@
install_sh = @install_sh@
SHELL = @SHELL@
EXEEXT = @EXEEXT@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
RANLIB = @RANLIB@
CC = @CC@
CXX = @CXX@
CXX_DIALECT = @CXX_DIALECT@
AR = @AR@
AR_FLAGS = rc
STRIP = @STRIP@
# Dependency tracking information.
DEPMODE = @CCDEPMODE@
DEPDIR = @DEPDIR@
depcomp = $(SHELL) $(srcdir)/../depcomp
# Directory containing source files. Don't clean up the spacing,
# this exact string is matched for by the "configure" script.
srcdir = @srcdir@
abs_top_srcdir = @abs_top_srcdir@
abs_srcdir = @abs_srcdir@
VPATH = @srcdir@
include $(srcdir)/../gdb/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) $(CXX_DIALECT)
COMPILE.post = -c -o $@
COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
POSTCOMPILE = @true
# It is also possible that you will need to add -I/usr/include/sys to the
# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
# is where it should be according to Posix).
# Set this up with gcc if you have gnu ld and the loader will print out
# line numbers for undefinded refs.
#CC_LD = g++ -static
CC_LD = $(CXX) $(CXX_DIALECT)
# Where is the "include" directory? Traditionally ../include or ./include
INCLUDE_DIR = ${srcdir}/../include
INCLUDE_DEP = $$(INCLUDE_DIR)
LIBIBERTY_BUILDDIR = ../libiberty
LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
# Where is ust? These will be empty if ust was not available.
ustlibs = @ustlibs@
ustinc = @ustinc@
# gnulib
GNULIB_BUILDDIR = ../gnulib
LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
INCGNU = -I$(srcdir)/../gnulib/import -I$(GNULIB_BUILDDIR)/import
INCSUPPORT = -I$(srcdir)/.. -I..
# All the includes used for CFLAGS and for lint.
# -I. for config files.
# -I${srcdir} for our headers.
# -I$(srcdir)/../gdb/regformats for regdef.h.
#
# We do not include ../target or ../nat in here because headers
# in those directories should be included with the subdirectory.
# e.g.: "target/wait.h".
#
INCLUDE_CFLAGS = -I. -I${srcdir} \
-I$(srcdir)/../gdb/regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \
-I$(srcdir)/../gdb $(INCGNU) $(INCSUPPORT)
# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
# from the config/ directory.
GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
#PROFILE_CFLAGS = -pg
WARN_CFLAGS = @WARN_CFLAGS@
WERROR_CFLAGS = @WERROR_CFLAGS@
WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
| sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
# 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@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@
# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
# LDFLAGS is specifically reserved for setting from the command line
# when running make.
LDFLAGS = @LDFLAGS@
INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@
# All source files that go into linking GDB remote server.
SFILES = \
$(srcdir)/debug.cc \
$(srcdir)/dll.cc \
$(srcdir)/gdbreplay.cc \
$(srcdir)/hostio.cc \
$(srcdir)/hostio-errno.cc \
$(srcdir)/i387-fp.cc \
$(srcdir)/inferiors.cc \
$(srcdir)/linux-aarch64-low.cc \
$(srcdir)/linux-arm-low.cc \
$(srcdir)/linux-bfin-low.cc \
$(srcdir)/linux-cris-low.cc \
$(srcdir)/linux-crisv32-low.cc \
$(srcdir)/linux-ia64-low.cc \
$(srcdir)/linux-low.cc \
$(srcdir)/linux-m32r-low.cc \
$(srcdir)/linux-m68k-low.cc \
$(srcdir)/linux-mips-low.cc \
$(srcdir)/linux-nios2-low.cc \
$(srcdir)/linux-ppc-low.cc \
$(srcdir)/linux-riscv-low.cc \
$(srcdir)/linux-s390-low.cc \
$(srcdir)/linux-sh-low.cc \
$(srcdir)/linux-sparc-low.cc \
$(srcdir)/linux-tile-low.cc \
$(srcdir)/linux-x86-low.cc \
$(srcdir)/linux-xtensa-low.cc \
$(srcdir)/mem-break.cc \
$(srcdir)/proc-service.cc \
$(srcdir)/proc-service.list \
$(srcdir)/regcache.cc \
$(srcdir)/remote-utils.cc \
$(srcdir)/server.cc \
$(srcdir)/symbol.cc \
$(srcdir)/target.cc \
$(srcdir)/thread-db.cc \
$(srcdir)/utils.cc \
$(srcdir)/win32-arm-low.cc \
$(srcdir)/win32-i386-low.cc \
$(srcdir)/win32-low.cc \
$(srcdir)/wincecompat.cc \
$(srcdir)/x86-low.cc \
$(srcdir)/../gdb/alloc.c \
$(srcdir)/../gdb/arch/arm.c \
$(srcdir)/../gdb/arch/arm-get-next-pcs.c \
$(srcdir)/../gdb/arch/arm-linux.c \
$(srcdir)/../gdb/arch/ppc-linux-common.c \
$(srcdir)/../gdb/arch/riscv.c \
$(srcdir)/../gdbsupport/btrace-common.cc \
$(srcdir)/../gdbsupport/buffer.cc \
$(srcdir)/../gdbsupport/cleanups.cc \
$(srcdir)/../gdbsupport/common-debug.cc \
$(srcdir)/../gdbsupport/common-exceptions.cc \
$(srcdir)/../gdbsupport/common-inferior.cc \
$(srcdir)/../gdbsupport/common-regcache.cc \
$(srcdir)/../gdbsupport/common-utils.cc \
$(srcdir)/../gdbsupport/errors.cc \
$(srcdir)/../gdbsupport/environ.cc \
$(srcdir)/../gdbsupport/fileio.cc \
$(srcdir)/../gdbsupport/filestuff.cc \
$(srcdir)/../gdbsupport/job-control.cc \
$(srcdir)/../gdbsupport/gdb-dlfcn.cc \
$(srcdir)/../gdbsupport/gdb_tilde_expand.cc \
$(srcdir)/../gdbsupport/gdb_vecs.cc \
$(srcdir)/../gdbsupport/gdb_wait.cc \
$(srcdir)/../gdbsupport/netstuff.cc \
$(srcdir)/../gdbsupport/new-op.cc \
$(srcdir)/../gdbsupport/pathstuff.cc \
$(srcdir)/../gdbsupport/print-utils.cc \
$(srcdir)/../gdbsupport/ptid.cc \
$(srcdir)/../gdbsupport/rsp-low.cc \
$(srcdir)/../gdbsupport/safe-strerror.cc \
$(srcdir)/../gdbsupport/tdesc.cc \
$(srcdir)/../gdbsupport/xml-utils.cc \
$(srcdir)/../gdb/nat/aarch64-sve-linux-ptrace.c \
$(srcdir)/../gdb/nat/linux-btrace.c \
$(srcdir)/../gdb/nat/linux-namespaces.c \
$(srcdir)/../gdb/nat/linux-osdata.c \
$(srcdir)/../gdb/nat/linux-personality.c \
$(srcdir)/../gdb/nat/mips-linux-watch.c \
$(srcdir)/../gdb/nat/ppc-linux.c \
$(srcdir)/../gdb/nat/riscv-linux-tdesc.c \
$(srcdir)/../gdb/nat/fork-inferior.c \
$(srcdir)/../gdb/target/waitstatus.c
DEPFILES = @GDBSERVER_DEPFILES@
LIBOBJS = @LIBOBJS@
SOURCES = $(SFILES)
TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
OBS = \
alloc.o \
ax.o \
gdbsupport/agent.o \
gdbsupport/btrace-common.o \
gdbsupport/buffer.o \
gdbsupport/cleanups.o \
gdbsupport/common-debug.o \
gdbsupport/common-exceptions.o \
gdbsupport/common-inferior.o \
gdbsupport/job-control.o \
gdbsupport/common-regcache.o \
gdbsupport/common-utils.o \
gdbsupport/errors.o \
gdbsupport/environ.o \
gdbsupport/fileio.o \
gdbsupport/filestuff.o \
gdbsupport/format.o \
gdbsupport/gdb-dlfcn.o \
gdbsupport/gdb_tilde_expand.o \
gdbsupport/gdb_vecs.o \
gdbsupport/gdb_wait.o \
gdbsupport/netstuff.o \
gdbsupport/new-op.o \
gdbsupport/pathstuff.o \
gdbsupport/print-utils.o \
gdbsupport/ptid.o \
gdbsupport/rsp-low.o \
gdbsupport/safe-strerror.o \
gdbsupport/signals.o \
gdbsupport/signals-state-save-restore.o \
gdbsupport/tdesc.o \
gdbsupport/xml-utils.o \
debug.o \
dll.o \
event-loop.o \
hostio.o \
inferiors.o \
mem-break.o \
notif.o \
regcache.o \
remote-utils.o \
server.o \
symbol.o \
target.o \
tdesc.o \
tracepoint.o \
utils.o \
version.o \
target/waitstatus.o \
$(DEPFILES) \
$(LIBOBJS) \
$(XML_BUILTIN)
GDBREPLAY_OBS = \
gdbsupport/cleanups.o \
gdbsupport/common-exceptions.o \
gdbsupport/common-utils.o \
gdbsupport/rsp-low.o \
gdbsupport/errors.o \
gdbsupport/netstuff.o \
gdbsupport/print-utils.o \
gdbsupport/safe-strerror.o \
gdbreplay.o \
utils.o \
version.o
GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
XM_CLIBS = @LIBS@
CDEPS = $(srcdir)/proc-service.list
# XML files to compile in to gdbserver, if any.
XML_DIR = $(srcdir)/../gdb/features
XML_FILES = @srv_xmlfiles@
XML_BUILTIN = @srv_xmlbuiltin@
IPA_DEPFILES = @IPA_DEPFILES@
extra_libraries = @extra_libraries@
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)" \
"CXXFLAGS=$(CXXFLAGS)" \
"DLLTOOL=$(DLLTOOL)" \
"LDFLAGS=$(LDFLAGS)" \
"RANLIB=$(RANLIB)" \
"MAKEINFO=$(MAKEINFO)" \
"MAKEHTML=$(MAKEHTML)" \
"MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
"INSTALL=$(INSTALL)" \
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
"INSTALL_DATA=$(INSTALL_DATA)" \
"RUNTEST=$(RUNTEST)" \
"RUNTESTFLAGS=$(RUNTESTFLAGS)"
# All generated files which can be included by another file.
generated_files = config.h
all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
# 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:
n=`echo gdbserver | sed '$(program_transform_name)'`; \
if [ x$$n = x ]; then n=gdbserver; else true; fi; \
if [ x"$(IPA_DEPFILES)" != x ]; then \
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(libdir); \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \
fi; \
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir); \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
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
uninstall: force
n=`echo gdbserver | sed '$(program_transform_name)'`; \
if [ x$$n = x ]; then n=gdbserver; else true; fi; \
rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
installcheck:
check:
info dvi pdf:
install-info:
install-pdf:
html:
install-html:
clean-info:
gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY)
$(SILENCE) rm -f gdbserver$(EXEEXT)
$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-o gdbserver$(EXEEXT) $(OBS) $(LIBGNU) $(LIBIBERTY) \
$(GDBSERVER_LIBS) $(XM_CLIBS)
gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY)
$(SILENCE) rm -f gdbreplay$(EXEEXT)
$(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) $(LIBGNU) \
$(LIBIBERTY)
IPA_OBJS = \
alloc-ipa.o \
ax-ipa.o \
gdbsupport/common-utils-ipa.o \
gdbsupport/errors-ipa.o \
gdbsupport/format-ipa.o \
gdbsupport/print-utils-ipa.o \
gdbsupport/rsp-low-ipa.o \
gdbsupport/safe-strerror-ipa.o \
gdbsupport/tdesc-ipa.o \
regcache-ipa.o \
remote-utils-ipa.o \
tdesc-ipa.o \
tracepoint-ipa.o \
utils-ipa.o \
${IPA_DEPFILES}
IPA_LIB = libinproctrace.so
$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
$(SILENCE) rm -f $(IPA_LIB)
$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
-o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread
# Put the proper machine-specific files first, so M-. on a machine
# specific routine gets the one for the correct machine.
# The xyzzy stuff below deals with empty DEPFILES
TAGS: ${TAGFILES}
etags \
`for i in yzzy ${DEPFILES}; do \
if [ x$$i != xyzzy ]; then \
echo ${srcdir}/$$i | sed -e 's/\.o$$/\.cc/' \
-e 's,/\(arch\|nat\|target\)/,/../\1/,' \
-e 's,/\(gdbsupport\)/,/../../\1/,'; \
fi; \
done` \
${TAGFILES}
tags: TAGS
clean:
rm -f *.o ${ADD_FILES} *~
rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
rm -f $(IPA_LIB)
rm -f *-generated.cc
rm -f stamp-xml
rm -f $(DEPDIR)/*.Po
for i in $(CONFIG_SRC_SUBDIR); do \
rm -f $$i/*.o; \
rm -f $$i/$(DEPDIR)/*; \
done
maintainer-clean realclean distclean: clean
rm -f Makefile config.status config.h stamp-h config.log
rm -f Makefile
for i in $(CONFIG_SRC_SUBDIR); do \
rmdir $$i/$(DEPDIR); \
done
config.h: stamp-h ; @true
stamp-h: config.in config.status
$(SHELL) ./config.status config.h
Makefile: Makefile.in config.status
$(SHELL) ./config.status $@
config.status: configure configure.srv $(srcdir)/../bfd/development.sh
$(SHELL) ./config.status --recheck
# 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:
version-generated.cc: Makefile $(srcdir)/../gdb/version.in $(srcdir)/../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
$(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/../gdb \
$(host_alias) $(target_alias) $@
xml-builtin-generated.cc: stamp-xml; @true
stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES)
$(SILENCE) rm -f xml-builtin.tmp
$(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \
xml-builtin.tmp $(XML_FILES)
$(SILENCE) $(SHELL) $(srcdir)/../move-if-change xml-builtin.tmp xml-builtin-generated.cc
$(SILENCE) echo stamp > stamp-xml
.PRECIOUS: xml-builtin.cc
# 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 =
regdat_sh = $(srcdir)/../gdb/regformats/regdat.sh
UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
# Undo gnulib replacements for the IPA shared library build.
# The gnulib headers are still needed, but gnulib is not linked
# into the IPA lib so replacement apis don't work.
UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r
# Note, we only build the IPA if -fvisibility=hidden is supported in
# the first place.
IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
$(UNDO_GNULIB_CFLAGS) \
-fPIC -DIN_PROCESS_AGENT \
-fvisibility=hidden
IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
# Rules for special cases.
ax-ipa.o: ax.cc
$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
$(POSTCOMPILE)
ax.o: ax.cc
$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
$(POSTCOMPILE)
# Rules for objects that go in the in-process agent.
arch/%-ipa.o: ../gdb/arch/%.c
$(IPAGENT_COMPILE) -x c++ $<
$(POSTCOMPILE)
gdbsupport/%-ipa.o: ../gdbsupport/%.cc
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
%-ipa.o: %-generated.cc
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
%-ipa.o: %.cc
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
%-ipa.o: ../gdb/%.c
$(IPAGENT_COMPILE) -x c++ $<
$(POSTCOMPILE)
# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
# Therefore, this one needs to be before "%.o: %.cc" for it to be considered for
# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.cc.
#
# Later versions of GNU Make choose the rule with the shortest stem, so it would
# work in any order.
%-ipa.o: %-ipa.cc
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
# Rules for objects that go in the gdbserver binary.
arch/%.o: ../gdb/arch/%.c
$(COMPILE) -x c++ $<
$(POSTCOMPILE)
gdbsupport/%.o: ../gdbsupport/%.cc
$(COMPILE) $<
$(POSTCOMPILE)
%.o: %-generated.cc
$(COMPILE) $<
$(POSTCOMPILE)
%.o: %.cc
$(COMPILE) $<
$(POSTCOMPILE)
nat/%.o: ../gdb/nat/%.c
$(COMPILE) -x c++ $<
$(POSTCOMPILE)
target/%.o: ../gdb/target/%.c
$(COMPILE) -x c++ $<
$(POSTCOMPILE)
%.o: ../gdb/%.c
$(COMPILE) -x c++ $<
$(POSTCOMPILE)
# Rules for register format descriptions. Suffix destination files with
# -generated to identify and clean them easily.
%-generated.cc: ../gdb/regformats/%.dat $(regdat_sh)
$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
%-generated.cc: ../gdb/regformats/arm/%.dat $(regdat_sh)
$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
%-generated.cc: ../gdb/regformats/rs6000/%.dat $(regdat_sh)
$(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
#
# 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) $(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 = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
# 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
# All the .deps files to include.
all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
$(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
# Dependencies.
-include $(all_deps_files)
# Disable implicit make rules.
include $(srcdir)/../gdb/disable-implicit-rules.mk
# Do not delete intermediate files (e.g. *-generated.cc).
.SECONDARY:
# This is the end of "Makefile.in".