[RFC] Replicate src dir in build dir

Message ID 86a81djoln.fsf@gmail.com
State New, archived
Headers

Commit Message

Yao Qi Sept. 29, 2017, 7:23 p.m. UTC
  Pedro Alves <palves@redhat.com> writes:

> Meeting in the middle, using separate variables for arch and OS
> objects would allow getting rid of the need for spelling out
> gdb_target_obs twice per line, like:
>
>  case "${targ}" in
>  aarch64*-*-*)
>          cpu_obs="aarch64-tdep.o aarch64-insn.o";;
>  arm*-*-*)
>          cpu_obs="arm.o arm-get-next-pcs.o arm-tdep.o";;
>  esac
>
>  case "${targ}" in
>  *-*-freebsd*)
>          os_obs="fbsd-tdep.o solib-svr4.o";;
>  *-*-netbsd*)
>          os_obs="nbsd-tdep.o solib-svr4.o";;
>  *-*-openbsd*)
>          os_obs="obsd-tdep.o solib-svr4.o";;
>  esac
>  
>  gdb_target_obs="${cpu_obs} ${os_obs}"

Sorry for the delayed response, still in travel.  How about the patch
below?  This patch applied on top of my "Replicate src dir in build dir" patch.
  

Comments

Pedro Alves Oct. 3, 2017, 8:02 p.m. UTC | #1
On 09/29/2017 08:23 PM, Yao Qi wrote:

> 
> I tested this patch by build gdb for each different target triplets
> respectively,
> 
> aarch64-elf aarch64-rtems aarch64-freebsd aarch64-linux alpha-elf
> alpha-linux alpha-netbsd alpha-openbsd arm-elf arm-wince-pe arm-linux
> arm-netbsd arm-symbianelf avr cris-elf frv-elf h8300-elf i386-elf
> i386-darwin i386-dicos i386-freebsd i386-netbsdelf i386-openbsd
> i386-nto i386-solaris i386-linux i386-gnu i386-cygwin i386-mingw32
> i386-go32 ia64-linux-gnu ia64-vms lm32-elf m32c-elf m32r-elf m32r-linux
> m68hc11-elf m68k-elf m68k-linux m68k-netbsd m68k-openbsd m88k-openbsd
> mep-elf microblaze-xilinx-elf microblaze-linux-gnu mips-elf moxie-elf
> ms1-elf nios2-elf nios2-linux-gnu hppa-elf hppa-linux hppa-netbsd
> hppa-openbsd powerpc-eabi powerpc-freebsd powerpc-netbsd powerpc-openbsd
> powerpc-linux powerpc-lynx178 rl78-elf rx-elf s390-linux-gnu score-elf
> sh-elf sh-linux sh-openbsd sh64-elf sh64-linux sh64-openbsd sparc64-linux
> sparc-linux sparc-freebsd sparc64-freebsd sparc-netbsd sparc64-netbsd
> sparc-openbsd sparc64-openbsd spu-elf tic6x-elf tic6x-uclinux v850-elf
> vax-netbsd vax-openbsd x86_64-linux-gnu x86_64-darwin x86_64-dicos
> x86_64-elf x86_64-freebsd x86_64-mingw32 x86_64-netbsd x86_64-openbsd
> x86_64-rtems xstormy16-elf xtensa-elf xtensa-linux

OOC, this wasn't with gdb/gdb_buildall.sh, was it?

> +
> +case "${targ}" in
> +*-*-freebsd* | *-*-kfreebsd*-gnu)
> +	os_obs="fbsd-tdep.o solib-svr4.o";;
> +*-*-netbsd* | *-*-knetbsd*-gnu)
> +	os_obs="nbsd-tdep.o solib-svr4.o";;
> +*-*-openbsd*)
> +	os_obs="obsd-tdep.o solib-svr4.o";;

I'm surprised that there's no case for GNU/Linux
here, with at least linux-tdep.c and solib-svr4.o,
off hand.  Maybe glibc-tdep.o too.

There could be a case here for mingw/cygwin ports,
containing windows-tdep.o.

And case for darwin ports with solib-darwin.o.

But none of that are blockers.  I'm totally fine with
incremental progress.  We can always improve on top.

> +esac
> +
>  # map target info into gdb names.

I think IBWN to add a comment before each of the
arch / os sections, so that it's really obvious
what the different sections are about to new readers.
This "map target info ..." preexisting comment just above
might use an update too.

