projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git]
/
binutils
/
arsup.c
diff --git
a/binutils/arsup.c
b/binutils/arsup.c
index f94ebb9b852667f392822eb21cb24aeafdd5052b..a668f270f1a11c3cbc0c77be6419910ece47de7b 100644
(file)
--- a/
binutils/arsup.c
+++ b/
binutils/arsup.c
@@
-1,12
+1,11
@@
/* arsup.c - Archive support for MRI compatibility
/* arsup.c - Archive support for MRI compatibility
- Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
- 2004 Free Software Foundation, Inc.
+ Copyright (C) 1992-2020 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version
2
of the License, or
+ the Free Software Foundation; either version
3
of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@
-16,7
+15,8
@@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
/* Contributed by Steve Chamberlain
/* Contributed by Steve Chamberlain
@@
-25,11
+25,12
@@
This file looks after requests from arparse.y, to provide the MRI
style librarian command syntax + 1 word LIST. */
This file looks after requests from arparse.y, to provide the MRI
style librarian command syntax + 1 word LIST. */
+#include "sysdep.h"
#include "bfd.h"
#include "bfd.h"
-#include "arsup.h"
#include "libiberty.h"
#include "libiberty.h"
-#include "bucomm.h"
#include "filenames.h"
#include "filenames.h"
+#include "bucomm.h"
+#include "arsup.h"
static void map_over_list
(bfd *, void (*function) (bfd *, bfd *), struct list *);
static void map_over_list
(bfd *, void (*function) (bfd *, bfd *), struct list *);
@@
-37,6
+38,7
@@
static void ar_directory_doer (bfd *, bfd *);
static void ar_addlib_doer (bfd *, bfd *);
extern int verbose;
static void ar_addlib_doer (bfd *, bfd *);
extern int verbose;
+extern int deterministic;
static bfd *obfd;
static char *real_name;
static bfd *obfd;
static char *real_name;
@@
-51,10
+53,10
@@
map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list)
{
bfd *next;
{
bfd *next;
- head = arch->next;
+ head = arch->
archive_
next;
while (head != NULL)
{
while (head != NULL)
{
- next = head->next;
+ next = head->
archive_
next;
function (head, (bfd *) NULL);
head = next;
}
function (head, (bfd *) NULL);
head = next;
}
@@
-73,10
+75,10
@@
map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list)
bfd_boolean found = FALSE;
bfd *prev = arch;
bfd_boolean found = FALSE;
bfd *prev = arch;
- for (head = arch->
next; head; head = head->
next)
+ for (head = arch->
archive_next; head; head = head->archive_
next)
{
{
- if (
head->filename
!= NULL
- && FILENAME_CMP (ptr->name,
head->filename
) == 0)
+ if (
bfd_get_filename (head)
!= NULL
+ && FILENAME_CMP (ptr->name,
bfd_get_filename (head)
) == 0)
{
found = TRUE;
function (head, prev);
{
found = TRUE;
function (head, prev);
@@
-94,7
+96,7
@@
map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list)
static void
ar_directory_doer (bfd *abfd, bfd *ignore ATTRIBUTE_UNUSED)
{
static void
ar_directory_doer (bfd *abfd, bfd *ignore ATTRIBUTE_UNUSED)
{
- print_arelt_descr(outfile, abfd, verbose);
+ print_arelt_descr(outfile, abfd, verbose
, FALSE
);
}
void
}
void
@@
-147,13
+149,20
@@
maybequit (void)
void
ar_open (char *name, int t)
{
void
ar_open (char *name, int t)
{
- char *tname
= (char *) xmalloc (strlen (name) + 10)
;
+ char *tname;
const char *bname = lbasename (name);
real_name = name;
/* Prepend tmp- to the beginning, to avoid file-name clashes after
truncation on filesystems with limited namespaces (DOS). */
const char *bname = lbasename (name);
real_name = name;
/* Prepend tmp- to the beginning, to avoid file-name clashes after
truncation on filesystems with limited namespaces (DOS). */
- sprintf (tname, "%.*stmp-%s", (int) (bname - name), name, bname);
+ if (asprintf (&tname, "%.*stmp-%s", (int) (bname - name), name, bname) == -1)
+ {
+ fprintf (stderr, _("%s: Can't allocate memory for temp name (%s)\n"),
+ program_name, strerror(errno));
+ maybequit ();
+ return;
+ }
+
obfd = bfd_openw (tname, NULL);
if (!obfd)
obfd = bfd_openw (tname, NULL);
if (!obfd)
@@
-197,7
+206,7
@@
ar_open (char *name, int t)
while (element)
{
*ptr = element;
while (element)
{
*ptr = element;
- ptr = &element->next;
+ ptr = &element->
archive_
next;
element = bfd_openr_next_archived_file (ibfd, element);
}
}
element = bfd_openr_next_archived_file (ibfd, element);
}
}
@@
-205,6
+214,7
@@
ar_open (char *name, int t)
bfd_set_format (obfd, bfd_archive);
obfd->has_armap = 1;
bfd_set_format (obfd, bfd_archive);
obfd->has_armap = 1;
+ obfd->is_thin_archive = 0;
}
}
}
}
@@
-213,9
+223,9
@@
ar_addlib_doer (bfd *abfd, bfd *prev)
{
/* Add this module to the output bfd. */
if (prev != NULL)
{
/* Add this module to the output bfd. */
if (prev != NULL)
- prev->
next = abfd->
next;
+ prev->
archive_next = abfd->archive_
next;
- abfd->next = obfd->archive_head;
+ abfd->
archive_
next = obfd->archive_head;
obfd->archive_head = abfd;
}
obfd->archive_head = abfd;
}
@@
-251,8
+261,13
@@
ar_addmod (struct list *list)
{
while (list)
{
{
while (list)
{
- bfd *abfd
= bfd_openr (list->name, NULL)
;
+ bfd *abfd;
+#if BFD_SUPPORTS_PLUGINS
+ abfd = bfd_openr (list->name, "plugin");
+#else
+ abfd = bfd_openr (list->name, NULL);
+#endif
if (!abfd)
{
fprintf (stderr, _("%s: can't open file %s\n"),
if (!abfd)
{
fprintf (stderr, _("%s: can't open file %s\n"),
@@
-261,7
+276,7
@@
ar_addmod (struct list *list)
}
else
{
}
else
{
- abfd->next = obfd->archive_head;
+ abfd->
archive_
next = obfd->archive_head;
obfd->archive_head = abfd;
}
list = list->next;
obfd->archive_head = abfd;
}
list = list->next;
@@
-296,15
+311,15
@@
ar_delete (struct list *list)
while (member)
{
while (member)
{
- if (FILENAME_CMP
(member->filename
, list->name) == 0)
+ if (FILENAME_CMP
(bfd_get_filename (member)
, list->name) == 0)
{
{
- *prev = member->next;
+ *prev = member->
archive_
next;
found = 1;
}
else
found = 1;
}
else
- prev = &(member->next);
+ prev = &(member->
archive_
next);
- member = member->next;
+ member = member->
archive_
next;
}
if (!found)
}
if (!found)
@@
-331,6
+346,9
@@
ar_save (void)
{
char *ofilename = xstrdup (bfd_get_filename (obfd));
{
char *ofilename = xstrdup (bfd_get_filename (obfd));
+ if (deterministic > 0)
+ obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
+
bfd_close (obfd);
smart_rename (ofilename, real_name, 0);
bfd_close (obfd);
smart_rename (ofilename, real_name, 0);
@@
-358,10
+376,10
@@
ar_replace (struct list *list)
while (member)
{
while (member)
{
- if (FILENAME_CMP (
member->filename
, list->name) == 0)
+ if (FILENAME_CMP (
bfd_get_filename (member)
, list->name) == 0)
{
/* Found the one to replace. */
{
/* Found the one to replace. */
- bfd *abfd = bfd_openr (list->name,
0
);
+ bfd *abfd = bfd_openr (list->name,
NULL
);
if (!abfd)
{
if (!abfd)
{
@@
-372,20
+390,20
@@
ar_replace (struct list *list)
else
{
*prev = abfd;
else
{
*prev = abfd;
- abfd->
next = member->
next;
+ abfd->
archive_next = member->archive_
next;
found = 1;
}
}
else
{
found = 1;
}
}
else
{
- prev = &(member->next);
+ prev = &(member->
archive_
next);
}
}
- member = member->next;
+ member = member->
archive_
next;
}
if (!found)
{
}
if (!found)
{
- bfd *abfd = bfd_openr (list->name,
0
);
+ bfd *abfd = bfd_openr (list->name,
NULL
);
fprintf (stderr,_("%s: can't find module file %s\n"),
program_name, list->name);
fprintf (stderr,_("%s: can't find module file %s\n"),
program_name, list->name);
@@
-423,7
+441,7
@@
ar_list (void)
for (abfd = obfd->archive_head;
abfd != (bfd *)NULL;
for (abfd = obfd->archive_head;
abfd != (bfd *)NULL;
- abfd = abfd->next)
+ abfd = abfd->
archive_
next)
ar_directory_doer (abfd, (bfd *) NULL);
}
}
ar_directory_doer (abfd, (bfd *) NULL);
}
}
@@
-456,18
+474,18
@@
ar_extract (struct list *list)
while (member && !found)
{
while (member && !found)
{
- if (FILENAME_CMP (
member->filename
, list->name) == 0)
+ if (FILENAME_CMP (
bfd_get_filename (member)
, list->name) == 0)
{
extract_file (member);
found = 1;
}
{
extract_file (member);
found = 1;
}
- member = member->next;
+ member = member->
archive_
next;
}
if (!found)
{
}
if (!found)
{
- bfd_openr (list->name,
0
);
+ bfd_openr (list->name,
NULL
);
fprintf (stderr, _("%s: can't find module file %s\n"),
program_name, list->name);
}
fprintf (stderr, _("%s: can't find module file %s\n"),
program_name, list->name);
}
This page took
0.02741 seconds
and
4
git commands to generate.