* targets.c (BFD_JUMP_TABLE_ARCHIVE): Add _update_armap_timestamp.

(bfd_target): Add field _bfd_update_armap_timestamp.
	* bfd.c (bfd_update_armap_timestamp): Define.
	* bfd-in2.h: Rebuilt.
	* libbfd-in.h (_bfd_noarchive_update_armap_timestamp): Define.
	(_bfd_archive_bsd_update_armap_timestamp): Declare.
	(_bfd_archive_coff_update_armap_timestamp): Define.
	* libbfd.h: Rebuilt.
	* archive.c (_bfd_write_archive_contents): Call
	bfd_update_armap_timestamp instead of checking for a BSD archive
	and calling bsd_update_armap_timestamp.
	(_bfd_archive_bsd_update_armap_timestamp): Rename from
	_bsd_update_armap_timestamp.  Don't assume that armap_datepos is
	already set.
	* aout-target.h (MY_update_armap_timestamp): Define if not already
	defined.
	* coff-rs6000.c (rs6000coff_update_armap_timestamp): Define.
	* ieee.c (ieee_update_armap_timestamp): Define.
	* libecoff.h (_bfd_ecoff_update_armap_timestamp): Define.
	* oasys.c (oasys_update_armap_timestamp): Define.
	* som.c (som_update_armap_timestamp): Define.
This commit is contained in:
Ian Lance Taylor 1994-08-22 21:20:12 +00:00
parent 02354a0f8d
commit 81eb52b34d
2 changed files with 28 additions and 18 deletions

View File

@ -1,5 +1,27 @@
Mon Aug 22 12:26:42 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
* targets.c (BFD_JUMP_TABLE_ARCHIVE): Add _update_armap_timestamp.
(bfd_target): Add field _bfd_update_armap_timestamp.
* bfd.c (bfd_update_armap_timestamp): Define.
* bfd-in2.h: Rebuilt.
* libbfd-in.h (_bfd_noarchive_update_armap_timestamp): Define.
(_bfd_archive_bsd_update_armap_timestamp): Declare.
(_bfd_archive_coff_update_armap_timestamp): Define.
* libbfd.h: Rebuilt.
* archive.c (_bfd_write_archive_contents): Call
bfd_update_armap_timestamp instead of checking for a BSD archive
and calling bsd_update_armap_timestamp.
(_bfd_archive_bsd_update_armap_timestamp): Rename from
_bsd_update_armap_timestamp. Don't assume that armap_datepos is
already set.
* aout-target.h (MY_update_armap_timestamp): Define if not already
defined.
* coff-rs6000.c (rs6000coff_update_armap_timestamp): Define.
* ieee.c (ieee_update_armap_timestamp): Define.
* libecoff.h (_bfd_ecoff_update_armap_timestamp): Define.
* oasys.c (oasys_update_armap_timestamp): Define.
* som.c (som_update_armap_timestamp): Define.
* hash.c: Copy string hash functions from aoutx.h.
* aoutx.h: String hash functions moved to hash.c. Retain
simplified versions of add_to_stringtab and emit_stringtab.

View File

@ -183,7 +183,6 @@ static struct areltdata *bfd_ar_hdr_from_filesystem PARAMS ((bfd *abfd,
const char *));
static boolean compute_and_write_armap PARAMS ((bfd *arch,
unsigned int elength));
static boolean bsd_update_armap_timestamp PARAMS ((bfd *arch));
boolean
_bfd_generic_mkarchive (abfd)
@ -1589,20 +1588,7 @@ _bfd_write_archive_contents (arch)
tries = 1;
do
{
/* FIXME! This kludge is to avoid adding a member to the xvec,
while generating a small patch for Adobe. FIXME! The
update_armap_timestamp function call should be in the xvec,
thus:
if (bfd_update_armap_timestamp (arch) == true) break;
^
Instead, we check whether in a BSD archive, and call
directly. */
if (arch->xvec->write_armap != bsd_write_armap)
break;
if (bsd_update_armap_timestamp (arch) == true) /* FIXME!!! Vector it */
if (bfd_update_armap_timestamp (arch) == true) /* FIXME!!! Vector it */
break;
if (tries > 0)
fprintf (stderr,
@ -1693,7 +1679,7 @@ compute_and_write_armap (arch, elength)
flags & BSF_WEAK ||
flags & BSF_INDIRECT ||
bfd_is_com_section (sec))
&& (sec != &bfd_und_section))
&& ! bfd_is_und_section (sec))
{
size_t namelen;
struct orl *new_map;
@ -1862,8 +1848,8 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
Return true if the timestamp was OK, or an unusual problem happened.
Return false if we updated the timestamp. */
static boolean
bsd_update_armap_timestamp (arch)
boolean
_bfd_archive_bsd_update_armap_timestamp (arch)
bfd *arch;
{
struct stat archstat;
@ -1892,6 +1878,8 @@ bsd_update_armap_timestamp (arch)
(hdr.ar_date)[i] = ' ';
/* Write it into the file. */
bfd_ardata (arch)->armap_datepos = (SARMAG
+ offsetof (struct ar_hdr, ar_date[0]));
if (bfd_seek (arch, bfd_ardata (arch)->armap_datepos, SEEK_SET) != 0
|| (bfd_write (hdr.ar_date, sizeof (hdr.ar_date), 1, arch)
!= sizeof (hdr.ar_date)))