The bug is
in binutils/binemul.c
function do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd, bfd_boolean 
verbose, bfd_boolean flatten)
the line is
if (do_ar_emul_default_append (after_bfd, elt, verbose, TRUE))

where elt is the object within the archive to be added to this archive

unfortunately, the code that calculates for whether replace is possible
is in ar.c - functions in this file have no way of knowing what previous
elements exist, and the do_ar_emul_default_replace method implementation
is therefore stupid.

hmm, looking at struct bfd, I see ...

  /* Stuff only useful for archives.  */
  void *arelt_data;
  struct bfd *my_archive;      /* The containing archive BFD.  */
  struct bfd *archive_next;    /* The next BFD in the archive.  */
  struct bfd *archive_head;    /* The first BFD in the archive.  */
  struct bfd *nested_archives; /* List of nested archive in a flattened
                                  thin archive.  */
so I guess it won't be too hard to fix

-- 
ar duplicates files when flattening thin archives
https://bugs.launchpad.net/bugs/565227
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to