This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[patch/mi] data-disassemble output a list


Hello,

I've committed the attached.  It modifies the data-disassemble command 
so that it outputs lists of dissassembled instructions - [...] rather 
than {...}.

It includes a corresponding tweek to the testsuite.
It includes a corresponding tweek to the documentation.

	enjoy,
		Andrew

Index: mi/ChangeLog
2001-06-23  Andrew Cagney  <ac131313@redhat.com>

	* gdbmi.texinfo (data-disassemble): Update documentation of
	output.  Produces a list of instructions and a list of source
	lines.

2001-06-22  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-disas.c (mi_cmd_disassemble): For "-data-disassemble",
	output a list instead of a tupple.

Index: testsuite/gdb.mi/ChangeLog-mi
2001-06-23  Andrew Cagney  <ac131313@redhat.com>

	* mi-disassemble.exp: Update patterns matching data-disassemble
	output.  Now produces a list of instructions and a list of
	source/assembly lines.

Index: mi/gdbmi.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/mi/gdbmi.texinfo,v
retrieving revision 1.12
diff -p -r1.12 gdbmi.texinfo
*** gdbmi.texinfo	2001/06/16 18:57:56	1.12
--- gdbmi.texinfo	2001/06/23 20:31:08
*************** Disassemble from the current value of @c
*** 1093,1099 ****
  (@value{GDBP})
  -data-disassemble -s $pc -e "$pc + 20" -- 0
  ^done,
! asm_insns=@{
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
--- 1093,1099 ----
  (@value{GDBP})
  -data-disassemble -s $pc -e "$pc + 20" -- 0
  ^done,
! asm_insns=[
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
*************** inst="or  %o2, 0x140, %o1\t! 0x11940 <_l
*** 1103,1109 ****
  @{address="0x000107cc",func-name="main",offset="16",
  inst="sethi  %hi(0x11800), %o2"@},
  @{address="0x000107d0",func-name="main",offset="20",
! inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}@}
  (@value{GDBP})
  @end smallexample
  
--- 1103,1109 ----
  @{address="0x000107cc",func-name="main",offset="16",
  inst="sethi  %hi(0x11800), %o2"@},
  @{address="0x000107d0",func-name="main",offset="20",
! inst="or  %o2, 0x168, %o4\t! 0x11968 <_lib_version+48>"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Disassemble the whole @code{main} functi
*** 1112,1118 ****
  
  @smallexample
  -data-disassemble -f basics.c -l 32 -- 0
! ^done,asm_insns=@{
  @{address="0x000107bc",func-name="main",offset="0",
  inst="save  %sp, -112, %sp"@},
  @{address="0x000107c0",func-name="main",offset="4",
--- 1112,1118 ----
  
  @smallexample
  -data-disassemble -f basics.c -l 32 -- 0
! ^done,asm_insns=[
  @{address="0x000107bc",func-name="main",offset="0",
  inst="save  %sp, -112, %sp"@},
  @{address="0x000107c0",func-name="main",offset="4",
*************** inst="mov   2, %o0"@},
*** 1121,1127 ****
  inst="sethi %hi(0x11800), %o2"@},
  [@dots{}]
  @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
! @{address="0x00010820",func-name="main",offset="100",inst="restore "@}@}
  (@value{GDBP})
  @end smallexample
  
--- 1121,1127 ----
  inst="sethi %hi(0x11800), %o2"@},
  [@dots{}]
  @{address="0x0001081c",func-name="main",offset="96",inst="ret "@},
! @{address="0x00010820",func-name="main",offset="100",inst="restore "@}]
  (@value{GDBP})
  @end smallexample
  
*************** Disassemble 3 instructions from the star
*** 1130,1142 ****
  @smallexample
  (@value{GDBP})
  -data-disassemble -f basics.c -l 32 -n 3 -- 0
! ^done,asm_insns=@{
  @{address="0x000107bc",func-name="main",offset="0",
  inst="save  %sp, -112, %sp"@},
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
! inst="sethi  %hi(0x11800), %o2"@}@}
  (@value{GDBP})
  @end smallexample
  
