summaryrefslogtreecommitdiff
path: root/binutils/patches/pr13534-04.diff
blob: e11cd8f7ca4d1dccba19d551335446e3cec5d471 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
commit 70ed6152e1e163b9ca240fe8b91aa3feb942ac84
Author: Francois Gouget <fgouget@codeweavers.com>
Date:   Tue Dec 20 18:45:18 2011 +0100

    bfd: Always use bfd_size_type to manipulate the size of an archive element.
    
    Other types may not be able to deal with archive elements larger than 2GB.

diff --git a/bfd/archive.c b/bfd/archive.c
index 01acf98..c1438ef 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -748,7 +748,7 @@ bfd_generic_openr_next_archived_file (bfd *archive, bfd *last_file)
     filestart = bfd_ardata (archive)->first_file_filepos;
   else
     {
-      unsigned int size = arelt_size (last_file);
+      bfd_size_type size = arelt_size (last_file);
 
       filestart = last_file->proxy_origin;
       if (! bfd_is_thin_archive (archive))
@@ -946,7 +946,7 @@ do_slurp_coff_armap (bfd *abfd)
   struct artdata *ardata = bfd_ardata (abfd);
   char *stringbase;
   bfd_size_type stringsize;
-  unsigned int parsed_size;
+  bfd_size_type parsed_size;
   carsym *carsyms;
   bfd_size_type nsymz;		/* Number of symbols in armap.  */
   bfd_vma (*swap) (const void *);
@@ -2174,7 +2174,7 @@ _bfd_write_archive_contents (bfd *arch)
        current = current->archive_next)
     {
       char buffer[DEFAULT_BUFFERSIZE];
-      unsigned int remaining = arelt_size (current);
+      bfd_size_type remaining = arelt_size (current);
 
       /* Write ar header.  */
       if (!_bfd_write_ar_hdr (arch, current))
diff --git a/bfd/bfdio.c b/bfd/bfdio.c
index 841c781..5bc8061 100644
--- a/bfd/bfdio.c
+++ b/bfd/bfdio.c
@@ -185,7 +185,7 @@ bfd_bread (void *ptr, bfd_size_type size, bfd *abfd)
      this element.  */
   if (abfd->arelt_data != NULL)
     {
-      size_t maxbytes = ((struct areltdata *) abfd->arelt_data)->parsed_size;
+      bfd_size_type maxbytes = arelt_size (abfd);
       if (abfd->where + size > maxbytes)
         {
           if (abfd->where >= maxbytes)
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index a4ba4b6..683c1cc 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -90,8 +90,8 @@ struct artdata {
 /* Goes in bfd's arelt_data slot */
 struct areltdata {
   char * arch_header;		/* it's actually a string */
-  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
-  unsigned int extra_size;	/* BSD4.4: extra bytes after the header.  */
+  bfd_size_type parsed_size;	/* octets of filesize not including ar_hdr */
+  bfd_size_type extra_size;	/* BSD4.4: extra bytes after the header.  */
   char *filename;		/* null-terminated */
   file_ptr origin;		/* for element of a thin archive */
 };
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 7f142d0..6d27901 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -95,8 +95,8 @@ struct artdata {
 /* Goes in bfd's arelt_data slot */
 struct areltdata {
   char * arch_header;		/* it's actually a string */
-  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
-  unsigned int extra_size;	/* BSD4.4: extra bytes after the header.  */
+  bfd_size_type parsed_size;	/* octets of filesize not including ar_hdr */
+  bfd_size_type extra_size;	/* BSD4.4: extra bytes after the header.  */
   char *filename;		/* null-terminated */
   file_ptr origin;		/* for element of a thin archive */
 };