aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-07-07 09:52:21 +0930
committerAlan Modra <amodra@gmail.com>2020-07-07 18:26:33 +0930
commitc800188601ee6f537d268fcadfbac7be0389ced7 (patch)
tree912d58871e9996ebcfbf30d10628fccc7077e06e
parent8af7926f455328bfc34456f6765c0cb1801e758e (diff)
downloadbinutils-c800188601ee6f537d268fcadfbac7be0389ced7.zip
binutils-c800188601ee6f537d268fcadfbac7be0389ced7.tar.gz
binutils-c800188601ee6f537d268fcadfbac7be0389ced7.tar.bz2
XCOFF deterministic archives
Adds support for "ar -D". * coff-rs6000.c (xcoff_write_archive_contents_old): Set default time, uid, gid and mode for deterministic archive. (xcoff_write_archive_contents_big): Likewise.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/coff-rs6000.c14
2 files changed, 20 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 057bc05..580edfe 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2020-07-07 Alan Modra <amodra@gmail.com>
+ * coff-rs6000.c (xcoff_write_archive_contents_old): Set default
+ time, uid, gid and mode for deterministic archive.
+ (xcoff_write_archive_contents_big): Likewise.
+
+2020-07-07 Alan Modra <amodra@gmail.com>
+
* coffcode.h (coff_classify_symbol): Handle C_HIDEXT and
C_AIX_WEAKEXT.
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 51fab9f..00c9d7c 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -2101,6 +2101,13 @@ xcoff_write_archive_contents_old (bfd *abfd)
bfd_set_error (bfd_error_system_call);
return FALSE;
}
+ if ((abfd->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
+ {
+ s.st_mtime = 0;
+ s.st_uid = 0;
+ s.st_gid = 0;
+ s.st_mode = 0644;
+ }
ahdrp = bfd_zalloc (sub, sizeof (*ahdrp));
if (ahdrp == NULL)
@@ -2321,6 +2328,13 @@ xcoff_write_archive_contents_big (bfd *abfd)
bfd_set_error (bfd_error_system_call);
return FALSE;
}
+ if ((abfd->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
+ {
+ s.st_mtime = 0;
+ s.st_uid = 0;
+ s.st_gid = 0;
+ s.st_mode = 0644;
+ }
ahdrp = bfd_zalloc (current_bfd, sizeof (*ahdrp));
if (ahdrp == NULL)