Don't complain about the source language when we have pubnames/pubtypes info.

gold/
	* gdb-index.cc (Gdb_index_info_reader): Don't complain about language
	if we have pubnames/pubtypes.
This commit is contained in:
Cary Coutant 2014-05-02 13:37:32 -07:00
parent 5e49ba5736
commit 6b97515d17
2 changed files with 19 additions and 15 deletions

View File

@ -1,3 +1,8 @@
2014-05-05 Cary Coutant <ccoutant@google.com>
* gdb-index.cc (Gdb_index_info_reader): Don't complain about language
if we have pubnames/pubtypes.
2014-05-02 Cary Coutant <ccoutant@google.com> 2014-05-02 Cary Coutant <ccoutant@google.com>
* defstd.cc (in_segment): Define __ehdr_start here... * defstd.cc (in_segment): Define __ehdr_start here...

View File

@ -357,20 +357,6 @@ Gdb_index_info_reader::visit_top_die(Dwarf_die* die)
case elfcpp::DW_TAG_compile_unit: case elfcpp::DW_TAG_compile_unit:
case elfcpp::DW_TAG_type_unit: case elfcpp::DW_TAG_type_unit:
this->cu_language_ = die->int_attribute(elfcpp::DW_AT_language); this->cu_language_ = die->int_attribute(elfcpp::DW_AT_language);
// Check for languages that require specialized knowledge to
// construct fully-qualified names, that we don't yet support.
if (this->cu_language_ == elfcpp::DW_LANG_Ada83
|| this->cu_language_ == elfcpp::DW_LANG_Fortran77
|| this->cu_language_ == elfcpp::DW_LANG_Fortran90
|| this->cu_language_ == elfcpp::DW_LANG_Java
|| this->cu_language_ == elfcpp::DW_LANG_Ada95
|| this->cu_language_ == elfcpp::DW_LANG_Fortran95)
{
gold_warning(_("%s: --gdb-index currently supports "
"only C and C++ languages"),
this->object()->name().c_str());
return;
}
if (die->tag() == elfcpp::DW_TAG_compile_unit) if (die->tag() == elfcpp::DW_TAG_compile_unit)
this->record_cu_ranges(die); this->record_cu_ranges(die);
// If there is a pubnames and/or pubtypes section for this // If there is a pubnames and/or pubtypes section for this
@ -378,6 +364,20 @@ Gdb_index_info_reader::visit_top_die(Dwarf_die* die)
// info to extract the names. // info to extract the names.
if (!this->read_pubnames_and_pubtypes(die)) if (!this->read_pubnames_and_pubtypes(die))
{ {
// Check for languages that require specialized knowledge to
// construct fully-qualified names, that we don't yet support.
if (this->cu_language_ == elfcpp::DW_LANG_Ada83
|| this->cu_language_ == elfcpp::DW_LANG_Fortran77
|| this->cu_language_ == elfcpp::DW_LANG_Fortran90
|| this->cu_language_ == elfcpp::DW_LANG_Java
|| this->cu_language_ == elfcpp::DW_LANG_Ada95
|| this->cu_language_ == elfcpp::DW_LANG_Fortran95)
{
gold_warning(_("%s: --gdb-index currently supports "
"only C and C++ languages"),
this->object()->name().c_str());
return;
}
if (die->tag() == elfcpp::DW_TAG_compile_unit) if (die->tag() == elfcpp::DW_TAG_compile_unit)
++Gdb_index_info_reader::dwarf_cu_nopubnames_count; ++Gdb_index_info_reader::dwarf_cu_nopubnames_count;
else else
@ -392,7 +392,6 @@ Gdb_index_info_reader::visit_top_die(Dwarf_die* die)
this->object()->name().c_str()); this->object()->name().c_str());
return; return;
} }
} }
// Visit the children of PARENT, looking for symbols to add to the index. // Visit the children of PARENT, looking for symbols to add to the index.