Don't write to inferior_ptid in gnu-nat.c
[deliverable/binutils-gdb.git] / binutils / binemul.c
index 35587db26bebdcf368c40c1e60c111d095685c3d..7c71b5b78c1a25116862696b7dee536f377e1c7d 100644 (file)
@@ -1,5 +1,5 @@
 /* Binutils emulation layer.
 /* Binutils emulation layer.
-   Copyright 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2002-2020 Free Software Foundation, Inc.
    Written by Tom Rix, Red Hat Inc.
 
    This file is part of GNU Binutils.
    Written by Tom Rix, Red Hat Inc.
 
    This file is part of GNU Binutils.
@@ -50,9 +50,16 @@ ar_emul_append (bfd **after_bfd, char *file_name, const char *target,
 }
 
 static bfd_boolean
 }
 
 static bfd_boolean
-do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd,
-                          bfd_boolean verbose, bfd_boolean flatten)
-  {
+any_ok (bfd *new_bfd ATTRIBUTE_UNUSED)
+{
+  return TRUE;
+}
+
+bfd_boolean
+do_ar_emul_append (bfd **after_bfd, bfd *new_bfd,
+                  bfd_boolean verbose, bfd_boolean flatten,
+                  bfd_boolean (*check) (bfd *))
+{
   /* When flattening, add the members of an archive instead of the
      archive itself.  */
   if (flatten && bfd_check_format (new_bfd, bfd_archive))
   /* When flattening, add the members of an archive instead of the
      archive itself.  */
   if (flatten && bfd_check_format (new_bfd, bfd_archive))
@@ -64,7 +71,7 @@ do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd,
            elt;
            elt = bfd_openr_next_archived_file (new_bfd, elt))
         {
            elt;
            elt = bfd_openr_next_archived_file (new_bfd, elt))
         {
-          if (do_ar_emul_default_append (after_bfd, elt, verbose, TRUE))
+          if (do_ar_emul_append (after_bfd, elt, verbose, TRUE, check))
             {
               added = TRUE;
               after_bfd = &((*after_bfd)->archive_next);
             {
               added = TRUE;
               after_bfd = &((*after_bfd)->archive_next);
@@ -74,7 +81,10 @@ do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd,
       return added;
     }
 
       return added;
     }
 
-  AR_EMUL_APPEND_PRINT_VERBOSE (verbose, new_bfd->filename);
+  if (!check (new_bfd))
+    return FALSE;
+
+  AR_EMUL_APPEND_PRINT_VERBOSE (verbose, bfd_get_filename (new_bfd));
 
   new_bfd->archive_next = *after_bfd;
   *after_bfd = new_bfd;
 
   new_bfd->archive_next = *after_bfd;
   *after_bfd = new_bfd;
@@ -91,7 +101,7 @@ ar_emul_default_append (bfd **after_bfd, char *file_name,
 
   new_bfd = bfd_openr (file_name, target);
   AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
 
   new_bfd = bfd_openr (file_name, target);
   AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
-  return do_ar_emul_default_append (after_bfd, new_bfd, verbose, flatten);
+  return do_ar_emul_append (after_bfd, new_bfd, verbose, flatten, any_ok);
 }
 
 bfd_boolean
 }
 
 bfd_boolean
@@ -109,15 +119,15 @@ bfd_boolean
 ar_emul_default_replace (bfd **after_bfd, char *file_name,
                         const char *target, bfd_boolean verbose)
 {
 ar_emul_default_replace (bfd **after_bfd, char *file_name,
                         const char *target, bfd_boolean verbose)
 {
-  bfd *temp;
+  bfd *new_bfd;
 
 
-  temp = *after_bfd;
-  *after_bfd = bfd_openr (file_name, target);
+  new_bfd = bfd_openr (file_name, target);
+  AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
 
 
-  AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name);
   AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
 
   AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
 
-  (*after_bfd)->archive_next = temp;
+  new_bfd->archive_next = *after_bfd;
+  *after_bfd = new_bfd;
 
   return TRUE;
 }
 
   return TRUE;
 }
This page took 0.025345 seconds and 4 git commands to generate.