Re: [PATCH] GDB/opcodes: Remove arch/mach/endian disassembler assertions

Maciej W. Rozycki
2017-08-03T12:25:00Z

On Thu, 3 Aug 2017, Maciej W. Rozycki wrote:

> > I prefer to keep these asserts, as they could check the inconsistent
> > uses of disassemble_info between gdb and opcodes. There is another
> > assert for target armv5te, PR 21818, but the assert exposes an improper
> > or unexpected usage of disassemble_info.mach in opcodes/arm-dis.c. I am
> > fixing it.
>
> How does the retaining of these assertions interact with `set
> architecture' and `set endian' then?

E.g.:

$ x86_64-linux-gnu-gdb
GNU gdb (GDB) 8.0.50.20170729-git
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) file main86
Reading symbols from main86...(no debugging symbols found)...done.
(gdb) show architecture
The target architecture is set automatically (currently i386:x86-64)
(gdb) disassemble main
Dump of assembler code for function main:
0x0000000000400450 <+0>: xor %eax,%eax
0x0000000000400452 <+2>: retq
End of assembler dump.
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) disassemble main
Dump of assembler code for function main:
0x00400450 <+0>:
.../gdb/arch-utils.c:979: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->mach == bfd_get_mach (exec_bfd)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n

This is a bug, please report it. For instructions, see:
<http://www.gnu.org/software/gdb/bugs/>.

.../gdb/arch-utils.c:979: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->mach == bfd_get_mach (exec_bfd)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n
Command aborted.
(gdb)

A change applied to the MIPS backend obviously won't do anything here.

Maciej