diff options
author | Doug Evans <xdje42@gmail.com> | 2015-08-14 21:45:54 -0700 |
---|---|---|
committer | Doug Evans <xdje42@gmail.com> | 2015-08-14 21:45:54 -0700 |
commit | 6ff0ba5f7b8a2b10642bbb233a32043595c55670 (patch) | |
tree | c5292016ff0e4c7a254c227d9a7c9579b05e8ff1 /gdb/testsuite/gdb.base/disasm-optim.c | |
parent | b56ccc202ab674998baf52a710d736702734f9ab (diff) | |
download | gdb-6ff0ba5f7b8a2b10642bbb233a32043595c55670.zip gdb-6ff0ba5f7b8a2b10642bbb233a32043595c55670.tar.gz gdb-6ff0ba5f7b8a2b10642bbb233a32043595c55670.tar.bz2 |
New /s modifier for the disassemble command.
The "source centric" /m option to the disassemble command is often
unhelpful, e.g., in the presence of optimized code.
This patch adds a /s modifier that is better.
For one, /m only prints instructions from the originating source file,
leaving out instructions from e.g., inlined functions from other files.
gdb/ChangeLog:
PR gdb/11833
* NEWS: Document new /s modifier for the disassemble command.
* cli/cli-cmds.c (disassemble_command): Add support for /s.
(_initialize_cli_cmds): Update online docs of disassemble command.
* disasm.c: #include "source.h".
(struct deprecated_dis_line_entry): Renamed from dis_line_entry.
All uses updated.
(dis_line_entry): New struct.
(hash_dis_line_entry, eq_dis_line_entry): New functions.
(allocate_dis_line_table): New functions.
(maybe_add_dis_line_entry, line_has_code_p): New functions.
(dump_insns): New arg end_pc. All callers updated.
(do_mixed_source_and_assembly_deprecated): Renamed from
do_mixed_source_and_assembly. All callers updated.
(do_mixed_source_and_assembly): New function.
(gdb_disassembly): Handle /s (DISASSEMBLY_SOURCE).
* disasm.h (DISASSEMBLY_SOURCE_DEPRECATED): Renamed from
DISASSEMBLY_SOURCE. All uses updated.
(DISASSEMBLY_SOURCE): New macro.
* mi/mi-cmd-disas.c (mi_cmd_disassemble): New modes 4,5.
gdb/doc/ChangeLog:
* gdb.texinfo (Machine Code): Update docs for mixed source/assembly
disassembly.
(GDB/MI Data Manipulation): Update docs for new disassembly modes.
gdb/testsuite/ChangeLog:
* gdb.mi/mi-disassemble.exp: Update.
* gdb.base/disasm-optim.S: New file.
* gdb.base/disasm-optim.c: New file.
* gdb.base/disasm-optim.h: New file.
* gdb.base/disasm-optim.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.base/disasm-optim.c')
-rw-r--r-- | gdb/testsuite/gdb.base/disasm-optim.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/disasm-optim.c b/gdb/testsuite/gdb.base/disasm-optim.c new file mode 100644 index 0000000..710c8a7 --- /dev/null +++ b/gdb/testsuite/gdb.base/disasm-optim.c @@ -0,0 +1,27 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright (C) 2015 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "disasm-optim.h" + +volatile int x, y; + +int +main () +{ + x = foo (y); + return 0; +} |