* object.cc (Object::section_contents): Don't try to get a view if
	the section has length zero.
	(Object::handle_gnu_warning_section): If the section is empty, use
	the name of the section as the warning.
This commit is contained in:
Ian Lance Taylor 2009-06-23 07:19:35 +00:00
parent f7c8a183e8
commit 8d63875c54
2 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2009-06-23 Ian Lance Taylor <iant@google.com>
PR 10147
* object.cc (Object::section_contents): Don't try to get a view if
the section has length zero.
(Object::handle_gnu_warning_section): If the section is empty, use
the name of the section as the warning.
2009-06-23 Ian Lance Taylor <iant@google.com>
PR 10133

View File

@ -170,6 +170,11 @@ Object::section_contents(unsigned int shndx, section_size_type* plen,
{
Location loc(this->do_section_contents(shndx));
*plen = convert_to_section_size_type(loc.data_size);
if (*plen == 0)
{
static const unsigned char empty[1] = { '\0' };
return empty;
}
return this->get_view(loc.file_offset, *plen, true, cache);
}
@ -226,6 +231,12 @@ Object::handle_gnu_warning_section(const char* name, unsigned int shndx,
section_size_type len;
const unsigned char* contents = this->section_contents(shndx, &len,
false);
if (len == 0)
{
const char* warning = name + warn_prefix_len;
contents = reinterpret_cast<const unsigned char*>(warning);
len = strlen(warning);
}
std::string warning(reinterpret_cast<const char*>(contents), len);
symtab->add_warning(name + warn_prefix_len, this, warning);
return true;