+/* Buildsym's counterpart to struct compunit_symtab. */
+
+struct buildsym_compunit
+{
+ /* Start recording information about a primary source file (IOW, not an
+ included source file).
+ COMP_DIR is the directory in which the compilation unit was compiled
+ (or NULL if not known). */
+
+ buildsym_compunit (struct objfile *objfile_, const char *name,
+ const char *comp_dir_, enum language language_,
+ CORE_ADDR last_addr);
+
+ /* Reopen an existing compunit_symtab so that additional symbols can
+ be added to it. Arguments are as for the main constructor. CUST
+ is the expandable compunit_symtab to be reopened. */
+
+ buildsym_compunit (struct objfile *objfile_, const char *name,
+ const char *comp_dir_, enum language language_,
+ CORE_ADDR last_addr, struct compunit_symtab *cust)
+ : m_objfile (objfile_),
+ m_last_source_file (name == nullptr ? nullptr : xstrdup (name)),
+ m_comp_dir (comp_dir_ == nullptr ? nullptr : xstrdup (comp_dir_)),
+ m_compunit_symtab (cust),
+ m_language (language_),
+ m_last_source_start_addr (last_addr)
+ {
+ }
+
+ ~buildsym_compunit ();
+
+ DISABLE_COPY_AND_ASSIGN (buildsym_compunit);
+
+ void set_last_source_file (const char *name)
+ {
+ char *new_name = name == NULL ? NULL : xstrdup (name);
+ m_last_source_file.reset (new_name);
+ }