{
if (m_pending_macros == nullptr)
m_pending_macros = new_macro_table (&m_objfile->per_bfd->storage_obstack,
- &m_objfile->per_bfd->macro_cache,
+ &m_objfile->per_bfd->string_cache,
m_compunit_symtab);
return m_pending_macros;
}
void
buildsym_compunit::record_line (struct subfile *subfile, int line,
- CORE_ADDR pc)
+ CORE_ADDR pc, bool is_stmt)
{
struct linetable_entry *e;
m_have_line_numbers = true;
}
- if (subfile->line_vector->nitems + 1 >= subfile->line_vector_length)
+ if (subfile->line_vector->nitems >= subfile->line_vector_length)
{
subfile->line_vector_length *= 2;
subfile->line_vector = (struct linetable *)
end of sequence markers. All we lose is the ability to set
breakpoints at some lines which contain no instructions
anyway. */
- if (line == 0 && subfile->line_vector->nitems > 0)
+ if (line == 0)
{
- e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
- while (subfile->line_vector->nitems > 0 && e->pc == pc)
+ while (subfile->line_vector->nitems > 0)
{
- e--;
+ e = subfile->line_vector->item + subfile->line_vector->nitems - 1;
+ if (e->pc != pc)
+ break;
subfile->line_vector->nitems--;
}
}
e = subfile->line_vector->item + subfile->line_vector->nitems++;
e->line = line;
+ e->is_stmt = is_stmt ? 1 : 0;
e->pc = pc;
}