mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
PR binutils/14302
* bucomm.c (print_arelt_descr): Correctly report the archive size field (for 'ar tv'). * ar.c (print_contents): Use correct types for archive element sizes (for 'ar p'). (extract_file): Likewise (for 'ar x').
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2012-06-29 Francois Gouget <fgouget@codeweavers.com>
|
||||||
|
|
||||||
|
PR binutils/14302
|
||||||
|
* bucomm.c (print_arelt_descr): Correctly report the archive size
|
||||||
|
field (for 'ar tv').
|
||||||
|
* ar.c (print_contents): Use correct types for archive element
|
||||||
|
sizes (for 'ar p').
|
||||||
|
(extract_file): Likewise (for 'ar x').
|
||||||
|
|
||||||
2012-06-29 Alan Modra <amodra@gmail.com>
|
2012-06-29 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* readelf.c (is_16bit_abs_reloc): Handle mn10200 reloc.
|
* readelf.c (is_16bit_abs_reloc): Handle mn10200 reloc.
|
||||||
|
@ -937,10 +937,11 @@ open_inarch (const char *archive_filename, const char *file)
|
|||||||
static void
|
static void
|
||||||
print_contents (bfd *abfd)
|
print_contents (bfd *abfd)
|
||||||
{
|
{
|
||||||
size_t ncopied = 0;
|
bfd_size_type ncopied = 0;
|
||||||
|
bfd_size_type size;
|
||||||
char *cbuf = (char *) xmalloc (BUFSIZE);
|
char *cbuf = (char *) xmalloc (BUFSIZE);
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
size_t size;
|
|
||||||
if (bfd_stat_arch_elt (abfd, &buf) != 0)
|
if (bfd_stat_arch_elt (abfd, &buf) != 0)
|
||||||
/* xgettext:c-format */
|
/* xgettext:c-format */
|
||||||
fatal (_("internal stat error on %s"), bfd_get_filename (abfd));
|
fatal (_("internal stat error on %s"), bfd_get_filename (abfd));
|
||||||
@ -953,22 +954,22 @@ print_contents (bfd *abfd)
|
|||||||
size = buf.st_size;
|
size = buf.st_size;
|
||||||
while (ncopied < size)
|
while (ncopied < size)
|
||||||
{
|
{
|
||||||
|
bfd_size_type nread;
|
||||||
|
bfd_size_type tocopy = size - ncopied;
|
||||||
|
|
||||||
size_t nread;
|
|
||||||
size_t tocopy = size - ncopied;
|
|
||||||
if (tocopy > BUFSIZE)
|
if (tocopy > BUFSIZE)
|
||||||
tocopy = BUFSIZE;
|
tocopy = BUFSIZE;
|
||||||
|
|
||||||
nread = bfd_bread (cbuf, (bfd_size_type) tocopy, abfd);
|
nread = bfd_bread (cbuf, tocopy, abfd);
|
||||||
if (nread != tocopy)
|
if (nread != tocopy)
|
||||||
/* xgettext:c-format */
|
/* xgettext:c-format */
|
||||||
fatal (_("%s is not a valid archive"),
|
fatal (_("%s is not a valid archive"),
|
||||||
bfd_get_filename (bfd_my_archive (abfd)));
|
bfd_get_filename (bfd_my_archive (abfd)));
|
||||||
|
|
||||||
/* fwrite in mingw32 may return int instead of size_t. Cast the
|
/* fwrite in mingw32 may return int instead of bfd_size_type. Cast the
|
||||||
return value to size_t to avoid comparison between signed and
|
return value to bfd_size_type to avoid comparison between signed and
|
||||||
unsigned values. */
|
unsigned values. */
|
||||||
if ((size_t) fwrite (cbuf, 1, nread, stdout) != nread)
|
if ((bfd_size_type) fwrite (cbuf, 1, nread, stdout) != nread)
|
||||||
fatal ("stdout: %s", strerror (errno));
|
fatal ("stdout: %s", strerror (errno));
|
||||||
ncopied += tocopy;
|
ncopied += tocopy;
|
||||||
}
|
}
|
||||||
@ -990,9 +991,9 @@ extract_file (bfd *abfd)
|
|||||||
{
|
{
|
||||||
FILE *ostream;
|
FILE *ostream;
|
||||||
char *cbuf = (char *) xmalloc (BUFSIZE);
|
char *cbuf = (char *) xmalloc (BUFSIZE);
|
||||||
size_t nread, tocopy;
|
bfd_size_type nread, tocopy;
|
||||||
size_t ncopied = 0;
|
bfd_size_type ncopied = 0;
|
||||||
size_t size;
|
bfd_size_type size;
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
|
|
||||||
if (bfd_stat_arch_elt (abfd, &buf) != 0)
|
if (bfd_stat_arch_elt (abfd, &buf) != 0)
|
||||||
@ -1027,7 +1028,7 @@ extract_file (bfd *abfd)
|
|||||||
if (tocopy > BUFSIZE)
|
if (tocopy > BUFSIZE)
|
||||||
tocopy = BUFSIZE;
|
tocopy = BUFSIZE;
|
||||||
|
|
||||||
nread = bfd_bread (cbuf, (bfd_size_type) tocopy, abfd);
|
nread = bfd_bread (cbuf, tocopy, abfd);
|
||||||
if (nread != tocopy)
|
if (nread != tocopy)
|
||||||
/* xgettext:c-format */
|
/* xgettext:c-format */
|
||||||
fatal (_("%s is not a valid archive"),
|
fatal (_("%s is not a valid archive"),
|
||||||
@ -1049,10 +1050,10 @@ extract_file (bfd *abfd)
|
|||||||
output_file = ostream;
|
output_file = ostream;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fwrite in mingw32 may return int instead of size_t. Cast
|
/* fwrite in mingw32 may return int instead of bfd_size_type. Cast
|
||||||
the return value to size_t to avoid comparison between
|
the return value to bfd_size_type to avoid comparison between
|
||||||
signed and unsigned values. */
|
signed and unsigned values. */
|
||||||
if ((size_t) fwrite (cbuf, 1, nread, ostream) != nread)
|
if ((bfd_size_type) fwrite (cbuf, 1, nread, ostream) != nread)
|
||||||
fatal ("%s: %s", output_filename, strerror (errno));
|
fatal ("%s: %s", output_filename, strerror (errno));
|
||||||
ncopied += tocopy;
|
ncopied += tocopy;
|
||||||
}
|
}
|
||||||
|
@ -427,16 +427,18 @@ print_arelt_descr (FILE *file, bfd *abfd, bfd_boolean verbose)
|
|||||||
char timebuf[40];
|
char timebuf[40];
|
||||||
time_t when = buf.st_mtime;
|
time_t when = buf.st_mtime;
|
||||||
const char *ctime_result = (const char *) ctime (&when);
|
const char *ctime_result = (const char *) ctime (&when);
|
||||||
|
bfd_size_type size;
|
||||||
|
|
||||||
/* POSIX format: skip weekday and seconds from ctime output. */
|
/* POSIX format: skip weekday and seconds from ctime output. */
|
||||||
sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20);
|
sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20);
|
||||||
|
|
||||||
mode_string (buf.st_mode, modebuf);
|
mode_string (buf.st_mode, modebuf);
|
||||||
modebuf[10] = '\0';
|
modebuf[10] = '\0';
|
||||||
|
size = buf.st_size;
|
||||||
/* POSIX 1003.2/D11 says to skip first character (entry type). */
|
/* POSIX 1003.2/D11 says to skip first character (entry type). */
|
||||||
fprintf (file, "%s %ld/%ld %6ld %s ", modebuf + 1,
|
fprintf (file, "%s %ld/%ld %6" BFD_VMA_FMT "u %s ", modebuf + 1,
|
||||||
(long) buf.st_uid, (long) buf.st_gid,
|
(long) buf.st_uid, (long) buf.st_gid,
|
||||||
(long) buf.st_size, timebuf);
|
size, timebuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user