From bf36db1824820273d5766b88bdcd75bd51e05f08 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 13 Feb 2002 10:20:59 +0000 Subject: [PATCH] Accept a physicall address of 0 as valid in a program header --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5bdb9855b0d..c4ee9c55ad0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2002-02-13 Nick Clifton + + * 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 * elf-hppa.h (elf_hppa_reloc_final_type): New function stripped diff --git a/bfd/elf.c b/bfd/elf.c index da4625842db..519e71d5999 100644 --- a/bfd/elf.c +++ b/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) -- 2.30.2