diff options
author | Jeff Law <law@redhat.com> | 1995-10-03 17:57:17 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1995-10-03 17:57:17 +0000 |
commit | 8cd2f4fe430cecb9ee0a37e5a734f8e7985d4fc0 (patch) | |
tree | 91b91bdd98c183c49f9c4144609b54d21ad4f14e /bfd | |
parent | 42ac8fa83d1a307bb3750a004e09090c45ee41eb (diff) | |
download | gdb-8cd2f4fe430cecb9ee0a37e5a734f8e7985d4fc0.zip gdb-8cd2f4fe430cecb9ee0a37e5a734f8e7985d4fc0.tar.gz gdb-8cd2f4fe430cecb9ee0a37e5a734f8e7985d4fc0.tar.bz2 |
* elf.c (_bfd_elf_assign_file_position_for_section): Always
align to the section's alignment. "align" argument removed;
all callers changed.
Loosely based on a patch from dupuy@smarts.com; keeps dbx from losing
when debugging programs that have been objcopy'd.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/elf.c | 49 |
1 files changed, 16 insertions, 33 deletions
@@ -685,16 +685,9 @@ bfd_section_from_shdr (abfd, shindex) break; case SHT_NOTE: -#if 0 - fprintf (stderr, "Note Sections not yet supported.\n"); - BFD_FAIL (); -#endif break; case SHT_SHLIB: -#if 0 - fprintf (stderr, "SHLIB Sections not supported (and non conforming.)\n"); -#endif return true; default: @@ -1427,23 +1420,21 @@ align_file_position (off, align) return (off + align - 1) & ~(align - 1); } -/* Assign a file position to a section, optionally aligning to the - required section alignment. */ +/* Assign a file position to a section, aligning to the required + section alignment. */ INLINE file_ptr -_bfd_elf_assign_file_position_for_section (i_shdrp, offset, align) +_bfd_elf_assign_file_position_for_section (i_shdrp, offset) Elf_Internal_Shdr *i_shdrp; file_ptr offset; - boolean align; { - if (align) - { - unsigned int al; + unsigned int al; + + /* Align the offst. */ + al = i_shdrp->sh_addralign; + if (al > 1) + offset = BFD_ALIGN (offset, al); - al = i_shdrp->sh_addralign; - if (al > 1) - offset = BFD_ALIGN (offset, al); - } i_shdrp->sh_offset = offset; if (i_shdrp->bfd_section != NULL) i_shdrp->bfd_section->filepos = offset; @@ -1892,7 +1883,7 @@ assign_file_positions_except_relocs (abfd, dosyms) continue; } - off = _bfd_elf_assign_file_position_for_section (hdr, off, true); + off = _bfd_elf_assign_file_position_for_section (hdr, off); } } else @@ -1962,8 +1953,7 @@ assign_file_positions_except_relocs (abfd, dosyms) hdr->sh_offset = -1; continue; } - off = _bfd_elf_assign_file_position_for_section (hdr, off, - true); + off = _bfd_elf_assign_file_position_for_section (hdr, off); } else { @@ -1974,8 +1964,7 @@ assign_file_positions_except_relocs (abfd, dosyms) the page size. This is required by the program header. */ off += (hdr->sh_addr - off) % maxpagesize; - off = _bfd_elf_assign_file_position_for_section (hdr, off, - false); + off = _bfd_elf_assign_file_position_for_section (hdr, off); } } @@ -2191,7 +2180,7 @@ _bfd_elf_assign_file_positions_for_relocs (abfd) shdrp = *shdrpp; if ((shdrp->sh_type == SHT_REL || shdrp->sh_type == SHT_RELA) && shdrp->sh_offset == -1) - off = _bfd_elf_assign_file_position_for_section (shdrp, off, true); + off = _bfd_elf_assign_file_position_for_section (shdrp, off); } elf_tdata (abfd)->next_file_pos = off; @@ -2632,9 +2621,7 @@ _bfd_elf_get_lineno (ignore_abfd, symbol) bfd *ignore_abfd; asymbol *symbol; { - fprintf (stderr, "elf_get_lineno unimplemented\n"); - fflush (stderr); - BFD_FAIL (); + abort (); return NULL; } @@ -2761,9 +2748,7 @@ _bfd_elf_no_info_to_howto (abfd, cache_ptr, dst) arelent *cache_ptr; Elf_Internal_Rela *dst; { - fprintf (stderr, "elf RELA relocation support for target machine unimplemented\n"); - fflush (stderr); - BFD_FAIL (); + abort (); } #if 0 @@ -2773,8 +2758,6 @@ _bfd_elf_no_info_to_howto_rel (abfd, cache_ptr, dst) arelent *cache_ptr; Elf_Internal_Rel *dst; { - fprintf (stderr, "elf REL relocation support for target machine unimplemented\n"); - fflush (stderr); - BFD_FAIL (); + abort (); } #endif |