--- 1130,1142 ----
  @smallexample
  (@value{GDBP})
  -data-disassemble -f basics.c -l 32 -n 3 -- 0
! ^done,asm_insns=[
  @{address="0x000107bc",func-name="main",offset="0",
  inst="save  %sp, -112, %sp"@},
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
! inst="sethi  %hi(0x11800), %o2"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Disassemble 3 instructions from the star
*** 1145,1164 ****
  @smallexample
  (@value{GDBP})
  -data-disassemble -f basics.c -l 32 -n 3 -- 1
! ^done,asm_insns=@{
  src_and_asm_line=@{line="31",
  file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
!   testsuite/gdb.mi/basics.c",line_asm_insn=@{
  @{address="0x000107bc",func-name="main",offset="0",
! inst="save  %sp, -112, %sp"@}@}@},
! 
  src_and_asm_line=@{line="32",
  file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
!   testsuite/gdb.mi/basics.c",line_asm_insn=@{
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
! inst="sethi  %hi(0x11800), %o2"@}@}@}@}
  (@value{GDBP})
  @end smallexample
  
--- 1145,1163 ----
  @smallexample
  (@value{GDBP})
  -data-disassemble -f basics.c -l 32 -n 3 -- 1
! ^done,asm_insns=[
  src_and_asm_line=@{line="31",
  file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
!   testsuite/gdb.mi/basics.c",line_asm_insn=[
  @{address="0x000107bc",func-name="main",offset="0",
! inst="save  %sp, -112, %sp"@}]@},
  src_and_asm_line=@{line="32",
  file="/kwikemart/marge/ezannoni/flathead-dev/devo/gdb/ \
!   testsuite/gdb.mi/basics.c",line_asm_insn=[
  @{address="0x000107c0",func-name="main",offset="4",
  inst="mov  2, %o0"@},
  @{address="0x000107c4",func-name="main",offset="8",
! inst="sethi  %hi(0x11800), %o2"@}]@}]
  (@value{GDBP})
  @end smallexample
  
Index: mi/mi-cmd-disas.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-disas.c,v
retrieving revision 1.10
diff -p -r1.10 mi-cmd-disas.c
*** mi-cmd-disas.c	2001/05/12 04:08:24	1.10
--- mi-cmd-disas.c	2001/06/23 20:31:09
*************** mi_cmd_disassemble (char *command, char 
*** 364,370 ****
           for that line.  */
  
        next_line = 0;		/* Force out first line */
!       ui_out_tuple_begin (uiout, "asm_insns");
        num_displayed = 0;
        for (i = 0; i < newlines; i++)
  	{
--- 364,370 ----
           for that line.  */
  
        next_line = 0;		/* Force out first line */
!       ui_out_list_begin (uiout, "asm_insns");
        num_displayed = 0;
        for (i = 0; i < newlines; i++)
  	{
*************** mi_cmd_disassemble (char *command, char 
*** 387,395 ****
  			{
  			  ui_out_tuple_begin (uiout, "src_and_asm_line");
  			  print_source_lines (symtab, next_line, mle[i].line + 1, 0);
! 			  ui_out_tuple_begin (uiout, "line_asm_insn");
  			  ui_out_tuple_end (uiout);
- 			  ui_out_tuple_end (uiout);
  			}
  		      /* Print the last line and leave list open for
  		         asm instructions to be added. */
--- 387,395 ----
  			{
  			  ui_out_tuple_begin (uiout, "src_and_asm_line");
  			  print_source_lines (symtab, next_line, mle[i].line + 1, 0);
! 			  ui_out_list_begin (uiout, "line_asm_insn");
! 			  ui_out_list_end (uiout);
  			  ui_out_tuple_end (uiout);
  			}
  		      /* Print the last line and leave list open for
  		         asm instructions to be added. */
*************** mi_cmd_disassemble (char *command, char 
*** 404,410 ****
  		}
  
  	      next_line = mle[i].line + 1;
! 	      ui_out_tuple_begin (uiout, "line_asm_insn");
  	      if (i + 1 < newlines && mle[i + 1].line <= mle[i].line)
  		close_list = 0;
  	    }
--- 404,410 ----
  		}
  
  	      next_line = mle[i].line + 1;
! 	      ui_out_list_begin (uiout, "line_asm_insn");
  	      if (i + 1 < newlines && mle[i + 1].line <= mle[i].line)
  		close_list = 0;
  	    }
*************** mi_cmd_disassemble (char *command, char 
*** 441,447 ****
  	    }
  	  if (close_list)
  	    {
! 	      ui_out_tuple_end (uiout);
  	      ui_out_tuple_end (uiout);
  	      close_list = 0;
  	    }
--- 441,447 ----
  	    }
  	  if (close_list)
  	    {
! 	      ui_out_list_end (uiout);
  	      ui_out_tuple_end (uiout);
  	      close_list = 0;
  	    }
