* gdb.dwarf2/dw2-ranges.S: Rename to ...
* gdb.dwarf2/dw2-ranges.c: ... here, convert it to C.
* gdb.dwarf2/dw2-ranges.exp: Skip the testcase on !$gcc_compiled.
Rename srcfile, srcfile2 and srcfile3, new asmfile, asmfile2 and
asmfile3. Comment the STABS (#3) file compilation. Compile
everything through assembler. Provide KFAIL for symtab/12497.
* gdb.dwarf2/dw2-ranges2.S: Rename to ...
* gdb.dwarf2/dw2-ranges2.c: ... here, convert it to C.
* gdb.dwarf2/dw2-ranges3.S: Rename to ...
* gdb.dwarf2/dw2-ranges3.c: ... here, convert it to C.
+2011-02-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.dwarf2/dw2-ranges.S: Rename to ...
+ * gdb.dwarf2/dw2-ranges.c: ... here, convert it to C.
+ * gdb.dwarf2/dw2-ranges.exp: Skip the testcase on !$gcc_compiled.
+ Rename srcfile, srcfile2 and srcfile3, new asmfile, asmfile2 and
+ asmfile3. Comment the STABS (#3) file compilation. Compile
+ everything through assembler. Provide KFAIL for symtab/12497.
+ * gdb.dwarf2/dw2-ranges2.S: Rename to ...
+ * gdb.dwarf2/dw2-ranges2.c: ... here, convert it to C.
+ * gdb.dwarf2/dw2-ranges3.S: Rename to ...
+ * gdb.dwarf2/dw2-ranges3.c: ... here, convert it to C.
+
2011-02-24 Michael Snyder <msnyder@vmware.com>
* gdb.base/break.exp: Remove debugging 'printf' accidentally
+++ /dev/null
-/*
- Copyright 2007, 2008, 2009, 2010, 2011 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/>.
- */
-
-/* Despite the sections below will be adjacent the assembler has to produce
- DW_AT_ranges as the linker could place both sections at arbitrary locations.
- */
-
- /* Such directive is required by GAS for builds without `-g'. */
- .file 1 "dw2-ranges.S"
-
- /* Without this directive GAS will not emit DWARF2 unless we provide an
- instruction to assemble. We want to avoid any instructions to
- remain architecture independent. */
- .loc_mark_labels 1
-
- .text
-
- .globl main
- .func main
-main: .int 0
- .endfunc
- .size main, . - main
-
- /* `.fini' section is here to make sure `dw2-ranges.S'
- vs. `dw2-ranges2.S' overlap their DW_AT_ranges with each other. */
- .section .fini, "ax", @progbits
-
- .globl func
- .func func
-func: .int 0
- .endfunc
- .size func, . - func
--- /dev/null
+/*
+ Copyright 2007, 2008, 2009, 2010, 2011 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/>.
+ */
+
+/* Despite the sections below will be adjacent the assembler has to produce
+ DW_AT_ranges as the linker could place both sections at arbitrary locations.
+ */
+
+/* `.fini' section is here to make sure `dw2-ranges.c'
+ vs. `dw2-ranges2.c' overlap their DW_AT_ranges with each other. */
+
+void __attribute__ ((section (".fini")))
+func (void)
+{
+}
+
+int
+main (void)
+{
+ return 0;
+}
return 0
}
+# The .c files use __attribute__.
+if [get_compiler_info unused] {
+ return -1;
+}
+if !$gcc_compiled {
+ verbose "Skipping DW_AT_ranges test."
+ return 0
+}
+
set testfile "dw2-ranges"
-set srcfile ${testfile}.S
-set srcfile2 ${testfile}2.S
-set srcfile3 ${testfile}3.S
+set srcfile ${testfile}.c
+set srcfile2 ${testfile}2.c
+set srcfile3 ${testfile}3.c
+set asmfile ${objdir}/${subdir}/${testfile}.s
+set asmfile2 ${objdir}/${subdir}/${testfile}2.s
+set asmfile3 ${objdir}/${subdir}/${testfile}3.s
set objfile ${objdir}/${subdir}/${testfile}.o
set objfile2 ${objdir}/${subdir}/${testfile}2.o
set objfile3 ${objdir}/${subdir}/${testfile}3.o
set binfile ${objdir}/${subdir}/${testfile}
-if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objfile}" object {additional_flags=-gdwarf-2}] != "" } {
+# Generate .s without debug info but provide debug info by the assembler.
+# This way we get DW_TAG_compile_unit DIE and only that DIE.
+
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${asmfile}" assembly {}] != ""
+ || [gdb_compile "${asmfile}" "${objfile}" object {additional_flags=-gdwarf-2}] != "" } {
return -1
}
-if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${objfile2}" object {additional_flags=-gdwarf-2}] != "" } {
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${asmfile2}" assembly {}] != ""
+ || [gdb_compile "${asmfile2}" "${objfile2}" object {additional_flags=-gdwarf-2}] != "" } {
return -1
}
-if {[gdb_compile "${srcdir}/${subdir}/${srcfile3}" "${objfile3}" object {additional_flags=-gstabs}] != "" } {
+
+# STABS compilation is intentional as it tests the STABS lookup where is no
+# partial_symtab->psymtabs_addrmap supported for that CU (Compilation Unit) in
+# a file containing psymtabs_addrmap-supporting DWARF CUs.
+if {[gdb_compile "${srcdir}/${subdir}/${srcfile3}" "${asmfile3}" assembly {}] != ""
+ || [gdb_compile "${asmfile3}" "${objfile3}" object {additional_flags=-gstabs}] != "" } {
return -1
}
+
if {[gdb_compile "${objfile} ${objfile2} ${objfile3}" "${binfile}" executable {}] != "" } {
return -1
}
gdb_test "info line func" "Line \[0-9\]* of .* starts at address .* and ends at .*"
gdb_test "info line main2" "Line \[0-9\]* of .* starts at address .* and ends at .*"
gdb_test "info line func2" "Line \[0-9\]* of .* starts at address .* and ends at .*"
-gdb_test "info line main3" "Line \[0-9\]* of .* starts at address .* and ends at .*"
+
+set test "info line main3"
+gdb_test_multiple $test $test {
+ -re "Line \[0-9\]* of .* starts at address .* and ends at .*\r\n$gdb_prompt $" {
+ pass $test
+ }
+ -re "Line \[0-9\]* of .* is at address .* but contains no code\\.\r\n$gdb_prompt $" {
+ kfail symtab/12497 $test
+ }
+}
+++ /dev/null
-/*
- Copyright 2007, 2009, 2010, 2011 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/>.
- */
-
-/* Despite the sections below will be adjacent the assembler has to produce
- DW_AT_ranges as the linker could place both sections at arbitrary locations.
- */
-
- /* Such directive is required by GAS for builds without `-g'. */
- .file 1 "dw2-ranges2.S"
-
- /* Without this directive GAS will not emit DWARF2 unless we provide an
- instruction to assemble. We want to avoid any instructions to
- remain architecture independent. */
- .loc_mark_labels 1
-
- .text
-
- .globl main2
- .func main2
-main2: .int 0
- .endfunc
- .size main2, . - main2
-
- /* `.fini' section is here to make sure `dw2-ranges.S'
- vs. `dw2-ranges2.S' overlap their DW_AT_ranges with each other. */
- .section .fini, "ax", @progbits
-
- .globl func2
- .func func2
-func2: .int 0
- .endfunc
- .size func2, . - func2
--- /dev/null
+/*
+ Copyright 2007, 2009, 2010, 2011 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/>.
+ */
+
+/* Despite the sections below will be adjacent the assembler has to produce
+ DW_AT_ranges as the linker could place both sections at arbitrary locations.
+ */
+
+/* `.fini' section is here to make sure `dw2-ranges.c'
+ vs. `dw2-ranges2.c' overlap their DW_AT_ranges with each other. */
+
+void __attribute__ ((section (".fini")))
+func2 (void)
+{
+}
+
+void
+main2 (void)
+{
+}
+++ /dev/null
-/*
- Copyright 2007, 2008, 2009, 2010, 2011 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/>.
- */
-
-/* Despite the sections below will be adjacent the assembler has to produce
- DW_AT_ranges as the linker could place both sections at arbitrary locations.
- */
-
- /* Such directive is required by GAS for builds without `-g'. */
- .file 1 "dw2-ranges3.S"
-
- /* Without this directive GAS will not emit DWARF2 unless we provide an
- instruction to assemble. We want to avoid any instructions to
- remain architecture independent. */
- .loc_mark_labels 1
-
- .text
-
- .globl main3
- .func main3
-main3: .int 0
- .endfunc
- .size main3, . - main3
--- /dev/null
+/*
+ Copyright 2007, 2008, 2009, 2010, 2011 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/>.
+ */
+
+void
+main3 (void)
+{
+}