diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 957654c9bd09b5aa7cbe65f163bf4341a292340b..d91d8e01c32a8487010d7d58dca2a8c28a588da4 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -524,7 +524,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.
@@ -937,6 +937,31 @@ COMMON_SFILES = \
 	cli-out.c \
 	coff-pe-read.c \
 	coffread.c \
+	common/agent.c \
+	common/btrace-common.c \
+	common/buffer.c \
+	common/cleanups.c \
+	common/common-debug.c \
+	common/common-exceptions.c \
+	common/common-regcache.c \
+	common/common-utils.c \
+	common/errors.c \
+	common/environ.c \
+	common/fileio.c \
+	common/filestuff.c \
+	common/format.c \
+	common/job-control.c \
+	common/gdb_tilde_expand.c \
+	common/gdb_vecs.c \
+	common/new-op.c \
+	common/print-utils.c \
+	common/ptid.c \
+	common/rsp-low.c \
+	common/run-time-clock.c \
+	common/signals.c \
+	common/signals-state-save-restore.c \
+	common/vec.c \
+	common/xml-utils.c \
 	complaints.c \
 	completer.c \
 	continuations.c \
@@ -1119,31 +1144,6 @@ SFILES = \
 	stub-termcap.c \
 	symfile-mem.c \
 	ui-file.h \
-	common/agent.c \
-	common/btrace-common.c \
-	common/buffer.c \
-	common/cleanups.c \
-	common/common-debug.c \
-	common/common-exceptions.c \
-	common/common-regcache.c \
-	common/common-utils.c \
-	common/errors.c \
-	common/environ.c \
-	common/fileio.c \
-	common/filestuff.c \
-	common/format.c \
-	common/job-control.c \
-	common/gdb_tilde_expand.c \
-	common/gdb_vecs.c \
-	common/new-op.c \
-	common/print-utils.c \
-	common/ptid.c \
-	common/rsp-low.c \
-	common/run-time-clock.c \
-	common/signals.c \
-	common/signals-state-save-restore.c \
-	common/vec.c \
-	common/xml-utils.c \
 	mi/mi-common.c \
 	$(SUBDIR_TARGET_SRCS) \
 	$(COMMON_SFILES) \
@@ -1533,35 +1533,10 @@ 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 \
 	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)
@@ -1629,10 +1604,6 @@ $(CONFIG_DEP_SUBDIR):
 python/%.o: INTERNAL_CFLAGS += $(PYTHON_CFLAGS)

 # Rules for compiling .c files in the various source subdirectories.
-%.o: ${srcdir}/common/%.c
-	$(COMPILE) $<
-	$(POSTCOMPILE)
-
 %.o: $(srcdir)/gdbtk/generic/%.c
 	$(COMPILE) $(all_gdbtk_cflags) $<
 	$(POSTCOMPILE)
@@ -1641,12 +1612,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
diff --git a/gdb/common/common.host b/gdb/common/common.host
index b7051d6eb7ab77dff989866a936a78b200e62d49..87f144c261ab3aaa78c0837af6ad745d08bfa110 100644
--- a/gdb/common/common.host
+++ b/gdb/common/common.host
@@ -27,10 +27,10 @@

 case "${host}" in

-*-mingw*)	common_host_obs=mingw-strerror.o
+*-mingw*)	common_host_obs=common/mingw-strerror.o
 		;;
 *)
-		common_host_obs=posix-strerror.o
+		common_host_obs=common/posix-strerror.o
 		;;

 esac
diff --git a/gdb/configure b/gdb/configure
index 81b35af521e2704e2aca14011362971a030c49fe..ab58187853337c632af046adb589f9c8a5b9e8a3 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -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

diff --git a/gdb/configure.ac b/gdb/configure.ac
index 125e5f30e65a7b046b5fab038bde3c5a2fe485c3..698fc7b83456f8c5a63ae0050dc8ec65069290f7 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -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

diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 3ce086d70f23df445b174c49c489ec8415d7614a..fcb6e1e817f521385de3986861c430c31a1b7eec 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -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
@@ -562,7 +562,7 @@ arch/%.o: ../arch/%.c
 	$(IPAGENT_COMPILE) $<
 	$(POSTCOMPILE)

-%-ipa.o: ../common/%.c
+common/%-ipa.o: ../common/%.c
 	$(IPAGENT_COMPILE) $<
 	$(POSTCOMPILE)

@@ -580,7 +580,7 @@ arch/%-ipa.o: ../arch/%.c
 	$(COMPILE) $<
 	$(POSTCOMPILE)

-%.o: ../common/%.c
+common/%.o: ../common/%.c
 	$(COMPILE) $<
 	$(POSTCOMPILE)

diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
index 340ca7a19e5c0bc24ee2fc42226762185295d5ef..ab09261946442f77c85e7fd8d5ecc090527d1d4c 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
@@ -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"
diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
index 6727959e61b656ddfc2101b830539fa18288ccb3..99801681ff47ee8dcd9ad2e5ae282dcd113c83e4 100644
--- a/gdb/gdbserver/configure.ac
+++ b/gdb/gdbserver/configure.ac
@@ -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],[
