[gdb/symtab] Make per_cu->set_lang more strict
authorTom de Vries <tdevries@suse.de>
Wed, 13 Jul 2022 10:20:53 +0000 (12:20 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 13 Jul 2022 10:20:53 +0000 (12:20 +0200)
commit52c0a455466aa437e4b8d6967e44767c8f3fa260
tree8bc1c87e84046736a961239650478b4f3b1793f9
parentdd4c046506cd4da46b439a2b4f8b6d933ecbb961
[gdb/symtab] Make per_cu->set_lang more strict

We have in per_cu->set_lang this comment:
...
  void set_lang (enum language lang)
  {
    /* We'd like to be more strict here, similar to what is done in
       set_unit_type,  but currently a partial unit can go from unknown to
       minimal to ada to c.  */
...

Fix this by not setting m_lang for partial units.

This requires us to move the m_unit_type initialization to ensure that
m_unit_type is initialized before per_cu->m_lang.

Tested on x86_64-linux, with native and target board cc-with-dwz-m.
gdb/dwarf2/read.c
gdb/dwarf2/read.h
gdb/testsuite/gdb.dwarf2/dw2-missing-cu-tag.exp