Re: [PATCH] Introduce "gdb/configure.nat" (and delete "gdb/config/*/*.mh" files)

John Baldwin
2017-05-02T14:57:04Z

On Monday, May 01, 2017 10:44:39 PM Simon Marchi wrote:
> > +++ b/gdb/configure.nat
> > @@ -0,0 +1,591 @@
> > +# Copyright (C) 2013-2017 Free Software Foundation, Inc.
> > +#
> > +# This file is part of GDB.
> > +#
> > +# This program is free software; you can redistribute it and/or modify
> > +# it under the terms of the GNU General Public License as published by
> > +# the Free Software Foundation; either version 3 of the License, or
> > +# (at your option) any later version.
> > +#
> > +# This program is distributed in the hope that it will be useful,
> > +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> > +# GNU General Public License for more details.
> > +#
> > +# You should have received a copy of the GNU General Public License
> > +# along with this program. If not, see
> > <http://www.gnu.org/licenses/>.
> > +
> > +# Variables defined here:
> > +#
> > +# NAT_FILE
> > +# NATDEPFILES
> > +# NAT_CDEPS
> > +# LOADLIBES
> > +# MH_CFLAGS
> > +# XM_CLIBS
> > +# NAT_GENERATED_FILES
> > +# HAVE_NATIVE_GCORE_HOST
> > +# NAT_EXTRA_FRAGS_FILE
>
> Could you document (if you know it) what each variable does?
>
> > +# - To avoid shell expansion of variables, declare them with single
> > +# quotes.
> > +#
> > +# - NAT_EXTRA_FRAGS_FILE should contain the full path of the file.
> > +
> > +case ${gdb_host_cpu} in
> > + aarch64)
> > + case ${gdb_host} in
> > + linux)
> > + # Host: AArch64 based machine running GNU/Linux
> > + NAT_FILE='config/nm-linux.h'
> > + NATDEPFILES='inf-ptrace.o fork-child.o aarch64-linux-nat.o
> > aarch32-linux-nat.o \
> > + proc-service.o linux-thread-db.o linux-nat.o linux-fork.o \
> > + linux-procfs.o linux-ptrace.o linux-osdata.o linux-waitpid.o \
> > + linux-personality.o linux-namespaces.o aarch64-linux-hw-point.o \
> > + aarch64-linux.o'
>
> IMO, the interest of having all of this in a single file is to be able
> to factor out common things. A lot of NATDEPFILES are repeated Would it
> be possible to have a switch on ${gdb_host} at the top level, and
> specify all the files specific to OSes but machine-agnostic? For
> example, fork-child.o and inf-ptrace.o probably appear in all the linux
> ports.

I had a similar thought about FreeBSD, FWIW. I wasn't sure if we wanted to
wait for a followup to do that so that for this commit you could directly
compare the old foo.mh file to a new clause in configure.nat as a way to
check for any typos in case there is a regression reported in the future.
You could perhaps include a second patch as a followup in a single series to
add a host clause, but I think the intermediate step as its own commit has
some merit.

--
John Baldwin