Add common/ dir in build directories
Commit Message
In the build directory for gdb, there are directories for arch/, mi/, cli/,
guile/ etc. These all contain the .o files for the matching directories in
the source tree. However, all the .c files from common/ end up in the root
of the gdb build directory. This means that gdb/common/agent.c has to have
a special build rule in gdb so that it does not clash with gdb/agent.c
Gdbserver is similar - it has an arch/ directory, but not a common/ directory.
This patch simply adds a common/ directory in the build tree for both gdb
and gdbserver. I've used the existing mechanisms to add them.
I had to move around the rules in the gdbserver makefile, otherwise the build
gets confused.
Reordered file lists where appropriate.
The special agent.c rule is removed.
Original motivation for this patch is that eventually I want to add
common/tdesc.c, but this will clash with gdbserver/tdesc.c. This patch has
spun from the discussion in "[PATCH] Move arch/tdesc.h to common/common-tdesc.h".
Testing by building x86 and aarch64. Ran make-check on x86 build with target
boards unix and native-gdbserver.
Alan.
gdb/ChangeLog:
2018-02-07 Alan Hayward <alan.hayward@arm.com>
* Makefile.in: Add common directory in build.
* common/common.host: Add common reference.
* configure: Likewise.
* configure.ac: Likewise.
gdb/gdbserver/ChangeLog:
2018-02-07 Alan Hayward <alan.hayward@arm.com>
* Makefile.in: Add common directory in build.
* configure: Add common reference.
* configure.ac: Likewise.
gdb/Makefile.in | 60 +++++++++++++++++++++++++++---------------------------------
gdb/common/common.host | 2 +-
gdb/configure | 2 +-
gdb/configure.ac | 2 +-
gdb/gdbserver/Makefile.in | 98 +++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------
gdb/gdbserver/configure | 4 ++--
gdb/gdbserver/configure.ac | 4 ++--
7 files changed, 83 insertions(+), 89 deletions(-)
Comments
Alan Hayward <Alan.Hayward@arm.com> writes:
Hi Alan,
Thanks for doing this...
This change is about config/makefile, so we need to run configure/make
on various platforms, they are helpful to expose some issues, if any,
x86_64-linux native and cross,
aarch64-linux native and cross,
native i686-w64-mingw32 and x86_64-w64-mingw32 on linux,
cross with enable all targets,
> @@ -1531,35 +1531,35 @@ TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \
> TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)
>
> COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
> - btrace-common.o \
> - buffer.o \
> - cleanups.o \
> - common-agent.o \
> - common-debug.o \
> - common-exceptions.o \
> - job-control.o \
> - common-regcache.o \
> - common-utils.o \
> - environ.o \
> - errors.o \
> + common/btrace-common.o \
> + common/buffer.o \
> + common/cleanups.o \
> + common/agent.o \
> + common/common-debug.o \
> + common/common-exceptions.o \
> + common/job-control.o \
> + common/common-regcache.o \
> + common/common-utils.o \
> + common/environ.o \
> + common/errors.o \
> + common/fileio.o \
> + common/filestuff.o \
> + common/format.o \
> + common/gdb_tilde_expand.o \
> + common/gdb_vecs.o \
> + common/new-op.o \
> + common/print-utils.o \
> + common/ptid.o \
> + common/rsp-low.o \
> + common/run-time-clock.o \
> + common/signals.o \
> + common/signals-state-save-restore.o \
> + common/vec.o \
> + common/xml-utils.o \
> exec.o \
> - fileio.o \
> - filestuff.o \
> - format.o \
> - gdb_tilde_expand.o \
> - gdb_vecs.o \
> mi/mi-common.o \
> - new-op.o \
> - print-utils.o \
> - ptid.o \
> - rsp-low.o \
> - run-time-clock.o \
> - signals.o \
> - signals-state-save-restore.o \
> - vec.o \
> version.o \
> xml-builtin.o \
> - xml-utils.o \
> $(patsubst %.c,%.o,$(COMMON_SFILES)) \
*.c files in COMMON_SFILES is replaced to *.o files here, so IMO, the
better way is to move common/*.c files in SFILES to COMMON_SFILES.
> $(SUBDIR_TARGET_OBS) \
> $(SUBDIR_GCC_COMPILE_OBS)
> @@ -1627,7 +1627,7 @@ $(CONFIG_DEP_SUBDIR):
> python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS)
>
> # Rules for compiling .c files in the various source subdirectories.
> -%.o: ${srcdir}/common/%.c
> +common/%.o: ${srcdir}/common/%.c
> $(COMPILE) $<
> $(POSTCOMPILE)
>
Do we still need this rule? We already had a generic one,
%.o: %.c | $(CONFIG_DEP_SUBDIR)
$(COMPILE) $<
$(POSTCOMPILE)
> diff --git a/gdb/common/common.host b/gdb/common/common.host
> index b7051d6eb7ab77dff989866a936a78b200e62d49..826088635937603c98f179184d4b97b41ccd760c 100644
> --- a/gdb/common/common.host
> +++ b/gdb/common/common.host
> @@ -30,7 +30,7 @@ case "${host}" in
> *-mingw*) common_host_obs=mingw-strerror.o
This should be updated too.
> ;;
> *)
> - common_host_obs=posix-strerror.o
> + common_host_obs=common/posix-strerror.o
> ;;
>
> @@ -537,10 +537,29 @@ ax.o: ax.c
> $(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
> $(POSTCOMPILE)
>
> +# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
> +# Therefore, these need to be before "%.o: %.c" for it to be considered for
> +# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
> +#
> +# Later versions of GNU Make choose the rule with the shortest stem, so it would
> +# work in any order.
> +
> +arch/%-ipa.o: ../arch/%.c
> + $(IPAGENT_COMPILE) $<
> + $(POSTCOMPILE)
> +
> +common/%-ipa.o: ../common/%.c
> + $(IPAGENT_COMPILE) $<
> + $(POSTCOMPILE)
> +
> arch/%.o: ../arch/%.c
> $(COMPILE) $<
> $(POSTCOMPILE)
> I had to move around the rules in the gdbserver makefile, otherwise the build
> gets confused.
I don't understand why do you move them? You mentioned this move in the
commit log, but I can't see the reason we must do the move. Can you
elaborate?
@@ -522,7 +522,7 @@ CONFIG_INSTALL = @CONFIG_INSTALL@
CONFIG_UNINSTALL = @CONFIG_UNINSTALL@
HAVE_NATIVE_GCORE_TARGET = @HAVE_NATIVE_GCORE_TARGET@
-CONFIG_SRC_SUBDIR = arch cli mi compile tui unittests guile python target
+CONFIG_SRC_SUBDIR = arch cli mi common compile tui unittests guile python target
CONFIG_DEP_SUBDIR = $(addsuffix /$(DEPDIR),$(CONFIG_SRC_SUBDIR))
# -I. for config files.
@@ -1531,35 +1531,35 @@ TAGFILES_NO_SRCDIR = $(SFILES) $(HFILES_NO_SRCDIR) $(ALLDEPFILES) \
TAGFILES_WITH_SRCDIR = $(HFILES_WITH_SRCDIR)
COMMON_OBS = $(DEPFILES) $(CONFIG_OBS) $(YYOBJ) \
- btrace-common.o \
- buffer.o \
- cleanups.o \
- common-agent.o \
- common-debug.o \
- common-exceptions.o \
- job-control.o \
- common-regcache.o \
- common-utils.o \
- environ.o \
- errors.o \
+ common/btrace-common.o \
+ common/buffer.o \
+ common/cleanups.o \
+ common/agent.o \
+ common/common-debug.o \
+ common/common-exceptions.o \
+ common/job-control.o \
+ common/common-regcache.o \
+ common/common-utils.o \
+ common/environ.o \
+ common/errors.o \
+ common/fileio.o \
+ common/filestuff.o \
+ common/format.o \
+ common/gdb_tilde_expand.o \
+ common/gdb_vecs.o \
+ common/new-op.o \
+ common/print-utils.o \
+ common/ptid.o \
+ common/rsp-low.o \
+ common/run-time-clock.o \
+ common/signals.o \
+ common/signals-state-save-restore.o \
+ common/vec.o \
+ common/xml-utils.o \
exec.o \
- fileio.o \
- filestuff.o \
- format.o \
- gdb_tilde_expand.o \
- gdb_vecs.o \
mi/mi-common.o \
- new-op.o \
- print-utils.o \
- ptid.o \
- rsp-low.o \
- run-time-clock.o \
- signals.o \
- signals-state-save-restore.o \
- vec.o \
version.o \
xml-builtin.o \
- xml-utils.o \
$(patsubst %.c,%.o,$(COMMON_SFILES)) \
$(SUBDIR_TARGET_OBS) \
$(SUBDIR_GCC_COMPILE_OBS)
@@ -1627,7 +1627,7 @@ $(CONFIG_DEP_SUBDIR):
python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS)
# Rules for compiling .c files in the various source subdirectories.
-%.o: ${srcdir}/common/%.c
+common/%.o: ${srcdir}/common/%.c
$(COMPILE) $<
$(POSTCOMPILE)
@@ -1639,12 +1639,6 @@ python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS)
$(COMPILE) $<
$(POSTCOMPILE)
-# Specify an explicit rule for gdb/common/agent.c, to avoid a clash with the
-# object file generate by gdb/agent.c.
-common-agent.o: $(srcdir)/common/agent.c
- $(COMPILE) $(srcdir)/common/agent.c
- $(POSTCOMPILE)
-
installcheck:
# The check target can not use subdir_do, because subdir_do does not
@@ -30,7 +30,7 @@ case "${host}" in
*-mingw*) common_host_obs=mingw-strerror.o
;;
*)
- common_host_obs=posix-strerror.o
+ common_host_obs=common/posix-strerror.o
;;
esac
@@ -17661,7 +17661,7 @@ if $development; then
$as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
- CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) selftest.o selftest-arch.o"
+ CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) common/selftest.o selftest-arch.o"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) common/selftest.c selftest-arch.c"
fi
@@ -2299,7 +2299,7 @@ AC_DEFINE(GDB_DEFAULT_HOST_CHARSET, "UTF-8",
if $development; then
AC_DEFINE(GDB_SELF_TEST, 1,
[Define if self-testing features should be enabled])
- CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) selftest.o selftest-arch.o"
+ CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_UNITTESTS_OBS) common/selftest.o selftest-arch.o"
CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_UNITTESTS_SRCS) common/selftest.c selftest-arch.c"
fi
@@ -231,48 +231,48 @@ SOURCES = $(SFILES)
TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
OBS = \
- agent.o \
ax.o \
- btrace-common.o \
- buffer.o \
- cleanups.o \
- common-debug.o \
- common-exceptions.o \
- job-control.o \
- common-regcache.o \
- common-utils.o \
+ common/agent.o \
+ common/btrace-common.o \
+ common/buffer.o \
+ common/cleanups.o \
+ common/common-debug.o \
+ common/common-exceptions.o \
+ common/job-control.o \
+ common/common-regcache.o \
+ common/common-utils.o \
+ common/errors.o \
+ common/environ.o \
+ common/fileio.o \
+ common/filestuff.o \
+ common/format.o \
+ common/gdb_tilde_expand.o \
+ common/gdb_vecs.o \
+ common/new-op.o \
+ common/print-utils.o \
+ common/ptid.o \
+ common/rsp-low.o \
+ common/signals.o \
+ common/signals-state-save-restore.o \
+ common/vec.o \
+ common/xml-utils.o \
debug.o \
dll.o \
- errors.o \
- environ.o \
event-loop.o \
- fileio.o \
- filestuff.o \
- format.o \
- gdb_tilde_expand.o \
- gdb_vecs.o \
hostio.o \
inferiors.o \
mem-break.o \
- new-op.o \
notif.o \
- print-utils.o \
- ptid.o \
regcache.o \
remote-utils.o \
- rsp-low.o \
server.o \
- signals.o \
- signals-state-save-restore.o \
symbol.o \
target.o \
tdesc.o \
tracepoint.o \
utils.o \
- vec.o \
version.o \
waitstatus.o \
- xml-utils.o \
$(DEPFILES) \
$(LIBOBJS) \
$(XML_BUILTIN)
@@ -392,17 +392,17 @@ gdbreplay$(EXEEXT): $(GDBREPLAY_OBS) $(LIBGNU) $(LIBIBERTY)
IPA_OBJS = \
ax-ipa.o \
- common-utils-ipa.o \
- errors-ipa.o \
- format-ipa.o \
- print-utils-ipa.o \
+ common/common-utils-ipa.o \
+ common/errors-ipa.o \
+ common/format-ipa.o \
+ common/print-utils-ipa.o \
+ common/rsp-low-ipa.o \
+ common/vec-ipa.o \
regcache-ipa.o \
remote-utils-ipa.o \
- rsp-low-ipa.o \
tdesc-ipa.o \
tracepoint-ipa.o \
utils-ipa.o \
- vec-ipa.o \
${IPA_DEPFILES}
IPA_LIB = libinproctrace.so
@@ -537,10 +537,29 @@ ax.o: ax.c
$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
$(POSTCOMPILE)
+# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
+# Therefore, these need to be before "%.o: %.c" for it to be considered for
+# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
+#
+# Later versions of GNU Make choose the rule with the shortest stem, so it would
+# work in any order.
+
+arch/%-ipa.o: ../arch/%.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
+common/%-ipa.o: ../common/%.c
+ $(IPAGENT_COMPILE) $<
+ $(POSTCOMPILE)
+
arch/%.o: ../arch/%.c
$(COMPILE) $<
$(POSTCOMPILE)
+common/%.o: ../common/%.c
+ $(COMPILE) $<
+ $(POSTCOMPILE)
+
# Rules for objects that go in the in-process agent.
%-ipa.o: %-generated.c
@@ -551,25 +570,10 @@ arch/%.o: ../arch/%.c
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
-# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
-# Therefore, this one needs to be before "%.o: %.c" for it to be considered for
-# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
-#
-# Later versions of GNU Make choose the rule with the shortest stem, so it would
-# work in any order.
-
%-ipa.o: %-ipa.c
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)
-%-ipa.o: ../common/%.c
- $(IPAGENT_COMPILE) $<
- $(POSTCOMPILE)
-
-arch/%-ipa.o: ../arch/%.c
- $(IPAGENT_COMPILE) $<
- $(POSTCOMPILE)
-
# Rules for objects that go in the gdbserver binary.
%.o: %-generated.c
@@ -580,10 +584,6 @@ arch/%-ipa.o: ../arch/%.c
$(COMPILE) $<
$(POSTCOMPILE)
-%.o: ../common/%.c
- $(COMPILE) $<
- $(POSTCOMPILE)
-
%.o: ../nat/%.c
$(COMPILE) $<
$(POSTCOMPILE)
@@ -5815,7 +5815,7 @@ fi
if $development; then
- srv_selftest_objs="selftest.o"
+ srv_selftest_objs="common/selftest.o"
$as_echo "#define GDB_SELF_TEST 1" >>confdefs.h
@@ -5858,7 +5858,7 @@ ac_config_commands="$ac_config_commands depdir"
# Create sub-directories for objects and dependencies.
-CONFIG_SRC_SUBDIR="arch"
+CONFIG_SRC_SUBDIR="arch common"
ac_config_commands="$ac_config_commands gdbdepdir"
@@ -57,7 +57,7 @@ fi
GDB_AC_LIBMCHECK(${libmcheck_default})
if $development; then
- srv_selftest_objs="selftest.o"
+ srv_selftest_objs="common/selftest.o"
AC_DEFINE(GDB_SELF_TEST, 1,
[Define if self-testing features should be enabled])
fi
@@ -69,7 +69,7 @@ ACX_NONCANONICAL_HOST
ZW_CREATE_DEPDIR
# Create sub-directories for objects and dependencies.
-CONFIG_SRC_SUBDIR="arch"
+CONFIG_SRC_SUBDIR="arch common"
AC_SUBST(CONFIG_SRC_SUBDIR)
AC_CONFIG_COMMANDS([gdbdepdir],[