But generally, I'm happy with this.  Thanks much for doing it.

Thanks,
Pedro Alves
  
Kamil Rytarowski Oct. 3, 2017, 8:16 p.m. UTC | #2
On 03.10.2017 22:02, Pedro Alves wrote:
> On 09/29/2017 08:23 PM, Yao Qi wrote:
>> +
>> +case "${targ}" in
>> +*-*-freebsd* | *-*-kfreebsd*-gnu)
>> +	os_obs="fbsd-tdep.o solib-svr4.o";;
>> +*-*-netbsd* | *-*-knetbsd*-gnu)
>> +	os_obs="nbsd-tdep.o solib-svr4.o";;
>> +*-*-openbsd*)
>> +	os_obs="obsd-tdep.o solib-svr4.o";;

There does not exist any GNU/kNetBSD distribution and nobody is doing
it. Please drop it.
  
Pedro Alves Oct. 3, 2017, 10:04 p.m. UTC | #3
On 10/03/2017 09:16 PM, Kamil Rytarowski wrote:
> On 03.10.2017 22:02, Pedro Alves wrote:
>> On 09/29/2017 08:23 PM, Yao Qi wrote:
>>> +
>>> +case "${targ}" in
>>> +*-*-freebsd* | *-*-kfreebsd*-gnu)
>>> +	os_obs="fbsd-tdep.o solib-svr4.o";;
>>> +*-*-netbsd* | *-*-knetbsd*-gnu)
>>> +	os_obs="nbsd-tdep.o solib-svr4.o";;
>>> +*-*-openbsd*)
>>> +	os_obs="obsd-tdep.o solib-svr4.o";;
> 
> There does not exist any GNU/kNetBSD distribution and nobody is doing
> it. Please drop it.

Well, "does not exist" is a bit misleading, since there's
https://www.debian.org/ports/netbsd/ .  (I had no idea about it,
but google found it...)

However, that page does say:

  This porting effort has long been abandoned. It has had no updates since october 2002.
  The informations in this page are only for historical purposes. 

So it really sounds like we could zap it.  Ideally that should be a
separate commit, with a gdb/NEWS entry change, and we'd drop
it everywhere it's mentioned, not just configure.tgt.

"git grep knetbsd" finds hits in bfd and ld too, btw.

GCC dropped support last year, BTW:

  https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01370.html

which is another nail in the coffin...

Thanks,
Pedro Alves
  
Kamil Rytarowski Oct. 4, 2017, 9:49 a.m. UTC | #4
On 04.10.2017 00:04, Pedro Alves wrote:
> On 10/03/2017 09:16 PM, Kamil Rytarowski wrote:
>> On 03.10.2017 22:02, Pedro Alves wrote:
>>> On 09/29/2017 08:23 PM, Yao Qi wrote:
>>>> +
>>>> +case "${targ}" in
>>>> +*-*-freebsd* | *-*-kfreebsd*-gnu)
>>>> +	os_obs="fbsd-tdep.o solib-svr4.o";;
>>>> +*-*-netbsd* | *-*-knetbsd*-gnu)
>>>> +	os_obs="nbsd-tdep.o solib-svr4.o";;
>>>> +*-*-openbsd*)
>>>> +	os_obs="obsd-tdep.o solib-svr4.o";;
>>
>> There does not exist any GNU/kNetBSD distribution and nobody is doing
>> it. Please drop it.
> 
> Well, "does not exist" is a bit misleading, since there's
> https://www.debian.org/ports/netbsd/ .  (I had no idea about it,
> but google found it...)
> 

It was never finished and quickly abandoned. There was never a
functional GNU/kNetBSD distribution and nobody from the NetBSD community
aims for one.

There were other projects like reuse Gentoo portage on NetBSD, but this
does not replace the base distribution, just host the packaging tool on top.

> However, that page does say:
> 
>   This porting effort has long been abandoned. It has had no updates since october 2002.
>   The informations in this page are only for historical purposes. 
> 
> So it really sounds like we could zap it.  Ideally that should be a
> separate commit, with a gdb/NEWS entry change, and we'd drop
> it everywhere it's mentioned, not just configure.tgt.
> 
> "git grep knetbsd" finds hits in bfd and ld too, btw.
> 
> GCC dropped support last year, BTW:
> 
>   https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01370.html
> 
> which is another nail in the coffin...
> 

