Date: Sat, 1 Jun 2013 14:16:52 +0000 (UTC) From: "Pedro F. Giffuni" <pfg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r251225 - head/contrib/binutils/bfd Message-ID: <201306011416.r51EGq41024554@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: pfg Date: Sat Jun 1 14:16:51 2013 New Revision: 251225 URL: http://svnweb.freebsd.org/changeset/base/251225 Log: BFD: Use time_t instead of long for archive timestamps. This basically follows the suggestion in the binutils code and is more in line with what BSD ar(1) does. Obtained from: OpenBSD MFC after: 2 weeks. Modified: head/contrib/binutils/bfd/archive.c head/contrib/binutils/bfd/bfd-in2.h head/contrib/binutils/bfd/bfdio.c head/contrib/binutils/bfd/coff-rs6000.c head/contrib/binutils/bfd/ecoff.c head/contrib/binutils/bfd/libbfd-in.h head/contrib/binutils/bfd/libbfd.h Modified: head/contrib/binutils/bfd/archive.c ============================================================================== --- head/contrib/binutils/bfd/archive.c Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/archive.c Sat Jun 1 14:16:51 2013 (r251225) @@ -1390,8 +1390,8 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, c /* ar headers are space padded, not null padded! */ memset (hdr, ' ', sizeof (struct ar_hdr)); - _bfd_ar_spacepad (hdr->ar_date, sizeof (hdr->ar_date), "%-12ld", - status.st_mtime); + _bfd_ar_spacepad (hdr->ar_date, sizeof (hdr->ar_date), "%-12lld", + (long long)status.st_mtime); #ifdef HPUX_LARGE_AR_IDS /* HP has a very "special" way to handle UID/GID's with numeric values > 99999. */ @@ -1458,6 +1458,11 @@ bfd_generic_stat_arch_elt (bfd *abfd, st if (aloser == hdr->arelt) \ return -1; +#define fooll(arelt, stelt, size) \ + buf->stelt = strtoll (hdr->arelt, &aloser, size); \ + if (aloser == hdr->arelt) \ + return -1; + /* Some platforms support special notations for large IDs. */ #ifdef HPUX_LARGE_AR_IDS # define foo2(arelt, stelt, size) \ @@ -1484,7 +1489,7 @@ bfd_generic_stat_arch_elt (bfd *abfd, st # define foo2(arelt, stelt, size) foo (arelt, stelt, size) #endif - foo (ar_date, st_mtime, 10); + fooll (ar_date, st_mtime, 10); foo2 (ar_uid, st_uid, 10); foo2 (ar_gid, st_gid, 10); foo (ar_mode, st_mode, 8); Modified: head/contrib/binutils/bfd/bfd-in2.h ============================================================================== --- head/contrib/binutils/bfd/bfd-in2.h Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/bfd-in2.h Sat Jun 1 14:16:51 2013 (r251225) @@ -38,6 +38,7 @@ extern "C" { #include "ansidecl.h" #include "symcat.h" +#include <time.h> /* time_t */ #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #ifndef SABER /* This hack is to avoid a problem with some strict ANSI C preprocessors. @@ -1141,7 +1142,7 @@ bfd_boolean bfd_fill_in_gnu_debuglink_se /* Extracted from bfdio.c. */ -long bfd_get_mtime (bfd *abfd); +time_t bfd_get_mtime (bfd *abfd); file_ptr bfd_get_size (bfd *abfd); Modified: head/contrib/binutils/bfd/bfdio.c ============================================================================== --- head/contrib/binutils/bfd/bfdio.c Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/bfdio.c Sat Jun 1 14:16:51 2013 (r251225) @@ -377,7 +377,7 @@ FUNCTION bfd_get_mtime SYNOPSIS - long bfd_get_mtime (bfd *abfd); + time_t bfd_get_mtime (bfd *abfd); DESCRIPTION Return the file modification time (as read from the file system, or @@ -385,7 +385,7 @@ DESCRIPTION */ -long +time_t bfd_get_mtime (bfd *abfd) { struct stat buf; Modified: head/contrib/binutils/bfd/coff-rs6000.c ============================================================================== --- head/contrib/binutils/bfd/coff-rs6000.c Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/coff-rs6000.c Sat Jun 1 14:16:51 2013 (r251225) @@ -1548,7 +1548,7 @@ _bfd_xcoff_stat_arch_elt (abfd, s) { struct xcoff_ar_hdr *hdrp = arch_xhdr (abfd); - s->st_mtime = strtol (hdrp->date, (char **) NULL, 10); + s->st_mtime = strtoll (hdrp->date, (char **) NULL, 10); s->st_uid = strtol (hdrp->uid, (char **) NULL, 10); s->st_gid = strtol (hdrp->gid, (char **) NULL, 10); s->st_mode = strtol (hdrp->mode, (char **) NULL, 8); @@ -1558,7 +1558,7 @@ _bfd_xcoff_stat_arch_elt (abfd, s) { struct xcoff_ar_hdr_big *hdrp = arch_xhdr_big (abfd); - s->st_mtime = strtol (hdrp->date, (char **) NULL, 10); + s->st_mtime = strtoll (hdrp->date, (char **) NULL, 10); s->st_uid = strtol (hdrp->uid, (char **) NULL, 10); s->st_gid = strtol (hdrp->gid, (char **) NULL, 10); s->st_mode = strtol (hdrp->mode, (char **) NULL, 8); @@ -1678,6 +1678,7 @@ xcoff_write_armap_old (abfd, elength, ma static char buff20[XCOFFARMAGBIG_ELEMENT_SIZE + 1]; #define FMT20 "%-20lld" #define FMT12 "%-12d" +#define FMT12_LL "%-12lld" #define FMT12_OCTAL "%-12o" #define FMT4 "%-4d" #define PRINT20(d, v) \ @@ -1688,6 +1689,10 @@ static char buff20[XCOFFARMAGBIG_ELEMENT sprintf (buff20, FMT12, (int)(v)), \ memcpy ((void *) (d), buff20, 12) +#define PRINT12_LL(d, v) \ + sprintf (buff20, FMT12_LL, (long long)(v)), \ + memcpy ((void *) (d), buff20, 12) + #define PRINT12_OCTAL(d, v) \ sprintf (buff20, FMT12_OCTAL, (unsigned int)(v)), \ memcpy ((void *) (d), buff20, 12) @@ -2152,7 +2157,7 @@ xcoff_write_archive_contents_old (abfd) } sprintf (ahdrp->size, "%ld", (long) s.st_size); - sprintf (ahdrp->date, "%ld", (long) s.st_mtime); + sprintf (ahdrp->date, "%lld", (long long) s.st_mtime); sprintf (ahdrp->uid, "%ld", (long) s.st_uid); sprintf (ahdrp->gid, "%ld", (long) s.st_gid); sprintf (ahdrp->mode, "%o", (unsigned int) s.st_mode); @@ -2388,7 +2393,7 @@ xcoff_write_archive_contents_big (abfd) } PRINT20 (ahdrp->size, s.st_size); - PRINT12 (ahdrp->date, s.st_mtime); + PRINT12_LL (ahdrp->date, s.st_mtime); PRINT12 (ahdrp->uid, s.st_uid); PRINT12 (ahdrp->gid, s.st_gid); PRINT12_OCTAL (ahdrp->mode, s.st_mode); Modified: head/contrib/binutils/bfd/ecoff.c ============================================================================== --- head/contrib/binutils/bfd/ecoff.c Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/ecoff.c Sat Jun 1 14:16:51 2013 (r251225) @@ -3050,7 +3050,7 @@ _bfd_ecoff_write_armap (bfd *abfd, linker just checks the archive name; the GNU linker may check the date. */ stat (abfd->filename, &statbuf); - sprintf (hdr.ar_date, "%ld", (long) (statbuf.st_mtime + 60)); + sprintf (hdr.ar_date, "%lld", (long long) (statbuf.st_mtime + 60)); /* The DECstation uses zeroes for the uid, gid and mode of the armap. */ Modified: head/contrib/binutils/bfd/libbfd-in.h ============================================================================== --- head/contrib/binutils/bfd/libbfd-in.h Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/libbfd-in.h Sat Jun 1 14:16:51 2013 (r251225) @@ -71,8 +71,7 @@ struct artdata { symindex symdef_count; /* how many there are */ char *extended_names; /* clever intel extension */ bfd_size_type extended_names_size; /* Size of extended names */ - /* when more compilers are standard C, this can be a time_t */ - long armap_timestamp; /* Timestamp value written into armap. + time_t armap_timestamp; /* Timestamp value written into armap. This is used for BSD archives to check that the timestamp is recent enough for the BSD linker to not complain, Modified: head/contrib/binutils/bfd/libbfd.h ============================================================================== --- head/contrib/binutils/bfd/libbfd.h Sat Jun 1 13:10:24 2013 (r251224) +++ head/contrib/binutils/bfd/libbfd.h Sat Jun 1 14:16:51 2013 (r251225) @@ -76,8 +76,7 @@ struct artdata { symindex symdef_count; /* how many there are */ char *extended_names; /* clever intel extension */ bfd_size_type extended_names_size; /* Size of extended names */ - /* when more compilers are standard C, this can be a time_t */ - long armap_timestamp; /* Timestamp value written into armap. + time_t armap_timestamp; /* Timestamp value written into armap. This is used for BSD archives to check that the timestamp is recent enough for the BSD linker to not complain,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306011416.r51EGq41024554>