X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-m32c.c;h=b2db4f5b44018792c0b78948097c5c8e5cb5c7a6;hb=6a40cf0c5c845683fdb82721813ebd5dd867cce5;hp=953f00ea0874fbea64609d3e3ea40eab9f26f939;hpb=bcd68f9e44a70c73bde08e612a28e413570dc039;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c index 953f00ea08..b2db4f5b44 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))