diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 033aad8983..deedcd97e9 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2011-02-25 Jan Kratochvil + + * 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 * gdb.base/break.exp: Remove debugging 'printf' accidentally diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges.S b/gdb/testsuite/gdb.dwarf2/dw2-ranges.S deleted file mode 100644 index f87e289b2b..0000000000 --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges.S +++ /dev/null @@ -1,46 +0,0 @@ -/* - 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 . - */ - -/* 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 diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges3.S b/gdb/testsuite/gdb.dwarf2/dw2-ranges.c similarity index 70% rename from gdb/testsuite/gdb.dwarf2/dw2-ranges3.S rename to gdb/testsuite/gdb.dwarf2/dw2-ranges.c index e1539cea18..3572645c57 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges3.S +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges.c @@ -19,18 +19,16 @@ 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" +/* `.fini' section is here to make sure `dw2-ranges.c' + vs. `dw2-ranges2.c' overlap their DW_AT_ranges with each other. */ - /* 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 +void __attribute__ ((section (".fini"))) +func (void) +{ +} - .text - - .globl main3 - .func main3 -main3: .int 0 - .endfunc - .size main3, . - main3 +int +main (void) +{ + return 0; +} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp index d3b8fe57c4..39fb21ec30 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges.exp @@ -23,24 +23,47 @@ if {![dwarf2_support]} { 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 } @@ -62,4 +85,13 @@ gdb_test "info line main" "Line \[0-9\]* of .* starts at address .* and ends at 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 + } +} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges2.S b/gdb/testsuite/gdb.dwarf2/dw2-ranges2.c similarity index 59% rename from gdb/testsuite/gdb.dwarf2/dw2-ranges2.S rename to gdb/testsuite/gdb.dwarf2/dw2-ranges2.c index e41e5b3c06..538dbe5937 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges2.S +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges2.c @@ -19,28 +19,15 @@ 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" +/* `.fini' section is here to make sure `dw2-ranges.c' + vs. `dw2-ranges2.c' overlap their DW_AT_ranges with each other. */ - /* 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 +void __attribute__ ((section (".fini"))) +func2 (void) +{ +} - .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 +void +main2 (void) +{ +} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges3.c b/gdb/testsuite/gdb.dwarf2/dw2-ranges3.c new file mode 100644 index 0000000000..b42a98dcc8 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges3.c @@ -0,0 +1,21 @@ +/* + 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 . + */ + +void +main3 (void) +{ +}