Add common/ dir in build directories

Message ID 59F17949-2E3B-445F-9599-2412B7F4AF72@arm.com
State New
Headers show
Series
  • Add common/ dir in build directories
Related show

Commit Message

Alan Hayward Feb. 7, 2018, 11:04 a.m.
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

Yao Qi Feb. 12, 2018, noon | #1
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?

-- 
Yao (齐尧)
Alan Hayward Feb. 13, 2018, 11:39 a.m. | #2
> On 12 Feb 2018, at 12:00, Yao Qi <qiyaoltc@gmail.com> wrote:

> 

> 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,


Tested the new patch with the above combinations.

Using x86_64-w64-mingw32-gcc (GCC) 4.8.2 on ubuntu 14.04,
I have a build failure against HEAD for mingw32:
unittests/scoped_fd-selftests.c fails because it cannot find mkstemp().
Not sure if this is a bug, or error in my setup.
Commenting out mkstemp code fixes my builds.


> 

>> @@ -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.


Done!


> 

>> @@ -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)

> 


We don’t. Good spot. Removed.



>> 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.

> 


Done. Not sure why I missed that. I do remember seeing it.

>> 		;;

>> *)

>> -		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?

> 


I had problems with compiling common/tdesc-ipa.c. 
...But that file does not exist yet.
Instead, I've simplified the change and now only add the common dir.


New version below.

Thanks for reviewing!


Alan.


gdb/ChangeLog:

2018-02-13  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-13  Alan Hayward  <alan.hayward@arm.com>

	* Makefile.in: Add common directory in build.
	* configure: Add common reference.
	* configure.ac: Likewise.

---
 gdb/Makefile.in            | 87 ++++++++++++++--------------------------------
 gdb/common/common.host     |  4 +--
 gdb/configure              |  2 +-
 gdb/configure.ac           |  2 +-
 gdb/gdbserver/Makefile.in  | 64 +++++++++++++++++-----------------
 gdb/gdbserver/configure    |  4 +--
 gdb/gdbserver/configure.ac |  4 +--
 7 files changed, 66 insertions(+), 101 deletions(-)


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],[
Yao Qi Feb. 16, 2018, 3:37 p.m. | #3
Alan Hayward <Alan.Hayward@arm.com> writes:

> Tested the new patch with the above combinations.

>

> Using x86_64-w64-mingw32-gcc (GCC) 4.8.2 on ubuntu 14.04,

> I have a build failure against HEAD for mingw32:

> unittests/scoped_fd-selftests.c fails because it cannot find mkstemp().

> Not sure if this is a bug, or error in my setup.

> Commenting out mkstemp code fixes my builds.

>


I reported it https://sourceware.org/ml/gdb-patches/2018-02/msg00186.html
If you see something wrong in the committed patches, better to reply to
the patch review email thread, so that you can remind patch author and
reviewers.

Patch is good me, some nits on changelog,

>

> gdb/ChangeLog:

>

> 2018-02-13  Alan Hayward  <alan.hayward@arm.com>

>

> 	* Makefile.in: Add common directory in build.


Better to document what do you change, like,

	* Makefile.in (COMMON_SFILES): Add common/*.c files.
        (SFILES): Remove common/*.c files.
        (COMMON_OBS): Remove some *.o files built from common/*.c
        files.
        Remove rules for common/*.c files.

> 	* common/common.host: Add common reference.

> 	* configure: Likewise.


configure is generated by autoconf, so we write

	* configure: Regenerate.

> 	* configure.ac: Likewise.

>

> gdb/gdbserver/ChangeLog:

>

> 2018-02-13  Alan Hayward  <alan.hayward@arm.com>

>

> 	* Makefile.in: Add common directory in build.

> 	* configure: Add common reference.

> 	* configure.ac: Likewise.


-- 
Yao (齐尧)
Alan Hayward Feb. 19, 2018, 9:40 a.m. | #4
> On 16 Feb 2018, at 15:37, Yao Qi <qiyaoltc@gmail.com> wrote:

> 

> Alan Hayward <Alan.Hayward@arm.com> writes:

> 

>> Tested the new patch with the above combinations.

>> 

>> Using x86_64-w64-mingw32-gcc (GCC) 4.8.2 on ubuntu 14.04,

>> I have a build failure against HEAD for mingw32:

>> unittests/scoped_fd-selftests.c fails because it cannot find mkstemp().

>> Not sure if this is a bug, or error in my setup.

>> Commenting out mkstemp code fixes my builds.

>> 

> 

> I reported it https://sourceware.org/ml/gdb-patches/2018-02/msg00186.html

> If you see something wrong in the committed patches, better to reply to

> the patch review email thread, so that you can remind patch author and

> reviewers.

> 

> Patch is good me, some nits on changelog,

> 


Thanks!
Pushed with changeling differences as suggested.

Alan.


>> 

>> gdb/ChangeLog:

>> 

>> 2018-02-13  Alan Hayward  <alan.hayward@arm.com>

>> 

>> 	* Makefile.in: Add common directory in build.

> 

> Better to document what do you change, like,

> 

> 	* Makefile.in (COMMON_SFILES): Add common/*.c files.

>        (SFILES): Remove common/*.c files.

>        (COMMON_OBS): Remove some *.o files built from common/*.c

>        files.

>        Remove rules for common/*.c files.

> 

>> 	* common/common.host: Add common reference.

>> 	* configure: Likewise.

> 

> configure is generated by autoconf, so we write

> 

> 	* configure: Regenerate.

> 

>> 	* configure.ac: Likewise.

>> 

>> gdb/gdbserver/ChangeLog:

>> 

>> 2018-02-13  Alan Hayward  <alan.hayward@arm.com>

>> 

>> 	* Makefile.in: Add common directory in build.

>> 	* configure: Add common reference.

>> 	* configure.ac: Likewise.

> 

> -- 

> Yao (齐尧)

Patch

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 0f87398fbd87690522c3e3113c8a0fa4b67489f4..a99e71466fcb2ea85b57ef2e66976f4c5de674c3 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -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
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
 		;;
 *)
-		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..805129f6e31cd105d5fc5e8268a51a2ef1158f1b 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
@@ -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)
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],[