[PATCH] Better make rules for IPA objects

Alan Hayward
2017-11-07T10:41:01Z

This patch strengthens the rule for compiling arch/ and common/ files
into IPA.

In the existing code, "foo-ipa.o" will try to match:
foo-generated.c
foo-ipa.c
gdbserver/foo.c
common/foo.c
arch/foo.c

If this potentially matched multiple files, then the first is matched.

This patch changes the IPA rules so that files in arch/ and common/ are
explicitly listed using the directory name.

A future patch could be added to remove the ambiguity from the first three
matches. I'm not planning on making that change.

This changed is required as part of moving aarch64 to use flexible target
descriptors.

Alan.

2017-11-07 Alan Hayward <alan.hayward@arm.com>

gdbserver:
* Makefile.in: Update arch and common rules.
* configure.srv: Explicitly mark arch/ and common/ files.

diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 8e73563b103f720ddd5e77607c3190a2959903f5..1bd4cf93cce192f060c362665fd5df9f4c323f24 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -563,11 +563,11 @@ arch/%.o: ../arch/%.c
$(IPAGENT_COMPILE) $<
$(POSTCOMPILE)

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

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

diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 515c6dc8b3e57574286149ebdca37da149218a35..82c3dc237c3fb6baeb2a72cd9ed66d8c7556d72a 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -133,7 +133,7 @@ case "${target}" in
srv_linux_thread_db=yes
srv_linux_btrace=yes
ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
- ipa_obj="${ipa_obj} i386-ipa.o"
+ ipa_obj="${ipa_obj} arch/i386-ipa.o"
;;
i[34567]86-*-lynxos*) srv_regobj=""
srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
@@ -383,7 +383,7 @@ case "${target}" in
srv_linux_thread_db=yes
srv_linux_btrace=yes
ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
- ipa_obj="${ipa_obj} amd64-ipa.o"
+ ipa_obj="${ipa_obj} arch/amd64-ipa.o"
;;
x86_64-*-mingw*) srv_regobj=""
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o”