Accept a physicall address of 0 as valid in a program header
This commit is contained in:
parent
6cdd886ce9
commit
bf36db1824
|
@ -1,3 +1,9 @@
|
|||
2002-02-13 Nick Clifton <nickc@cambridge.redhat.com>
|
||||
|
||||
* elf.c (_bfd_elf_make_section_from_shdr): Do not insist on
|
||||
non-zero physical addresses when adjusting the LMAs of new
|
||||
sections.
|
||||
|
||||
2002-02-12 John David Anglin <dave@hiauly1.hia.nrc.ca>
|
||||
|
||||
* elf-hppa.h (elf_hppa_reloc_final_type): New function stripped
|
||||
|
|
11
bfd/elf.c
11
bfd/elf.c
|
@ -652,10 +652,15 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
|
|||
offset plus size lies within the segment's memory
|
||||
span and, if the section is loaded, the extent of the
|
||||
loaded data lies within the extent of the segment.
|
||||
If the p_paddr field is not set, we don't alter the
|
||||
LMA. */
|
||||
|
||||
Note - we used to check the p_paddr field as well, and
|
||||
refuse to set the LMA if it was 0. This is wrong
|
||||
though as a perfectly valid, initialised segment can
|
||||
have a p_paddr of zero. Some architectures, eg ARM,
|
||||
place special significance one the address 0 and
|
||||
executables need to be able to have a segment which
|
||||
covers this address. */
|
||||
if (phdr->p_type == PT_LOAD
|
||||
&& phdr->p_paddr
|
||||
&& (bfd_vma) hdr->sh_offset >= phdr->p_offset
|
||||
&& (hdr->sh_offset + hdr->sh_size
|
||||
<= phdr->p_offset + phdr->p_memsz)
|
||||
|
|
Loading…
Reference in New Issue