diff options
Diffstat (limited to 'bfd/section.c')
-rw-r--r-- | bfd/section.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/bfd/section.c b/bfd/section.c index 70727ac..e178f58 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -424,13 +424,14 @@ CODE_FRAGMENT . size of <<.bss>>). *} . bfd_size_type size; . -. {* The original size on disk of the section, in octets. This field -. is used by the linker relaxation code. It is currently only set -. for sections where the linker relaxation scheme doesn't cache -. altered section and reloc contents (stabs, eh_frame, SEC_MERGE), -. and thus the original size needs to be kept to read the section -. multiple times. If non-zero, rawsize will be used in address -. checks during relocation and to read section contents. *} +. {* For input sections, the original size on disk of the section, in +. octets. This field is used by the linker relaxation code. It is +. currently only set for sections where the linker relaxation scheme +. doesn't cache altered section and reloc contents (stabs, eh_frame, +. SEC_MERGE, some coff relaxing targets), and thus the original size +. needs to be kept to read the section multiple times. +. For output sections, rawsize holds the section size calculated on +. a previous linker relaxation pass. *} . bfd_size_type rawsize; . . {* If this section is going to be output, then this value is the @@ -1379,7 +1380,7 @@ bfd_malloc_and_get_section (bfd *abfd, sec_ptr sec, bfd_byte **buf) if (sz == 0) return TRUE; - p = bfd_malloc (sz); + p = bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); if (p == NULL) return FALSE; *buf = p; |