https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77985

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
But also:

  /* Add the name for the main input file now.  We delayed this from
     dwarf2out_init to avoid complications with PCH.  */
  add_name_attribute (comp_unit_die (), remap_debug_filename (filename));
  if (!IS_ABSOLUTE_PATH (filename) || targetm.force_at_comp_dir)
    add_comp_dir_attribute (comp_unit_die ());
  else if (get_AT (comp_unit_die (), DW_AT_comp_dir) == NULL)
    {
      bool p = false;
      file_table->traverse<bool *, file_table_relative_p> (&p);
      if (p)
        add_comp_dir_attribute (comp_unit_die ());
    }

where the file table seems to contain "<built-in>".

Index: dwarf2out.c
===================================================================
--- dwarf2out.c (revision 241148)
+++ dwarf2out.c (working copy)
@@ -26422,7 +26422,8 @@ int
 file_table_relative_p (dwarf_file_data **slot, bool *p)
 {
   struct dwarf_file_data *d = *slot;
-  if (!IS_ABSOLUTE_PATH (d->filename))
+  if (!IS_ABSOLUTE_PATH (d->filename)
+      && d->filename[0] != '<')
     {
       *p = true;
       return 0;

fixes this.

Reply via email to