diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-07-04 20:47:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-07-04 20:47:10 +0000 |
commit | 4c8d7e6be162d79b66f75d5049a870b9b306254b (patch) | |
tree | 5980465bd1156e06daeadda5557c4b8c3d414bed /binutils/objcopy.c | |
parent | cbd0453da48ab23efdc955e086578064b899c0c4 (diff) | |
download | gdb-4c8d7e6be162d79b66f75d5049a870b9b306254b.zip gdb-4c8d7e6be162d79b66f75d5049a870b9b306254b.tar.gz gdb-4c8d7e6be162d79b66f75d5049a870b9b306254b.tar.bz2 |
* objcopy.c (copy_archive): Record all output BFD's, and close
them before unlinking them and removing the temporary directory,
to avoid NFS problems.
PR 6795.
Diffstat (limited to 'binutils/objcopy.c')
-rw-r--r-- | binutils/objcopy.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/binutils/objcopy.c b/binutils/objcopy.c index ba00c01..0ef9ceb 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -820,6 +820,7 @@ copy_archive (ibfd, obfd, output_target) { struct name_list *next; char *name; + bfd *obfd; } *list, *l; bfd **ptr = &obfd->archive_head; bfd *this_element; @@ -867,6 +868,8 @@ copy_archive (ibfd, obfd, output_target) /* Open the newly output file and attach to our list. */ output_bfd = bfd_openr (output_name, output_target); + l->obfd = output_bfd; + *ptr = output_bfd; ptr = &output_bfd->next; @@ -883,15 +886,18 @@ copy_archive (ibfd, obfd, output_target) nonfatal (bfd_get_filename (obfd)); } - /* Delete all the files that we opened. */ - for (l = list; l != NULL; l = l->next) - unlink (l->name); - rmdir (dir); - if (!bfd_close (ibfd)) { nonfatal (bfd_get_filename (ibfd)); } + + /* Delete all the files that we opened. */ + for (l = list; l != NULL; l = l->next) + { + bfd_close (l->obfd); + unlink (l->name); + } + rmdir (dir); } /* The top-level control. */ |