Right, I prompted to drop it in GCC and asked on a NetBSD mailing-list
whether someone is interested in such project - without volunteers.

> Thanks,
> Pedro Alves
>
  
Pedro Alves Oct. 4, 2017, 11:41 a.m. UTC | #5
On 10/03/2017 09:02 PM, Pedro Alves wrote:
> On 09/29/2017 08:23 PM, Yao Qi wrote:
> 
>> > 
>> > I tested this patch by build gdb for each different target triplets
>> > respectively,
>> > 
>> > aarch64-elf aarch64-rtems aarch64-freebsd aarch64-linux alpha-elf
>> > alpha-linux alpha-netbsd alpha-openbsd arm-elf arm-wince-pe arm-linux
>> > arm-netbsd arm-symbianelf avr cris-elf frv-elf h8300-elf i386-elf
>> > i386-darwin i386-dicos i386-freebsd i386-netbsdelf i386-openbsd
>> > i386-nto i386-solaris i386-linux i386-gnu i386-cygwin i386-mingw32
>> > i386-go32 ia64-linux-gnu ia64-vms lm32-elf m32c-elf m32r-elf m32r-linux
>> > m68hc11-elf m68k-elf m68k-linux m68k-netbsd m68k-openbsd m88k-openbsd
>> > mep-elf microblaze-xilinx-elf microblaze-linux-gnu mips-elf moxie-elf
>> > ms1-elf nios2-elf nios2-linux-gnu hppa-elf hppa-linux hppa-netbsd
>> > hppa-openbsd powerpc-eabi powerpc-freebsd powerpc-netbsd powerpc-openbsd
>> > powerpc-linux powerpc-lynx178 rl78-elf rx-elf s390-linux-gnu score-elf
>> > sh-elf sh-linux sh-openbsd sh64-elf sh64-linux sh64-openbsd sparc64-linux
>> > sparc-linux sparc-freebsd sparc64-freebsd sparc-netbsd sparc64-netbsd
>> > sparc-openbsd sparc64-openbsd spu-elf tic6x-elf tic6x-uclinux v850-elf
>> > vax-netbsd vax-openbsd x86_64-linux-gnu x86_64-darwin x86_64-dicos
>> > x86_64-elf x86_64-freebsd x86_64-mingw32 x86_64-netbsd x86_64-openbsd
>> > x86_64-rtems xstormy16-elf xtensa-elf xtensa-linux
> OOC, this wasn't with gdb/gdb_buildall.sh, was it?
> 

BTW, I was thinking how you don't really need to build gdb to test this.

All you need is to make sure that gdb_target_obs is the same list of
objects before and after the patch.  So you could drop this script
in gdb/ , and call it for each for the triplets above, before and
after the patch, and diff the output.

~~~
$ cat test-configure.tgt
set -e

targ=$1

if [ $targ == "" ]; then
   echo "no target specified"
   exit 1
fi

source ./configure.tgt
echo "target: $targ"
objs=$(echo $gdb_target_obs | sort -u)
echo "gdb_target_obs: $objs"
~~~

$ ./test-configure.tgt i686-unknown-linux-gnu
target: i686-unknown-linux-gnu
gdb_target_obs: i386-tdep.o i386.o i386-linux-tdep.o glibc-tdep.o i387-tdep.o solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o

That's going to be way faster...

Might be worth it to add something like this to the tree.

Thanks,
Pedro Alves
  
Yao Qi Oct. 6, 2017, 9:29 a.m. UTC | #6
Pedro Alves <palves@redhat.com> writes:

> So it really sounds like we could zap it.  Ideally that should be a
> separate commit, with a gdb/NEWS entry change, and we'd drop
> it everywhere it's mentioned, not just configure.tgt.
>
> "git grep knetbsd" finds hits in bfd and ld too, btw.

I agree.  It should be a separate commit or commits to drop it.
  

Patch

diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 40c44b7..659afd3 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -36,23 +36,78 @@  case $targ in
     ;;
 esac
 
