static void
prealloc_cu_tu_list (unsigned int nshndx)
{
+ if (nshndx == 0)
+ /* Always allocate at least one entry for the end-marker. */
+ nshndx = 1;
+
if (shndx_pool == NULL)
{
shndx_pool_size = nshndx;
These sections are extensions for Fission.
See http://gcc.gnu.org/wiki/DebugFissionDWP. */
-static int
+static bool
process_cu_tu_index (struct dwarf_section *section, int do_display)
{
unsigned char *phdr = section->start;
if (phdr == NULL)
{
warn (_("Section %s is empty\n"), section->name);
- return 0;
+ return false;
}
/* PR 17512: file: 002-376-0.004. */
if (section->size < 24)
{
warn (_("Section %s is too small to contain a CU/TU header\n"),
section->name);
- return 0;
+ return false;
}
phash = phdr;
"Section %s is too small for %u slots\n",
nslots),
section->name, nslots);
- return 0;
+ return false;
}
if (version == 1)
if (shndx_list < ppool)
{
warn (_("Section index pool located before start of section\n"));
- return 0;
+ return false;
}
printf (_(" [%3d] Signature: %#" PRIx64 " Sections: "),
{
warn (_("Section %s too small for shndx pool\n"),
section->name);
- return 0;
+ return false;
}
SAFE_BYTE_GET (shndx, shndx_list, 4, limit);
if (shndx == 0)
{
warn (_("Section %s too small for offset and size tables\n"),
section->name);
- return 0;
+ return false;
}
if (do_display)
{
warn (_("Row index (%u) is larger than number of used entries (%u)\n"),
row, nused);
- return 0;
+ return false;
}
if (!do_display)
printf ("\n");
warn (_("Too many rows/columns in DWARF index section %s\n"),
section->name);
- return 0;
+ return false;
}
SAFE_BYTE_GET (val, p, 4, limit);
if (do_display)
printf ("\n");
- return 1;
+ return true;
}
static int cu_tu_indexes_read = -1; /* Tri-state variable. */