From: Sterling Augustine Date: Fri, 5 Feb 2010 17:08:47 +0000 (+0000) Subject: 2010-02-05 Sterling Augustine X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1cfb7d1ee10218f97feca406029b03c7692e1157;p=binutils-gdb.git 2010-02-05 Sterling Augustine * elf.c (assign_file_positions_for_load_sections) Update lma of section if necessary. --- diff --git a/bfd/elf.c b/bfd/elf.c index d8819dbb4bc..795a9d2eb2b 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -4462,6 +4462,22 @@ assign_file_positions_for_load_sections (bfd *abfd, } p->p_memsz += adjust; + if (p->p_paddr + p->p_memsz != sec->lma) + { + /* This behavior is a compromise--ld has long + silently changed the lma of sections when + lma - vma is not equal for every section in a + pheader--but only in the internal elf structures. + Silently changing the lma is probably a bug, but + changing it would have subtle and unknown + consequences for existing scripts. + + Instead modify the bfd data structure to reflect + what happened. This at least fixes the values + for the lma in the mapfile. */ + sec->lma = p->p_paddr + p->p_memsz; + } + if (this_hdr->sh_type != SHT_NOBITS) { if (p->p_filesz + adjust < p->p_memsz)