+i386_tobjs="i386-tdep.o i386.o i387-tdep.o"
+amd64_tobjs="amd64-tdep.o arch/amd64.o"
+
+case "${targ}" in
+aarch64*-*-*)
+	cpu_obs="aarch64-tdep.o aarch64-insn.o";;
+
+alpha*-*-*)
+	# Target: Alpha
+	cpu_obs="alpha-tdep.o"
+	;;
+
+arc*-*-*)
+	# Target: Unidentified ARC target
+	cpu_obs="arc-tdep.o"
+	;;
+
+arm*-*-*)
+	cpu_obs="arm.o arm-get-next-pcs.o arm-tdep.o";;
+
+hppa*-*-*)
+	# Target: HP PA-RISC
+	cpu_obs="hppa-tdep.o"
+	;;
+
+i[34567]86-*-*)
+	cpu_obs="${i386_tobjs}"
+	if test "x$enable_64_bit_bfd" = "xyes"; then
+	   cpu_obs="${amd64_tobjs} ${cpu_obs}"
+	fi
+	;;
+
+ia64*-*-*)
+	# Target: Intel IA-64
+	cpu_obs="ia64-tdep.o"
+	;;
+
+x86_64-*-*)
+	cpu_obs="${i386_tobjs} ${amd64_tobjs}";;
+
+xtensa*)
+	# Target: Tensilica Xtensa processors
+	cpu_obs="xtensa-tdep.o xtensa-config.o solib-svr4.o"
+	;;
+
+esac
+
+case "${targ}" in
+*-*-freebsd* | *-*-kfreebsd*-gnu)
+	os_obs="fbsd-tdep.o solib-svr4.o";;
+*-*-netbsd* | *-*-knetbsd*-gnu)
+	os_obs="nbsd-tdep.o solib-svr4.o";;
+*-*-openbsd*)
+	os_obs="obsd-tdep.o solib-svr4.o";;
+esac
+
 # map target info into gdb names.
 
 case "${targ}" in
 aarch64*-*-elf | aarch64*-*-rtems*)
 	# Target: AArch64 embedded system
-	gdb_target_obs="aarch64-tdep.o aarch64-newlib-tdep.o aarch64-insn.o"
+	gdb_target_obs="aarch64-newlib-tdep.o"
 	;;
 
 aarch64*-*-freebsd*)
 	# Target: FreeBSD/aarch64
-	gdb_target_obs="aarch64-tdep.o aarch64-fbsd-tdep.o aarch64-insn.o \
-			fbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="aarch64-fbsd-tdep.o"
 	;;
 
 aarch64*-*-linux*)
 	# Target: AArch64 linux
-	gdb_target_obs="aarch64-tdep.o aarch64-linux-tdep.o aarch64-insn.o \
+	gdb_target_obs="aarch64-linux-tdep.o \
 			arm.o arm-linux.o arm-get-next-pcs.o arm-tdep.o \
 			arm-linux-tdep.o \
 			glibc-tdep.o linux-tdep.o solib-svr4.o \
@@ -62,23 +117,18 @@  aarch64*-*-linux*)
 
 alpha*-*-linux*)
 	# Target: Little-endian Alpha running Linux
-	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-linux-tdep.o \
+	gdb_target_obs="alpha-mdebug-tdep.o alpha-linux-tdep.o \
 			linux-tdep.o solib-svr4.o"
 	;;
 alpha*-*-netbsd* | alpha*-*-knetbsd*-gnu)
 	# Target: NetBSD/alpha
-	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-bsd-tdep.o \
-			alpha-nbsd-tdep.o nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
+			alpha-nbsd-tdep.o"
 	;;
 alpha*-*-openbsd*)
 	# Target: OpenBSD/alpha
-	gdb_target_obs="alpha-tdep.o alpha-mdebug-tdep.o alpha-bsd-tdep.o \
-			alpha-nbsd-tdep.o alpha-obsd-tdep.o nbsd-tdep.o \
-			obsd-tdep.o solib-svr4.o"
-	;;
-alpha*-*-*)
-	# Target: Alpha
-	gdb_target_obs="alpha-tdep.o"
+	gdb_target_obs="alpha-mdebug-tdep.o alpha-bsd-tdep.o \
+			alpha-nbsd-tdep.o alpha-obsd-tdep.o nbsd-tdep.o"
 	;;
 
 am33_2.0*-*-linux*)
@@ -89,44 +139,34 @@  am33_2.0*-*-linux*)
 
 arc*-*-elf32)
 	# Target: baremetal ARC elf32 (newlib) target
-	gdb_target_obs="arc-newlib-tdep.o arc-tdep.o"
-	;;
-
-arc*-*-*)
-	# Target: Unidentified ARC target
-	gdb_target_obs="arc-tdep.o"
+	gdb_target_obs="arc-newlib-tdep.o"
 	;;
 
 arm*-wince-pe | arm*-*-mingw32ce*)
 	# Target: ARM based machine running Windows CE (win32)
-	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o \
-			arm-wince-tdep.o windows-tdep.o"
+	gdb_target_obs="arm-wince-tdep.o windows-tdep.o"
 	build_gdbserver=yes
 	;;
 arm*-*-linux*)
 	# Target: ARM based machine running GNU/Linux
-	gdb_target_obs="arm.o arm-linux.o arm-get-next-pcs.o arm-tdep.o \
-                        arm-linux-tdep.o glibc-tdep.o \
+	gdb_target_obs="arm-linux.o arm-linux-tdep.o glibc-tdep.o \
 			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
 	build_gdbserver=yes
 	;;
 arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
 	# Target: NetBSD/arm
-	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-nbsd-tdep.o \
-			solib-svr4.o"
+	gdb_target_obs="arm-nbsd-tdep.o"
 	;;
 arm*-*-openbsd*)
 	# Target: OpenBSD/arm
-	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-bsd-tdep.o \
-			arm-obsd-tdep.o obsd-tdep.o solib-svr4.o"
+	gdb_target_obs="arm-bsd-tdep.o arm-obsd-tdep.o"
 	;;
 arm*-*-symbianelf*)
 	# Target: SymbianOS/arm
-	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-symbian-tdep.o"
+	gdb_target_obs="arm-symbian-tdep.o"
 	;;
 arm*-*-*)
 	# Target: ARM embedded system
-	gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o"
 	gdb_sim=../sim/arm/libsim.a
 	;;
 
@@ -172,113 +212,94 @@  h8300-*-*)
 
 hppa*-*-linux*)
 	# Target: HP PA-RISC running Linux
-	gdb_target_obs="hppa-tdep.o hppa-linux-tdep.o glibc-tdep.o \
+	gdb_target_obs="hppa-linux-tdep.o glibc-tdep.o \
 			linux-tdep.o solib-svr4.o symfile-mem.o"
 	;;
 hppa*-*-netbsd*)
 	# Target: NetBSD/hppa
-	gdb_target_obs="hppa-tdep.o hppa-bsd-tdep.o hppa-nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="hppa-bsd-tdep.o hppa-nbsd-tdep.o solib-svr4.o"
 	;;
 hppa*-*-openbsd*)
 	# Target: OpenBSD/hppa
-	gdb_target_obs="hppa-tdep.o hppa-bsd-tdep.o hppa-obsd-tdep.o solib-svr4.o"
-	;;
-hppa*-*-*)
-	# Target: HP PA-RISC
-	gdb_target_obs="hppa-tdep.o"
+	gdb_target_obs="hppa-bsd-tdep.o hppa-obsd-tdep.o solib-svr4.o"
 	;;
 
 i[34567]86-*-darwin*)
 	# Target: Darwin/i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o \
-			i386-darwin-tdep.o solib-darwin.o"
+	gdb_target_obs="i386-darwin-tdep.o solib-darwin.o"
 	if test "x$enable_64_bit_bfd" = "xyes"; then
 	    # Target: GNU/Linux x86-64
-	    gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-darwin-tdep.o ${gdb_target_obs}"
+	    gdb_target_obs="amd64-darwin-tdep.o ${gdb_target_obs}"
 	fi
 	;;
 i[34567]86-*-dicos*)
 	# Target: DICOS/i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o dicos-tdep.o i386-dicos-tdep.o"
+	gdb_target_obs="dicos-tdep.o i386-dicos-tdep.o"
 	;;
 i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
 	# Target: FreeBSD/i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
-			i386-fbsd-tdep.o fbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="i386-bsd-tdep.o i386-fbsd-tdep.o "
 	;;
 i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
 	# Target: NetBSD/i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
-			i386-nbsd-tdep.o nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="i386-bsd-tdep.o i386-nbsd-tdep.o "
 	;;
 i[34567]86-*-openbsd*)
 	# Target: OpenBSD/i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-bsd-tdep.o \
-			i386-obsd-tdep.o obsd-tdep.o bsd-uthread.o \
-			solib-svr4.o"
+	gdb_target_obs="i386-bsd-tdep.o i386-obsd-tdep.o bsd-uthread.o"
 	;;
 i[34567]86-*-nto*)
 	# Target: Intel 386 running qnx6.
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o solib-svr4.o \
+	gdb_target_obs="solib-svr4.o \
 			i386-nto-tdep.o nto-tdep.o"
 	build_gdbserver=yes
 	;;
 i[34567]86-*-solaris2* | x86_64-*-solaris2*)
 	# Target: Solaris x86_64
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o amd64-tdep.o arch/amd64.o \
+	gdb_target_obs="${i386_tobjs} ${amd64_tobjs} \
 			 amd64-sol2-tdep.o i386-sol2-tdep.o sol2-tdep.o \
 			 solib-svr4.o"
 	;;
 i[34567]86-*-linux*)
 	# Target: Intel 386 running GNU/Linux
-	gdb_target_obs="i386-tdep.o i386.o i386-linux-tdep.o \
-			glibc-tdep.o i387-tdep.o \
+	gdb_target_obs="i386-linux-tdep.o \
+			glibc-tdep.o \
 			solib-svr4.o symfile-mem.o \
 			linux-tdep.o linux-record.o"
 	if test "x$enable_64_bit_bfd" = "xyes"; then
 	    # Target: GNU/Linux x86-64
-	    gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-linux-tdep.o ${gdb_target_obs}"
+	    gdb_target_obs="amd64-linux-tdep.o ${gdb_target_obs}"
 	fi
 	build_gdbserver=yes
 	;;
 i[34567]86-*-gnu*)
 	# Target: Intel 386 running the GNU Hurd
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-gnu-tdep.o solib-svr4.o"
+	gdb_target_obs="i386-gnu-tdep.o solib-svr4.o"
 	;;
 i[34567]86-*-cygwin*)
 	# Target: Intel 386 running win32
-	gdb_target_obs="i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
-			windows-tdep.o"
+	gdb_target_obs="i386-cygwin-tdep.o windows-tdep.o"
 	build_gdbserver=yes
 	;;
 i[34567]86-*-mingw32*)
 	# Target: Intel 386 running win32
-	gdb_target_obs="i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
-			windows-tdep.o"
+	gdb_target_obs="i386-cygwin-tdep.o windows-tdep.o"
 	build_gdbserver=yes
 	;;
 i[34567]86-*-go32* | i[34567]86-*-msdosdjgpp*)
 	# Target: i386 running DJGPP/go32.
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o i386-go32-tdep.o"
-	;;
-i[34567]86-*-*)
-	# Target: i386
-	gdb_target_obs="i386-tdep.o i386.o i387-tdep.o"
+	gdb_target_obs="i386-go32-tdep.o"
 	;;
 
 ia64-*-linux*)
 	# Target: Intel IA-64 running GNU/Linux
-	gdb_target_obs="ia64-tdep.o ia64-linux-tdep.o linux-tdep.o \
+	gdb_target_obs="ia64-linux-tdep.o linux-tdep.o \
 			solib-svr4.o symfile-mem.o"
 	build_gdbserver=yes
 	;;
 ia64-*-*vms*)
 	# Target: Intel IA-64 running OpenVMS
-	gdb_target_obs="ia64-tdep.o ia64-vms-tdep.o"
-	;;
-ia64*-*-*)
-	# Target: Intel IA-64
-	gdb_target_obs="ia64-tdep.o"
+	gdb_target_obs="ia64-vms-tdep.o"
 	;;
 
 iq2000-*-*)
@@ -332,11 +353,11 @@  m68*-*-linux*)
 	;;
 m68*-*-netbsd* | m68*-*-knetbsd*-gnu)
 	# Target: NetBSD/m68k
-	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o solib-svr4.o"
+	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o"
 	;;
 m68*-*-openbsd*)
 	# Target: OpenBSD/m68k
-	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o solib-svr4.o"
+	gdb_target_obs="m68k-tdep.o m68k-bsd-tdep.o"
 	;;
 
 m88*-*-openbsd*)
@@ -371,17 +392,17 @@  mips*-*-linux*)
 	;;
 mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
 	# Target: MIPS running NetBSD
-	gdb_target_obs="mips-tdep.o mips-nbsd-tdep.o solib-svr4.o nbsd-tdep.o"
+	gdb_target_obs="mips-tdep.o mips-nbsd-tdep.o"
 	gdb_sim=../sim/mips/libsim.a
 	;;
 mips*-*-freebsd*)
 	# Target: MIPS running FreeBSD
-	gdb_target_obs="mips-tdep.o mips-fbsd-tdep.o solib-svr4.o fbsd-tdep.o"
+	gdb_target_obs="mips-tdep.o mips-fbsd-tdep.o"
 	gdb_sim=../sim/mips/libsim.a
 	;;
 mips64*-*-openbsd*)
 	# Target: OpenBSD/mips64
-	gdb_target_obs="mips-tdep.o mips64-obsd-tdep.o obsd-tdep.o solib-svr4.o"
+	gdb_target_obs="mips-tdep.o mips64-obsd-tdep.o"
 	;;
 mips*-sde*-elf*)
 	# Target: MIPS SDE
@@ -434,21 +455,19 @@  nios2*-*-*)
 powerpc*-*-freebsd*)
 	# Target: FreeBSD/powerpc
 	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc64-tdep.o \
-		        ppc-fbsd-tdep.o fbsd-tdep.o solib-svr4.o \
+		        ppc-fbsd-tdep.o \
 			ravenscar-thread.o ppc-ravenscar-thread.o"
 	;;
 
 powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
 	# Target: NetBSD/powerpc
 	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-nbsd-tdep.o \
-			solib-svr4.o \
 			ravenscar-thread.o ppc-ravenscar-thread.o"
 	gdb_sim=../sim/ppc/libsim.a
 	;;
 powerpc-*-openbsd*)
 	# Target: OpenBSD/powerpc
 	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc-obsd-tdep.o \
-			solib-svr4.o \
 			ravenscar-thread.o ppc-ravenscar-thread.o"
 	;;
 powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
@@ -516,12 +535,12 @@  sh*-*-linux*)
 	;;
 sh*-*-netbsdelf* | sh*-*-knetbsd*-gnu)
 	# Target: NetBSD/sh
-	gdb_target_obs="sh-tdep.o sh-nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="sh-tdep.o sh-nbsd-tdep.o"
 	gdb_sim=../sim/sh/libsim.a
 	;;
 sh*-*-openbsd*)
 	# Target: OpenBSD/sh
-	gdb_target_obs="sh-tdep.o sh64-tdep.o sh-nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="sh-tdep.o sh64-tdep.o sh-nbsd-tdep.o"
 	;;
 sh64-*-elf*)
 	# Target: Renesas/Super-H 64 bit with simulator
@@ -558,32 +577,30 @@  sparc64-*-linux*)
 sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
 	# Target: FreeBSD/sparc64
 	gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64-fbsd-tdep.o \
-			fbsd-tdep.o solib-svr4.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
 	# Target: NetBSD/sparc
-	gdb_target_obs="sparc-tdep.o sparc-nbsd-tdep.o nbsd-tdep.o \
-			solib-svr4.o \
+	gdb_target_obs="sparc-tdep.o sparc-nbsd-tdep.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 sparc64-*-netbsd* | sparc64-*-knetbsd*-gnu)
 	# Target: NetBSD/sparc64
 	gdb_target_obs="sparc64-tdep.o sparc64-nbsd-tdep.o sparc-tdep.o \
-			sparc-nbsd-tdep.o nbsd-tdep.o solib-svr4.o \
+			sparc-nbsd-tdep.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 sparc-*-openbsd*)
 	# Target: OpenBSD/sparc
 	gdb_target_obs="sparc-tdep.o sparc-nbsd-tdep.o sparc-obsd-tdep.o \
-			nbsd-tdep.o obsd-tdep.o bsd-uthread.o solib-svr4.o \
+			nbsd-tdep.o bsd-uthread.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 sparc64-*-openbsd*)
 	# Target: OpenBSD/sparc64
 	gdb_target_obs="sparc64-tdep.o sparc64-nbsd-tdep.o sparc64-obsd-tdep.o \
 			sparc-tdep.o sparc-nbsd-tdep.o sparc-obsd-tdep.o \
-			nbsd-tdep.o obsd-tdep.o bsd-uthread.o solib-svr4.o \
+			nbsd-tdep.o bsd-uthread.o \
 			ravenscar-thread.o sparc-ravenscar-thread.o"
 	;;
 sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
