diff options
author | Alan Modra <amodra@gmail.com> | 2004-09-10 00:27:10 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2004-09-10 00:27:10 +0000 |
commit | e0638f7007c3f4734c293c399570727fbf2db125 (patch) | |
tree | da7c45dfa4dddde6dff6e71abe4701bec887b9a3 | |
parent | 04c6f462e0c063d7a75f80185a9f4aeaf666d3b5 (diff) | |
download | gdb-e0638f7007c3f4734c293c399570727fbf2db125.zip gdb-e0638f7007c3f4734c293c399570727fbf2db125.tar.gz gdb-e0638f7007c3f4734c293c399570727fbf2db125.tar.bz2 |
* elf.c (assign_file_positions_except_relocs): Assign relocs
stored in a bfd section.
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf.c | 19 |
2 files changed, 16 insertions, 8 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ec7f060..01ea5cd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2004-09-10 Alan Modra <amodra@bigpond.net.au> + + * elf.c (assign_file_positions_except_relocs): Assign relocs + stored in a bfd section. + 2004-09-08 Hans-Peter Nilsson <hp@axis.com> * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Reset @@ -4423,10 +4423,13 @@ get_program_header_size (bfd *abfd) _bfd_elf_compute_section_file_positions. All the section sizes and VMAs must be known before this is called. - We do not consider reloc sections at this point, unless they form - part of the loadable image. Reloc sections are assigned file - positions in assign_file_positions_for_relocs, which is called by - write_object_contents and final_link. + Reloc sections come in two flavours: Those processed specially as + "side-channel" data attached to a section to which they apply, and + those that bfd doesn't process as relocations. The latter sort are + stored in a normal bfd section by bfd_section_from_shdr. We don't + consider the former sort here, unless they form part of the loadable + image. Reloc sections not assigned here will be handled later by + assign_file_positions_for_relocs. We also don't set the positions of the .symtab and .strtab here. */ @@ -4458,8 +4461,8 @@ assign_file_positions_except_relocs (bfd *abfd, Elf_Internal_Shdr *hdr; hdr = *hdrpp; - if (hdr->sh_type == SHT_REL - || hdr->sh_type == SHT_RELA + if (((hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA) + && hdr->bfd_section == NULL) || i == tdata->symtab_section || i == tdata->symtab_shndx_section || i == tdata->strtab_section) @@ -4514,8 +4517,8 @@ assign_file_positions_except_relocs (bfd *abfd, off = _bfd_elf_assign_file_position_for_section (hdr, off, FALSE); } - else if (hdr->sh_type == SHT_REL - || hdr->sh_type == SHT_RELA + else if (((hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA) + && hdr->bfd_section == NULL) || hdr == i_shdrpp[tdata->symtab_section] || hdr == i_shdrpp[tdata->symtab_shndx_section] || hdr == i_shdrpp[tdata->strtab_section]) |