public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: gdb-patches@sourceware.org
Subject: Re: [PATCH] gdb: only include mips and riscv targets if building with 64-bit bfd
Date: Mon, 13 Dec 2021 11:09:33 +0000	[thread overview]
Message-ID: <20211213110933.GA175541@redhat.com> (raw)
In-Reply-To: <20211209180826.1818792-1-aburgess@redhat.com>

Thank you everyone for all the feedback.

I've now pushed this patch.  As has been discussed on this thread, and
the thread Jim linked, if/when the situation changes, and either riscv
or mips can build with a 32-bit libbfd, then I'm obviously happy for
some/all of this patch to be reverted.

Thanks,
Andrew


* Andrew Burgess <aburgess@redhat.com> [2021-12-09 18:08:26 +0000]:

> While testing another patch I was trying to build different
> configurations of GDB, and, during one test build I ran into a
> problem, I configured with `--enable-targets=all
> --host=i686-w64-mingw32` and saw this error while linking GDB:
> 
>   .../i686-w64-mingw32/bin/ld: mips-tdep.o: in function `mips_gdbarch_init':
>   .../src/gdb/mips-tdep.c:8730: undefined reference to `disassembler_options_mips'
>   .../i686-w64-mingw32/bin/ld: riscv-tdep.o: in function `riscv_gdbarch_init':
>   .../src/gdb/riscv-tdep.c:3851: undefined reference to `disassembler_options_riscv'
> 
> So the `disassembler_options_mips` and `disassembler_options_riscv`
> symbols are missing.
> 
> This turns out to be because mips-dis.c and riscv-dis.c, in which
> these symbols are defined, are in the TARGET64_LIBOPCODES_CFILES list
> in opcodes/Makefile.am, these files are only built when we are
> building with a 64-bit bfd.
> 
> If we look further, into bfd/Makefile.am, we can see that all the
> files matching elf*-riscv.lo are in the BFD64_BACKENDS list, as are
> the elf*-mips.lo files, and (I know because I tried), the two
> disassemblers do, not surprisingly, depend on features supplied from
> libbfd.
> 
> So, though we can build most of GDB just fine for riscv and mips with
> a 32-bit bfd, if I understand correctly, the final GDB
> executable (assuming we could get it to link) would not understand
> these architectures at the bfd level, nor would there be any
> disassembler available.  This sounds like a pretty useless GDB to me.
> 
> So, in this commit, I move the riscv and mips targets into GDB's list
> of targets that require a 64-bit bfd.  After this I can build GDB just
> fine with the configure options given above.
> ---
>  gdb/Makefile.in | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/gdb/Makefile.in b/gdb/Makefile.in
> index bff27577b95..f2966cf6c00 100644
> --- a/gdb/Makefile.in
> +++ b/gdb/Makefile.in
> @@ -710,10 +710,21 @@ ALL_64_TARGET_OBS = \
>  	arch/aarch64-insn.o \
>  	arch/aarch64-mte-linux.o \
>  	arch/amd64.o \
> +	arch/riscv.o \
>  	ia64-linux-tdep.o \
>  	ia64-tdep.o \
>  	ia64-vms-tdep.o \
> +	mips-fbsd-tdep.o \
> +	mips-linux-tdep.o \
> +	mips-netbsd-tdep.o \
> +	mips-sde-tdep.o \
> +	mips-tdep.o \
>  	mips64-obsd-tdep.o \
> +	riscv-fbsd-tdep.o \
> +	riscv-linux-tdep.o \
> +	riscv-none-tdep.o \
> +	riscv-ravenscar-thread.o \
> +	riscv-tdep.o \
>  	sparc64-fbsd-tdep.o \
>  	sparc64-linux-tdep.o \
>  	sparc64-netbsd-tdep.o \
> @@ -734,7 +745,6 @@ ALL_TARGET_OBS = \
>  	arch/arm-linux.o \
>  	arch/i386.o \
>  	arch/ppc-linux-common.o \
> -	arch/riscv.o \
>  	arm-bsd-tdep.o \
>  	arm-fbsd-tdep.o \
>  	arm-linux-tdep.o \
> @@ -793,11 +803,6 @@ ALL_TARGET_OBS = \
>  	mep-tdep.o \
>  	microblaze-linux-tdep.o \
>  	microblaze-tdep.o \
> -	mips-fbsd-tdep.o \
> -	mips-linux-tdep.o \
> -	mips-netbsd-tdep.o \
> -	mips-sde-tdep.o \
> -	mips-tdep.o \
>  	mn10300-linux-tdep.o \
>  	mn10300-tdep.o \
>  	moxie-tdep.o \
> @@ -818,11 +823,6 @@ ALL_TARGET_OBS = \
>  	ppc-sysv-tdep.o \
>  	ppc64-tdep.o \
>  	ravenscar-thread.o \
> -	riscv-fbsd-tdep.o \
> -	riscv-linux-tdep.o \
> -	riscv-none-tdep.o \
> -	riscv-ravenscar-thread.o \
> -	riscv-tdep.o \
>  	rl78-tdep.o \
>  	rs6000-aix-tdep.o \
>  	rs6000-lynx178-tdep.o \
> -- 
> 2.25.4
> 


      parent reply	other threads:[~2021-12-13 11:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-09 18:08 Andrew Burgess
2021-12-09 18:50 ` John Baldwin
2021-12-10 10:24   ` Andrew Burgess
2021-12-10 17:05     ` John Baldwin
2021-12-09 22:40 ` Jim Wilson
2021-12-10 10:42   ` Andrew Burgess
2021-12-13 11:09 ` Andrew Burgess [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211213110933.GA175541@redhat.com \
    --to=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).