*************** mi_cmd_disassemble (char *command, char 
*** 449,460 ****
  	    if (num_displayed >= how_many)
  	      break;
  	}
!       ui_out_tuple_end (uiout);
      }
    else
      {
      assembly_only:
!       ui_out_tuple_begin (uiout, "asm_insns");
        num_displayed = 0;
        for (pc = low; pc < high;)
  	{
--- 449,460 ----
  	    if (num_displayed >= how_many)
  	      break;
  	}
!       ui_out_list_end (uiout);
      }
    else
      {
      assembly_only:
!       ui_out_list_begin (uiout, "asm_insns");
        num_displayed = 0;
        for (pc = low; pc < high;)
  	{
*************** mi_cmd_disassemble (char *command, char 
*** 487,493 ****
  	  ui_file_rewind (stb->stream);
  	  ui_out_tuple_end (uiout);
  	}
!       ui_out_tuple_end (uiout);
      }
    gdb_flush (gdb_stdout);
  
--- 487,493 ----
  	  ui_file_rewind (stb->stream);
  	  ui_out_tuple_end (uiout);
  	}
!       ui_out_list_end (uiout);
      }
    gdb_flush (gdb_stdout);
  
Index: testsuite/gdb.mi/mi-disassemble.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-disassemble.exp,v
retrieving revision 1.5
diff -p -r1.5 mi-disassemble.exp
*** mi-disassemble.exp	2001/06/18 17:57:42	1.5
--- mi-disassemble.exp	2001/06/23 20:31:10
*************** proc test_disassembly_only {} {
*** 100,110 ****
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "111-data-disassemble -s \$pc -e \"\$pc + 12\" -- 0" \
! 	    "111\\^done,asm_insns=\{\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\},\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\}" \
               "data-disassemble from pc to pc+12 assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -- 0" \
! 	    "222\\^done,asm_insns=\{\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\}" \
                "data-disassemble file & line, assembly only"
  }
  
--- 100,110 ----
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "111-data-disassemble -s \$pc -e \"\$pc + 12\" -- 0" \
! 	    "111\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\},\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\]" \
               "data-disassemble from pc to pc+12 assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -- 0" \
! 	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
                "data-disassemble file & line, assembly only"
  }
  
*************** proc test_disassembly_lines_limit {} {
*** 121,135 ****
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 0" \
! 	    "222\\^done,asm_insns=\{\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\}" \
                "data-disassemble file, line, number assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 0" \
! 	    "222\\^done,asm_insns=\{\}" \
                "data-disassemble file, line, number (zero lines) assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 0" \
! 	    "222\\^done,asm_insns=\{\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\}" \
                "data-disassemble file, line, number (more than main lines) assembly only"
  }
  
