From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6799 invoked by alias); 24 Feb 2003 21:49:25 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 6774 invoked from network); 24 Feb 2003 21:49:25 -0000 Received: from unknown (HELO mx1.redhat.com) (172.16.49.200) by 172.16.49.205 with SMTP; 24 Feb 2003 21:49:25 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id h1OLnPe08413; Mon, 24 Feb 2003 16:49:25 -0500 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h1OLnOq18282; Mon, 24 Feb 2003 16:49:24 -0500 Received: from localhost.redhat.com (romulus-int.sfbay.redhat.com [172.16.27.46]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id h1OLnII12980; Mon, 24 Feb 2003 16:49:19 -0500 Received: by localhost.redhat.com (Postfix, from userid 469) id 730A7FF79; Mon, 24 Feb 2003 16:53:20 -0500 (EST) From: Elena Zannoni MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15962.37967.484158.441126@localhost.redhat.com> Date: Mon, 24 Feb 2003 21:49:00 -0000 To: Joern Rennecke Cc: Fernando Nasser , gdb@sources.redhat.com, gdb-patches@sources.redhat.com Subject: Re: sh-elf disassembly broken (Was: Re: RFC: Moving disassembler_command to cli land and using newer disassembler code) In-Reply-To: <3E5A7F58.8C87B17D@superh.com> References: <3E231F8E.72AA3D4A@superh.com> <3E5A7F58.8C87B17D@superh.com> X-SW-Source: 2003-02/txt/msg00529.txt.bz2 Joern, would something like this work, instead? Index: sh-tdep.c =================================================================== RCS file: /cvs/uberbaum/gdb/sh-tdep.c,v retrieving revision 1.96 diff -u -p -r1.96 sh-tdep.c --- sh-tdep.c 3 Feb 2003 14:38:05 -0000 1.96 +++ sh-tdep.c 24 Feb 2003 21:48:59 -0000 @@ -937,6 +937,7 @@ sh_store_struct_return (CORE_ADDR addr, static int gdb_print_insn_sh (bfd_vma memaddr, disassemble_info *info) { + info->mach = gdbarch_bfd_arch_info (current_gdbarch)->mach; info->endian = TARGET_BYTE_ORDER; return print_insn_sh (memaddr, info); } Joern Rennecke writes: > I wrote: > > > > This patch: > > > > 2002-11-07 Fernando Nasser > > > > * printcmd.c (disassemble_command): Remove obsolete function. > > (_initialize_printcmd): Do not create disassemble command here. > > * cli/cli-cmds.c (disassemble_command): New function. Implements > > disassemble command. > > (init_cli_cmds): Create disassemble command here instead. > > > > breaks disassembly for sh-elf (just try to disassemble any > > function in any sh-elf object file). > > > > gdb_disassembly uses TARGET_PRINT_INSN_INFO->mach to initialize > > di.mach, but TARGET_PRINT_INSN_INFO->mach is never initialized. > > > > Before your patch, print_insn had set TARGET_PRINT_INSN_INFO->mach > > to TARGET_ARCHITECTURE->mach, which gets expanded to > > (gdbarch_bfd_arch_info (current_gdbarch))->mach . > > And didn't get any reply. > > So I had a go at writing a conservative patch, which handles the mach > field likee tui/tuiDisassem.c:tui_disassemble . > > Although I have the feeling that TARGET_PRINT_INSN_INFO should be really > a local variable of print_insn, and if any information might be missing > in the gdbarch struct to initialize TARGET_PRINT_INSN_INFO and asm_info > in tui/tuiDisassem.c:tui_disassemble , that should rather be added to > the gdbarch struct. > > -- > -------------------------- > SuperH (UK) Ltd. > 2410 Aztec West / Almondsbury / BRISTOL / BS32 4QX > T:+44 1454 465658Mon Feb 24 19:59:50 2003 J"orn Rennecke > > * disasm.c (gdb_disassembly): If TARGET_ARCHITECTURE is non-zero, > initialize di.mach from there. > > Index: disasm.c > =================================================================== > RCS file: /cvs/src/src/gdb/disasm.c,v > retrieving revision 1.4 > diff -p -r1.4 disasm.c > *** disasm.c 3 Feb 2003 01:18:37 -0000 1.4 > --- disasm.c 24 Feb 2003 19:59:47 -0000 > *************** gdb_disassembly (struct ui_out *uiout, > *** 338,344 **** > --- 338,350 ---- > di_initialized = 1; > } > > + /* ??? TARGET_PRINT_INSN_INFO is undocumented and only initialized inside > + printcmd.c:print_insn , and some strange hacks that access fields of > + the variable that underlies the implementation of this macro. */ > di.mach = TARGET_PRINT_INSN_INFO->mach; > + if (TARGET_ARCHITECTURE != NULL) > + di.mach = TARGET_ARCHITECTURE->mach; > + > if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) > di.endian = BFD_ENDIAN_BIG; > else