https://sourceware.org/bugzilla/show_bug.cgi?id=29389

--- Comment #10 from Luca Bacci <luca.bacci at outlook dot com> ---
The code that repeatedly calls _bfd_coff_link_input_bfd() is in
_bfd_coff_final_link():
https://github.com/bminor/binutils-gdb/blob/binutils-2_38/bfd/cofflink.c#L856

    for (o = abfd->sections; o != NULL; o = o->next)
      {
        for (p = o->map_head.link_order; p != NULL; p = p->next)
          {
            if (p->type == bfd_indirect_link_order
                && bfd_family_coff (p->u.indirect.section->owner))
              {
                sub = p->u.indirect.section->owner;
                if (! bfd_coff_link_output_has_begun (sub, & flaginfo))
                  {
                    if (! _bfd_coff_link_input_bfd (&flaginfo, sub))
                      goto error_return;
                    sub->output_has_begun = true;
                  }
              }
            else if (p->type == bfd_section_reloc_link_order
                     || p->type == bfd_symbol_reloc_link_order)
              {
                if (! _bfd_coff_reloc_link_order (abfd, &flaginfo, o, p))
                  goto error_return;
              }
            else
              {
                if (! _bfd_default_link_order (abfd, info, o, p))
                  goto error_return;
              }
          }
      }

But I don't quite know where the needed memory is freed. I see that hash maps
are used, could it be that some hash maps are indexed by filenames?

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to