--- 121,135 ----
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 0" \
! 	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
                "data-disassemble file, line, number assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 0" \
! 	    "222\\^done,asm_insns=\\\[\\\]" \
                "data-disassemble file, line, number (zero lines) assembly only"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 0" \
! 	    "222\\^done,asm_insns=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]" \
                "data-disassemble file, line, number (more than main lines) assembly only"
  }
  
*************** proc test_disassembly_mixed {} {
*** 145,151 ****
      # -data-disassembly -s $pc -e "$pc+8" -- 1
  
      mi_gdb_test "002-data-disassemble -f basics.c -l 21 -- 1" \
! 	    "002\\^done,asm_insns=\{src_and_asm_line=\{line=\"21\",file=\".*basics.c\",line_asm_insn=\{\{address=\"$hex\",func-name=\"callee2\",offset=\"0\",inst=\".*\"\}.*\}\},.*,src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\{.*\{address=\"$hex\",func-name=\"callee2\",offset=\"$decimal\",inst=\".*\"\}\}\}\}" \
               "data-disassemble file, line assembly mixed"
  
      #
--- 145,151 ----
      # -data-disassembly -s $pc -e "$pc+8" -- 1
  
      mi_gdb_test "002-data-disassemble -f basics.c -l 21 -- 1" \
! 	    "002\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"21\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"callee2\",offset=\"0\",inst=\".*\"\}.*\\\]\}.*,src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[.*\{address=\"$hex\",func-name=\"callee2\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\\\]" \
               "data-disassemble file, line assembly mixed"
  
      #
*************** proc test_disassembly_mixed {} {
*** 154,160 ****
      # which we are now, even if we have specified that the range is only 2 insns.
      #
      mi_gdb_test "003-data-disassemble -s \$pc -e \"\$pc+4\" -- 1" \
! 	    "003\\^done,asm_insns=\{src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\{\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\}\}\}" \
               "data-disassemble range assembly mixed"
  }
  
--- 154,160 ----
      # which we are now, even if we have specified that the range is only 2 insns.
      #
      mi_gdb_test "003-data-disassemble -s \$pc -e \"\$pc+4\" -- 1" \
! 	    "003\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\\\]" \
               "data-disassemble range assembly mixed"
  }
  
*************** proc test_disassembly_mixed_lines_limit 
*** 171,185 ****
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 1" \
! 	    "222\\^done,asm_insns=\{src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\{\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\}" \
                "data-disassemble file, line, number assembly mixed"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 1" \
! 	    "222\\^done,asm_insns=\{src_and_asm_line=\{line=\"31\",file=\".*basics.c\",line_asm_insn=\{\}\}\}" \
                "data-disassemble file, line, number (zero lines) assembly mixed"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 1" \
! 	    "222\\^done,asm_insns=\{src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\{\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}.*\}" \
                "data-disassemble file, line, number (more than main lines) assembly mixed"
  }
  
--- 171,185 ----
  
      mi_gdb_test "print/x \$pc" "" ""
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 20 -- 1" \
! 	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\},.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\]" \
                "data-disassemble file, line, number assembly mixed"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 0 -- 1" \
! 	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"31\",file=\".*basics.c\",line_asm_insn=\\\[\\\]\}\\\]" \
                "data-disassemble file, line, number (zero lines) assembly mixed"
  
      mi_gdb_test "222-data-disassemble  -f basics.c -l 32 -n 50 -- 1" \
! 	    "222\\^done,asm_insns=\\\[src_and_asm_line=\{line=\"$decimal\",file=\".*basics.c\",line_asm_insn=\\\[\{address=\"$hex\",func-name=\"main\",offset=\"0\",inst=\".*\"\}.*,\{address=\"$hex\",func-name=\"main\",offset=\"$decimal\",inst=\".*\"\}\\\]\}\]" \
                "data-disassemble file, line, number (more than main lines) assembly mixed"
  }
  

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]