This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch/mi] data-disassemble output a list
- To: gdb-patches at sources dot redhat dot com
- Subject: [patch/mi] data-disassemble output a list
- From: Andrew Cagney <ac131313 at cygnus dot com>
- Date: Sat, 23 Jun 2001 16:37:50 -0400
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"
}