| Index: bfd/elf32-m32c.c
|
| diff --git a/bfd/elf32-m32c.c b/bfd/elf32-m32c.c
|
| index cf7ad99ccffe2b828f8f1b5aca817542f54380b7..b2b12ca330ab21284c7f2b0e0c1093d91b1d7c5b 100644
|
| --- a/bfd/elf32-m32c.c
|
| +++ b/bfd/elf32-m32c.c
|
| @@ -1,5 +1,5 @@
|
| /* M16C/M32C specific support for 32-bit ELF.
|
| - Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
| + Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
|
| Free Software Foundation, Inc.
|
|
|
| This file is part of BFD, the Binary File Descriptor library.
|
| @@ -362,7 +362,7 @@ m32c_elf_relocate_section
|
| dynobj = elf_hash_table (info)->dynobj;
|
| splt = NULL;
|
| if (dynobj != NULL)
|
| - splt = bfd_get_section_by_name (dynobj, ".plt");
|
| + splt = bfd_get_linker_section (dynobj, ".plt");
|
|
|
| for (rel = relocs; rel < relend; rel ++)
|
| {
|
| @@ -434,9 +434,9 @@ m32c_elf_relocate_section
|
| }
|
| }
|
|
|
| - if (sec != NULL && elf_discarded_section (sec))
|
| + if (sec != NULL && discarded_section (sec))
|
| RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
|
| - rel, relend, howto, contents);
|
| + rel, 1, relend, howto, 0, contents);
|
|
|
| if (info->relocatable)
|
| {
|
| @@ -633,13 +633,14 @@ m32c_elf_check_relocs
|
| elf_hash_table (info)->dynobj = dynobj = abfd;
|
| if (splt == NULL)
|
| {
|
| - splt = bfd_get_section_by_name (dynobj, ".plt");
|
| + splt = bfd_get_linker_section (dynobj, ".plt");
|
| if (splt == NULL)
|
| {
|
| flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS
|
| | SEC_IN_MEMORY | SEC_LINKER_CREATED
|
| | SEC_READONLY | SEC_CODE);
|
| - splt = bfd_make_section_with_flags (dynobj, ".plt", flags);
|
| + splt = bfd_make_section_anyway_with_flags (dynobj, ".plt",
|
| + flags);
|
| if (splt == NULL
|
| || ! bfd_set_section_alignment (dynobj, splt, 1))
|
| return FALSE;
|
| @@ -692,7 +693,7 @@ m32c_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
|
| been filled in. */
|
|
|
| if ((dynobj = elf_hash_table (info)->dynobj) != NULL
|
| - && (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL)
|
| + && (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
|
| {
|
| bfd_byte *contents = splt->contents;
|
| unsigned int i, size = splt->size;
|
| @@ -720,7 +721,7 @@ m32c_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
| if (dynobj == NULL)
|
| return TRUE;
|
|
|
| - splt = bfd_get_section_by_name (dynobj, ".plt");
|
| + splt = bfd_get_linker_section (dynobj, ".plt");
|
| BFD_ASSERT (splt != NULL);
|
|
|
| splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->size);
|
| @@ -829,7 +830,7 @@ m32c_elf_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
|
|
|
|
|
| static bfd_boolean
|
| -m32c_elf_print_private_bfd_data (bfd *abfd, PTR ptr)
|
| +m32c_elf_print_private_bfd_data (bfd *abfd, void *ptr)
|
| {
|
| FILE *file = (FILE *) ptr;
|
| flagword flags;
|
| @@ -984,8 +985,7 @@ struct relax_plt_data
|
| };
|
|
|
| static bfd_boolean
|
| -m32c_relax_plt_check (struct elf_link_hash_entry *h,
|
| - PTR xdata)
|
| +m32c_relax_plt_check (struct elf_link_hash_entry *h, void * xdata)
|
| {
|
| struct relax_plt_data *data = (struct relax_plt_data *) xdata;
|
|
|
| @@ -1016,8 +1016,7 @@ m32c_relax_plt_check (struct elf_link_hash_entry *h,
|
| previously had a plt entry, give it a new entry offset. */
|
|
|
| static bfd_boolean
|
| -m32c_relax_plt_realloc (struct elf_link_hash_entry *h,
|
| - PTR xdata)
|
| +m32c_relax_plt_realloc (struct elf_link_hash_entry *h, void * xdata)
|
| {
|
| bfd_vma *entry = (bfd_vma *) xdata;
|
|
|
| @@ -1031,8 +1030,7 @@ m32c_relax_plt_realloc (struct elf_link_hash_entry *h,
|
| }
|
|
|
| static bfd_boolean
|
| -m32c_elf_relax_plt_section (bfd *dynobj,
|
| - asection *splt,
|
| +m32c_elf_relax_plt_section (asection *splt,
|
| struct bfd_link_info *info,
|
| bfd_boolean *again)
|
| {
|
| @@ -1045,11 +1043,6 @@ m32c_elf_relax_plt_section (bfd *dynobj,
|
| if (info->relocatable)
|
| return TRUE;
|
|
|
| - /* We only relax the .plt section at the moment. */
|
| - if (dynobj != elf_hash_table (info)->dynobj
|
| - || strcmp (splt->name, ".plt") != 0)
|
| - return TRUE;
|
| -
|
| /* Quick check for an empty plt. */
|
| if (splt->size == 0)
|
| return TRUE;
|
| @@ -1337,8 +1330,9 @@ m32c_elf_relax_section
|
| int machine;
|
|
|
| if (abfd == elf_hash_table (link_info)->dynobj
|
| + && (sec->flags & SEC_LINKER_CREATED) != 0
|
| && strcmp (sec->name, ".plt") == 0)
|
| - return m32c_elf_relax_plt_section (abfd, sec, link_info, again);
|
| + return m32c_elf_relax_plt_section (sec, link_info, again);
|
|
|
| /* Assume nothing changes. */
|
| *again = FALSE;
|
| @@ -1386,14 +1380,14 @@ m32c_elf_relax_section
|
| if (shndx_buf == NULL)
|
| goto error_return;
|
| if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0
|
| - || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt)
|
| + || bfd_bread (shndx_buf, amt, abfd) != amt)
|
| goto error_return;
|
| shndx_hdr->contents = (bfd_byte *) shndx_buf;
|
| }
|
|
|
| /* Get a copy of the native relocations. */
|
| internal_relocs = (_bfd_elf_link_read_relocs
|
| - (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
|
| + (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
|
| link_info->keep_memory));
|
| if (internal_relocs == NULL)
|
| goto error_return;
|
|
|