From: Hui Zhu <teawater@gmail.com>
To: Tom Tromey <tromey@redhat.com>, Eli Zaretskii <eliz@gnu.org>,
Michael Snyder <msnyder@vmware.com>,
Doug Evans <dje@google.com>,
Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb-patches ml <gdb-patches@sourceware.org>
Subject: Re: Add a new modifier /c to "disassemble" command to make it output binary code
Date: Sat, 11 Jul 2009 09:28:00 -0000 [thread overview]
Message-ID: <daef60380907110146k57b06220r13690242b20660@mail.gmail.com> (raw)
In-Reply-To: <m3fxd5n46v.fsf@fleche.redhat.com>
[-- Attachment #1: Type: text/plain, Size: 12655 bytes --]
Thanks everybody,
1. I added a argument "flags". It include "DISASSEMBLY_SOURCE" and
"DISASSEMBLY_RAW_INSN".
2. I change the introduce to "With a /r modifier, print the
instruction in hex as well as in symbolic form." It get from
objdump's man. Wish you like it. :)
3. /c changed /r.
4. I have make a patch for testsuite.
Please help me review them.
Thanks,
Hui
2009-07-11 Hui Zhu <teawater@gmail.com>
* cli/cli-cmds.c (disassemble_command): Add a new modifier /r
to "disassemble" command to print the instruction in hex as
well as in symbolic form.
(init_cli_cmds): Ditto.
(print_disassembly): Change "mixed" to "flags" to translate
the behavior of disassemble.
(disassemble_current_function): Ditto.
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Ditto.
* stack.c (gdb_disassembly_stub): Ditto.
* disasm.c (do_mixed_source_and_assembly): Ditto.
(do_mixed_source_and_assembly): Ditto.
(do_assembly_only): Ditto.
(gdb_disassembly): Ditto.
(dump_insns): print the instruction in hex as well as in
symbolic form if DISASSEMBLY_RAW_INSN and flags is true.
* disasm.h (DISASSEMBLY_SOURCE): Include source code with the
assembly if it and flags is true.
(DISASSEMBLY_RAW_INSN): Include instruction in hex with the
assembly if it and flags is true.
(gdb_disassembly): Update extern.
---
cli/cli-cmds.c | 31 ++++++++++++++++++-------------
disasm.c | 39 ++++++++++++++++++++++++++++-----------
disasm.h | 3 +++
mi/mi-cmd-disas.c | 2 +-
stack.c | 4 +++-
5 files changed, 53 insertions(+), 26 deletions(-)
--- a/cli/cli-cmds.c
+++ b/cli/cli-cmds.c
@@ -908,7 +908,7 @@ list_command (char *arg, int from_tty)
static void
print_disassembly (struct gdbarch *gdbarch, const char *name,
- CORE_ADDR low, CORE_ADDR high, int mixed)
+ CORE_ADDR low, CORE_ADDR high, int flags)
{
#if defined(TUI)
if (!tui_is_window_visible (DISASSEM_WIN))
@@ -922,7 +922,7 @@ print_disassembly (struct gdbarch *gdbar
paddress (gdbarch, low), paddress (gdbarch, high));
/* Dump the specified range. */
- gdb_disassembly (gdbarch, uiout, 0, mixed, -1, low, high);
+ gdb_disassembly (gdbarch, uiout, 0, flags, -1, low, high);
printf_filtered ("End of assembler dump.\n");
gdb_flush (gdb_stdout);
@@ -940,7 +940,7 @@ print_disassembly (struct gdbarch *gdbar
MIXED is non-zero to print source with the assembler. */
static void
-disassemble_current_function (int mixed)
+disassemble_current_function (int flags)
{
struct frame_info *frame;
struct gdbarch *gdbarch;
@@ -961,20 +961,21 @@ disassemble_current_function (int mixed)
#endif
low += gdbarch_deprecated_function_start_offset (gdbarch);
- print_disassembly (gdbarch, name, low, high, mixed);
+ print_disassembly (gdbarch, name, low, high, flags);
}
/* Dump a specified section of assembly code.
Usage:
- disassemble [/m]
+ disassemble [/mr]
- dump the assembly code for the function of the current pc
- disassemble [/m] addr
+ disassemble [/mr] addr
- dump the assembly code for the function at ADDR
- disassemble [/m] low high
+ disassemble [/mr] low high
- dump the assembly code in the range [LOW,HIGH)
- A /m modifier will include source code with the assembly. */
+ A /m modifier will include source code with the assembly.
+ A /r modifier will include instruction in hex with the assembly. */
static void
disassemble_command (char *arg, int from_tty)
@@ -984,10 +985,10 @@ disassemble_command (char *arg, int from
char *name;
CORE_ADDR pc, pc_masked;
char *space_index;
- int mixed_source_and_assembly;
+ int flags;
name = NULL;
- mixed_source_and_assembly = 0;
+ flags = 0;
if (arg && *arg == '/')
{
@@ -1001,7 +1002,10 @@ disassemble_command (char *arg, int from
switch (*arg++)
{
case 'm':
- mixed_source_and_assembly = 1;
+ flags |= DISASSEMBLY_SOURCE;
+ break;
+ case 'r':
+ flags |= DISASSEMBLY_RAW_INSN;
break;
default:
error (_("Invalid disassembly modifier."));
@@ -1014,7 +1018,7 @@ disassemble_command (char *arg, int from
if (! arg || ! *arg)
{
- disassemble_current_function (mixed_source_and_assembly);
+ disassemble_current_function (flags);
return;
}
@@ -1044,7 +1048,7 @@ disassemble_command (char *arg, int from
high = parse_and_eval_address (space_index + 1);
}
- print_disassembly (gdbarch, name, low, high, mixed_source_and_assembly);
+ print_disassembly (gdbarch, name, low, high, flags);
}
static void
@@ -1454,6 +1458,7 @@ With two args if one is empty it stands
Disassemble a specified section of memory.\n\
Default is the function surrounding the pc of the selected frame.\n\
With a /m modifier, source lines are included (if available).\n\
+With a /r modifier, instruction in hex are included.\n\
With a single argument, the function surrounding that address is dumped.\n\
Two arguments are taken as a range of memory to dump."));
set_cmd_completer (c, location_completer);
--- a/disasm.c
+++ b/disasm.c
@@ -88,7 +88,7 @@ static int
dump_insns (struct gdbarch *gdbarch, struct ui_out *uiout,
struct disassemble_info * di,
CORE_ADDR low, CORE_ADDR high,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int num_displayed = 0;
CORE_ADDR pc;
@@ -135,7 +135,23 @@ dump_insns (struct gdbarch *gdbarch, str
xfree (name);
ui_file_rewind (stb->stream);
- pc += gdbarch_print_insn (gdbarch, pc, di);
+ if (flags & DISASSEMBLY_RAW_INSN)
+ {
+ CORE_ADDR old_pc = pc;
+ bfd_byte data;
+ int status;
+ pc += gdbarch_print_insn (gdbarch, pc, di);
+ for (;old_pc < pc; old_pc++)
+ {
+ status = (*di->read_memory_func) (old_pc, &data, 1, di);
+ if (status != 0)
+ (*di->memory_error_func) (status, old_pc, di);
+ ui_out_message (uiout, 0, " %02x", (unsigned)data);
+ }
+ ui_out_text (uiout, "\t");
+ }
+ else
+ pc += gdbarch_print_insn (gdbarch, pc, di);
ui_out_field_stream (uiout, "inst", stb);
ui_file_rewind (stb->stream);
do_cleanups (ui_out_chain);
@@ -154,7 +170,7 @@ do_mixed_source_and_assembly (struct gdb
struct linetable_entry *le,
CORE_ADDR low, CORE_ADDR high,
struct symtab *symtab,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int newlines = 0;
struct dis_line_entry *mle;
@@ -278,7 +294,7 @@ do_mixed_source_and_assembly (struct gdb
num_displayed += dump_insns (gdbarch, uiout, di,
mle[i].start_pc, mle[i].end_pc,
- how_many, stb);
+ how_many, flags, stb);
/* When we've reached the end of the mle array, or we've seen the last
assembly range for this source line, close out the list/tuple. */
@@ -301,14 +317,15 @@ static void
do_assembly_only (struct gdbarch *gdbarch, struct ui_out *uiout,
struct disassemble_info * di,
CORE_ADDR low, CORE_ADDR high,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int num_displayed = 0;
struct cleanup *ui_out_chain;
ui_out_chain = make_cleanup_ui_out_list_begin_end (uiout, "asm_insns");
- num_displayed = dump_insns (gdbarch, uiout, di, low, high, how_many, stb);
+ num_displayed = dump_insns (gdbarch, uiout, di, low, high, how_many,
+ flags, stb);
do_cleanups (ui_out_chain);
}
@@ -356,7 +373,7 @@ gdb_disassemble_info (struct gdbarch *gd
void
gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout,
char *file_string,
- int mixed_source_and_assembly,
+ int flags,
int how_many, CORE_ADDR low, CORE_ADDR high)
{
struct ui_stream *stb = ui_out_stream_new (uiout);
@@ -377,13 +394,13 @@ gdb_disassembly (struct gdbarch *gdbarch
nlines = symtab->linetable->nitems;
}
- if (!mixed_source_and_assembly || nlines <= 0
+ if (!(flags & DISASSEMBLY_SOURCE) || nlines <= 0
|| symtab == NULL || symtab->linetable == NULL)
- do_assembly_only (gdbarch, uiout, &di, low, high, how_many, stb);
+ do_assembly_only (gdbarch, uiout, &di, low, high, how_many, flags, stb);
- else if (mixed_source_and_assembly)
+ else if (flags & DISASSEMBLY_SOURCE)
do_mixed_source_and_assembly (gdbarch, uiout, &di, nlines, le, low,
- high, symtab, how_many, stb);
+ high, symtab, how_many, flags, stb);
do_cleanups (cleanups);
gdb_flush (gdb_stdout);
--- a/disasm.h
+++ b/disasm.h
@@ -19,6 +19,9 @@
#ifndef DISASM_H
#define DISASM_H
+#define DISASSEMBLY_SOURCE (0x1 << 0)
+#define DISASSEMBLY_RAW_INSN (0x1 << 1)
+
struct ui_out;
struct ui_file;
--- a/mi/mi-cmd-disas.c
+++ b/mi/mi-cmd-disas.c
@@ -156,6 +156,6 @@ mi_cmd_disassemble (char *command, char
gdb_disassembly (gdbarch, uiout,
file_string,
- mixed_source_and_assembly, how_many, low, high);
+ DISASSEMBLY_SOURCE, how_many, low, high);
}
--- a/stack.c
+++ b/stack.c
@@ -481,7 +481,9 @@ static void
gdb_disassembly_stub (void *args)
{
struct gdb_disassembly_stub_args *p = args;
- gdb_disassembly (p->gdbarch, uiout, 0, 0, p->how_many, p->low, p->high);
+ gdb_disassembly (p->gdbarch, uiout, 0,
+ DISASSEMBLY_SOURCE | DISASSEMBLY_RAW_INSN, p->how_many,
+ p->low, p->high);
}
/* Use TRY_CATCH to catch the exception from the gdb_disassembly
2009-07-11 Hui Zhu <teawater@gmail.com>
* gdb.texinfo (disassemble): Add a new modifier /r
to "disassemble" command to make it print the instruction in
hex as well as in symbolic form.
---
doc/gdb.texinfo | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/doc/gdb.texinfo
+++ b/doc/gdb.texinfo
@@ -6178,9 +6178,11 @@ Variables}).
@cindex listing machine instructions
@item disassemble
@itemx disassemble /m
+@itemx disassemble /r
This specialized command dumps a range of memory as machine
instructions. It can also print mixed source+disassembly by specifying
-the @code{/m} modifier.
+the @code{/m} modifier and print the instruction in hex as well as in
+symbolic form by specifying the @code{/r}.
The default memory range is the function surrounding the
program counter of the selected frame. A single argument to this
command is a program counter value; @value{GDBN} dumps the function
2009-07-11 Hui Zhu <teawater@gmail.com>
* gdb.base/help.exp (disassemble): Update expected help text.
---
testsuite/gdb.base/help.exp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/testsuite/gdb.base/help.exp
+++ b/testsuite/gdb.base/help.exp
@@ -124,7 +124,7 @@ gdb_test "help disable breakpoints" "Dis
# test help disable display
gdb_test "help disable display" "Disable some expressions to be
displayed when program stops\.\[\r\n\]+Arguments are the code numbers
of the expressions to stop displaying\.\[\r\n\]+No argument means
disable all automatic-display expressions\.\[\r\n\]+Do \"info
display\" to see current list of code numbers\." "help disable
display"
# test help disassemble
-gdb_test "help disassemble" "Disassemble a specified section of
memory\.\[\r\n\]+Default is the function surrounding the pc of the
selected frame\.\[\r\n\]+With a /m modifier, source lines are included
\\(if available\\)\.\[\r\n\]+With a single argument, the function
surrounding that address is dumped\.\[\r\n\]+Two arguments are taken
as a range of memory to dump\." "help disassemble"
+gdb_test "help disassemble" "Disassemble a specified section of
memory\.\[\r\n\]+Default is the function surrounding the pc of the
selected frame\.\[\r\n\]+With a /m modifier, source lines are included
\\(if available\\)\.\[\r\n\]+With a /r modifier, instruction in hex
are included\.\[\r\n\]+With a single argument, the function
surrounding that address is dumped\.\[\r\n\]+Two arguments are taken
as a range of memory to dump\." "help disassemble"
# test help display
gdb_test "help display" "Print value of expression EXP each time the
program stops\.\[\r\n\]+/FMT may be used before EXP as in the
\"print\" command\.\[\r\n\]+/FMT \"i\" or \"s\" or including a
size-letter is allowed,\[\r\n\]+as in the \"x\" command, and then EXP
is used to get the address to examine\[\r\n\]+and examining is done as
in the \"x\" command\.\[\r\n\]+With no argument, display all currently
requested auto-display expressions\.\[\r\n\]+Use \"undisplay\" to
cancel display requests previously made\." "help display"
# test help do
[-- Attachment #2: disassemble-output-code.txt --]
[-- Type: text/plain, Size: 8328 bytes --]
---
cli/cli-cmds.c | 31 ++++++++++++++++++-------------
disasm.c | 39 ++++++++++++++++++++++++++++-----------
disasm.h | 3 +++
mi/mi-cmd-disas.c | 2 +-
stack.c | 4 +++-
5 files changed, 53 insertions(+), 26 deletions(-)
--- a/cli/cli-cmds.c
+++ b/cli/cli-cmds.c
@@ -908,7 +908,7 @@ list_command (char *arg, int from_tty)
static void
print_disassembly (struct gdbarch *gdbarch, const char *name,
- CORE_ADDR low, CORE_ADDR high, int mixed)
+ CORE_ADDR low, CORE_ADDR high, int flags)
{
#if defined(TUI)
if (!tui_is_window_visible (DISASSEM_WIN))
@@ -922,7 +922,7 @@ print_disassembly (struct gdbarch *gdbar
paddress (gdbarch, low), paddress (gdbarch, high));
/* Dump the specified range. */
- gdb_disassembly (gdbarch, uiout, 0, mixed, -1, low, high);
+ gdb_disassembly (gdbarch, uiout, 0, flags, -1, low, high);
printf_filtered ("End of assembler dump.\n");
gdb_flush (gdb_stdout);
@@ -940,7 +940,7 @@ print_disassembly (struct gdbarch *gdbar
MIXED is non-zero to print source with the assembler. */
static void
-disassemble_current_function (int mixed)
+disassemble_current_function (int flags)
{
struct frame_info *frame;
struct gdbarch *gdbarch;
@@ -961,20 +961,21 @@ disassemble_current_function (int mixed)
#endif
low += gdbarch_deprecated_function_start_offset (gdbarch);
- print_disassembly (gdbarch, name, low, high, mixed);
+ print_disassembly (gdbarch, name, low, high, flags);
}
/* Dump a specified section of assembly code.
Usage:
- disassemble [/m]
+ disassemble [/mr]
- dump the assembly code for the function of the current pc
- disassemble [/m] addr
+ disassemble [/mr] addr
- dump the assembly code for the function at ADDR
- disassemble [/m] low high
+ disassemble [/mr] low high
- dump the assembly code in the range [LOW,HIGH)
- A /m modifier will include source code with the assembly. */
+ A /m modifier will include source code with the assembly.
+ A /r modifier will include instruction in hex with the assembly. */
static void
disassemble_command (char *arg, int from_tty)
@@ -984,10 +985,10 @@ disassemble_command (char *arg, int from
char *name;
CORE_ADDR pc, pc_masked;
char *space_index;
- int mixed_source_and_assembly;
+ int flags;
name = NULL;
- mixed_source_and_assembly = 0;
+ flags = 0;
if (arg && *arg == '/')
{
@@ -1001,7 +1002,10 @@ disassemble_command (char *arg, int from
switch (*arg++)
{
case 'm':
- mixed_source_and_assembly = 1;
+ flags |= DISASSEMBLY_SOURCE;
+ break;
+ case 'r':
+ flags |= DISASSEMBLY_RAW_INSN;
break;
default:
error (_("Invalid disassembly modifier."));
@@ -1014,7 +1018,7 @@ disassemble_command (char *arg, int from
if (! arg || ! *arg)
{
- disassemble_current_function (mixed_source_and_assembly);
+ disassemble_current_function (flags);
return;
}
@@ -1044,7 +1048,7 @@ disassemble_command (char *arg, int from
high = parse_and_eval_address (space_index + 1);
}
- print_disassembly (gdbarch, name, low, high, mixed_source_and_assembly);
+ print_disassembly (gdbarch, name, low, high, flags);
}
static void
@@ -1454,6 +1458,7 @@ With two args if one is empty it stands
Disassemble a specified section of memory.\n\
Default is the function surrounding the pc of the selected frame.\n\
With a /m modifier, source lines are included (if available).\n\
+With a /r modifier, instruction in hex are included.\n\
With a single argument, the function surrounding that address is dumped.\n\
Two arguments are taken as a range of memory to dump."));
set_cmd_completer (c, location_completer);
--- a/disasm.c
+++ b/disasm.c
@@ -88,7 +88,7 @@ static int
dump_insns (struct gdbarch *gdbarch, struct ui_out *uiout,
struct disassemble_info * di,
CORE_ADDR low, CORE_ADDR high,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int num_displayed = 0;
CORE_ADDR pc;
@@ -135,7 +135,23 @@ dump_insns (struct gdbarch *gdbarch, str
xfree (name);
ui_file_rewind (stb->stream);
- pc += gdbarch_print_insn (gdbarch, pc, di);
+ if (flags & DISASSEMBLY_RAW_INSN)
+ {
+ CORE_ADDR old_pc = pc;
+ bfd_byte data;
+ int status;
+ pc += gdbarch_print_insn (gdbarch, pc, di);
+ for (;old_pc < pc; old_pc++)
+ {
+ status = (*di->read_memory_func) (old_pc, &data, 1, di);
+ if (status != 0)
+ (*di->memory_error_func) (status, old_pc, di);
+ ui_out_message (uiout, 0, " %02x", (unsigned)data);
+ }
+ ui_out_text (uiout, "\t");
+ }
+ else
+ pc += gdbarch_print_insn (gdbarch, pc, di);
ui_out_field_stream (uiout, "inst", stb);
ui_file_rewind (stb->stream);
do_cleanups (ui_out_chain);
@@ -154,7 +170,7 @@ do_mixed_source_and_assembly (struct gdb
struct linetable_entry *le,
CORE_ADDR low, CORE_ADDR high,
struct symtab *symtab,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int newlines = 0;
struct dis_line_entry *mle;
@@ -278,7 +294,7 @@ do_mixed_source_and_assembly (struct gdb
num_displayed += dump_insns (gdbarch, uiout, di,
mle[i].start_pc, mle[i].end_pc,
- how_many, stb);
+ how_many, flags, stb);
/* When we've reached the end of the mle array, or we've seen the last
assembly range for this source line, close out the list/tuple. */
@@ -301,14 +317,15 @@ static void
do_assembly_only (struct gdbarch *gdbarch, struct ui_out *uiout,
struct disassemble_info * di,
CORE_ADDR low, CORE_ADDR high,
- int how_many, struct ui_stream *stb)
+ int how_many, int flags, struct ui_stream *stb)
{
int num_displayed = 0;
struct cleanup *ui_out_chain;
ui_out_chain = make_cleanup_ui_out_list_begin_end (uiout, "asm_insns");
- num_displayed = dump_insns (gdbarch, uiout, di, low, high, how_many, stb);
+ num_displayed = dump_insns (gdbarch, uiout, di, low, high, how_many,
+ flags, stb);
do_cleanups (ui_out_chain);
}
@@ -356,7 +373,7 @@ gdb_disassemble_info (struct gdbarch *gd
void
gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout,
char *file_string,
- int mixed_source_and_assembly,
+ int flags,
int how_many, CORE_ADDR low, CORE_ADDR high)
{
struct ui_stream *stb = ui_out_stream_new (uiout);
@@ -377,13 +394,13 @@ gdb_disassembly (struct gdbarch *gdbarch
nlines = symtab->linetable->nitems;
}
- if (!mixed_source_and_assembly || nlines <= 0
+ if (!(flags & DISASSEMBLY_SOURCE) || nlines <= 0
|| symtab == NULL || symtab->linetable == NULL)
- do_assembly_only (gdbarch, uiout, &di, low, high, how_many, stb);
+ do_assembly_only (gdbarch, uiout, &di, low, high, how_many, flags, stb);
- else if (mixed_source_and_assembly)
+ else if (flags & DISASSEMBLY_SOURCE)
do_mixed_source_and_assembly (gdbarch, uiout, &di, nlines, le, low,
- high, symtab, how_many, stb);
+ high, symtab, how_many, flags, stb);
do_cleanups (cleanups);
gdb_flush (gdb_stdout);
--- a/disasm.h
+++ b/disasm.h
@@ -19,6 +19,9 @@
#ifndef DISASM_H
#define DISASM_H
+#define DISASSEMBLY_SOURCE (0x1 << 0)
+#define DISASSEMBLY_RAW_INSN (0x1 << 1)
+
struct ui_out;
struct ui_file;
--- a/mi/mi-cmd-disas.c
+++ b/mi/mi-cmd-disas.c
@@ -156,6 +156,6 @@ mi_cmd_disassemble (char *command, char
gdb_disassembly (gdbarch, uiout,
file_string,
- mixed_source_and_assembly, how_many, low, high);
+ DISASSEMBLY_SOURCE, how_many, low, high);
}
--- a/stack.c
+++ b/stack.c
@@ -481,7 +481,9 @@ static void
gdb_disassembly_stub (void *args)
{
struct gdb_disassembly_stub_args *p = args;
- gdb_disassembly (p->gdbarch, uiout, 0, 0, p->how_many, p->low, p->high);
+ gdb_disassembly (p->gdbarch, uiout, 0,
+ DISASSEMBLY_SOURCE | DISASSEMBLY_RAW_INSN, p->how_many,
+ p->low, p->high);
}
/* Use TRY_CATCH to catch the exception from the gdb_disassembly
[-- Attachment #3: disassemble-output-code-doc.txt --]
[-- Type: text/plain, Size: 733 bytes --]
---
doc/gdb.texinfo | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/doc/gdb.texinfo
+++ b/doc/gdb.texinfo
@@ -6178,9 +6178,11 @@ Variables}).
@cindex listing machine instructions
@item disassemble
@itemx disassemble /m
+@itemx disassemble /r
This specialized command dumps a range of memory as machine
instructions. It can also print mixed source+disassembly by specifying
-the @code{/m} modifier.
+the @code{/m} modifier and print the instruction in hex as well as in
+symbolic form by specifying the @code{/r}.
The default memory range is the function surrounding the
program counter of the selected frame. A single argument to this
command is a program counter value; @value{GDBN} dumps the function
[-- Attachment #4: disassemble-output-code-test.txt --]
[-- Type: text/plain, Size: 2017 bytes --]
---
testsuite/gdb.base/help.exp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/testsuite/gdb.base/help.exp
+++ b/testsuite/gdb.base/help.exp
@@ -124,7 +124,7 @@ gdb_test "help disable breakpoints" "Dis
# test help disable display
gdb_test "help disable display" "Disable some expressions to be displayed when program stops\.\[\r\n\]+Arguments are the code numbers of the expressions to stop displaying\.\[\r\n\]+No argument means disable all automatic-display expressions\.\[\r\n\]+Do \"info display\" to see current list of code numbers\." "help disable display"
# test help disassemble
-gdb_test "help disassemble" "Disassemble a specified section of memory\.\[\r\n\]+Default is the function surrounding the pc of the selected frame\.\[\r\n\]+With a /m modifier, source lines are included \\(if available\\)\.\[\r\n\]+With a single argument, the function surrounding that address is dumped\.\[\r\n\]+Two arguments are taken as a range of memory to dump\." "help disassemble"
+gdb_test "help disassemble" "Disassemble a specified section of memory\.\[\r\n\]+Default is the function surrounding the pc of the selected frame\.\[\r\n\]+With a /m modifier, source lines are included \\(if available\\)\.\[\r\n\]+With a /r modifier, instruction in hex are included\.\[\r\n\]+With a single argument, the function surrounding that address is dumped\.\[\r\n\]+Two arguments are taken as a range of memory to dump\." "help disassemble"
# test help display
gdb_test "help display" "Print value of expression EXP each time the program stops\.\[\r\n\]+/FMT may be used before EXP as in the \"print\" command\.\[\r\n\]+/FMT \"i\" or \"s\" or including a size-letter is allowed,\[\r\n\]+as in the \"x\" command, and then EXP is used to get the address to examine\[\r\n\]+and examining is done as in the \"x\" command\.\[\r\n\]+With no argument, display all currently requested auto-display expressions\.\[\r\n\]+Use \"undisplay\" to cancel display requests previously made\." "help display"
# test help do
next prev parent reply other threads:[~2009-07-11 8:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-09 12:22 Hui Zhu
2009-07-09 19:22 ` Tom Tromey
2009-07-09 19:40 ` Eli Zaretskii
2009-07-11 9:28 ` Hui Zhu [this message]
2009-07-11 12:42 ` Eli Zaretskii
2009-07-11 14:15 ` Hui Zhu
2009-07-11 17:54 ` Eli Zaretskii
2009-07-11 17:59 ` Hui Zhu
2009-07-11 18:16 ` Regression for mi-disassemble.exp [Re: Add a new modifier /c to "disassemble" command to make it output binary code] Jan Kratochvil
2009-07-17 17:09 ` [commit] Fix mi-disassemble.exp regression Ulrich Weigand
2009-07-18 5:45 ` Hui Zhu
2009-07-09 19:53 ` Add a new modifier /c to "disassemble" command to make it output binary code Eli Zaretskii
2009-07-09 22:00 ` Michael Snyder
2009-07-09 23:44 ` Doug Evans
2009-07-10 9:33 ` Eli Zaretskii
2009-07-10 14:34 ` Mark Kettenis
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=daef60380907110146k57b06220r13690242b20660@mail.gmail.com \
--to=teawater@gmail.com \
--cc=dje@google.com \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=mark.kettenis@xs4all.nl \
--cc=msnyder@vmware.com \
--cc=tromey@redhat.com \
/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