* [PATCH] Fix regression in -file-list-exec-source-files command.
@ 2010-08-19 9:18 Joel Brobecker
2010-08-19 10:01 ` Joel Brobecker
0 siblings, 1 reply; 6+ messages in thread
From: Joel Brobecker @ 2010-08-19 9:18 UTC (permalink / raw)
To: gdb-patches; +Cc: Joel Brobecker
This is to fix one of the issues that was blocking for the 7.2 release :).
See http://sourceware.org/ml/gdb/2010-07/msg00118.html for
a description of the problem. Namely, the file and fullname
fields are inverted in the output of the -file-list-exec-source-files
GDB/MI command:
(gdb) interpreter-exec mi -file-list-exec-source-files
^done,files=[{file="/takamaka.a/brobecke/ex/list-exec-source-files/foo.c",fullname="foo.c"},{file="/takamaka.a/brobecke/ex/list-exec-source-files/foo.c",fullname="foo.c"},{file="",fullname="init.c"},{file="",fullname="../sysdeps/x86_64/elf/start.S"},{file="",fullname="../sysdeps/x86_64/elf/start.S"}]
It turns out to be a silly thinko: The map_symbol_filenames function
calls the psymtab version of map_symbol_filenames routine, and this
version called the callback function with filename and fullname
in the wrong order (fullname/filename instead of filename/fullname).
The routine description in symfile.h confirst that expected order for
the FUN callback parameters:
/* Call a callback for every file defined in OBJFILE. FUN is the
callback. It is passed the file's name, the file's full name,
and the DATA passed to this function. */
void (*map_symbol_filenames) (struct objfile *objfile,
void (*fun) (const char *, const char *,
void *),
void *data);
Fixing this error uncovered another location where the arguments
were reversed: maybe_add_partial_symtab_filename. Once the first
error was fixed, the debugger would crash while attempting to do
completion, because it was given a NULL fullname instead of the
non-NULL filename.
IMO, we would had a better chance of avoiding this sort of issue if we
had named the parameters in the callback function. It was less than
immediate to verify the order of arguments when I found the source of
the first problem (unnamed parameters, and lack of function documentation).
What I suggest is to create a type for the function pointer callback,
and have the parameters named and documented... But that can be taken
care of through another patch.
gdb/ChangeLog:
* psymtab.c (map_symbol_filenames_psymtab): Call FUN with
the arguments in the correct order.
* symtab.c (maybe_add_partial_symtab_filename): Declare
the arguments in the correct order.
I've checked this in HEAD and 7.2 branch, as it seems sufficiently obvious.
This was tested on x86_64-linux in HEAD. I'll see whether it's possible
to create a regression test or not, next.
---
gdb/ChangeLog | 7 +++++++
gdb/psymtab.c | 2 +-
gdb/symtab.c | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b889876..580be2b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2010-08-19 Joel Brobecker <brobecker@adacore.com>
+
+ * psymtab.c (map_symbol_filenames_psymtab): Call FUN with
+ the arguments in the correct order.
+ * symtab.c (maybe_add_partial_symtab_filename): Declare
+ the arguments in the correct order.
+
2010-08-19 Jan Kratochvil <jan.kratochvil@redhat.com>
* varobj.c (varobj_create): Replace variable old_fi with old_id,
diff --git a/gdb/psymtab.c b/gdb/psymtab.c
index bc47681..228b7a8 100644
--- a/gdb/psymtab.c
+++ b/gdb/psymtab.c
@@ -913,7 +913,7 @@ map_symbol_filenames_psymtab (struct objfile *objfile,
continue;
fullname = psymtab_to_fullname (ps);
- (*fun) (fullname, ps->filename, data);
+ (*fun) (ps->filename, fullname, data);
}
}
diff --git a/gdb/symtab.c b/gdb/symtab.c
index d43d573..baf6d94 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -4072,7 +4072,7 @@ struct add_partial_filename_data
/* A callback for map_partial_symbol_filenames. */
static void
-maybe_add_partial_symtab_filename (const char *fullname, const char *filename,
+maybe_add_partial_symtab_filename (const char *filename, const char *fullname,
void *user_data)
{
struct add_partial_filename_data *data = user_data;
--
1.7.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix regression in -file-list-exec-source-files command.
2010-08-19 9:18 [PATCH] Fix regression in -file-list-exec-source-files command Joel Brobecker
@ 2010-08-19 10:01 ` Joel Brobecker
2010-08-19 16:35 ` Doug Evans
0 siblings, 1 reply; 6+ messages in thread
From: Joel Brobecker @ 2010-08-19 10:01 UTC (permalink / raw)
To: gdb-patches
> This was tested on x86_64-linux in HEAD. I'll see whether it's possible
> to create a regression test or not, next.
The problem that I am seeing is that, in the testsuite, we compile the
examples using the source full filenames. For instance, using
gdb.base/arrayidx.exp, we do:
% gcc /[...]/gdb.base/arrayidx.c -g -lm -o [...]
As a result, the filename field ends up containing the fullname:
(gdb) interpreter-exec mi -file-list-exec-source-files
^done,files=[{file="/[...]/gdb.base/arrayidx.c",fullname="/[...]/gdb.base/arrayidx.c"}, [...]
Because of that, we cannot use one of our source files to demonstrate
the problem.
The only thing I can think of that we could use to demonstrate the problem
is to check for empty filenames. Before the patch was applied, one of
the entries looked like this:
{file="",fullname="init.c"}
There is no guaranty that this is going to happen on all platforms,
or even appear consistently on a given platform. This is probably
dependent on the compiler as well as the way system libraries such
as the C library have been built. But I suppose that is better than
nothing.
--
Joel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix regression in -file-list-exec-source-files command.
2010-08-19 10:01 ` Joel Brobecker
@ 2010-08-19 16:35 ` Doug Evans
2010-08-19 18:35 ` [RFA/commit/testsuite] Add test for -file-list-exec-source-files Joel Brobecker
0 siblings, 1 reply; 6+ messages in thread
From: Doug Evans @ 2010-08-19 16:35 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
On Thu, Aug 19, 2010 at 3:01 AM, Joel Brobecker <brobecker@adacore.com> wrote:
>> This was tested on x86_64-linux in HEAD. I'll see whether it's possible
>> to create a regression test or not, next.
>
> The problem that I am seeing is that, in the testsuite, we compile the
> examples using the source full filenames. For instance, using
> gdb.base/arrayidx.exp, we do:
>
> % gcc /[...]/gdb.base/arrayidx.c -g -lm -o [...]
>
> As a result, the filename field ends up containing the fullname:
>
> (gdb) interpreter-exec mi -file-list-exec-source-files
> ^done,files=[{file="/[...]/gdb.base/arrayidx.c",fullname="/[...]/gdb.base/arrayidx.c"}, [...]
>
> Because of that, we cannot use one of our source files to demonstrate
> the problem.
>
> The only thing I can think of that we could use to demonstrate the problem
> is to check for empty filenames. Before the patch was applied, one of
> the entries looked like this:
>
> {file="",fullname="init.c"}
>
> There is no guaranty that this is going to happen on all platforms,
> or even appear consistently on a given platform. This is probably
> dependent on the compiler as well as the way system libraries such
> as the C library have been built. But I suppose that is better than
> nothing.
While not ideal, could you create a test in assembler/dwarf?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [RFA/commit/testsuite] Add test for -file-list-exec-source-files
2010-08-19 16:35 ` Doug Evans
@ 2010-08-19 18:35 ` Joel Brobecker
2010-08-19 18:55 ` Jan Kratochvil
0 siblings, 1 reply; 6+ messages in thread
From: Joel Brobecker @ 2010-08-19 18:35 UTC (permalink / raw)
To: gdb-patches; +Cc: Joel Brobecker
Hello,
As suggested by Doug, we can use a hand-written assembly file to
force the type of debugging information that we need in order to
reproduce the problem that was reported with -file-list-exec-source-files.
Although not ideal, as mentioned Doug, I think that is much better than
what I initially suggested, as are sure that we will be testing the fix
on GNU targets running ELF. And I think that this is more than enough
to ensure that any regression gets noticed promptly.
I almost entirely copied the dw2-basic testcase, and just adapted it
loosely to do my own test rather than make a minimal one. As such,
I preserved the original copyright years and also put a note mentioning
where the testcase comes from.
gdb/testsuite/ChangeLog:
* gdb.dwarf/dw2-filename.S, gdb.dwarf/dw2-filename.exp: New files.
Tested on x86_64-linux. Fails before the fix is applied, passes afterwards.
Does this look OK?
---
gdb/testsuite/gdb.dwarf2/dw2-filename.S | 199 +++++++++++++++++++++++++++++
gdb/testsuite/gdb.dwarf2/dw2-filename.exp | 54 ++++++++
2 files changed, 253 insertions(+), 0 deletions(-)
create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-filename.S
create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-filename.exp
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-filename.S b/gdb/testsuite/gdb.dwarf2/dw2-filename.S
new file mode 100644
index 0000000..a6c9da8
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.S
@@ -0,0 +1,199 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004, 2007, 2008, 2009, 2010 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/>. */
+
+/* Test a minimal file containing DWARF-2 information. This test also
+ serves as a skeleton for other DWARF-2 tests. Most other tests will
+ not be this extensively itemized and commented... */
+
+/* Dummy function to provide debug information for. */
+
+ .text
+.Lbegin_text1:
+ .globl func_cu1
+ .type func_cu1, %function
+func_cu1:
+.Lbegin_func_cu1:
+ .int 0
+.Lend_func_cu1:
+ .size func_cu1, .-func_cu1
+.Lend_text1:
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .4byte .Lline1_begin /* DW_AT_stmt_list */
+ .4byte .Lend_text1 /* DW_AT_high_pc */
+ .4byte .Lbegin_text1 /* DW_AT_low_pc */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+ /* func_cu1 */
+ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
+ .byte 1 /* DW_AT_external */
+ .byte 1 /* DW_AT_decl_file */
+ .byte 2 /* DW_AT_decl_line */
+ .ascii "func_cu1\0" /* DW_AT_name */
+ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
+ .4byte .Lbegin_func_cu1 /* DW_AT_low_pc */
+ .4byte .Lend_func_cu1 /* DW_AT_high_pc */
+ .byte 1 /* DW_AT_frame_base: length */
+ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
+
+.Ltype_int:
+ .uleb128 3 /* Abbrev: DW_TAG_base_type */
+ .ascii "int\0" /* DW_AT_name */
+ .byte 4 /* DW_AT_byte_size */
+ .byte 5 /* DW_AT_encoding */
+
+ .byte 0 /* End of children of CU */
+
+.Lcu1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 1 /* has_children */
+ .uleb128 0x10 /* DW_AT_stmt_list */
+ .uleb128 0x6 /* DW_FORM_data4 */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 2 /* Abbrev code */
+ .uleb128 0x2e /* DW_TAG_subprogram */
+ .byte 0 /* has_children */
+ .uleb128 0x3f /* DW_AT_external */
+ .uleb128 0xc /* DW_FORM_flag */
+ .uleb128 0x3a /* DW_AT_decl_file */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3b /* DW_AT_decl_line */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x49 /* DW_AT_type */
+ .uleb128 0x13 /* DW_FORM_ref4 */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x40 /* DW_AT_frame_base */
+ .uleb128 0xa /* DW_FORM_block1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 3 /* Abbrev code */
+ .uleb128 0x24 /* DW_TAG_base_type */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0xb /* DW_AT_byte_size */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3e /* DW_AT_encoding */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+/* Line table */
+ .section .debug_line
+.Lline1_begin:
+ .4byte .Lline1_end - .Lline1_start /* Initial length */
+.Lline1_start:
+ .2byte 2 /* Version */
+ .4byte .Lline1_lines - .Lline1_hdr /* header_length */
+.Lline1_hdr:
+ .byte 1 /* Minimum insn length */
+ .byte 1 /* default_is_stmt */
+ .byte 1 /* line_base */
+ .byte 1 /* line_range */
+ .byte 0x10 /* opcode_base */
+
+ /* Standard lengths */
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+
+ /* Include directories */
+ .byte 0
+
+ /* File names */
+ .ascii "file1.txt\0"
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+
+ .byte 0
+
+.Lline1_lines:
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lbegin_func_cu1
+
+ .byte 3 /* DW_LNS_advance_line */
+ .sleb128 3 /* ... to 4 */
+
+ .byte 1 /* DW_LNS_copy */
+
+ .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lend_func_cu1
+
+ .byte 0 /* DW_LNE_end_of_sequence */
+ .uleb128 1
+ .byte 1
+
+.Lline1_end:
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-filename.exp b/gdb/testsuite/gdb.dwarf2/dw2-filename.exp
new file mode 100644
index 0000000..f0c5ae8
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.exp
@@ -0,0 +1,54 @@
+# Copyright 2004, 2005, 2007, 2008, 2009, 2010 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/>.
+
+# Note: Inspired from dw2-basic.exp.
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+ && ![istarget *-*-gnu*]
+ && ![istarget *-*-elf*]
+ && ![istarget *-*-openbsd*]
+ && ![istarget arm-*-eabi*]
+ && ![istarget powerpc-*-eabi*]} {
+ return 0
+}
+
+set testfile "dw2-filename"
+set dwarf_srcfile "file1.txt"
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}.x
+
+if { [gdb_compile "${srcdir}/${subdir}/main.c" "main.o" object {debug}] != "" } {
+ return -1
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${testfile}.o" object {nodebug}] != "" } {
+ return -1
+}
+
+if { [gdb_compile "${testfile}.o main.o" "${binfile}" executable {debug}] != "" } {
+ return -1
+}
+
+clean_restart ${testfile}.x
+
+# Verify that -file-list-exec-source-files returns a list where
+# the "file" is "file1.txt" (file base name), and "fullname" is
+# the full path to that file. What we want to verify, most of all,
+# is that the file and fullname fields are now inverted.
+gdb_test "interpreter-exec mi -file-list-exec-source-files" \
+ ".*{file=\"file1\\.txt\",fullname=\".+file1\\.txt\"}.*"
+
--
1.7.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFA/commit/testsuite] Add test for -file-list-exec-source-files
2010-08-19 18:35 ` [RFA/commit/testsuite] Add test for -file-list-exec-source-files Joel Brobecker
@ 2010-08-19 18:55 ` Jan Kratochvil
2010-09-02 15:37 ` Joel Brobecker
0 siblings, 1 reply; 6+ messages in thread
From: Jan Kratochvil @ 2010-08-19 18:55 UTC (permalink / raw)
To: Joel Brobecker; +Cc: gdb-patches
On Thu, 19 Aug 2010 20:35:12 +0200, Joel Brobecker wrote:
> I almost entirely copied the dw2-basic testcase, and just adapted it
> loosely to do my own test rather than make a minimal one.
I really do not mind as the existint gdb.dwarf2/ testcases are in many cases
overcomplicated anyway but providing a simplified code still FAILing/PASSing
appropriately.
Thanks,
Jan
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.S
@@ -0,0 +1,53 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004, 2007, 2008, 2009, 2010 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/>. */
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+.Lcu1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.exp
@@ -0,0 +1,44 @@
+# Copyright 2004, 2005, 2007, 2008, 2009, 2010 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/>.
+
+# Note: Inspired from dw2-basic.exp.
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+ && ![istarget *-*-gnu*]
+ && ![istarget *-*-elf*]
+ && ![istarget *-*-openbsd*]
+ && ![istarget arm-*-eabi*]
+ && ![istarget powerpc-*-eabi*]} {
+ return 0
+}
+
+set testfile "dw2-filename"
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}.x
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {nodebug}] != "" } {
+ return -1
+}
+
+clean_restart ${testfile}.x
+
+# Verify that -file-list-exec-source-files returns a list where
+# the "file" is "file1.txt" (file base name), and "fullname" is
+# the full path to that file. What we want to verify, most of all,
+# is that the file and fullname fields are now inverted.
+gdb_test "interpreter-exec mi -file-list-exec-source-files" \
+ ".*{file=\"file1\\.txt\",fullname=\".+file1\\.txt\"}.*"
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFA/commit/testsuite] Add test for -file-list-exec-source-files
2010-08-19 18:55 ` Jan Kratochvil
@ 2010-09-02 15:37 ` Joel Brobecker
0 siblings, 0 replies; 6+ messages in thread
From: Joel Brobecker @ 2010-09-02 15:37 UTC (permalink / raw)
To: Jan Kratochvil; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 391 bytes --]
> > I almost entirely copied the dw2-basic testcase, and just adapted it
> > loosely to do my own test rather than make a minimal one.
>
> I really do not mind as the existint gdb.dwarf2/ testcases are in many cases
> overcomplicated anyway but providing a simplified code still FAILing/PASSing
> appropriately.
:-) Thanks for doing that! I checked this testcase in as attached.
--
Joel
[-- Attachment #2: tc.diff --]
[-- Type: text/x-diff, Size: 4748 bytes --]
commit 46713d72258fedf05fb0fa3f385c42b398a3e47b
Author: Joel Brobecker <brobecker@adacore.com>
Date: Thu Aug 19 20:15:32 2010 +0200
Add test for -file-list-exec-source-files
gdb/testsuite/ChangeLog:
* gdb.dwarf/dw2-filename.S, gdb.dwarf/dw2-filename.exp: New files.
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 12e33a7..084c227 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-02 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Joel Brobecker <brobecker@adacore.com>
+
+ * gdb.dwarf/dw2-filename.S, gdb.dwarf/dw2-filename.exp: New files.
+
2010-08-31 Doug Evans <dje@google.com>
* gdb.dwarf2/dw4-sig-types.exp: Use .x for executable name.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-filename.S b/gdb/testsuite/gdb.dwarf2/dw2-filename.S
new file mode 100644
index 0000000..7cac4ab
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.S
@@ -0,0 +1,53 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2004, 2007, 2008, 2009, 2010 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/>. */
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+.Lcu1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-filename.exp b/gdb/testsuite/gdb.dwarf2/dw2-filename.exp
new file mode 100644
index 0000000..e1afe64
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-filename.exp
@@ -0,0 +1,44 @@
+# Copyright 2004, 2005, 2007, 2008, 2009, 2010 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/>.
+
+# Note: Inspired from dw2-basic.exp.
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+ && ![istarget *-*-gnu*]
+ && ![istarget *-*-elf*]
+ && ![istarget *-*-openbsd*]
+ && ![istarget arm-*-eabi*]
+ && ![istarget powerpc-*-eabi*]} {
+ return 0
+}
+
+set testfile "dw2-filename"
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}.x
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {nodebug}] != "" } {
+ return -1
+}
+
+clean_restart ${testfile}.x
+
+# Verify that -file-list-exec-source-files returns a list where
+# the "file" is "file1.txt" (file base name), and "fullname" is
+# the full path to that file. What we want to verify, most of all,
+# is that the file and fullname fields are now inverted.
+gdb_test "interpreter-exec mi -file-list-exec-source-files" \
+ ".*{file=\"file1\\.txt\",fullname=\".+file1\\.txt\"}.*"
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-09-02 15:21 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-19 9:18 [PATCH] Fix regression in -file-list-exec-source-files command Joel Brobecker
2010-08-19 10:01 ` Joel Brobecker
2010-08-19 16:35 ` Doug Evans
2010-08-19 18:35 ` [RFA/commit/testsuite] Add test for -file-list-exec-source-files Joel Brobecker
2010-08-19 18:55 ` Jan Kratochvil
2010-09-02 15:37 ` Joel Brobecker
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).