diff options
author | H.J. Lu <hjl@lucon.org> | 2007-12-24 16:55:39 +0000 |
---|---|---|
committer | H.J. Lu <hjl@lucon.org> | 2007-12-24 16:55:39 +0000 |
commit | 69b0ffdcf5bf8071cc7a9786df0fad1e75b994a7 (patch) | |
tree | 7ba8458fd7b62b0df1bf7daa19ad8cc69d1775ba /bfd/elfcode.h | |
parent | 7cc880edc1deb752a585e3ed26368316fb45895c (diff) | |
download | binutils-redhat-69b0ffdcf5bf8071cc7a9786df0fad1e75b994a7.tar.gz |
2007-12-24 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/5449
* elf.c (rewrite_elf_program_header): Don't adjust p_paddr if
p_paddr is set to 0.
(copy_private_bfd_data): Call rewrite_elf_program_header if
p_paddr is set to 0.
* elfcode.h (elf_swap_phdr_out): Set p_paddr to 0 if needed.
* elfxx-ia64.c (ELF_MAXPAGESIZE): Don't redefine it for HPUX.
Diffstat (limited to 'bfd/elfcode.h')
-rw-r--r-- | bfd/elfcode.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/bfd/elfcode.h b/bfd/elfcode.h index ea2a6d3dad..969c25aa0c 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -370,11 +370,17 @@ elf_swap_phdr_out (bfd *abfd, const Elf_Internal_Phdr *src, Elf_External_Phdr *dst) { + const struct elf_backend_data *bed; + bfd_vma p_paddr; + + bed = get_elf_backend_data (abfd); + p_paddr = bed->want_p_paddr_set_to_zero ? 0 : src->p_paddr; + /* note that all elements of dst are *arrays of unsigned char* already... */ H_PUT_32 (abfd, src->p_type, dst->p_type); H_PUT_WORD (abfd, src->p_offset, dst->p_offset); H_PUT_WORD (abfd, src->p_vaddr, dst->p_vaddr); - H_PUT_WORD (abfd, src->p_paddr, dst->p_paddr); + H_PUT_WORD (abfd, p_paddr, dst->p_paddr); H_PUT_WORD (abfd, src->p_filesz, dst->p_filesz); H_PUT_WORD (abfd, src->p_memsz, dst->p_memsz); H_PUT_32 (abfd, src->p_flags, dst->p_flags); |