@@ -660,67 +677,61 @@  vax-*-*)
 
 x86_64-*-darwin*)
 	# Target: Darwin/x86-64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o i386-tdep.o i386.o i387-tdep.o \
+	gdb_target_obs="${i386_tobjs} \
 			i386-darwin-tdep.o amd64-darwin-tdep.o \
                         solib-darwin.o"
 	;;
 
 x86_64-*-dicos*)
 	# Target: DICOS/x86-64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o i386-tdep.o i386.o i387-tdep.o \
+	gdb_target_obs="${i386_tobjs} \
 			dicos-tdep.o i386-dicos-tdep.o amd64-dicos-tdep.o"
 	;;
 x86_64-*-elf*)
-	gdb_target_obs="amd64-tdep.o arch/amd64.o i386-tdep.o i386.o i387-tdep.o"
+	gdb_target_obs="${i386_tobjs}"
 	;;
 x86_64-*-linux*)
 	# Target: GNU/Linux x86-64
-	gdb_target_obs="amd64-tdep.o amd64-linux-tdep.o arch/amd64.o i386-tdep.o \
-			i387-tdep.o i386.o i386-linux-tdep.o glibc-tdep.o \
+	gdb_target_obs="amd64-linux-tdep.o ${i386_tobjs}  \
+			i386-linux-tdep.o glibc-tdep.o \
 			solib-svr4.o symfile-mem.o linux-tdep.o linux-record.o"
 	build_gdbserver=yes
 	;;
 x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
 	# Target: FreeBSD/amd64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-fbsd-tdep.o i386-tdep.o \
-			i386.o i387-tdep.o i386-bsd-tdep.o i386-fbsd-tdep.o \
-			fbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="amd64-fbsd-tdep.o ${i386_tobjs} \
+			i386-bsd-tdep.o i386-fbsd-tdep.o"
 	;;
 x86_64-*-mingw* | x86_64-*-cygwin*)
         # Target: MingW/amd64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-windows-tdep.o \
-                        i386-tdep.o i386.o i386-cygwin-tdep.o i387-tdep.o \
+	gdb_target_obs="amd64-windows-tdep.o \
+                        ${i386_tobjs} i386-cygwin-tdep.o \
                         windows-tdep.o"
 	build_gdbserver=yes
         ;;
 x86_64-*-netbsd* | x86_64-*-knetbsd*-gnu)
 	# Target: NetBSD/amd64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-nbsd-tdep.o i386-tdep.o \
-			i386.o i387-tdep.o nbsd-tdep.o solib-svr4.o"
+	gdb_target_obs="amd64-nbsd-tdep.o ${i386_tobjs}"
 	;;
 x86_64-*-openbsd*)
 	# Target: OpenBSD/amd64
-	gdb_target_obs="amd64-tdep.o arch/amd64.o amd64-obsd-tdep.o i386-tdep.o \
-			i387-tdep.o i386-bsd-tdep.o i386-obsd-tdep.o \
-			i386.o obsd-tdep.o bsd-uthread.o solib-svr4.o"
+	gdb_target_obs="amd64-obsd-tdep.o ${i386_tobjs} \
+			i386-bsd-tdep.o i386-obsd-tdep.o \
+			bsd-uthread.o"
 	;;
 x86_64-*-rtems*)
-	gdb_target_obs="amd64-tdep.o arch/amd64.o i386-tdep.o i386.o i387-tdep.o \
-			i386-bsd-tdep.o"
+	gdb_target_obs="${amd64_tobjs} ${i386_tobjs} i386-bsd-tdep.o"
 	;;
 xtensa*-*-linux*)	gdb_target=linux
 	# Target: GNU/Linux Xtensa
-	gdb_target_obs="xtensa-tdep.o xtensa-config.o xtensa-linux-tdep.o \
-			solib-svr4.o symfile-mem.o linux-tdep.o"
+	gdb_target_obs="xtensa-linux-tdep.o symfile-mem.o linux-tdep.o"
 	build_gdbserver=yes
 	;;
-xtensa*)
-	# Target: Tensilica Xtensa processors
-	gdb_target_obs="xtensa-tdep.o xtensa-config.o solib-svr4.o"
-	;;
 
 esac
 
+gdb_target_obs="${cpu_obs} ${os_obs} ${gdb_target_obs}"
+
 # map target onto default OS ABI
 
 case "${targ}" in