From 40e3ad0ebb0c71008b928d6d350e9258dc1dcf2a Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 20 Aug 2015 12:30:08 +0100 Subject: Fix language of compilation unit with unknown file extension Here, in dwarfread.c:process_full_comp_unit: /* Set symtab language to language from DW_AT_language. If the compilation is from a C file generated by language preprocessors, do not set the language if it was already deduced by start_subfile. */ if (!(cu->language == language_c && COMPUNIT_FILETABS (cust)->language != language_c)) COMPUNIT_FILETABS (cust)->language = cu->language; in case start_subfile doesn't manage to deduce a language COMPUNIT_FILETABS(cust)->language ends up as language_unknown, not language_c. So the condition above evals false and we never set the language from the cu's language. gdb/ChangeLog: 2015-08-20 Pedro Alves * dwarf2read.c (process_full_comp_unit): To tell whether start_subfile managed to deduce a language, test for language_unknown instead of language_c. gdb/testsuite/ChangeLog: 2015-08-20 Pedro Alves * gdb.dwarf2/comp-unit-lang.exp: New file. * gdb.dwarf2/comp-unit-lang.c: New file. --- gdb/testsuite/gdb.dwarf2/comp-unit-lang.c | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 gdb/testsuite/gdb.dwarf2/comp-unit-lang.c (limited to 'gdb/testsuite/gdb.dwarf2/comp-unit-lang.c') diff --git a/gdb/testsuite/gdb.dwarf2/comp-unit-lang.c b/gdb/testsuite/gdb.dwarf2/comp-unit-lang.c new file mode 100644 index 0000000..2835209 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/comp-unit-lang.c @@ -0,0 +1,34 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011-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 . */ + +asm (".section \".text\""); +asm (".balign 8"); +asm ("func_start: .globl func_start"); + +static void +func (void) +{ +} + +asm ("func_end: .globl func_end"); + +int +main (void) +{ + func (); + return 0; +} -- cgit v1.1