aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf32-m32c.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/elf32-m32c.c')
-rw-r--r--bfd/elf32-m32c.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c
index 953f00e..b2db4f5 100644
--- a/bfd/elf32-m32c.c
+++ b/bfd/elf32-m32c.c
@@ -1473,8 +1473,11 @@ m32c_elf_relax_section
|| (sec->flags & SEC_CODE) == 0)
return TRUE;
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr;
+ symtab_hdr = & elf_symtab_hdr (abfd);
+ if (elf_symtab_shndx_list (abfd))
+ shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
+ else
+ shndx_hdr = NULL;
/* Get the section contents. */
if (elf_section_data (sec)->this_hdr.contents != NULL)
@@ -1495,7 +1498,7 @@ m32c_elf_relax_section
symtab_hdr->contents = (bfd_byte *) intsyms;
}
- if (shndx_hdr->sh_size != 0)
+ if (shndx_hdr && shndx_hdr->sh_size != 0)
{
bfd_size_type amt;
@@ -2043,8 +2046,16 @@ m32c_elf_relax_delete_bytes
isymend = isym + symtab_hdr->sh_info;
sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
- shndx_hdr = & elf_tdata (abfd)->symtab_shndx_hdr;
- shndx_buf = (Elf_External_Sym_Shndx *) shndx_hdr->contents;
+ if (elf_symtab_shndx_list (abfd))
+ {
+ shndx_hdr = & elf_symtab_shndx_list (abfd)->hdr;
+ shndx_buf = (Elf_External_Sym_Shndx *) shndx_hdr->contents;
+ }
+ else
+ {
+ shndx_hdr = NULL;
+ shndx_buf = NULL;
+ }
shndx = shndx_buf;
for (; isym < isymend; isym++, shndx = (shndx ? shndx + 1 : NULL))