https://sourceware.org/bugzilla/show_bug.cgi?id=23595
--- Comment #1 from Jozef Lawrynowicz <jozef.l at mittosystems dot com> --- Proposed patch, lightly tested without regressions in the binutils, gas, ld testsuites for msp430-elf/-mlarge and x86_64-pc-linux-gnu. diff --git a/bfd/elf.c b/bfd/elf.c index b8860c4..14612bd 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -7235,6 +7235,7 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) Elf_Internal_Shdr *this_hdr; asection *first_section = NULL; asection *lowest_section; + bfd_boolean no_contents = TRUE; /* Compute how many sections are in this segment. */ for (section = ibfd->sections, section_count = 0; @@ -7246,6 +7247,8 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) { if (first_section == NULL) first_section = section; + if (elf_section_type (section) != SHT_NOBITS) + no_contents = FALSE; section_count++; } } @@ -7342,8 +7345,15 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) } if (map->includes_filehdr && lowest_section != NULL) - /* We need to keep the space used by the headers fixed. */ - map->header_size = lowest_section->vma - segment->p_vaddr; + { + /* We need to keep the space used by the headers fixed. + If no_contents is true, get a more accurate value for header_size + by checking the p_filesz of the segment. */ + if (no_contents) + map->header_size = segment->p_filesz; + else + map->header_size = lowest_section->vma - segment->p_vaddr; + } if (!map->includes_phdrs && !map->includes_filehdr -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils